UNPKG

baqend

Version:

Baqend JavaScript SDK

202 lines 14.2 kB
"use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.EntityManagerFactory = void 0; var EntityManager_1 = require("./EntityManager"); var message = __importStar(require("./message")); var connector_1 = require("./connector"); var util_1 = require("./util"); var intersection_1 = require("./intersection"); var metamodel_1 = require("./metamodel"); var CONNECTED = Symbol('Connected'); var EntityManagerFactory = /** @class */ (function (_super) { __extends(EntityManagerFactory, _super); /** * Creates a new EntityManagerFactory connected to the given destination * @param [options] The destination to connect with, or an options object * @param [options.host] The destination to connect with * @param [options.port=80|443] The optional destination port to connect with * @param [options.secure=false] <code>true</code> To use a secure ssl encrypted connection * @param [options.basePath="/v1"] The base path of the api * @param [options.schema=null] The serialized schema as json used to initialize the metamodel * @param [options.tokenStorage] The tokenStorage which should be used by this emf * @param [options.tokenStorageFactory] The tokenStorage factory implementation which * should be used for token storage * @param [options.staleness=60] The maximum staleness of objects that are acceptable while reading cached * data */ function EntityManagerFactory(options) { if (options === void 0) { options = {}; } var _this = _super.call(this) || this; _this.connection = null; _this.metamodel = _this.createMetamodel(); _this.code = new intersection_1.Code(_this.metamodel, _this); _this.tokenStorageFactory = intersection_1.TokenStorage.WEB_STORAGE || intersection_1.TokenStorage.GLOBAL; _this.tokenStorage = null; _this.staleness = null; _this.connectData = null; var opt = typeof options === 'string' ? { host: options } : options || {}; _this.configure(opt); var isReady = true; var ready = new Promise(function (success) { _this[CONNECTED] = success; }); if (opt.host) { _this.connect(opt.host, opt.port, opt.secure, opt.basePath); } else { isReady = false; } if (!_this.tokenStorage) { isReady = false; ready = ready .then(function () { return _this.tokenStorageFactory.create(_this.connection.origin); }) .then(function (tokenStorage) { _this.tokenStorage = tokenStorage; }); } if (opt.schema) { _this.connectData = opt; _this.metamodel.init(opt.schema); } else { isReady = false; ready = ready.then(function () { var _a; var msg = new message.Connect(); msg.withCredentials = true; // used for registered devices if (_this.staleness === 0) { msg.noCache(); } if ((_a = _this.tokenStorage) === null || _a === void 0 ? void 0 : _a.token) { // disable client cache on the connect resource if we are authenticated msg.addQueryString('BCB'); } return _this.send(msg); }).then(function (response) { _this.connectData = response.entity; if (_this.staleness === null) { _this.staleness = _this.connectData.bloomFilterRefresh || 60; } if (!_this.metamodel.isInitialized) { _this.metamodel.init(_this.connectData.schema); } _this.tokenStorage.update(_this.connectData.token); }); } if (!isReady) { _this.withLock(function () { return ready; }, true); } return _this; } /** * Apply additional configurations to this EntityManagerFactory * @param options The additional configuration options * @param [options.tokenStorage] The tokenStorage which should be used by this emf * @param [options.tokenStorageFactory] The tokenStorage factory implementation which * should be used for token storage * @param [options.staleness=60] The maximum staleness of objects that are acceptable while reading cached * data, <code>0</code> to always bypass the browser cache * @return */ EntityManagerFactory.prototype.configure = function (options) { if (this.connection) { throw new Error('The EntityManagerFactory can only be configured before is is connected.'); } if (options.tokenStorage) { this.tokenStorage = options.tokenStorage; } if (options.tokenStorageFactory) { this.tokenStorageFactory = options.tokenStorageFactory; } if (options.staleness !== undefined) { this.staleness = options.staleness; } }; EntityManagerFactory.prototype.connect = function (hostOrApp, port, secure, basePath) { if (this.connection) { throw new Error('The EntityManagerFactory is already connected.'); } if (typeof port === 'boolean') { return this.connect(hostOrApp, 0, port, secure); } this.connection = connector_1.Connector.create(hostOrApp, port, secure, basePath); this[CONNECTED](); return this.ready(); }; /** * Creates a new Metamodel instance, which is not connected * @return A new Metamodel instance */ EntityManagerFactory.prototype.createMetamodel = function () { return new metamodel_1.Metamodel(this); }; /** * Create a new application-managed EntityManager. * * @param useSharedTokenStorage The token storage to persist the authorization token, or * <code>true</code> To use the shared token storage of the emf. * <code>false</code> To use a instance based storage. * * @return a new entityManager */ EntityManagerFactory.prototype.createEntityManager = function (useSharedTokenStorage) { var _this = this; var em = new EntityManager_1.EntityManager(this); if (this.isReady) { em.connected(useSharedTokenStorage); } else { em.withLock(function () { return _this.ready().then(function () { em.connected(useSharedTokenStorage); }); }, true); } return em; }; EntityManagerFactory.prototype.send = function (msg) { if (!msg.tokenStorage()) { msg.tokenStorage(this.tokenStorage); } return this.connection.send(msg); }; return EntityManagerFactory; }(util_1.Lockable)); exports.EntityManagerFactory = EntityManagerFactory; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW50aXR5TWFuYWdlckZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvRW50aXR5TWFuYWdlckZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBZ0Q7QUFDaEQsaURBQXFDO0FBQ3JDLHlDQUVxQjtBQUNyQiwrQkFBMkM7QUFDM0MsK0NBQXlFO0FBQ3pFLHlDQUF3QztBQUV4QyxJQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFXdEM7SUFBMEMsd0NBQVE7SUFpQmhEOzs7Ozs7Ozs7Ozs7O09BYUc7SUFDSCw4QkFBWSxPQVNHO1FBVEgsd0JBQUEsRUFBQSxZQVNHO1FBVGYsWUFVRSxpQkFBTyxTQStEUjtRQXZHTSxnQkFBVSxHQUFxQixJQUFJLENBQUM7UUFFcEMsZUFBUyxHQUFjLEtBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUU5QyxVQUFJLEdBQVMsSUFBSSxtQkFBSSxDQUFDLEtBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSSxDQUFDLENBQUM7UUFFNUMseUJBQW1CLEdBQXdCLDJCQUFZLENBQUMsV0FBVyxJQUFJLDJCQUFZLENBQUMsTUFBTSxDQUFDO1FBRTNGLGtCQUFZLEdBQXdCLElBQUksQ0FBQztRQUV6QyxlQUFTLEdBQWtCLElBQUksQ0FBQztRQUVoQyxpQkFBVyxHQUF1QixJQUFJLENBQUM7UUE4QjVDLElBQU0sR0FBRyxHQUFHLE9BQU8sT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFFNUUsS0FBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVwQixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxLQUFLLEdBQUcsSUFBSSxPQUFPLENB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