nimbu-js-sdk 2.0.0-beta.1 → 2.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nimbu-js-sdk.cjs.development.js","sources":["../src/sdk/object.ts","../src/sdk/atomic.ts","../src/sdk/acl.ts","../src/sdk/api.ts","../src/sdk/collection.ts","../src/sdk/state-mutations.ts","../src/sdk/state.ts","../src/sdk/config.ts","../src/sdk/coupon.ts","../src/sdk/customer.ts","../src/sdk/customer-sessions.ts","../src/sdk/device.ts","../src/sdk/errors.ts","../src/sdk/file.ts","../src/sdk/functions.ts","../src/sdk/gallery.ts","../src/sdk/gallery-image.ts","../src/sdk/helpers.ts","../src/sdk/order.ts","../src/sdk/page.ts","../src/sdk/product.ts","../src/sdk/product-aggregate.ts","../src/sdk/push.ts","../src/sdk/query.ts","../src/sdk/relation.ts","../src/sdk/requests.ts","../src/sdk/role.ts","../src/sdk/storage.ts","../src/sdk/oauth2.ts","../src/sdk/select-option.ts","../src/sdk/select-option-list.ts","../src/utils/array-contains-object.ts","../src/utils/decode.ts","../src/utils/encode.ts","../src/utils/promise-utils.ts","../src/utils/unique.ts","../src/utils/task-queue.ts","../src/internal.ts","../src/index.ts"],"sourcesContent":["import { clone, each, escape, extend, has, isEmpty, isObject, isString, uniqueId } from 'underscore'\n\nimport {\n AtomicIncrement,\n AtomicRelation,\n AtomicSet,\n AtomicUnset,\n AtomicsMap,\n AttributeMap,\n ChannelConfig,\n Config,\n IOptions,\n NimbuACL,\n NimbuAtomic,\n NimbuCollection,\n NimbuError,\n NimbuFile,\n NimbuGallery,\n NimbuRelation,\n NimbuSelectOption,\n NimbuSelectOptionList,\n NimbuValue,\n RequestOptions,\n _objectEach,\n _request,\n atomicFromJSON,\n continueWhile,\n decode,\n encode,\n parseDate,\n} from '../internal'\n\nlet _defaultGetOptions = {}\n\nconst transformedKeys: AttributeMap = {\n objectId: 'id',\n created_at: 'createdAt',\n updated_at: 'updatedAt',\n session_token: 'sessionToken',\n}\n// go from value to key of transformedKeys\nconst inverseTransformedKeys: AttributeMap = {}\nfor (const key in transformedKeys) {\n inverseTransformedKeys[transformedKeys[key]] = key\n}\n\nconst isValidDate = function (d: any): d is Date {\n return d instanceof Date && !isNaN(d.getTime())\n}\n\nexport type Reference = {\n __type: 'Reference'\n className: string\n id?: string\n}\n\nexport type ISetOptions = {\n unset?: boolean\n validate?: boolean\n error?: <T extends ChannelConfig = ChannelConfig>(model: NimbuObject<T>, error: NimbuError) => void\n}\n\nexport type IGetOptions = {\n options?: boolean\n}\n\n// Set up a map of className to class so that we can create new instances of\n// Nimbu Objects from JSON automatically.\nconst classMap: { [className: string]: any } = {}\n\n// Global counter for generating unique Ids for non-single-instance objects\nlet objectCount = 0\n\nconst unsavedChildren = function <T extends ChannelConfig>(model: NimbuObject<T>) {\n const unsaved: NimbuObject<T>[] = []\n const attributes = model.attributes as any\n for (const attr in attributes) {\n if (attributes[attr] instanceof NimbuObject) {\n if (!attributes[attr].id) {\n unsaved.push(attributes[attr])\n }\n }\n }\n return unsaved\n}\n\nexport type ICommonFields = {\n id: string\n createdAt: Date\n updatedAt: Date\n short_id: string\n title_field_value: string\n _acl: NimbuACL\n _destroy: boolean\n _owner: string | null | undefined\n slug: string\n}\n\n// type NimbuObjectValues<T extends ChannelConfig> = {\n// [Property in keyof T | keyof ICommonFields]: Property extends keyof T\n// ? T[Property]\n// : Property extends keyof ICommonFields\n// ? ICommonFields[Property]\n// : never\n// }\n\n// get types where the value is a NimbuRelation\ntype RelationalObjectValues<T extends ChannelConfig> = {\n [Property in keyof T]?: T[Property] extends NimbuRelation ? T[Property] : never\n}\n\ntype GalleryObjectValues<T extends ChannelConfig> = {\n [Property in keyof T]?: T[Property] extends NimbuGallery ? T[Property] : never\n}\n\ntype FileObjectValues<T extends ChannelConfig> = {\n [Property in keyof T]?: T[Property] extends NimbuFile ? T[Property] : never\n}\n\n// Nimbu.Object\n// --------------\n\n// Nimbu **Nimbu.Objects** are the basic data object in the framework --\n// frequently representing a row in a table in a database on your server.\n// A discrete chunk of data and a bunch of useful, related methods for\n// performing computations and transformations on that data.\n\n// Create a new model with the specified attributes. A client id (`cid`)\n// is automatically generated and assigned for you.\nexport class NimbuObject<U extends ChannelConfig = Record<string, any>> {\n /**\n * The ID of this object, unique within its class.\n *\n * @property {string} id\n */\n id?: string | undefined\n cid: string\n className: string\n collection?: NimbuCollection\n static className: string\n\n // A hash of attributes whose current and previous value differ.\n changed: U = {} as U\n\n _objCount: number\n\n // A hash of atomic operations to be performed on the object.\n _operations: AtomicsMap = {}\n\n // The value returned during the last failed validation.\n validationError: NimbuError | null = null\n\n // The default name for the JSON `id` attribute is `\"id\"`. MongoDB and\n // CouchDB users may want to set this to `\"_id\"`.\n idAttribute = 'id'\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize() {}\n\n _hasData = true\n _refreshingCache = false\n _changing = false\n _saving = 0\n\n constructor(\n className?: string | { className: string; [attr: string]: any },\n attributes?: Partial<U>,\n options: { ignoreValidation?: boolean; collection?: NimbuCollection } = {}\n ) {\n // Enable legacy initializers\n if (typeof this.initialize === 'function') {\n // eslint-disable-next-line prefer-spread, prefer-rest-params\n this.initialize.apply(this, arguments as any)\n }\n\n this.cid = uniqueId('c')\n this.changed = {} as U\n\n this._hasData = true\n\n let toSet: AttributeMap | null = null\n this._objCount = objectCount++\n\n let _className = undefined\n\n if (typeof className === 'string') {\n _className = className\n if (attributes && typeof attributes === 'object') {\n toSet = attributes\n }\n } else if (className && typeof className === 'object') {\n _className = className.className\n toSet = {}\n for (const attr in className) {\n if (attr !== 'className') {\n toSet[attr] = className[attr]\n }\n }\n if (attributes && typeof attributes === 'object') {\n options = attributes as any\n }\n }\n\n if (!_className) {\n throw new Error('A Nimbu.Object must have a className')\n } else {\n this.className = _className\n }\n\n if (toSet && !this.set(toSet as Partial<U>)) {\n throw new Error(\"Can't create an invalid Nimbu Object\")\n }\n\n if (options.collection) {\n this.collection = options.collection\n }\n // if (options.parse) {\n // attrs = this.parse(attrs, options) || {};\n // }\n // attrs = _.defaults({}, attrs, _.result(this, 'defaults'));\n }\n\n get attributes(): U & ICommonFields {\n const stateManager = Config.getStateManager()\n return Object.freeze(stateManager.estimateAttributes(this._getStateIdentifier())) as U & ICommonFields\n }\n\n get createdAt() {\n return this.get('createdAt')\n }\n\n get updatedAt() {\n const value = this.get('updatedAt')\n return value\n }\n\n get shortId() {\n return this.get('short_id')\n }\n\n get created_at() {\n return this.createdAt\n }\n\n get updated_at() {\n return this.updatedAt\n }\n\n get short_id() {\n return this.shortId\n }\n\n /**\n * Returns a local or server Id used uniquely identify this object\n *\n * @returns {string}\n */\n _getId(): string {\n if (typeof this.id === 'string') {\n return this.id\n } else {\n return this.cid\n }\n }\n\n /*\n Get the value of an attribute.\n\n Options:\n - options: if truthy, SelectOption and SelectOptionList will be used for single_select and multi_select fields\n */\n get<K extends keyof ICommonFields | keyof U>(attr: K, options?: IGetOptions) {\n options = options || _defaultGetOptions\n let value = (this.attributes as any)[attr]\n\n if (value instanceof NimbuSelectOption && !options.options) {\n ;({ value } = value)\n } else if (value instanceof NimbuSelectOptionList && !options.options) {\n value = value.values()\n }\n\n if (value != null && value._ensureParentAndKey != null && options.options) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n value._ensureParentAndKey(this, attr)\n }\n\n return value as K extends keyof ICommonFields ? ICommonFields[K] : U[K]\n }\n\n // Get the HTML-escaped value of an attribute.\n escape<K extends keyof ICommonFields | keyof U>(attr: K) {\n const value = this.get(attr)\n return isString(value) ? escape(value) : undefined\n }\n\n // Returns `true` if the attribute contains a value that is not null\n // or undefined.\n has<K extends keyof ICommonFields | keyof U>(attr: K) {\n return this.get(attr) != null\n }\n\n // Set a hash of model attributes on the object, firing `\"change\"`. This is\n // the core primitive operation of a model, updating the data and notifying\n // anyone who needs to know about the change in state. The heart of the beast.\n set<K extends keyof ICommonFields | keyof U>(\n key: K | (Partial<U> & Partial<ICommonFields>),\n value?: (K extends keyof ICommonFields ? ICommonFields[K] : U[K]) | ISetOptions | NimbuAtomic | null,\n options?: ISetOptions\n ) {\n let changes: AttributeMap = {}\n const newAtomics: AtomicsMap = {}\n if (key && typeof key === 'object') {\n changes = key\n options = value as ISetOptions\n } else if (typeof key === 'string') {\n changes[key] = value\n } else {\n return false\n }\n\n /** Readonly attributes of the object class */\n let readonly: string[] = []\n if (typeof (this.constructor as any).readOnlyAttributes === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n readonly = readonly.concat((this.constructor as any).readOnlyAttributes())\n }\n for (const k in changes) {\n if (k === 'createdAt' || k === 'updatedAt' || k === 'created_at' || k === 'updated_at') {\n // This property is read-only, but for legacy reasons we silently\n // ignore it\n continue\n }\n if (readonly.indexOf(k) > -1) {\n throw new Error('Cannot modify readonly attribute: ' + k)\n }\n if (options?.unset) {\n newAtomics[k] = new AtomicUnset()\n } else if (changes[k] instanceof NimbuAtomic) {\n newAtomics[k] = changes[k]\n } else if (changes[k] && typeof changes[k] === 'object' && typeof changes[k].__op === 'string') {\n const atomic = atomicFromJSON(changes[k])\n if (atomic != null) newAtomics[k] = atomic\n } else if (k === 'objectId' || k === 'id') {\n if (typeof changes[k] === 'string') {\n this.id = changes[k]\n }\n } else if (k === '_acl' && typeof changes[k] === 'object' && !(changes[k] instanceof NimbuACL)) {\n newAtomics[k] = new AtomicSet(new NimbuACL(changes[k]))\n } else if (changes[k] instanceof NimbuRelation) {\n const relation = new NimbuRelation(this, k)\n relation.targetClassName = changes[k].targetClassName\n newAtomics[k] = new AtomicSet(relation)\n } else {\n newAtomics[k] = new AtomicSet(changes[k])\n }\n }\n\n const currentAttributes = this.attributes\n\n // Calculate new values\n const newValues: AttributeMap = {}\n for (const attr in newAtomics) {\n if (newAtomics[attr] instanceof AtomicRelation) {\n newValues[attr] = newAtomics[attr].applyTo(currentAttributes[attr], this, attr)\n } else if (!(newAtomics[attr] instanceof AtomicUnset)) {\n newValues[attr] = newAtomics[attr].applyTo(currentAttributes[attr])\n }\n }\n\n // Validate changes\n if (options?.validate) {\n const validation = this.validate(newValues)\n if (validation) {\n if (typeof options.error === 'function') {\n options.error(this, validation)\n }\n return false\n }\n }\n\n // Consolidate Atomics\n const stateManager = Config.getStateManager()\n const stateIdentifier = this._getStateIdentifier()\n const pendingAtomics = stateManager.getPendingAtomics(stateIdentifier)\n const last = pendingAtomics.length - 1\n for (const attr in newAtomics) {\n const nextAtomic = newAtomics[attr].mergeWith(pendingAtomics[last][attr])\n stateManager.setPendingAtomic(stateIdentifier, attr, nextAtomic)\n }\n\n return this\n }\n\n /*\n Remove an attribute from the model, firing <code>\"change\"</code> unless\n you choose to silence it. This is a noop if the attribute doesn't\n exist.\n */\n unset<K extends keyof ICommonFields | keyof U>(attr: K, options: { unset?: any } = {}) {\n options.unset = true\n return this.set(attr, null, options)\n }\n\n /*\n Atomically increments the value of the given attribute the next time the\n object is saved. If no amount is specified, 1 is used by default.\n\n @param attr {String} The key.\n @param amount {Number} The amount to increment by.\n */\n increment<K extends keyof ICommonFields | keyof U>(attr: K, amount?: number) {\n if (amount == null) {\n amount = 1\n }\n this.set(attr, new AtomicIncrement(amount))\n return this\n }\n\n // Clear all attributes on the model, firing `\"change\"`.\n clear(options: any) {\n const attrs: AttributeMap = {}\n for (const key in this.attributes) {\n attrs[key] = undefined\n }\n this.set(attrs as any, extend({}, options, { unset: true }))\n return this\n }\n\n /**\n * Returns a unique identifier used to pull data from the State Controller.\n *\n * @returns {Nimbu.Object|object}\n */\n _getStateIdentifier(): NimbuObject | { id: string; className: string } {\n let id = this.id\n if (!id) {\n id = this.cid\n }\n return {\n id: id,\n className: this.className,\n }\n }\n\n /*\n Gets a Reference referencing this Object.\n */\n _toReference(): Reference {\n if (!this.id) {\n throw new Error(\"Can't serialize an unsaved Nimbu.Object\")\n }\n return {\n __type: 'Reference',\n className: this.className,\n id: this.id,\n }\n }\n\n /*\n * Gets a relation on the given class for the attribute.\n * @param String attr The attribute to get the relation for.\n */\n relation<K extends keyof RelationalObjectValues<U> & string>(attr: K): RelationalObjectValues<U>[K] {\n const value = this.get(attr) as any\n if (value) {\n if (!(value instanceof NimbuRelation)) {\n throw 'Called relation() on non-relation field ' + attr\n }\n value._ensureParentAndKey(this, attr)\n return value as RelationalObjectValues<U>[K]\n } else {\n return new NimbuRelation(this, attr) as unknown as RelationalObjectValues<U>[K] // FIXME: this feels hacked\n }\n }\n\n /*\n * Gets a gallery on the given class for the attribute.\n * @param String attr The attribute to get the gallery for.\n */\n gallery<K extends keyof GalleryObjectValues<U> & string>(attr: K): GalleryObjectValues<U>[K] {\n const value = this.get(attr) as any\n if (value) {\n if (!(value instanceof NimbuGallery)) {\n throw 'Called gallery() on a non-gallery field ' + attr\n }\n value._ensureParentAndKey(this as any, attr)\n return value as GalleryObjectValues<U>[K]\n } else {\n return new NimbuGallery(this, attr) as unknown as GalleryObjectValues<U>[K]\n }\n }\n\n file<K extends keyof FileObjectValues<U> & string>(attr: K): FileObjectValues<U>[K] {\n const value = this.get(attr) as any\n if (value) {\n if (!(value instanceof NimbuFile)) {\n throw 'Called file() on a non-file field' + attr\n }\n value._ensureParentAndKey(this as any, attr)\n return value as FileObjectValues<U>[K]\n } else {\n return undefined\n }\n }\n\n // Determine if the model has changed since the last `\"change\"` event.\n // If you specify an attribute name, determine if that attribute has changed.\n hasChanged(attr: any) {\n if (attr == null) {\n return !isEmpty(this.changed)\n }\n return has(this.changed, attr)\n }\n\n /**\n * Fetch the model from the server. If the server's representation of the\n * model differs from its current attributes, they will be overriden.\n *\n * @param {object} options\n * Valid options are:<ul>\n * <li>useACL: In Cloud Code and Node with Master Key only, to\n * force ACL to be respected (default is `false`).\n * <li>forceChannel: in case your channel is called 'products' or 'orders', this forces to fetch\n * items from the channel instead of i.e. the Products or Orders API.\n * <li>include: The name(s) of the key(s) to include. Can be a string or an array of strings\n * </ul>\n * @returns {Promise<Nimbu.Object>} A promise that is fulfilled when the fetch completes.\n */\n async fetch(options?: Pick<RequestOptions, 'useACL' | 'forceChannel' | 'include'>): Promise<this & { id: string }> {\n options = options || {}\n const { body, status, xhr } = await _request({\n method: 'GET',\n route: 'objects',\n className: this.className,\n id: this.id,\n useACL: options.useACL,\n forceChannel: options.forceChannel,\n include: options.include,\n })\n\n this._finishFetch(this.parse(body, status, xhr))\n return this as this & { id: string }\n }\n\n /**\n * Fetch the model from the server. If the server's representation of the\n * model differs from its current attributes, they will be overriden.\n *\n * Includes nested Nimbu.Objects for the provided key. You can use dot\n * notation to specify which fields in the included object are also fetched.\n *\n * @param {string | Array<string | Array<string>>} keys The name(s) of the key(s) to include.\n * @param {object} options\n * Valid options are:<ul>\n * <li>useACL: In Cloud Code and Node with Master Key only, to\n * force ACL to be respected (default is `false`).\n * <li>forceChannel: in case your channel is called 'products' or 'orders', this forces to fetch\n * items from the channel instead of i.e. the Products or Orders API.\n * </ul>\n\n * @returns {Promise} A promise that is fulfilled when the fetch\n * completes.\n */\n async fetchWithInclude(\n keys: string | Array<string>,\n options: Pick<RequestOptions, 'useACL' | 'forceChannel' | 'include'> = {}\n ): Promise<this> {\n options.include = isString(keys) ? [keys] : keys\n return this.fetch(options)\n }\n\n /**\n * Set a hash of model attributes, and save the model to the server.\n * updatedAt will be updated when the request returns.\n * You can either call it as:\n * <pre>\n * object.save();\n * </pre>\n * or\n * <pre>\n * object.save(attrs);\n * </pre>\n * or\n * <pre>\n * object.save(null, options);\n * </pre>\n * or\n * <pre>\n * object.save(attrs, options);\n * </pre>\n * or\n * <pre>\n * object.save(key, value);\n * </pre>\n * or\n * <pre>\n * object.save(key, value, options);\n * </pre>\n *\n * Example 1:\n * <pre>\n * object.save({\n * name: \"John Doe\",\n * age: 45\n * }).then(function(savedObject) {\n * // The save was successful.\n * }, function(error) {\n * // The save failed. Error is an instance of Nimbu.Error.\n * });\n * </pre>\n *\n * Example 2:\n * <pre>\n * object.save(\"name\", \"John Doe\");\n * </pre>\n *\n * @param {string | object | null} [arg1]\n * Valid options are:\n * <ul>\n * <li>`Object` - Key/value pairs to update on the object.</li>\n * <li>`String` Key - Key of attribute to update (requires arg2 to also be string)</li>\n * <li>`null` - Passing null for arg1 allows you to save the object with options passed in arg2.</li>\n * </ul>\n * @param {string | object} [arg2]\n * <ul>\n * <li>`String` Value - If arg1 was passed as a key, arg2 is the value that should be set on that key.</li>\n * <li>`Object` Options - Valid options are:\n * <ul>\n * <li>useACL: only applicable when using a Master Key, forces ACL rules to be respected (default is `false`).</li>\n * <li>sessionToken: A valid session token, used for making a request on behalf of a specific user.</li>\n * <li>cascadeSave: If `false`, nested objects will not be saved (default is `true`).</li>\n * <li>locale: The locale to use for the object (optional).</li>\n * <li>progress: A function that is called with the current progress of the request.</li>\n * </ul>\n * </li>\n * </ul>\n * @param {object} [arg3]\n * Used to pass option parameters to method if arg1 and arg2 were both passed as strings.\n * Valid options are:\n * <ul>\n * <li>useACL: only applicable when using a Master Key, forces ACL rules to be respected (default is `false`).</li>\n * <li>sessionToken: A valid session token, used for making a request on behalf of a specific user.</li>\n * <li>cascadeSave: If `false`, nested objects will not be saved (default is `true`).</li>\n * <li>locale: The locale to use for the object (optional).</li>\n * <li>progress: A function that is called with the current progress of the request.</li>\n * </ul>\n * </ul>\n * @returns {Promise} A promise that is fulfilled when the save\n * completes.\n */\n save(\n arg1?: undefined | string | { [attr: string]: any } | null,\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n arg2?: IOptions | any,\n arg3?: IOptions\n ): Promise<this & { id: string }> {\n let attrs: { [attr: string]: NimbuValue } | null\n let options: IOptions | undefined\n if (typeof arg1 === 'object' || typeof arg1 === 'undefined' || arg1 == null) {\n attrs = (arg1 as { [attr: string]: any }) || null\n\n if (typeof arg2 === 'object') {\n options = arg2\n }\n } else {\n attrs = {}\n attrs[arg1] = arg2\n options = arg3\n }\n\n if (attrs) {\n const validation = this.validate(attrs)\n if (validation) {\n return Promise.reject(validation)\n }\n this.set(attrs as any, options)\n }\n\n options = options || {}\n const saveOptions: IOptions = {}\n if (Object.prototype.hasOwnProperty.call(options, 'sessionToken') && typeof options.sessionToken === 'string') {\n saveOptions.sessionToken = options.sessionToken\n }\n\n const unsaved = options.cascadeSave !== false ? unsavedChildren(this) : []\n return NimbuObject._save(unsaved, saveOptions).then(() => {\n return NimbuObject._save(this, saveOptions)\n }) as Promise<this & { id: string }>\n }\n\n // Destroy this model on the server if it was already persisted.\n // Optimistically removes the model from its collection, if it has one.\n // If `wait: true` is passed, waits for the server to respond before removal.\n destroy(options: { wait?: any; useACL?: any; forceChannel?: any } = {}) {\n options = options || {}\n\n const request = _request({\n route: 'objects',\n className: this.className,\n id: this.id,\n method: 'DELETE',\n useACL: options.useACL,\n forceChannel: options.forceChannel,\n })\n\n return options.wait ? request.then(() => this) : this\n }\n\n // **parse** converts a response into the hash of attributes to be `set` on\n // the model. The default implementation is just to pass the response along.\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n parse(response: any, status?: number, xhr?: any) {\n const output = clone(response)\n each(['created_at', 'updated_at'], (key) => {\n if (output[key]) {\n output[key] = parseDate(output[key])\n }\n })\n\n if (!output.updated_at) {\n output.updated_at = output.created_at\n }\n // if (status) {\n // this._existed = status !== 201;\n // }\n return output\n }\n\n // Create a new model with identical attributes to this one.\n clone() {\n return new NimbuObject({ ...this.attributes, className: this.className })\n }\n\n // A model is new if it has never been saved to the server, and lacks an id.\n isNew() {\n return !this.id\n }\n\n /*\n * Returns the ACL for this object.\n * @returns {Nimbu.ACL} An instance of Nimbu.ACL.\n * @see Nimbu.Object#get\n */\n getACL() {\n return this.get('_acl')\n }\n\n /*\n * Sets the ACL to be used for this object.\n * @param {Nimbu.ACL} acl An instance of Nimbu.ACL.\n * @param {Object} options Optional Backbone-like options object to be\n * passed in to set.\n * @return {Boolean} Whether the set passed validation.\n * @see Nimbu.Object#set\n */\n setACL(acl: any, options?: any) {\n return this.set('_acl', acl, options)\n }\n\n // Check if the model is currently in a valid state.\n isValid(options: any) {\n return this._validate({}, extend(options || {}, { validate: true }))\n }\n\n /*\n * You should not call this function directly unless you subclass\n * <code>Nimbu.Object</code>, in which case you can override this method\n * to provide additional validation on <code>set</code> and\n * <code>save</code>. Your implementation should return\n\n * @param {Object} attrs The current data to validate.\n * @return {} False if the data is valid. An error object otherwise.\n * @see Nimbu.Object#set\n */\n validate(attrs: AttributeMap) {\n if (has(attrs, '_acl') && !(attrs._acl instanceof NimbuACL)) {\n return new NimbuError(NimbuError.OTHER_CAUSE, 'ACL must be a Nimbu.ACL.')\n }\n let correct = true\n _objectEach(attrs, function (unused_value, key) {\n if (!/^[A-Za-z][0-9A-Za-z_]*$/.test(key)) {\n correct = false\n }\n })\n\n if (!correct) {\n return new NimbuError(NimbuError.INVALID_KEY_NAME)\n }\n\n return false\n }\n\n _getPendingAtomics(): Array<AtomicsMap> {\n return Config.getStateManager().getPendingAtomics(this._getStateIdentifier())\n }\n\n /**\n * @param {Array<string>} [keysToClear] - if specified, only ops matching\n * these fields will be cleared\n */\n _clearPendingAtomics(keysToClear?: Array<string>) {\n const pending = this._getPendingAtomics()\n const latest = pending[pending.length - 1]\n const keys = keysToClear || Object.keys(latest)\n keys.forEach((key) => {\n delete latest[key]\n })\n }\n\n _getDirtyObjectAttributes(): AttributeMap {\n const attributes = this.attributes\n const objectCache = Config.getStateManager().getObjectCache(this._getStateIdentifier())\n const dirty: AttributeMap = {}\n for (const attr in attributes) {\n const value = attributes[attr]\n if (\n value &&\n typeof value === 'object' &&\n !(value instanceof NimbuObject) &&\n !(value instanceof NimbuFile) &&\n !(value instanceof NimbuRelation) &&\n !(value instanceof NimbuGallery)\n ) {\n // Due to the way browsers construct maps, the key order will not change\n // unless the object is changed\n try {\n const json = encode({ value, disallowObjects: false, forcePointers: true })\n const stringified = JSON.stringify(json)\n if (objectCache[attr] !== stringified) {\n dirty[attr] = value\n }\n } catch (e) {\n // Error occurred, possibly by a nested unsaved pointer in a mutable container\n // No matter how it happened, it indicates a change in the attribute\n dirty[attr] = value\n }\n }\n }\n return dirty\n }\n\n /*\n * Returns a JSON-encoded set of operations to be sent with the next save\n * request.\n */\n _getSaveJSON(): AttributeMap {\n const pending = this._getPendingAtomics()\n const dirtyObjects = this._getDirtyObjectAttributes()\n const json: AttributeMap = {}\n let attr: string\n\n for (attr in dirtyObjects) {\n let isDotNotation = false\n for (let i = 0; i < pending.length; i += 1) {\n for (const field in pending[i]) {\n // Dot notation operations are handled later\n if (field.includes('.')) {\n const fieldName = field.split('.')[0]\n if (fieldName === attr) {\n isDotNotation = true\n break\n }\n }\n }\n }\n if (!isDotNotation) {\n json[attr] = new AtomicSet(dirtyObjects[attr]).toJSON()\n }\n }\n for (attr in pending[0]) {\n json[attr] = pending[0][attr].toJSON()\n }\n return json\n }\n\n /**\n * Returns a JSON version of the object suitable for saving to Nimbu.\n *\n * @param seen\n * @returns {object}\n */\n toJSON(seen: Array<any> | void): AttributeMap {\n const seenEntry = this.id ? this.className + ':' + this.id : this\n seen = seen || [seenEntry]\n const json: AttributeMap = {}\n const attrs = this.attributes\n for (const attr in attrs) {\n const attrValue = attrs[attr]\n const targetKey = inverseTransformedKeys[attr] ?? attr\n\n if ((attr === 'createdAt' || attr === 'updatedAt') && attrValue != null && isValidDate(attrValue)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n json[targetKey] = attrValue.toJSON()\n } else {\n json[targetKey] = encode({\n value: attrs[attr],\n disallowObjects: false,\n forcePointers: false,\n seenObjects: seen,\n })\n }\n }\n const pending = this._getPendingAtomics()\n for (const attr in pending[0]) {\n const targetKey = inverseTransformedKeys[attr] ?? attr\n json[targetKey] = pending[0][attr].toJSON()\n }\n\n if (this.id) {\n json.id = this.id\n }\n return json\n }\n\n _toFullJSON(seen?: Array<any>): AttributeMap {\n const json: { [key: string]: any } = this.toJSON(seen)\n json.__type = 'Object'\n json.className = this.className\n return json\n }\n\n _getSaveParams(options: IOptions = {}): RequestOptions {\n return {\n method: this.id ? 'PUT' : 'POST',\n route: 'objects',\n className: this.className,\n id: this.id,\n data: this._getSaveJSON(),\n useACL: !!options.useACL,\n locale: options.locale,\n progress: options.progress,\n }\n }\n\n // Run validation against the next complete set of model attributes,\n // returning `true` if all is well. Otherwise, fire an `\"invalid\"` event.\n _validate(attrs: any, options: { validate?: boolean } = {}) {\n if (!options.validate || !this.validate) {\n return true\n }\n attrs = extend({}, this.attributes, attrs)\n const error = this.validate(attrs)\n if (error !== false) {\n this.validationError = error ?? null\n }\n if (!error) {\n return true\n }\n return false\n }\n\n /*\n * Called when a save completes successfully. This merges the changes that\n * were saved into the known server data, and overrides it with any data\n * sent directly from the server.\n */\n _finishSave(serverData: AttributeMap) {\n const changes: Partial<{\n createdAt: Date | null\n updatedAt: Date | null\n [key: string]: any\n }> = {}\n let attr\n const state = Config.getStateManager()\n const pending = state.popPendingState(this._getStateIdentifier())\n if (pending) {\n for (attr in pending) {\n if (pending[attr] instanceof AtomicRelation) {\n changes[attr] = pending[attr].applyTo(undefined, this, attr)\n } else if (!(attr in serverData)) {\n // Only SetOps and UnsetOps should not come back with results\n changes[attr] = pending[attr].applyTo(undefined)\n }\n }\n }\n for (attr in serverData) {\n const targetKey = transformedKeys[attr] ?? attr\n\n if ((targetKey === 'createdAt' || targetKey === 'updatedAt') && typeof serverData[attr] === 'string') {\n changes[targetKey] = parseDate(serverData[attr])\n } else if (targetKey === '_acl') {\n changes[targetKey] = new NimbuACL(serverData[attr])\n } else if (targetKey !== 'id') {\n const val = decode(attr, serverData[attr])\n if (val && Object.getPrototypeOf(val) === Object.prototype) {\n const currentObject = this.attributes[targetKey]\n changes[targetKey] = isObject(currentObject) ? { ...currentObject, ...val } : val\n } else {\n changes[targetKey] = val\n }\n if (changes[targetKey] instanceof AtomicUnset) {\n changes[targetKey] = undefined\n }\n }\n }\n if (changes.createdAt && !changes.updatedAt) {\n changes.updatedAt = changes.createdAt\n }\n\n this._migrateId(serverData.id)\n state.commitServerChanges(this._getStateIdentifier(), changes)\n\n return this\n }\n\n _onSaveError() {\n Config.getStateManager().mergeFirstPendingState(this._getStateIdentifier())\n }\n\n private _migrateId(serverId: string) {\n if (this.cid && serverId) {\n const state = Config.getStateManager()\n const oldState = state.removeState(this._getStateIdentifier())\n this.id = serverId\n\n if (oldState) {\n state.initializeState(this._getStateIdentifier(), oldState)\n }\n }\n }\n\n /*\n * Called when a fetch or login is complete to set the known server data to\n * the given object.\n */\n _finishFetch(serverData: AttributeMap) {\n if (!this.id && serverData.id) {\n this.id = serverData.id\n }\n const state = Config.getStateManager()\n state.initializeState(this._getStateIdentifier())\n const decoded: Partial<{\n createdAt?: Date\n updatedAt?: Date\n ACL?: any\n [key: string]: any\n }> = {}\n for (const attr in serverData) {\n const targetKey = transformedKeys[attr] ?? attr\n if (targetKey === '_acl') {\n decoded[targetKey] = new NimbuACL(serverData[attr])\n } else if (targetKey !== 'id') {\n decoded[targetKey] = decode(attr, serverData[attr])\n const decodedTargetValue = decoded[targetKey]\n if (decodedTargetValue instanceof NimbuRelation || decodedTargetValue instanceof NimbuGallery) {\n decodedTargetValue._ensureParentAndKey(this, attr)\n }\n }\n }\n if (decoded.createdAt && typeof decoded.createdAt === 'string') {\n decoded.createdAt = parseDate(decoded.createdAt) || undefined\n }\n if (decoded.updatedAt && typeof decoded.updatedAt === 'string') {\n decoded.updatedAt = parseDate(decoded.updatedAt) || undefined\n }\n if (!decoded.updatedAt && decoded.createdAt) {\n decoded.updatedAt = decoded.createdAt\n }\n\n state.commitServerChanges(this._getStateIdentifier(), decoded)\n }\n\n static async _save<T extends ChannelConfig, K extends NimbuObject<T>[] | NimbuObject<T>>(\n target: K,\n options?: IOptions\n ): Promise<K extends Array<NimbuObject<T>> ? NimbuObject<T>[] : NimbuObject<T>> {\n if (Array.isArray(target)) {\n const saved: NimbuObject<T>[] = []\n await continueWhile(\n () => target.length > 0,\n async () => {\n const objectToSave = target.shift()\n if (objectToSave) {\n saved.push(await NimbuObject._save(objectToSave, options))\n }\n }\n )\n return saved as any\n } else if (target != null) {\n const params = target._getSaveParams(options)\n // try {\n const { body } = await _request(params)\n return target._finishSave(body) as any\n // }\n } else {\n throw new Error('Cannot save a null object')\n }\n }\n\n /**\n * Creates a reference to a subclass of Nimbu.Object with the given id. This\n * does not exist on Nimbu.Object, only on subclasses.\n *\n * <p>A shortcut for: <pre>\n * var Foo = Nimbu.Object.extend(\"Foo\");\n * var pointerToFoo = new Foo();\n * pointerToFoo.id = \"myObjectId\";\n * </pre>\n *\n * @param {string} id The ID of the object to create a reference to.\n * @static\n * @returns {Nimbu.Object} A Nimbu.Object reference.\n */\n static createWithoutData(id: string): NimbuObject {\n const obj = new this()\n obj.id = id\n return obj\n }\n\n /*\n * Returns the appropriate subclass for making new instances of the given\n * className string.\n */\n static _getSubclass = (className: string | number): typeof NimbuObject => {\n if (!isString(className)) {\n throw 'Nimbu.Object._getSubclass requires a string argument.'\n }\n let ObjectClass = classMap[className]\n if (!ObjectClass) {\n ObjectClass = NimbuObject.extend(className)\n classMap[className] = ObjectClass\n }\n return ObjectClass\n }\n\n /*\n * Creates an instance of a subclass of Nimbu.Object for the given class name.\n */\n static _create = function (className: string, attributes?: AttributeMap, options?: any) {\n const ObjectClass = NimbuObject._getSubclass(className)\n return new ObjectClass(attributes as any, options)\n }\n\n /**\n * Creates a new instance of a Nimbu Object from a JSON representation.\n *\n * @param {object} json The JSON map of the Object's data\n * @param {boolean} override In single instance mode, all old server data\n * is overwritten if this is set to true\n * @param {boolean} dirty Whether the Nimbu.Object should set JSON keys to dirty\n * @static\n * @returns {Nimbu.Object} A Nimbu.Object reference\n */\n\n static fromJSON(json: AttributeMap & { className: string }): NimbuObject\n static fromJSON(json: AttributeMap, className: string, override?: boolean, dirty?: boolean): NimbuObject\n static fromJSON(json: AttributeMap, className?: string, override?: boolean, dirty?: boolean): NimbuObject {\n if (!className && !json.className) throw new Error('Cannot create an object without a className')\n\n const constructor = classMap[className ?? json.className]\n const object: NimbuObject = constructor\n ? // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n new constructor(className ?? json.className)\n : new NimbuObject(className ?? json.className)\n const otherAttributes: AttributeMap = {}\n for (const attr in json) {\n if (attr !== 'className' && attr !== '__type') {\n otherAttributes[attr] = json[attr]\n if (dirty) {\n object.set(attr, json[attr])\n }\n }\n }\n if (override) {\n // id needs to be set before clearServerData can work\n if (otherAttributes.id) {\n object.id = otherAttributes.id\n }\n }\n object._finishFetch(otherAttributes)\n return object\n }\n\n /*\n * Returns a JSON version of the custom fields defined for this object.\n * @return {Object}\n */\n // static config = function(options: { forceChannel?: any } = {}) {\n // const request = _request({\n // method: 'GET',\n // route: 'objects',\n // className: this.prototype.className,\n // id: 'customizations',\n // forceChannel: options.forceChannel,\n // });\n // return request.then(({ body }) => body);\n // };\n\n /**\n * Creates a new subclass of Nimbu.Object for the given Nimbu class name.\n *\n * <p>Every extension of a Nimbu class will inherit from the most recent\n * previous extension of that class. When a Nimbu.Object is automatically\n * created by parsing JSON, it will use the most recent extension of that\n * class.</p>\n *\n * <p>You should call either:<pre>\n * var MyClass = Nimbu.Object.extend(\"MyClass\", {\n * <i>Instance methods</i>,\n * initialize: function(attrs, options) {\n * this.someInstanceProperty = [],\n * <i>Other instance properties</i>\n * }\n * }, {\n * <i>Class properties</i>\n * });</pre>\n * or, for Backbone compatibility:<pre>\n * var MyClass = Nimbu.Object.extend({\n * className: \"MyClass\",\n * <i>Instance methods</i>,\n * initialize: function(attrs, options) {\n * this.someInstanceProperty = [],\n * <i>Other instance properties</i>\n * }\n * }, {\n * <i>Class properties</i>\n * });</pre></p>\n *\n * @param {string} className The name of the Nimbu class backing this model.\n * @param {object} protoProps Instance properties to add to instances of the\n * class returned from this method.\n * @param {object} classProps Class properties to add the class returned from\n * this method.\n * @returns {Nimbu.Object} A new subclass of Nimbu.Object.\n */\n static extend<T extends ChannelConfig = any>(className: any, protoProps?: any, classProps?: any): NimbuSubClass<T> {\n if (typeof className !== 'string') {\n if (className && typeof className.className === 'string') {\n return NimbuObject.extend(className.className, className, protoProps)\n } else {\n throw new Error(\"Nimbu.Object.extend's first argument should be the className.\")\n }\n }\n\n let parentProto = NimbuObject.prototype\n if (Object.prototype.hasOwnProperty.call(this, '__super__') && (this as any).__super__) {\n parentProto = this.prototype\n }\n let NimbuObjectSubclass = function (this: NimbuObject, attributes: any, options: any) {\n this.cid = uniqueId('c')\n this.className = className\n this._objCount = objectCount++\n // Enable legacy initializers\n if (typeof this.initialize === 'function') {\n // eslint-disable-next-line prefer-rest-params, prefer-spread\n this.initialize.apply(this, arguments as any)\n }\n\n if ((this as any)._initializers) {\n for (const initializer of (this as any)._initializers) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, prefer-rest-params\n initializer.apply(this, arguments)\n }\n }\n\n if (attributes && typeof attributes === 'object') {\n if (!this.set(attributes || {}, options)) {\n throw new Error(\"Can't create an invalid Nimbu Object\")\n }\n }\n }\n if (classMap[className]) {\n NimbuObjectSubclass = classMap[className]\n } else {\n // TODO: Maybe there is a more elegant solution to this?\n ;(NimbuObjectSubclass as any).extend = function (name: string, protoProps: any, classProps: any) {\n if (typeof name === 'string') {\n return NimbuObject.extend.call(NimbuObjectSubclass, name, protoProps, classProps)\n }\n return NimbuObject.extend.call(NimbuObjectSubclass, className, name, protoProps)\n }\n // eslint-disable-next-line @typescript-eslint/unbound-method\n ;(NimbuObjectSubclass as any).createWithoutData = NimbuObject.createWithoutData\n ;(NimbuObjectSubclass as any).className = className\n ;(NimbuObjectSubclass as any).__super__ = parentProto\n NimbuObjectSubclass.prototype = Object.create(parentProto, {\n constructor: {\n value: NimbuObjectSubclass,\n enumerable: false,\n writable: true,\n configurable: true,\n },\n })\n }\n\n if (protoProps) {\n for (const prop in protoProps) {\n if (prop === 'initialize') {\n Object.defineProperty(NimbuObjectSubclass.prototype, '_initializers', {\n value: [...(NimbuObjectSubclass.prototype._initializers || []), protoProps[prop]],\n enumerable: false,\n writable: true,\n configurable: true,\n })\n continue\n }\n if (prop !== 'className') {\n Object.defineProperty(NimbuObjectSubclass.prototype, prop, {\n value: protoProps[prop],\n enumerable: false,\n writable: true,\n configurable: true,\n })\n }\n }\n }\n\n if (classProps) {\n for (const prop in classProps) {\n if (prop !== 'className') {\n Object.defineProperty(NimbuObjectSubclass, prop, {\n value: classProps[prop],\n enumerable: false,\n writable: true,\n configurable: true,\n })\n }\n }\n }\n classMap[className] = NimbuObjectSubclass\n return NimbuObjectSubclass as unknown as NimbuSubClass<T>\n }\n\n static setDefaultGetOptions = (options: IGetOptions = {}) => {\n _defaultGetOptions = options\n }\n\n /**\n * Saves the given list of Nimbu.Object.\n * If any error is encountered, stops and calls the error handler.\n *\n * <pre>\n * Nimbu.Object.saveAll([object1, object2, ...])\n * .then((list) => {\n * // All the objects were saved.\n * }, (error) => {\n * // An error occurred while saving one of the objects.\n * });\n * </pre>\n *\n * @param {Array} list A list of <code>Nimbu.Object</code>.\n * @param {object} options\n * @static\n * @returns {Nimbu.Object[]}\n */\n static saveAll(list: Array<NimbuObject>, saveOptions: IOptions = {}): Promise<NimbuObject[]> {\n return NimbuObject._save(list, saveOptions)\n }\n\n /**\n * Registers a subclass of Nimbu.Object with a specific class name.\n * When objects of that class are retrieved from a query, they will be\n * instantiated with this subclass. This is only necessary when using ES6 subclassing.\n *\n * @param {string} className The class name of the subclass\n * @param {Function} constructor The subclass\n */\n static registerSubclass(className: string, constructor: any) {\n if (typeof className !== 'string') {\n throw new TypeError('The first argument must be a valid class name.')\n }\n if (typeof constructor === 'undefined') {\n throw new TypeError('You must supply a subclass constructor.')\n }\n if (typeof constructor !== 'function') {\n throw new TypeError(\n `You must register the subclass constructor for ${className}. Did you attempt to register an instance of the subclass?`\n )\n }\n classMap[className] = constructor\n if (!constructor.className) {\n constructor.className = className\n }\n }\n\n /**\n * Unregisters a subclass of Nimbu.Object with a specific class name.\n *\n * @param {string} className The class name of the subclass\n */\n static unregisterSubclass(className: string) {\n if (typeof className !== 'string') {\n throw new TypeError('The first argument must be a valid class name.')\n }\n delete classMap[className]\n }\n}\n\ninterface NimbuSubClass<T extends ChannelConfig = ChannelConfig> extends NimbuObject<T> {\n // eslint-disable-next-line @typescript-eslint/no-misused-new\n new (attributes?: AttributeMap): NimbuSubClass<T>\n}\nexport default NimbuObject\n","/* eslint-disable @typescript-eslint/no-redundant-type-constituents */\nimport {\n ChannelConfig,\n NimbuGallery,\n NimbuGalleryImage,\n NimbuGalleryImageJSON,\n NimbuObject,\n NimbuRelation,\n Reference,\n _objectEach,\n arrayContainsObject,\n decode,\n encode,\n unique,\n} from '../internal'\n\nimport { compact, contains, difference, extend, map, pairs, reject, union } from 'underscore'\n\nexport function atomicFromJSON(json: { [key: string]: any }): NimbuAtomic | null {\n if (!json || !json.__op) {\n return null\n }\n switch (json.__op) {\n case 'Delete':\n return new AtomicUnset()\n case 'Increment':\n return new AtomicIncrement(json.amount)\n case 'Add':\n return new AtomicAdd(decode(json.objects))\n case 'AddUnique':\n return new AtomicAddUnique(decode(json.objects))\n case 'Remove':\n return new AtomicRemove(decode(json.objects))\n case 'AddRelation': {\n const toAdd = decode(json.objects)\n if (!Array.isArray(toAdd)) {\n return new AtomicRelation([], [])\n }\n return new AtomicRelation(toAdd, [])\n }\n case 'RemoveRelation': {\n const toRemove = decode(json.objects)\n if (!Array.isArray(toRemove)) {\n return new AtomicRelation([], [])\n }\n return new AtomicRelation([], toRemove)\n }\n case 'Batch': {\n let toAdd: NimbuObject[] = []\n let toRemove: NimbuObject[] = []\n for (let i = 0; i < json.ops.length; i++) {\n if (json.ops[i].__op === 'AddRelation') {\n toAdd = toAdd.concat(decode(json.ops[i].objects))\n } else if (json.ops[i].__op === 'RemoveRelation') {\n toRemove = toRemove.concat(decode(json.ops[i].objects))\n }\n }\n return new AtomicRelation(toAdd, toRemove)\n }\n }\n return null\n}\n\nexport class NimbuAtomic {\n __op?: string\n objects?: any[]\n\n // Empty parent class\n applyTo(...value: any): any {} /* eslint-disable-line @typescript-eslint/no-unused-vars */\n mergeWith(previous: NimbuAtomic): NimbuAtomic {\n return previous // Added return statement\n }\n toJSON(): any {}\n}\n\nexport class AtomicSet extends NimbuAtomic {\n _value: any\n\n constructor(value: any) {\n super()\n this._value = value\n }\n\n get value() {\n return this._value\n }\n\n applyTo(): any {\n return this._value\n }\n\n mergeWith(): AtomicSet {\n return new AtomicSet(this._value)\n }\n\n toJSON(): any {\n return encode({\n value: this._value,\n disallowObjects: false,\n forcePointers: true,\n })\n }\n}\n\nexport class AtomicUnset extends NimbuAtomic {\n applyTo() {\n return undefined\n }\n\n mergeWith(): AtomicUnset {\n return new AtomicUnset()\n }\n\n toJSON(): { __op: string } {\n return { __op: 'Delete' }\n }\n}\n\nexport class AtomicIncrement extends NimbuAtomic {\n _amount: number\n\n constructor(amount: number) {\n super()\n if (typeof amount !== 'number') {\n throw new TypeError('Increment Op must be initialized with a numeric amount.')\n }\n this._amount = amount\n }\n\n applyTo(value: any): number {\n if (typeof value === 'undefined') {\n return this._amount\n }\n if (typeof value !== 'number') {\n throw new TypeError('Cannot increment a non-numeric value.')\n }\n return this._amount + value\n }\n\n mergeWith(previous: NimbuAtomic): NimbuAtomic {\n if (!previous) {\n return this\n }\n if (previous instanceof AtomicSet) {\n return new AtomicSet(this.applyTo(previous._value))\n }\n if (previous instanceof AtomicUnset) {\n return new AtomicSet(this._amount)\n }\n if (previous instanceof AtomicIncrement) {\n return new AtomicIncrement(this.applyTo(previous._amount))\n }\n throw new Error('Cannot merge Increment Op with the previous Op')\n }\n\n toJSON(): { __op: string; amount: number } {\n return { __op: 'Increment', amount: this._amount }\n }\n}\n\nexport class AtomicAdd extends NimbuAtomic {\n _value: any[]\n\n constructor(value: any | any[]) {\n super()\n this._value = Array.isArray(value) ? value : [value]\n }\n\n applyTo(value: any): any[] {\n if (value == null) {\n return this._value\n }\n if (Array.isArray(value)) {\n return value.concat(this._value)\n }\n throw new Error('Cannot add elements to a non-array value')\n }\n\n mergeWith(previous: NimbuAtomic): NimbuAtomic {\n if (!previous) {\n return this\n }\n if (previous instanceof AtomicSet) {\n return new AtomicSet(this.applyTo(previous._value))\n }\n if (previous instanceof AtomicUnset) {\n return new AtomicSet(this._value)\n }\n if (previous instanceof AtomicAdd) {\n return new AtomicAdd(this.applyTo(previous._value))\n }\n throw new Error('Cannot merge AtomicAdd with the previous Atomic operation')\n }\n\n toJSON(): { __op: string; objects: any } {\n return {\n __op: 'Add',\n objects: encode({\n value: this._value,\n disallowObjects: false,\n forcePointers: true,\n }),\n }\n }\n}\n\nexport class AtomicAddUnique extends NimbuAtomic {\n _value: any[]\n\n constructor(value: any | any[]) {\n super()\n this._value = unique(Array.isArray(value) ? value : [value])\n }\n\n applyTo(value: any | any[]): any[] {\n if (value == null) {\n return this._value || []\n }\n if (Array.isArray(value)) {\n const toAdd: any[] = []\n this._value.forEach((v) => {\n if (v instanceof NimbuObject) {\n if (!arrayContainsObject(value, v)) {\n toAdd.push(v)\n }\n } else {\n if (value.indexOf(v) < 0) {\n toAdd.push(v)\n }\n }\n })\n return value.concat(toAdd)\n }\n throw new Error('Cannot add elements to a non-array value')\n }\n\n mergeWith(previous: NimbuAtomic): NimbuAtomic {\n if (!previous) {\n return this\n }\n if (previous instanceof AtomicSet) {\n return new AtomicSet(this.applyTo(previous._value))\n }\n if (previous instanceof AtomicUnset) {\n return new AtomicSet(this._value)\n }\n if (previous instanceof AtomicAddUnique) {\n return new AtomicAddUnique(this.applyTo(previous._value))\n }\n throw new Error('Cannot merge AddUnique Op with the previous Op')\n }\n\n toJSON(): { __op: string; objects: any } {\n return {\n __op: 'AddUnique',\n objects: encode({\n value: this._value,\n disallowObjects: false,\n forcePointers: true,\n }),\n }\n }\n}\n\nexport class AtomicRemove extends NimbuAtomic {\n _value: any[]\n\n constructor(value: any | any[]) {\n super()\n this._value = unique(Array.isArray(value) ? value : [value])\n }\n\n applyTo(value: any | any[]): any[] {\n if (value == null) {\n return []\n }\n if (Array.isArray(value)) {\n // var i = value.indexOf(this._value);\n const removed = value.concat([])\n for (let i = 0; i < this._value.length; i++) {\n let index = removed.indexOf(this._value[i])\n while (index > -1) {\n removed.splice(index, 1)\n index = removed.indexOf(this._value[i])\n }\n if (this._value[i] instanceof NimbuObject && this._value[i].id) {\n for (let j = 0; j < removed.length; j++) {\n if (removed[j] instanceof NimbuObject && this._value[i].id === removed[j].id) {\n removed.splice(j, 1)\n j--\n }\n }\n }\n }\n return removed\n }\n throw new Error('Cannot remove elements from a non-array value')\n }\n\n mergeWith(previous: NimbuAtomic): NimbuAtomic {\n if (!previous) {\n return this\n }\n if (previous instanceof AtomicSet) {\n return new AtomicSet(this.applyTo(previous._value))\n }\n if (previous instanceof AtomicUnset) {\n return new AtomicUnset()\n }\n if (previous instanceof AtomicRemove) {\n const uniques = previous._value.concat([])\n for (let i = 0; i < this._value.length; i++) {\n if (this._value[i] instanceof NimbuObject) {\n if (!arrayContainsObject(uniques, this._value[i])) {\n uniques.push(this._value[i])\n }\n } else {\n if (uniques.indexOf(this._value[i]) < 0) {\n uniques.push(this._value[i])\n }\n }\n }\n return new AtomicRemove(uniques)\n }\n throw new Error('Cannot merge Remove Op with the previous Op')\n }\n\n toJSON(): { __op: string; objects: any } {\n return {\n __op: 'Remove',\n objects: encode({\n value: this._value,\n disallowObjects: false,\n forcePointers: true,\n }),\n }\n }\n}\n\nexport class AtomicRelation<T extends ChannelConfig = ChannelConfig> extends NimbuAtomic {\n _targetClassName: string | null\n relationsToAdd: Array<string> = []\n relationsToRemove: Array<string> = []\n\n constructor(adds: Array<NimbuObject<T> | string>, removes: Array<NimbuObject<T> | string>) {\n super()\n this._targetClassName = null\n\n if (Array.isArray(adds)) {\n this.relationsToAdd = unique(adds.map((o) => this._extractId(o), this))\n }\n\n if (Array.isArray(removes)) {\n this.relationsToRemove = unique(removes.map((o) => this._extractId(o), this))\n }\n }\n\n _extractId(obj: string | NimbuObject<T>): string {\n if (typeof obj === 'string') {\n return obj\n }\n if (!obj.id) {\n throw new Error('You cannot add or remove an unsaved Nimbu Object from a relation')\n }\n if (!this._targetClassName) {\n this._targetClassName = obj.className\n }\n if (this._targetClassName !== obj.className) {\n throw new Error(\n `Tried to create a Relation with 2 different object types: ${this._targetClassName} and ${obj.className}.`\n )\n }\n return obj.id\n }\n\n applyTo(value: any, object?: { className: string; id?: string }, key?: string): NimbuRelation<T> {\n if (!value) {\n if (!object || !key) {\n throw new Error('Cannot apply a AtomicRelation without either a previous value, or an object and a key')\n }\n const parent = new NimbuObject(object.className)\n if (object.id) {\n parent.id = object.id\n }\n const relation = new NimbuRelation<T>(parent, key)\n relation.targetClassName = this._targetClassName\n return relation\n }\n if (value instanceof NimbuRelation) {\n if (this._targetClassName) {\n if (value.targetClassName) {\n if (this._targetClassName !== value.targetClassName) {\n throw new Error(\n `Related object must be a ${value.targetClassName} but a ${this._targetClassName} was passed in.`\n )\n }\n } else {\n value.targetClassName = this._targetClassName\n }\n }\n return value\n } else {\n throw new Error('Relation cannot be applied to a non-relation field')\n }\n }\n\n mergeWith(previous: NimbuAtomic): NimbuAtomic {\n if (!previous) {\n return this\n } else if (previous instanceof AtomicUnset) {\n throw new Error('You cannot modify a relation after deleting it.')\n } else if (previous instanceof AtomicSet && previous._value instanceof NimbuRelation) {\n return this\n } else if (previous instanceof AtomicRelation) {\n if (previous._targetClassName && previous._targetClassName !== this._targetClassName) {\n throw new Error(\n `Related object must be of class ${previous._targetClassName} but ${\n this._targetClassName || 'null'\n } was passed in.`\n )\n }\n const newAdd = previous.relationsToAdd.concat([])\n this.relationsToRemove.forEach((r) => {\n const index = newAdd.indexOf(r)\n if (index > -1) {\n newAdd.splice(index, 1)\n }\n })\n this.relationsToAdd.forEach((r) => {\n const index = newAdd.indexOf(r)\n if (index < 0) {\n newAdd.push(r)\n }\n })\n\n const newRemove = previous.relationsToRemove.concat([])\n this.relationsToAdd.forEach((r) => {\n const index = newRemove.indexOf(r)\n if (index > -1) {\n newRemove.splice(index, 1)\n }\n })\n this.relationsToRemove.forEach((r) => {\n const index = newRemove.indexOf(r)\n if (index < 0) {\n newRemove.push(r)\n }\n })\n\n const newRelation = new AtomicRelation(newAdd, newRemove)\n newRelation._targetClassName = this._targetClassName\n return newRelation\n }\n throw new Error('Cannot merge Relation Op with the previous Op')\n }\n\n toJSON(): { __op?: string; objects?: any; ops?: any } {\n const idToPointer = (id: string) => {\n const ret: Reference = {\n __type: 'Reference',\n className: this._targetClassName!,\n id: id,\n }\n return ret\n }\n\n let references: null | Reference[] = null\n let adds: null | { __op: string; objects: null | Reference[] } = null\n let removes: null | { __op: string; objects: null | Reference[] } = null\n\n if (this.relationsToAdd.length > 0) {\n references = this.relationsToAdd.map(idToPointer)\n adds = { __op: 'AddRelation', objects: references }\n }\n if (this.relationsToRemove.length > 0) {\n references = this.relationsToRemove.map(idToPointer)\n removes = { __op: 'RemoveRelation', objects: references }\n }\n\n if (adds && removes) {\n return { __op: 'Batch', ops: [adds, removes] }\n }\n return adds || removes || {}\n }\n}\n\nexport class AtomicRemoveFile extends NimbuAtomic {\n /*\n * Returns a JSON version of the operation suitable for sending to Nimbu.\n * @return {Object}\n */\n toJSON() {\n return {\n __type: 'File',\n remove: '1',\n }\n }\n\n applyTo(): any {\n return this\n }\n\n mergeWith(): AtomicRemoveFile {\n return new AtomicRemoveFile()\n }\n}\n\nexport class AtomicGallery<P extends ChannelConfig = ChannelConfig> extends NimbuAtomic {\n _imagesToAdd: NimbuGalleryImage<P>[]\n _idsToAdd: string[]\n _idsToRemove: string[]\n _imagesToRemove: NimbuGalleryImage<P>[]\n _idsToUpdate: { [key: string]: any }\n\n constructor(adds: NimbuGalleryImage<P>[], removes: NimbuGalleryImage<P>[], updates: NimbuGalleryImage<P>[]) {\n super()\n\n // The new ones\n this._imagesToAdd = reject(adds, (img) => img?.id != null)\n\n // The ones that have an id already -> must have belonged to this gallery before\n // Keep the ids around to remove from previous._idsToRemove in _mergeWithPrevious\n this._idsToAdd = compact(map(adds, (img) => img?.id))\n\n // The ones we can remove by id\n this._idsToRemove = compact(map(removes, (img) => img?.id))\n\n // The ones without an id -> keep them around to remove from previous._imagesToAdd in _mergeWithPrevious\n this._imagesToRemove = reject(removes, (img) => img?.id != null)\n\n this._idsToUpdate = updates\n }\n\n _additions() {\n return map(this._imagesToAdd, (image) => image.toJSON())\n }\n\n _removals() {\n return map(\n this._idsToRemove,\n (id) =>\n ({\n __type: 'GalleryImage',\n id: id,\n remove: true,\n } as NimbuGalleryImageJSON)\n )\n }\n\n _updates() {\n return map(pairs(this._idsToUpdate), (pair) => {\n return extend(\n {\n __type: 'GalleryImage',\n id: pair[0],\n },\n pair[1]\n )\n })\n }\n\n _images() {\n let images = this._additions()\n images = images.concat(this._removals())\n images = images.concat(this._updates())\n return images\n }\n\n /*\n Returns a JSON version of the operation suitable for sending to Nimbu.\n @return {Object}\n */\n toJSON() {\n return {\n __type: 'Gallery',\n images: this._images(),\n }\n }\n\n mergeWith(previous: any) {\n const newUpdates: any = {}\n\n if (previous) {\n this._imagesToAdd = union(difference(previous._imagesToAdd, this._imagesToRemove), this._imagesToAdd)\n this._idsToRemove = union(difference(previous._idsToRemove, this._idsToAdd), this._idsToRemove)\n _objectEach(this._idsToUpdate, function (value, key) {\n if (previous._idsToUpdate[key] != null) {\n return (newUpdates[key] = extend(previous._idsToUpdate[key], value))\n } else {\n return (newUpdates[key] = value)\n }\n })\n this._idsToUpdate = newUpdates\n this._idsToAdd = []\n this._imagesToRemove = []\n return this\n } else {\n return this\n }\n }\n\n _estimate(oldValue: any, object: any, key: any) {\n let images, oldImages\n\n if (!oldValue) {\n return new NimbuGallery<P>(object, key, ([] as NimbuGalleryImage<P>[]).concat(this._imagesToAdd))\n } else if (oldValue instanceof NimbuGallery) {\n oldImages = map(oldValue._images, (image) => {\n let attributes = image.attributes\n if (this._idsToUpdate != null && this._idsToUpdate[image.id] != null) {\n attributes = extend({}, attributes, this._idsToUpdate[image.id])\n }\n return new NimbuGalleryImage<P>(attributes)\n })\n images = union(oldImages, this._imagesToAdd)\n images = reject(images, (image) => {\n return contains(this._idsToRemove, image.id)\n })\n return new NimbuGallery(object, key, images)\n } else {\n throw 'Atomic is invalid after previous op'\n }\n }\n}\n\nexport default NimbuAtomic\n","import { NimbuCustomer, NimbuRole, _objectEach } from '../internal'\nimport { clone, isBoolean, isEmpty, isFunction, isObject, isString } from 'underscore'\n\ntype PermissionsMap = { [permission: string]: boolean }\ntype PermissionsByIdMap = { [userId: string]: PermissionsMap }\n\nconst PUBLIC_KEY = '*'\nconst AUTHENTICATED_KEY = 'users'\n\n/*\n * Creates a new ACL.\n * If no argument is given, the ACL has no permissions for anyone.\n * If the argument is a Nimbu.Customer, the ACL will have read and write\n * permission for only that customer.\n * If the argument is any other JSON object, that object will be interpretted\n * as a serialized ACL created with toJSON().\n * @see Nimbu.Object#setACL\n * @class\n *\n * <p>An ACL, or Access Control List can be added to any\n * <code>Nimbu.Object</code> to restrict access to only a subset of customers\n * of your application.</p>\n */\nexport class NimbuACL {\n permissionsById: PermissionsByIdMap = {}\n\n constructor(object: any) {\n if (isObject(object)) {\n if (object instanceof NimbuCustomer) {\n this.allowRead(object, true)\n this.allowUpdate(object, true)\n this.allowDelete(object, true)\n } else if (isFunction(object)) {\n throw 'Nimbu.ACL() called with a function?'\n } else {\n _objectEach(object, (accessList: any, customerId: string | number) => {\n if (!isString(customerId)) {\n throw 'Tried to create an ACL with an invalid customerId.'\n }\n\n this.permissionsById[customerId] = {}\n\n _objectEach(accessList, (allowed = true, permission: string) => {\n if (permission !== 'read' && permission !== 'update' && permission !== 'delete') {\n throw `Tried to create an ACL with an invalid permission type ${permission}.`\n }\n\n if (!isBoolean(allowed)) {\n throw 'Tried to create an ACL with an invalid permission value.'\n }\n\n this.permissionsById[customerId][permission] = allowed\n })\n })\n }\n }\n }\n\n /*\n * Returns a JSON-encoded version of the ACL.\n * @return {Object}\n */\n toJSON(): PermissionsByIdMap {\n return clone(this.permissionsById)\n }\n\n _setPermission(action: string | number, customerId: string | NimbuCustomer | NimbuRole, allowed = true) {\n if (customerId instanceof NimbuCustomer) {\n customerId = 'id:' + customerId.id\n } else if (customerId instanceof NimbuRole) {\n customerId = 'role:' + customerId.getName()\n }\n\n if (!isString(customerId)) {\n throw 'customerId must be a string.'\n }\n\n if (!isBoolean(allowed)) {\n throw 'allowed must be either true or false.'\n }\n let permissions = this.permissionsById[customerId]\n if (!permissions) {\n if (!allowed) {\n // The customer already doesn't have this permission, so no action needed.\n } else {\n permissions = {}\n this.permissionsById[customerId] = permissions\n }\n }\n if (allowed) {\n this.permissionsById[customerId][action] = true\n } else {\n delete permissions[action]\n\n if (isEmpty(permissions)) {\n delete permissions[customerId]\n } // TODO: => moet dit niet @permissionsById zijn?\n }\n }\n\n _getPermission(action: string | number, customerId: string | NimbuCustomer | NimbuRole) {\n if (customerId instanceof NimbuCustomer) {\n customerId = 'id:' + customerId.id\n } else if (customerId instanceof NimbuRole) {\n customerId = 'role:' + customerId.getName()\n }\n const permissions = this.permissionsById[customerId]\n if (!permissions) {\n return false\n }\n if (permissions[action]) {\n return true\n } else {\n return false\n }\n }\n\n /*\n * Set whether the given customer is allowed to read this object.\n * @param customerId An instance of Nimbu.Customer or its id.\n * @param {Boolean} allowed Whether that customer should have read access.\n */\n allowRead(customerId: string | NimbuCustomer | NimbuRole, allowed = true) {\n return this._setPermission('read', customerId, allowed)\n }\n\n /*\n * Get whether the given customer is allowed to read this object.\n *\n * Even if this returns false, the customer may still be able to access it if\n * getPublicReadAccess returns true or a role that the customer belongs to has\n * write access.\n * @param customerId An instance of Nimbu.Customer or its id, or a Nimbu.Role.\n * @return {Boolean}\n */\n getReadAccess(customerId: string | NimbuCustomer | NimbuRole) {\n return this._getPermission('read', customerId)\n }\n\n /*\n * Set whether the given customer id is allowed to update this object.\n * @param customerId An instance of Nimbu.Customer or its id, or a Nimbu.Role..\n * @param {Boolean} allowed Whether that customer should have update access.\n */\n allowUpdate(customerId: string | NimbuCustomer | NimbuRole, allowed = true) {\n return this._setPermission('update', customerId, allowed)\n }\n\n /*\n * Get whether the given customer id is *explicitly* allowed to update this object.\n * Even if this returns false, the customer may still be able to update it if\n * getPublicUpdateAccess returns true or a role that the customer belongs to has\n * update access.\n * @param customerId An instance of Nimbu.Customer or its id, or a Nimbu.Role.\n * @return {Boolean}\n */\n getUpdateAccess(customerId: string | NimbuCustomer | NimbuRole) {\n return this._getPermission('update', customerId)\n }\n\n /*\n * Set whether the given customer id is allowed to update this object.\n * @param customerId An instance of Nimbu.Customer or its id, or a Nimbu.Role..\n * @param {Boolean} allowed Whether that customer should have update access.\n */\n allowDelete(customerId: string | NimbuCustomer | NimbuRole, allowed = true) {\n return this._setPermission('delete', customerId, allowed)\n }\n\n /*\n * Get whether the given customer id is *explicitly* allowed to update this object.\n * Even if this returns false, the customer may still be able to update it if\n * getPublicUpdateAccess returns true or a role that the customer belongs to has\n * update access.\n * @param customerId An instance of Nimbu.Customer or its id, or a Nimbu.Role.\n * @return {Boolean}\n */\n getDeleteAccess(customerId: string | NimbuCustomer | NimbuRole) {\n return this._getPermission('delete', customerId)\n }\n\n /*\n * Set whether the public is allowed to read this object.\n * @param {Boolean} allowed\n */\n setPublicReadAccess(allowed = true) {\n return this.allowRead(PUBLIC_KEY, allowed)\n }\n\n /*\n * Get whether the public is allowed to read this object.\n * @return {Boolean}\n */\n getPublicReadAccess() {\n return this.getReadAccess(PUBLIC_KEY)\n }\n\n /*\n * Set whether the public is allowed to update this object.\n * @param {Boolean} allowed\n */\n setPublicUpdateAccess(allowed = true) {\n return this.allowUpdate(PUBLIC_KEY, allowed)\n }\n\n /*\n * Get whether the public is allowed to update this object.\n * @return {Boolean}\n */\n getPublicUpdateAccess() {\n return this.getUpdateAccess(PUBLIC_KEY)\n }\n\n /*\n * Set whether the public is allowed to delete this object.\n * @param {Boolean} allowed\n */\n setPublicDeleteAccess(allowed = true) {\n return this.allowDelete(PUBLIC_KEY, allowed)\n }\n\n /*\n * Get whether the public is allowed to delete this object.\n * @return {Boolean}\n */\n getPublicDeleteAccess() {\n return this.getDeleteAccess(PUBLIC_KEY)\n }\n\n /*\n * Set whether logged-in users are allowed to read this object.\n * @param {Boolean} allowed\n */\n setLoggedInReadAccess(allowed = true) {\n return this.allowRead(AUTHENTICATED_KEY, allowed)\n }\n\n /*\n * Get whether logged-in users are allowed to read this object.\n * @return {Boolean}\n */\n getLoggedInReadAccess() {\n return this.getReadAccess(AUTHENTICATED_KEY)\n }\n\n /*\n * Set whether logged-in users are allowed to update this object.\n * @param {Boolean} allowed\n */\n setLoggedInUpdateAccess(allowed = true) {\n return this.allowUpdate(AUTHENTICATED_KEY, allowed)\n }\n\n /*\n * Get whether logged-in users are allowed to update this object.\n * @return {Boolean}\n */\n getLoggedInUpdateAccess() {\n return this.getUpdateAccess(AUTHENTICATED_KEY)\n }\n\n /*\n * Set whether logged-in users are allowed to delete this object.\n * @param {Boolean} allowed\n */\n setLoggedInDeleteAccess(allowed = true) {\n return this.allowDelete(AUTHENTICATED_KEY, allowed)\n }\n\n /*\n * Get whether logged-in users are allowed to delete this object.\n * @return {Boolean}\n */\n getLoggedInDeleteAccess() {\n return this.getDeleteAccess(AUTHENTICATED_KEY)\n }\n\n /*\n * Get whether customers belonging to the given role are allowed\n * to read this object. Even if this returns false, the role may\n * still be able to write it if a parent role has read access.\n *\n * @param role The name of the role, or a Nimbu.Role object.\n * @return {Boolean} true if the role has read access. false otherwise.\n * @throws {String} If role is neither a Nimbu.Role nor a String.\n */\n getRoleReadAccess(role: string | NimbuRole) {\n // Normalize to the String name\n if (role instanceof NimbuRole) {\n role = role.getName()\n }\n\n if (isString(role)) {\n return this.getReadAccess('role:' + role)\n }\n\n throw 'role must be a Nimbu.Role or a String'\n }\n\n /*\n * Get whether customers belonging to the given role are allowed\n * to write this object. Even if this returns false, the role may\n * still be able to write it if a parent role has write access.\n *\n * @param role The name of the role, or a Nimbu.Role object.\n * @return {Boolean} true if the role has write access. false otherwise.\n * @throws {String} If role is neither a Nimbu.Role nor a String.\n */\n getRoleUpdateAccess(role: string | NimbuRole) {\n // Normalize to the String name\n if (role instanceof NimbuRole) {\n role = role.getName()\n }\n if (isString(role)) {\n return this.getUpdateAccess('role:' + role)\n }\n throw 'role must be a Nimbu.Role or a String'\n }\n\n /*\n * Get whether customers belonging to the given role are allowed\n * to delete this object. Even if this returns false, the role may\n * still be able to write it if a parent role has write access.\n *\n * @param role The name of the role, or a Nimbu.Role object.\n * @return {Boolean} true if the role has write access. false otherwise.\n * @throws {String} If role is neither a Nimbu.Role nor a String.\n */\n getRoleDeleteAccess(role: string | NimbuRole) {\n // Normalize to the String name\n if (role instanceof NimbuRole) {\n role = role.getName()\n }\n if (isString(role)) {\n return this.getDeleteAccess('role:' + role)\n }\n throw 'role must be a Nimbu.Role or a String'\n }\n\n /*\n * Set whether customers belonging to the given role are allowed\n * to read this object.\n *\n * @param role The name of the role, or a Nimbu.Role object.\n * @param {Boolean} allowed Whether the given role can read this object.\n * @throws {String} If role is neither a Nimbu.Role nor a String.\n */\n setRoleReadAccess(role: string | NimbuRole, allowed = true) {\n // Normalize to the String name\n if (role instanceof NimbuRole) {\n role = role.getName()\n }\n if (isString(role)) {\n this.allowRead('role:' + role, allowed)\n return\n }\n throw 'role must be a Nimbu.Role or a String'\n }\n\n /*\n * Set whether customers belonging to the given role are allowed\n * to update this object.\n *\n * @param role The name of the role, or a Nimbu.Role object.\n * @param {Boolean} allowed Whether the given role can write this object.\n * @throws {String} If role is neither a Nimbu.Role nor a String.\n */\n setRoleUpdateAccess(role: string | NimbuRole, allowed = true) {\n // Normalize to the String name\n if (role instanceof NimbuRole) {\n role = role.getName()\n }\n if (isString(role)) {\n this.allowUpdate('role:' + role, allowed)\n return\n }\n throw 'role must be a Nimbu.Role or a String'\n }\n\n /*\n * Set whether customers belonging to the given role are allowed\n * to delete this object.\n *\n * @param role The name of the role, or a Nimbu.Role object.\n * @param {Boolean} allowed Whether the given role can write this object.\n * @throws {String} If role is neither a Nimbu.Role nor a String.\n */\n setRoleDeleteAccess(role: string | NimbuRole, allowed = true) {\n // Normalize to the String name\n if (role instanceof NimbuRole) {\n role = role.getName()\n }\n if (isString(role)) {\n this.allowDelete('role:' + role, allowed)\n return\n }\n throw 'role must be a Nimbu.Role or a String'\n }\n}\n\nexport default NimbuACL\n","import { _request, RequestOptions } from '../internal'\n\n/*\nContains functions to directly talk with the Nimbu API\n@name Nimbu.API\n@namespace\n*/\nexport type APIRequestOptions = {\n useACL?: boolean\n}\n\nexport const GET = <T extends Record<string, any>>(path: string, options?: APIRequestOptions) =>\n request<T>('GET', path, undefined, options)\nexport const POST = <T extends Record<string, any>>(path: string, data: any, options?: APIRequestOptions) =>\n request<T>('POST', path, data, options)\nexport const PUT = <T extends Record<string, any>>(path: string, data: any, options?: APIRequestOptions) =>\n request<T>('PUT', path, data, options)\nexport const PATCH = <T extends Record<string, any>>(path: string, data: any, options?: APIRequestOptions) =>\n request<T>('PATCH', path, data, options)\nexport const DELETE = (path: string, options?: APIRequestOptions) => request('DELETE', path, undefined, options)\n\nexport const request = <T extends Record<string, any>>(\n method: string,\n path: string,\n data: any,\n options: APIRequestOptions = {}\n) => {\n if (!options) {\n options = {}\n }\n\n if (path.charAt(0) === '/' && path !== '/') {\n path = path.substring(1)\n }\n\n const requestData: RequestOptions = {\n path,\n method,\n useACL: options.useACL,\n }\n\n if ((method === 'POST' || method === 'PUT' || method === 'PATCH') && data != null) {\n requestData.data = data\n }\n\n return _request<T>(requestData)\n}\n\nexport const NimbuAPI = {\n get: GET,\n post: POST,\n put: PUT,\n patch: PATCH,\n delete: DELETE,\n request,\n}\n\nexport default NimbuAPI\n","import { indexOf, isArray, map } from 'underscore'\nimport { NimbuObject, NimbuQuery, _arrayEach, continueWhile } from '../internal'\n\ntype ModelsById = { [key: string]: NimbuObject }\n/*\n * Creates a new instance with the given models and options. Typically, you\n * will not call this method directly, but will instead make a subclass using\n * <code>Nimbu.Collection.extend</code>.\n *\n * @param {Array} models An array of instances of <code>Nimbu.Object</code>.\n *\n * @param {Object} options An optional object with Backbone-style options.\n * Valid options are:<ul>\n * <li>model: The Nimbu.Object subclass that this collection contains.\n * <li>query: An instance of Nimbu.Query to use when fetching items.\n * <li>comparator: A string property name or function to sort by.\n * </ul>\n *\n * @see Nimbu.Collection.extend\n *\n * @class\n *\n * <p>Provides a standard collection class for our sets of models, ordered\n * or unordered. For more information, see the\n * <a href=\"http://documentcloud.github.com/backbone/#Collection\">Backbone\n * documentation</a>.</p>\n */\nexport class NimbuCollection {\n models: NimbuObject[] = []\n\n comparator?: string\n model?: typeof NimbuObject\n query?: NimbuQuery\n\n private length = 0\n private _byCid: ModelsById = {}\n private _byId: ModelsById = {}\n\n constructor(\n models: any,\n options: {\n comparator?: string\n model?: typeof NimbuObject\n query?: NimbuQuery\n } = {}\n ) {\n if (options.comparator) {\n this.comparator = options.comparator\n }\n if (options.model) {\n this.model = options.model\n }\n if (options.query) {\n this.query = options.query\n }\n this._reset()\n // this.initialize.apply(this, arguments);\n if (models) {\n return this.reset(models, {\n silent: true,\n // parse: options.parse,\n })\n }\n }\n\n /*\n Initialize is an empty function by default. Override it with your own\n initialization logic.\n */\n initialize() {}\n\n /*\n The JSON representation of a Collection is an array of the\n models' attributes.\n */\n toJSON() {\n return map(this.models, (model) => model.toJSON())\n }\n\n /*\n Add a model, or list of models to the set. Pass **silent** to avoid\n firing the `add` event for every new model.\n\n @param {Array} models An array of instances of <code>Nimbu.Object</code>.\n\n @param {Object} options An optional object with Backbone-style options.\n Valid options are:<ul>\n <li>at: The index at which to add the models.\n <li>silent: Set to true to avoid firing the `add` event for every new\n model.\n </ul>\n */\n add(models: NimbuObject[], options: { at?: number; silent?: boolean; index?: any; parse?: boolean }) {\n let i = undefined\n let length = undefined\n let model = undefined\n\n const cids: ModelsById = {}\n const ids: ModelsById = {}\n options = options || {}\n models = isArray(models) ? models.slice() : [models]\n\n // Begin by turning bare objects into model references, and preventing\n // invalid models or duplicate models from being added.\n i = 0\n ;({ length } = models)\n\n while (i < length) {\n const model = this._prepareModel(models[i], options as any)\n\n if (!model) {\n throw new Error(\"Can't add an blank model to a collection\")\n }\n models[i] = model\n const cid = model.cid\n const id = model.id\n if (cids[cid] || this._byCid[cid] || (id != null && (ids[id] || this._byId[id]))) {\n // The model is already present in the collection\n models.splice(i, 1)\n ;({ length } = models)\n } else {\n if (id != null) ids[id] = model\n cids[cid] = model\n i++\n }\n }\n\n // Listen to added models' events, and index models for lookup by\n // `id` and by `cid`.\n i = 0\n while (i < length) {\n model = models[i] //.on('all', this._onModelEvent, this); //FIXME: add events back\n this._byCid[model.cid] = model\n if (model.id) {\n this._byId[model.id] = model\n }\n i++\n }\n\n // Insert models into the collection, re-sorting if needed, and triggering\n // `add` events unless silenced.\n this.length += length\n //t index = options.at == null ? this.models.length : options.at\n // this.models.splice.apply(this.models, [index, 0].concat(models));\n if (this.comparator) {\n // this.sort({ silent: true });\n }\n if (options.silent) {\n return this\n }\n i = 0\n ;({ length } = this.models)\n\n while (i < length) {\n model = this.models[i]\n if (cids[model.cid]) {\n options.index = i\n // model.trigger('add', model, this, options);\n }\n i++\n }\n return this\n }\n\n /*\n Remove a model, or a list of models from the set. Pass silent to avoid\n firing the <code>remove</code> event for every model removed.\n\n @param {Array} models The model or list of models to remove from the\n collection.\n @param {Object} options An optional object with Backbone-style options.\n Valid options are: <ul>\n <li>silent: Set to true to avoid firing the `remove` event.\n </ul>\n */\n remove(models: NimbuObject | NimbuObject[], options: { silent?: any; index?: any }) {\n let i = undefined\n let l = undefined\n let index = undefined\n let model = undefined\n options = options || {}\n models = isArray(models) ? models.slice() : [models]\n i = 0\n l = models.length\n\n while (i < l) {\n model = this.getByCid(models[i]) || this.get(models[i])\n if (!model) {\n continue\n }\n if (model.id != null) {\n delete this._byId[model.id]\n }\n\n delete this._byCid[model.cid]\n\n index = indexOf(this.models, model)\n this.models.splice(index, 1)\n this.length--\n if (!options.silent) {\n options.index = index\n // model.trigger('remove', model, this, options);\n }\n this._removeReference(model)\n i++\n }\n return this\n }\n\n /*\n Gets a model from the set by id.\n @param {String} id The Nimbu objectId identifying the Nimbu.Object to\n fetch from this collection.\n */\n get(id: NimbuObject | string) {\n const modelId = id instanceof NimbuObject && id.id != null ? id.id : (id as string)\n return modelId != null ? this._byId[modelId] : undefined\n }\n\n /*\n Gets a model from the set by client id.\n @param {} cid The Backbone collection id identifying the Nimbu.Object to\n fetch from this collection.\n */\n getByCid(cid: NimbuObject | string) {\n const modelId = cid instanceof NimbuObject && cid.cid != null ? cid.cid : (cid as string)\n return modelId != null ? this._byCid[modelId] : undefined\n }\n\n /*\n Gets the model at the given index.\n\n @param {Number} index The index of the model to return.\n */\n at(index: number) {\n return this.models[index]\n }\n\n // /*\n // Forces the collection to re-sort itself. You don't need to call this\n // under normal circumstances, as the set will maintain sort order as each\n // item is added.\n // @param {Object} options An optional object with Backbone-style options.\n // Valid options are: <ul>\n // <li>silent: Set to true to avoid firing the `reset` event.\n // </ul>\n // */\n // sort(options: { silent?: any }) {\n // options = options || {};\n // if (!this.comparator) {\n // throw new Error('Cannot sort a set without a comparator');\n // }\n // const boundComparator = _.bind(this.comparator, this);\n // if (this.comparator.length === 1) {\n // this.models = this.sortBy(boundComparator);\n // } else {\n // this.models.sort(boundComparator);\n // }\n // if (!options.silent) {\n // this.trigger('reset', this, options);\n // }\n // return this;\n // }\n\n /*\n Plucks an attribute from each model in the collection.\n @param {String} attr The attribute to return from each model in the\n collection.\n */\n pluck(attr: any) {\n return map(this.models, (model) => model.get(attr))\n }\n\n /*\n When you have more items than you want to add or remove individually,\n you can reset the entire set with a new list of models, without firing\n any `add` or `remove` events. Fires `reset` when finished.\n\n @param {Array} models The model or list of models to remove from the\n collection.\n @param {Object} options An optional object with Backbone-style options.\n Valid options are: <ul>\n <li>silent: Set to true to avoid firing the `reset` event.\n </ul>\n */\n reset(models: NimbuObject[], options: { parse?: any; silent?: any }) {\n models = models || []\n options = options || {}\n _arrayEach(this.models, (model: any) => this._removeReference(model))\n\n this._reset()\n this.add(models, {\n silent: true,\n parse: options.parse,\n })\n\n if (!options.silent) {\n // this.trigger('reset', this, options);\n }\n return this\n }\n\n /*\n Fetches the default set of models for this collection, resetting the\n collection when they arrive. If `add: true` is passed, appends the\n models to the collection instead of resetting.\n\n @param {Object} options An optional object with Backbone-style options.\n Valid options are:<ul>\n <li>silent: Set to true to avoid firing `add` or `reset` events for\n models fetched by this fetch.\n <li>success: A Backbone-style success callback.\n <li>error: An Backbone-style error callback.\n </ul>\n */\n fetch(\n options: { parse?: boolean; useACL?: boolean; add?: boolean } = {\n parse: true,\n }\n ) {\n if (options.parse == null) {\n options.parse = true\n }\n let count = 0\n if (!this.model) {\n throw new Error('No model defined for this collection')\n }\n const query = this.query || new NimbuQuery(this.model)\n let finished = false\n\n return continueWhile(\n () => !finished,\n () =>\n query.find({ useACL: options.useACL }).then((results: any) => {\n if (options.add || count > 0) {\n this.add(results, options as any)\n } else {\n this.reset(results, options)\n }\n\n count = count + 1\n\n if (query.hasNext()) {\n if (query.currentPage == null) {\n query.currentPage = 1\n }\n query.page(query.currentPage + 1)\n } else {\n finished = true\n }\n\n return this\n })\n ).then(() => this)\n }\n\n // /*\n // Creates a new instance of a model in this collection. Add the model to\n // the collection immediately, unless `wait: true` is passed, in which case\n // we wait for the server to agree.\n\n // @param {Nimbu.Object} model The new model to create and add to the\n // collection.\n // @param {Object} options An optional object with Backbone-style options.\n // Valid options are:<ul>\n // <li>wait: Set to true to wait for the server to confirm creation of the\n // model before adding it to the collection.\n // <li>silent: Set to true to avoid firing an `add` event.\n // <li>success: A Backbone-style success callback.\n // <li>error: An Backbone-style error callback.\n // <li>useMasterKey: In Cloud Code and Node only, uses the Master Key for\n // this request.\n // </ul>\n // */\n // create(model: NimbuObject, options: { wait?: boolean; success: any }) {\n // const coll = this;\n // options = options ? _.clone(options) : {};\n // model = this._prepareModel(model, options);\n // if (!model) {\n // return false;\n // }\n // if (!options.wait) {\n // coll.add(model, options);\n // }\n // const { success } = options;\n // options.success = function(\n // nextModel: { trigger: (arg0: string, arg1: any, arg2: any, arg3: any) => any },\n // resp: any,\n // xhr: any\n // ) {\n // if (options.wait) {\n // coll.add(nextModel, options);\n // }\n // if (success) {\n // return success(nextModel, resp);\n // } else {\n // return nextModel.trigger('sync', model, resp, options);\n // }\n // };\n\n // model.save(null, options);\n // return model;\n // }\n\n /*\n * Converts a response into a list of models to be added to the collection.\n * The default implementation is just to pass it through.\n * @ignore\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n parse(resp: any, xhr: any) {\n return resp\n }\n\n /*\n * Reset all internal state. Called when the collection is reset.\n */\n _reset() {\n this.length = 0\n this.models = []\n this._byId = {}\n this._byCid = {}\n }\n\n /*\n * Prepare a model or hash of attributes to be added to this collection.\n */\n _prepareModel(model: NimbuObject, options: { collection: any }) {\n if (!(model instanceof NimbuObject) && this.model != null) {\n const attrs = model\n options.collection = this\n model = new this.model(attrs, options)\n if (!model._validate(model.attributes)) {\n return false\n }\n } else if (!model.collection) {\n model.collection = this\n }\n return model\n }\n\n /*\n Internal method to remove a model's ties to a collection.\n */\n _removeReference(model: NimbuObject) {\n if (this === model.collection) {\n delete model.collection\n }\n // return model.off('all', this._onModelEvent, this);\n }\n\n // map(...args: any[]) {\n // return map(this.models, ...args);\n // }\n}\n\n// // Underscore methods that we want to implement on the Collection.\n// const methods = [\n// 'forEach',\n// 'each',\n// 'map',\n// 'reduce',\n// 'reduceRight',\n// 'find',\n// 'detect',\n// 'filter',\n// 'select',\n// 'reject',\n// 'every',\n// 'all',\n// 'some',\n// 'any',\n// 'include',\n// 'contains',\n// 'invoke',\n// 'max',\n// 'min',\n// 'sortBy',\n// 'sortedIndex',\n// 'toArray',\n// 'size',\n// 'first',\n// 'initial',\n// 'rest',\n// 'last',\n// 'without',\n// 'indexOf',\n// 'shuffle',\n// 'lastIndexOf',\n// 'isEmpty',\n// 'groupBy',\n// ];\n\n// // Mix in each Underscore method as a proxy to `Collection#models`.\n// _arrayEach(\n// methods,\n// (method: string | number) =>\n// (Collection.prototype[method] = function() {\n// return _[method].apply(_, [this.models].concat(_.toArray(arguments)));\n// })\n// );\n\n/*\nCreates a new subclass of <code>Nimbu.Collection</code>. For example,<pre>\nvar MyCollection = Nimbu.Collection.extend({\n// Instance properties\n\nmodel: MyClass,\nquery: MyQuery,\n\ngetFirst: function() {\nreturn this.at(0);\n}\n}, {\n// Class properties\n\nmakeOne: function() {\nreturn new MyCollection();\n}\n});\n\nvar collection = new MyCollection();\n</pre>\n\n@function\n@param {Object} instanceProps Instance properties for the collection.\n@param {Object} classProps Class properies for the collection.\n@return {Class} A new subclass of <code>Nimbu.Collection</code>.\n*/\n// Collection.extend = _extend;\n\n// Add Collection to the type registry\nexport default NimbuCollection\n","import {\n AtomicRelation,\n NimbuRelation,\n NimbuObject,\n NimbuFile,\n encode,\n NimbuAtomic,\n State,\n AttributeMap,\n AtomicsMap,\n TaskQueue,\n ObjectCache,\n} from '../internal'\n// import TaskQueue from './TaskQueue';\n\nexport function defaultState(): State {\n return {\n serverData: {},\n pendingAtomics: [{}],\n objectCache: {},\n tasks: new TaskQueue(),\n existed: false,\n }\n}\n\nexport function setServerData(serverData: AttributeMap, attributes: AttributeMap) {\n for (const attr in attributes) {\n if (typeof attributes[attr] !== 'undefined') {\n serverData[attr] = attributes[attr]\n } else {\n delete serverData[attr]\n }\n }\n}\n\nexport function setPendingAtomic(pendingAtomics: Array<AtomicsMap>, attr: string, atomic?: NimbuAtomic) {\n const last = pendingAtomics.length - 1\n if (atomic) {\n pendingAtomics[last][attr] = atomic\n } else {\n delete pendingAtomics[last][attr]\n }\n}\n\nexport function pushPendingState(pendingAtomics: Array<AtomicsMap>) {\n pendingAtomics.push({})\n}\n\nexport function popPendingState(pendingAtomics: Array<AtomicsMap>): AtomicsMap | undefined {\n const first = pendingAtomics.shift()\n if (!pendingAtomics.length) {\n pendingAtomics[0] = {}\n }\n return first\n}\n\nexport function mergeFirstPendingState(pendingAtomics: Array<AtomicsMap>) {\n const first = popPendingState(pendingAtomics)\n const next = pendingAtomics[0]\n for (const attr in first) {\n if (next[attr] && first[attr]) {\n const merged = next[attr].mergeWith(first[attr])\n if (merged) {\n next[attr] = merged\n }\n } else {\n next[attr] = first[attr]\n }\n }\n}\n\nexport function estimateAttribute(\n serverData: AttributeMap,\n pendingAtomics: Array<AtomicsMap>,\n className: string,\n id: string | undefined,\n attr: string\n): any {\n let value = serverData[attr]\n for (let i = 0; i < pendingAtomics.length; i++) {\n if (pendingAtomics[i][attr]) {\n if (pendingAtomics[i][attr] instanceof AtomicRelation) {\n if (id) {\n value = pendingAtomics[i][attr].applyTo(value, { className: className, id: id }, attr)\n }\n } else {\n value = pendingAtomics[i][attr].applyTo(value)\n }\n }\n }\n return value\n}\n\nexport function estimateAttributes(\n serverData: AttributeMap,\n pendingAtomics: Array<AtomicsMap>,\n className: string,\n id?: string\n): AttributeMap {\n const data: AttributeMap = {}\n let attr\n for (attr in serverData) {\n data[attr] = serverData[attr]\n }\n for (let i = 0; i < pendingAtomics.length; i++) {\n for (attr in pendingAtomics[i]) {\n if (pendingAtomics[i][attr] instanceof AtomicRelation) {\n if (id) {\n data[attr] = pendingAtomics[i][attr].applyTo(data[attr], { className: className, id: id }, attr)\n }\n } else {\n if (attr.includes('.')) {\n // convert a.b.c into { a: { b: { c: value } } }\n const fields = attr.split('.')\n const first = fields[0]\n const last = fields[fields.length - 1]\n data[first] = { ...serverData[first] }\n let object = { ...data }\n for (let i = 0; i < fields.length - 1; i++) {\n const key = fields[i]\n if (!(key in object)) {\n object[key] = {}\n }\n object = object[key]\n }\n object[last] = pendingAtomics[i][attr].applyTo(object[last])\n } else {\n data[attr] = pendingAtomics[i][attr].applyTo(data[attr])\n }\n }\n }\n }\n return data\n}\n\n/**\n * Allows setting variables deep in an object.\n * @param obj The object to assign the value to\n * @param key The key to assign. If it's in a deeper path, then use dot notation (`foo.bar.nested`)\n * Note that intermediate object(s) in the nested path are automatically created if they don't exist.\n * @param value The value to assign. If it's an `undefined` then the key is deleted.\n */\nfunction nestedSet(obj: AttributeMap, key: string, value: any) {\n const path = key.split('.')\n for (let i = 0; i < path.length - 1; i++) {\n if (!(path[i] in obj)) {\n obj[path[i]] = {}\n }\n obj = obj[path[i]]\n }\n if (typeof value === 'undefined') {\n delete obj[path[path.length - 1]]\n } else {\n obj[path[path.length - 1]] = value\n }\n}\n\nexport function commitServerChanges(serverData: AttributeMap, objectCache: ObjectCache, changes: AttributeMap) {\n for (const attr in changes) {\n const value = changes[attr]\n nestedSet(serverData, attr, value)\n if (\n value &&\n typeof value === 'object' &&\n !(value instanceof NimbuObject) &&\n !(value instanceof NimbuFile) &&\n !(value instanceof NimbuRelation)\n ) {\n const json = encode({\n value,\n disallowObjects: false,\n forcePointers: true,\n })\n objectCache[attr] = JSON.stringify(json)\n }\n }\n}\n","import * as ObjectStateMutations from './state-mutations'\n\nimport { AtomicsMap, AttributeMap, NimbuAtomic, ObjectCache, ObjectIdentifier, State } from '../internal'\n\nlet objectState: {\n [className: string]: {\n [id: string]: State\n }\n} = {}\n\nexport function getState(obj: ObjectIdentifier): State | null {\n const classData = objectState[obj.className]\n if (classData) {\n return classData[obj.id] || null\n }\n return null\n}\n\nexport function initializeState(obj: ObjectIdentifier, initial?: State): State {\n let state = getState(obj)\n if (state) {\n return state\n }\n if (!objectState[obj.className]) {\n objectState[obj.className] = {}\n }\n if (!initial) {\n initial = ObjectStateMutations.defaultState()\n }\n state = objectState[obj.className][obj.id] = initial\n return state\n}\n\nexport function removeState(obj: ObjectIdentifier): State | null {\n const state = getState(obj)\n if (state === null) {\n return null\n }\n delete objectState[obj.className][obj.id]\n return state\n}\n\nexport function getServerData(obj: ObjectIdentifier): AttributeMap {\n const state = getState(obj)\n if (state) {\n return state.serverData\n }\n return {}\n}\n\nexport function setServerData(obj: ObjectIdentifier, attributes: AttributeMap) {\n const serverData = initializeState(obj).serverData\n ObjectStateMutations.setServerData(serverData, attributes)\n}\n\nexport function getPendingAtomics(obj: ObjectIdentifier): Array<AtomicsMap> {\n const state = getState(obj)\n if (state) {\n return state.pendingAtomics\n }\n return [{}]\n}\n\nexport function setPendingAtomic(obj: ObjectIdentifier, attr: string, atomic?: NimbuAtomic) {\n const pendingAtomics = initializeState(obj).pendingAtomics\n ObjectStateMutations.setPendingAtomic(pendingAtomics, attr, atomic)\n}\n\nexport function pushPendingState(obj: ObjectIdentifier) {\n const pendingAtomics = initializeState(obj).pendingAtomics\n ObjectStateMutations.pushPendingState(pendingAtomics)\n}\n\nexport function popPendingState(obj: ObjectIdentifier): AtomicsMap | undefined {\n const pendingAtomics = initializeState(obj).pendingAtomics\n return ObjectStateMutations.popPendingState(pendingAtomics)\n}\n\nexport function mergeFirstPendingState(obj: ObjectIdentifier) {\n const pendingAtomics = getPendingAtomics(obj)\n ObjectStateMutations.mergeFirstPendingState(pendingAtomics)\n}\n\nexport function getObjectCache(obj: ObjectIdentifier): ObjectCache {\n const state = getState(obj)\n if (state) {\n return state.objectCache\n }\n return {}\n}\n\nexport function estimateAttribute(obj: ObjectIdentifier, attr: string): any {\n const serverData = getServerData(obj)\n const pendingAtomics = getPendingAtomics(obj)\n return ObjectStateMutations.estimateAttribute(serverData, pendingAtomics, obj.className, obj.id, attr)\n}\n\nexport function estimateAttributes(obj: ObjectIdentifier): AttributeMap {\n const serverData = getServerData(obj)\n const pendingAtomics = getPendingAtomics(obj)\n return ObjectStateMutations.estimateAttributes(serverData, pendingAtomics, obj.className, obj.id)\n}\n\nexport function commitServerChanges(obj: ObjectIdentifier, changes: AttributeMap) {\n const state = initializeState(obj)\n ObjectStateMutations.commitServerChanges(state.serverData, state.objectCache, changes)\n}\n\nexport function enqueueTask(obj: ObjectIdentifier, task: () => Promise<any>): Promise<void> {\n const state = initializeState(obj)\n return state.tasks.enqueue(task)\n}\n\nexport function clearAllState() {\n objectState = {}\n}\n\nexport function duplicateState(source: { id: string }, dest: { id: string }) {\n dest.id = source.id\n}\n","import _ from 'underscore'\nimport {\n AtomicsMap,\n AttributeMap,\n ChannelConfig,\n IAjax,\n IStorage,\n NimbuAtomic,\n NimbuCustomer,\n OAuth2,\n ObjectCache,\n State,\n Storage,\n VERSION,\n} from '../internal'\nimport * as StateManager from './state'\n\nexport type IStateManager = {\n getState: (obj: any) => State | null\n initializeState: (obj: any, initial?: State) => State\n removeState: (obj: any) => State | null\n getServerData: (obj: any) => AttributeMap\n setServerData: (obj: any, attributes: AttributeMap) => void\n getPendingAtomics: (obj: any) => Array<AtomicsMap>\n setPendingAtomic: (obj: any, attr: string, atomic?: NimbuAtomic) => void\n pushPendingState: (obj: any) => void\n popPendingState: (obj: any) => AtomicsMap | undefined\n mergeFirstPendingState: (obj: any) => void\n getObjectCache: (obj: any) => ObjectCache\n estimateAttribute: (obj: any, attr: string) => any\n estimateAttributes: (obj: any) => AttributeMap\n commitServerChanges: (obj: any, changes: AttributeMap) => void\n enqueueTask: (obj: any, task: () => Promise<void>) => Promise<void>\n clearAllState: () => void\n duplicateState: (source: any, dest: any) => void\n}\n\nexport type ILoginOptions<T extends ChannelConfig = ChannelConfig> = {\n remember?: boolean\n existingCustomerObject?: NimbuCustomer<T>\n}\n\nexport type ISessionManager<T extends ChannelConfig = ChannelConfig> = {\n logIn: (\n username: string,\n password: string,\n options?: ILoginOptions<T>\n ) => Promise<(NimbuCustomer<T> & { id: string }) | false>\n logOut: () => Promise<void>\n validate: () => Promise<(NimbuCustomer<T> & { id: string }) | false>\n}\n\nfunction requireMethods(name: string, methods: Array<string>, controller: any) {\n methods.forEach((func) => {\n if (typeof controller[func] !== 'function') {\n throw new Error(`${name} must implement ${func}()`)\n }\n })\n}\n\nexport const isIE = function () {\n if (typeof navigator === 'undefined' || navigator === null || navigator.userAgent == null) {\n return false\n }\n\n const myNav = navigator.userAgent.toLowerCase()\n if (myNav.indexOf('msie') !== -1) {\n return parseInt(myNav.split('msie')[1])\n } else {\n return false\n }\n}\n\n/*\n * The storage prefix when SSO is in use\n */\nconst SSO_STORAGE_PREFIX = 'sso'\n\nexport type InitialOAuth2AccessToken = {\n clientId: string\n refreshToken: string\n}\n\nconst isOAuth2AccessToken = (\n accessToken: string | InitialOAuth2AccessToken\n): accessToken is InitialOAuth2AccessToken => {\n return typeof accessToken !== 'string' && 'clientId' in accessToken && 'refreshToken' in accessToken\n}\n/*\n * Call this method first to set up your authentication tokens for Nimbu.\n * You can get your keys from the Data Browser on Nimbu.com.\n * @param {String} accessToken Your Nimbu Access Token.\n * @param {String} endpoint The endpoint to use (optional).\n * @param {String} installationId The installation id to use (optional).\n */\nexport const initialize = async (\n accessToken: string | InitialOAuth2AccessToken,\n endpoint?: string,\n installationId?: string\n) => {\n if (isOAuth2AccessToken(accessToken)) {\n Config.set('accessToken', undefined)\n Config.set('OAuth2Manager', new OAuth2(accessToken.clientId, { refreshToken: accessToken.refreshToken }))\n } else {\n Config.set('accessToken', accessToken)\n Config.set('OAuth2Manager', undefined)\n }\n\n Config.useACL = false\n Config.useSSO = false\n\n if (endpoint != null) {\n Config.set('endpoint', endpoint)\n }\n\n if (installationId != null) {\n Config.installationId = installationId\n }\n\n await initInstallationId()\n return await NimbuCustomer.initCurrent()\n}\n\n/*\n * Force the use of ACLs for the Nimbu SDK, even when using the Master key.\n */\nexport const useACL = () => {\n Config.useACL = true\n}\n\n/*\n * Indicate whether SSO is in use or not\n */\nexport const useSSO = function (sso: boolean) {\n if (sso == null) {\n sso = true\n } else {\n Config.useSSO = sso\n }\n return Config.useSSO\n}\n\n/*\n * Returns prefix for storage keys used by this instance of Nimbu.\n * @param {String} path The relative suffix to append to it.\n * null or undefined is treated as the empty string.\n * @return {String} The full key name.\n */\nexport const getStoragePath = function (path: string) {\n if (!Config.initialized) {\n throw 'You need to call Nimbu.initialize before using the SDK.'\n }\n\n if (!path) path = ''\n\n if (!_.isString(path)) {\n throw \"Tried to get a storage path that wasn't a String.\"\n }\n\n if (path[0] === '/') {\n path = path.substring(1)\n }\n\n let prefix = Config.accessToken ?? Config.clientId\n if (Config.useSSO) {\n prefix = SSO_STORAGE_PREFIX\n }\n\n return 'nimbu/' + prefix + '/' + path\n}\n\n/*\n * Returns the unique string for this app on this machine.\n * Gets reset when storage is cleared.\n */\nexport const getInstallationId = function () {\n if (Config.installationId) {\n return Config.installationId\n } else {\n throw 'You need to call Nimbu.initialize before using the SDK.'\n }\n}\n\nconst hexOctet = () =>\n Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1)\n\nconst initInstallationId = async (): Promise<string> => {\n if (Config.installationId != null && Config.installationId !== '') {\n return Config.installationId\n }\n\n // Try to get it from storage.\n const path = getStoragePath('installationId')\n const existingInstallationId = await Storage.getItem(path)\n\n if (!existingInstallationId || existingInstallationId === '') {\n // It wasn't in storage, so create a new one.\n const newInstallationId = `${hexOctet()}${hexOctet()}-${hexOctet()}-${hexOctet()}-${hexOctet()}-${hexOctet()}${hexOctet()}${hexOctet()} `\n await Storage.setItem(path, newInstallationId)\n Config.installationId = newInstallationId\n return newInstallationId\n } else {\n Config.installationId = existingInstallationId\n return existingInstallationId\n }\n}\n\ntype IConfig<T extends ChannelConfig = ChannelConfig> = {\n Ajax?: IAjax\n endpoint: string\n isNode: boolean\n OAuth2Manager?: OAuth2\n SessionManager?: ISessionManager<T>\n StateManager?: IStateManager\n Storage?: IStorage\n useACL: boolean\n useSSO: boolean\n version: string\n accessToken?: string\n installationId?: string\n}\n\nconst config: IConfig = {\n // Check whether we are running in Node.js.\n isNode:\n // eslint-disable-next-line no-undef\n typeof process !== 'undefined' && process !== null && process.versions && process.versions.node ? true : false,\n // Set the server for Nimbu to talk to.\n endpoint: 'https://api.nimbu.io',\n // Version Number\n version: 'js-' + VERSION,\n StateManager,\n useSSO: false,\n useACL: false,\n}\n\nexport const Config = {\n get<U extends ChannelConfig = ChannelConfig, K extends keyof IConfig<U> = never, T extends boolean = false>(\n key: K,\n allowNull: T = false as T\n ): T extends true ? IConfig[K] | undefined : IConfig[K] {\n if (Object.prototype.hasOwnProperty.call(config, key)) {\n return config[key]\n }\n if (!allowNull) {\n throw new Error('Configuration key not found: ' + key)\n } else {\n return undefined as T extends true ? IConfig[K] | undefined : IConfig[K]\n }\n },\n\n set<K extends keyof IConfig>(key: K, value: IConfig[K]): void {\n config[key] = value\n },\n\n get endpoint() {\n return config.endpoint\n },\n\n get version() {\n return config.version\n },\n\n get isNode() {\n return config.isNode\n },\n\n get useSSO() {\n return config.useSSO\n },\n\n set useSSO(value: boolean) {\n config.useSSO = value\n },\n\n get useACL() {\n return config.useACL\n },\n\n set useACL(value: boolean) {\n config.useACL = value\n },\n\n get accessToken(): string | undefined {\n return this.get('accessToken', true)\n },\n\n set accessToken(value: string) {\n this.set('accessToken', value)\n },\n\n get oauth2Client(): OAuth2 | undefined {\n return config.OAuth2Manager\n },\n\n get useOauth2(): boolean {\n return config.OAuth2Manager != null\n },\n\n get clientId(): string | undefined {\n return config.OAuth2Manager?.clientId\n },\n\n async getAccessToken() {\n if (config.OAuth2Manager != null) {\n // refresh the token if needed and return it\n return config.OAuth2Manager.getAccessToken()\n } else {\n // return the static access token\n return this.accessToken\n }\n },\n\n get initialized() {\n return this.accessToken != null || this.useOauth2\n },\n\n get installationId(): string | undefined {\n return this.get('installationId', true)\n },\n\n set installationId(value: string) {\n this.set('installationId', value)\n },\n\n get ajax(): IAjax {\n if (!config['Ajax']) {\n throw new Error('Use setAjax to setup the network layer')\n }\n\n return config['Ajax']\n },\n\n setAjax(fn: IAjax) {\n config['Ajax'] = fn\n },\n\n setStateManager(manager: IStateManager) {\n requireMethods(\n 'StateManager',\n [\n 'getState',\n 'initializeState',\n 'removeState',\n 'getServerData',\n 'setServerData',\n 'getPendingAtomics',\n 'setPendingAtomic',\n 'pushPendingState',\n 'popPendingState',\n 'mergeFirstPendingState',\n 'getObjectCache',\n 'estimateAttribute',\n 'estimateAttributes',\n 'commitServerChanges',\n 'enqueueTask',\n 'clearAllState',\n ],\n manager\n )\n\n config['StateManager'] = manager\n },\n\n getStateManager(): IStateManager {\n return config['StateManager']!\n },\n\n setStorage(storage: IStorage) {\n requireMethods('Storage', ['getItem', 'setItem', 'removeItem', 'getAllKeys'], storage)\n\n config['Storage'] = storage\n },\n\n getStorage(): IStorage {\n return config['Storage']!\n },\n\n setSessionManager<T extends ChannelConfig>(manager: ISessionManager<T>) {\n requireMethods('SessionManager', ['logIn', 'logOut'], manager)\n\n const typedConfig = config as unknown as IConfig<T> // FIXME: this feels wrong\n typedConfig['SessionManager'] = manager\n },\n\n getSessionManager<T extends ChannelConfig>(): ISessionManager<T> {\n const typedConfig = config as unknown as IConfig<T> // FIXME: this feels wrong\n\n return typedConfig['SessionManager']!\n },\n}\n","import { NimbuObject } from '../internal'\n\n/*\n@class\n\n<p>A Nimbu.Product object is a local representation of a user persisted to the\nNimbu cloud. This class is a subclass of a Nimbu.Object, and retains the\nsame functionality of a Nimbu.Object, but also extends it with various\nuser specific methods, like authentication, signing up, and validation of\nuniqueness.</p>\n*/\nexport class NimbuCoupon extends NimbuObject {\n constructor() {\n super('coupon')\n }\n}\n\nexport default NimbuCoupon\n","import {\n ChannelConfig,\n Config,\n ILoginOptions,\n ISetOptions,\n NimbuError,\n NimbuObject,\n Storage,\n _request,\n getStoragePath,\n} from '../internal'\n\n/*\n@class\n\n<p>A Nimbu.Customer object is a local representation of a user persisted to the\nNimbu cloud. This class is a subclass of a Nimbu.Object, and retains the\nsame functionality of a Nimbu.Object, but also extends it with various\nuser specific methods, like authentication, signing up, and validation of\nuniqueness.</p>\n*/\n\ntype ICommonCustomerFields = {\n firstname: string\n lastname: string\n email: string\n name: string\n password?: string\n}\n\nexport class NimbuCustomer<U extends ChannelConfig = ChannelConfig> extends NimbuObject<U & ICommonCustomerFields> {\n /**\n * @param {object} attributes The initial set of data to store in the user.\n */\n constructor(attributes?: Partial<U & ICommonCustomerFields>) {\n super('customers')\n if (attributes && typeof attributes === 'object') {\n if (!this.set(attributes || {})) {\n throw new Error(\"Can't create an invalid Nimbu Customer\")\n }\n }\n }\n\n // Instance Variables\n sessionToken: string | null = null\n\n // Instance Methods\n\n /*\n * Deauthenticates all providers.\n */\n _logOutWithAll() {\n const authData = this.get('authData')\n if (!authData) {\n return\n }\n // const self = this\n // return _objectEach(this.get('authData'), (value: any, key: any) => self._logOutWith(key));\n }\n\n /*\n * Signs up a new user. You should call this instead of save for\n * new Nimbu.Customers. This will create a new Nimbu.Customer on the server, and\n * also persist the session on disk so that you can access the user using\n * <code>current</code>.\n\n * <p>A username and password must be set before calling signUp.</p>\n\n * <p>Calls options.success or options.error on completion.</p>\n\n * @param {Object} attrs Extra fields to set on the new user, or null.\n * @return {Nimbu.Future} A promise that is fulfilled when the signup\n * finishes.\n * @see Nimbu.Customer.signUp\n */\n signUp(attrs: { username: any; password: any }) {\n let error = undefined\n const username = (attrs && attrs.username) || this.get('username')\n if (!username || username === '') {\n error = new NimbuError(NimbuError.OTHER_CAUSE, 'Cannot sign up customer with an empty name.')\n return Promise.reject(error)\n }\n const password = (attrs && attrs.password) || this.get('password')\n if (!password || password === '') {\n error = new NimbuError(NimbuError.OTHER_CAUSE, 'Cannot sign up customer with an empty password.')\n return Promise.reject(error)\n }\n\n return this.save(attrs)\n }\n\n /**\n * Wrap the default save behavior with functionality to save to local\n * storage if this is current user.\n *\n * @param {...any} args\n * @returns {Promise}\n */\n async save(...args: Array<any>): Promise<this & { id: string }> {\n await super.save.apply(this, args as any)\n\n if (this.isCurrent()) {\n await this.updateOnDisk()\n }\n\n return this as this & { id: string }\n }\n\n /**\n * Wrap the default fetch behavior with functionality to save to local\n * storage if this is current user.\n *\n * @param {...any} args\n * @returns {Promise}\n */\n async fetch(...args: Array<any>): Promise<this & { id: string }> {\n await super.fetch.apply(this, args as any)\n\n if (this.isCurrent()) {\n await this.updateOnDisk()\n }\n\n return this as this & { id: string }\n }\n\n /**\n * Wrap the default fetchWithInclude behavior with functionality to save to local\n * storage if this is current user.\n *\n * @param {...any} args\n * @returns {Promise}\n */\n async fetchWithInclude(...args: Array<any>): Promise<this & { id: string }> {\n await super.fetchWithInclude.apply(this, args as any)\n\n if (this.isCurrent()) {\n await this.updateOnDisk()\n }\n\n return this as this & { id: string }\n }\n\n /*\n * Logs in a Nimbu.Customer. On success, this saves the session to storage,\n * so you can retrieve the currently logged in user using\n * <code>current</code>.\n\n * <p>A username and password must be set before calling logIn.</p>\n\n * @param {Object} options A Backbone-style options object.\n * @see Nimbu.Customer.logIn\n * @return {Promise} A promise that is fulfilled with the user when the login is complete.\n */\n async logIn(options: ILoginOptions<U> = {}) {\n const email = this.get('email')\n const password = this.get('password')\n\n if (!email || !password) {\n throw new Error('Cannot log in customer without email and password')\n }\n\n options.existingCustomerObject = this\n const customer = await Config.getSessionManager<U>().logIn(email, password, options)\n\n if (customer) {\n const state = Config.getStateManager()\n state.setPendingAtomic(customer._getStateIdentifier(), 'email', undefined)\n state.setPendingAtomic(customer._getStateIdentifier(), 'password', undefined)\n\n return this as this & { id: string }\n } else {\n return false\n }\n }\n\n /*\n Returns true if <code>current</code> would return this user.\n @see Nimbu.Customer#current\n */\n isCurrent() {\n return NimbuCustomer.currentCustomer != null && NimbuCustomer.currentCustomer.id === this.id\n }\n\n get name() {\n return `${this.firstName} ${this.lastName}`\n }\n\n get firstName() {\n return this.get('firstname')\n }\n\n get lastName() {\n return this.get('lastname')\n }\n\n // legacy aliases\n get firstname() {\n return this.firstName\n }\n\n get lastname() {\n return this.lastName\n }\n\n /*\n Returns get(\"email\").\n @return {String}\n @see Nimbu.Object#get\n */\n get email() {\n return this.get('email')\n }\n\n /*\n Calls set(\"email\", email, options) and returns the result.\n @param {String} email\n @see Nimbu.Object.set\n */\n setEmail(email: string, options: ISetOptions) {\n return this.set('email', email as any, options)\n }\n\n /*\n Calls set(\"password\", password, options) and returns the result.\n @param {String} password\n @see Nimbu.Object.set\n */\n setPassword(password: string, options: any) {\n return this.set('password', password as any, options)\n }\n\n /*\n Checks whether this user is the current user and has been authenticated.\n @return (Boolean) whether this user is the current user and is logged in.\n */\n // authenticated() {\n // return (\n // this.id != null &&\n // !!this.session_token &&\n // NimbuCustomer.currentCustomer != null &&\n // NimbuCustomer.currentCustomer.id === this.id\n // )\n // }\n\n /*\n Get the customers autologin token\n\n @param {Object} options A Backbone-style options object.\n @return {Nimbu.Future} A promise that is fulfilled with the autologin token.\n */\n getAutologinToken() {\n if (!this.isCurrent()) {\n return Promise.reject('You can only request the autologin token for the current customer')\n } else {\n let token = null\n return _request({\n path: 'customers/me/authentication_token',\n method: 'GET',\n }).then(function ({ body }) {\n token = body.authentication_token\n return token\n })\n }\n }\n\n /*\n Get the customers autologin token\n\n @param {Object} options A Backbone-style options object.\n @return {Nimbu.Future} A promise that is fulfilled with the autologin token.\n */\n validateSession() {\n if (!this.isCurrent()) {\n return Promise.reject('You can validate the login session for the current customer')\n } else {\n return _request({\n path: 'customers/me',\n method: 'GET',\n }).catch(async (error: any) => {\n console.error(error)\n await NimbuCustomer.logOut()\n })\n }\n }\n\n async updateOnDisk() {\n const path = getStoragePath(NimbuCustomer.CURRENT_CUSTOMER_KEY)\n return Storage.setItem(path, JSON.stringify(this.toJSON()))\n }\n\n // Class Variables\n\n // The currently logged-in user.\n private static currentCustomer: NimbuCustomer | null = null\n\n // Whether currentCustomer is known to match the serialized version on disk.\n // This is useful for saving a storage check if you try to load\n // currentCustomer frequently while there is none stored.\n private static currentCustomerMatchesDisk = false\n\n // The storage key suffix that the current user is stored under.\n private static CURRENT_CUSTOMER_KEY = 'currentCustomer'\n\n // Class Methods\n\n /*\n Signs up a new user with a username (or email) and password.\n This will create a new Nimbu.Customer on the server, and also persist the\n session in storage so that you can access the user using\n {@link #current}.\n\n <p>Calls options.success or options.error on completion.</p>\n\n @param {String} username The username (or email) to sign up with.\n @param {String} password The password to sign up with.\n @param {Object} attrs Extra fields to set on the new user.\n @param {Object} options A Backbone-style options object.\n @return {Nimbu.Future} A promise that is fulfilled with the user when\n the signup completes.\n @see Nimbu.Customer#signUp\n */\n static signUp(username: string, password: string, attrs: any = {}) {\n attrs.username = username\n attrs.password = password\n const user = NimbuObject._create('customers') as NimbuCustomer\n return user.signUp(attrs)\n }\n\n /*\n Logs in a user with email and password. On success, this\n saves the session to disk, so you can retrieve the currently logged in\n user using <code>current</code>.\n\n @param {String} email The email to log in with.\n @param {String} password The password to log in with.\n @return {Promise<Nimbu.Customer | false>} A promise that is fulfilled with the user when the login completes. Returns false when the login fails.\n @see Nimbu.Customer#logIn\n */\n static async logIn<U extends ChannelConfig>(\n email: string,\n password: string,\n options: ILoginOptions<U> = {}\n ): Promise<false | (NimbuCustomer<U> & { id: string })> {\n const result = await Config.getSessionManager<U>().logIn(email, password, options)\n if (result) {\n NimbuCustomer.setCurrent(result)\n await NimbuCustomer.currentCustomer!.updateOnDisk()\n }\n return result\n }\n\n // /*\n // Logs in a user with a session token. On success, this saves the session\n // to disk, so you can retrieve the currently logged in user using\n // <code>current</code>.\n\n // <p>Calls options.success or options.error on completion.</p>\n\n // @param {String} sessionToken The sessionToken to log in with.\n // @param {Object} options A Backbone-style options object.\n // @return {Nimbu.Future} A promise that is fulfilled with the user when\n // the login completes.\n // */\n // static async become(sessionToken: string, options: Pick<RequestOptions, 'useACL'> = {}) {\n // // const user = NimbuObject._create('customers') as NimbuCustomer\n // // const { body, status, xhr } = await _request({\n // // route: 'customers',\n // // className: 'me',\n // // method: 'GET',\n // // useACL: options.useACL,\n // // sessionToken,\n // // })\n // // const serverAttrs = user.parse(body, status, xhr)\n // // serverAttrs.session_token = sessionToken\n // // user._finishFetch(serverAttrs)\n // // return user\n // }\n\n /*\n Logs out the currently logged in user session. This will remove the\n session from disk and future calls to\n <code>current</code> will return <code>null</code>.\n */\n static async logOut() {\n await Config.getSessionManager().logOut()\n NimbuCustomer.currentCustomer = null\n\n // This is asynchronous, but we don't care about the result\n await Storage.removeItem(getStoragePath(NimbuCustomer.CURRENT_CUSTOMER_KEY))\n return true\n }\n\n /*\n Requests a password reset email to be sent to the specified email address\n associated with the user account. This email allows the user to securely\n reset their password on the Nimbu site.\n\n <p>Calls options.success or options.error on completion.</p>\n\n @param {String} email The email address associated with the user that\n forgot their password.\n @param {Object} options A Backbone-style options object.\n */\n static requestPasswordReset(email: any, options: { useACL?: any }) {\n options = options || {}\n return _request({\n route: 'customers',\n className: 'password/reset',\n method: 'POST',\n useACL: options.useACL,\n data: {\n email,\n },\n })\n }\n\n /*\n Validates the currently logged in NimbuCustomer using the meta headers\n provided in the html page. If no customer is logged in, it automatically\n signs out the current customer object.\n @return {Nimbu.Object} The currently logged in Nimbu.Customer.\n */\n static async validateCurrent() {\n return Config.getSessionManager().validate()\n }\n\n /*\n Retrieves the currently logged in NimbuCustomer with a valid session,\n either from memory or storage, if necessary.\n @return {Nimbu.Object} The currently logged in Nimbu.Customer.\n */\n static current<U extends ChannelConfig = ChannelConfig>(): (NimbuCustomer<U> & { id: string }) | null {\n if (NimbuCustomer.currentCustomer || NimbuCustomer.currentCustomerMatchesDisk) {\n return NimbuCustomer.currentCustomer as unknown as NimbuCustomer<U> & { id: string }\n } else if (!Config.initialized) {\n throw 'You need to call Nimbu.initialize before using the SDK.'\n } else {\n return null\n }\n }\n\n private static setCurrent<U extends ChannelConfig = ChannelConfig>(customer: NimbuCustomer<U>) {\n NimbuCustomer.currentCustomer = customer as unknown as NimbuCustomer\n }\n\n static async initCurrent(): Promise<NimbuCustomer | null> {\n if (NimbuCustomer.currentCustomer) {\n return NimbuCustomer.currentCustomer\n }\n\n if (NimbuCustomer.currentCustomerMatchesDisk) {\n return Promise.resolve(NimbuCustomer.currentCustomer)\n }\n\n // Load the user from local Storage.\n const customerFromStorage = await Storage.getItem(getStoragePath(NimbuCustomer.CURRENT_CUSTOMER_KEY))\n NimbuCustomer.currentCustomerMatchesDisk = true\n\n if (!customerFromStorage) return null\n\n const customerJSON = JSON.parse(customerFromStorage)\n const currentCustomer = NimbuObject.fromJSON(customerJSON, 'customers') as NimbuCustomer // this allows for subclassing and overriding the default customer class\n NimbuCustomer.currentCustomer = currentCustomer\n return currentCustomer\n }\n}\n\nNimbuObject.registerSubclass('customers', NimbuCustomer)\n\nexport type PersistedNimbuCustomer = NimbuCustomer & { id: string }\nexport default NimbuCustomer\n","import { enc } from 'crypto-js'\nimport AES from 'crypto-js/aes'\n\nimport {\n AjaxHeaders,\n Config,\n ILoginOptions,\n ISessionManager,\n NimbuCustomer,\n NimbuObject,\n PersistedNimbuCustomer,\n VERSION,\n _request,\n getInstallationId,\n} from '../internal'\n\nconst OAuth2SessionManager = {\n logIn: async (\n email: string,\n password: string,\n options: ILoginOptions = {}\n ): Promise<PersistedNimbuCustomer | false> => {\n if (Config.oauth2Client == null) throw new Error('OAuth2 client not configured')\n\n const success = await Config.oauth2Client.logIn(email, password, !!options.remember)\n if (!success) return false\n\n const currentCustomer = options.existingCustomerObject ?? new NimbuCustomer()\n const { body, status, xhr } = await _request({\n route: 'customers',\n className: 'me',\n method: 'GET',\n })\n currentCustomer._finishFetch(currentCustomer.parse(body, status, xhr))\n\n return currentCustomer as PersistedNimbuCustomer\n },\n\n logOut: async () => {\n if (Config.oauth2Client == null) throw new Error('OAuth2 client not configured')\n\n await Config.oauth2Client.logOut()\n },\n\n validate: async (): Promise<PersistedNimbuCustomer | false> => {\n try {\n const accessToken = await Config.getAccessToken()\n if (accessToken == null) return false\n\n const currentCustomer = NimbuCustomer.current()\n if (currentCustomer == null) {\n return false\n }\n\n const { body, status, xhr } = await _request({\n route: 'customers',\n className: 'me',\n method: 'GET',\n })\n currentCustomer._finishFetch(currentCustomer.parse(body, status, xhr))\n return currentCustomer\n } catch (error) {\n await OAuth2SessionManager.logOut()\n return false\n }\n },\n}\n\nconst BasicSessionManager = {\n // eslint-disable-next-line @typescript-eslint/require-await\n logIn: async (\n email: string,\n password: string,\n options: ILoginOptions = {}\n ): Promise<PersistedNimbuCustomer | false> => {\n console.log('options', options)\n return false // TODO: implement\n },\n\n // eslint-disable-next-line @typescript-eslint/require-await\n logOut: async () => {\n return // TODO: implement\n },\n\n validate: async (): Promise<PersistedNimbuCustomer | false> => {\n Config.useSSO = true\n let sso_id: string | null = null\n\n if (!Config.accessToken) {\n throw 'You must specify your accessToken using Nimbu.initialize().'\n }\n\n if (typeof document === 'undefined' || document === null || typeof window === 'undefined' || window === null) {\n throw 'Nimbu.Customer.validateCurrent() can only be run from within a browser.'\n }\n\n // get meta headers\n const metaTags = document.getElementsByTagName('meta')\n let sso_data = null\n let i = 0\n\n while (i < metaTags.length) {\n if (metaTags[i].getAttribute('property') === 'nimbu:sso:current') {\n sso_data = metaTags[i].getAttribute('content')\n break\n }\n i++\n }\n\n let sso_url: string | null = null\n i = 0\n\n while (i < metaTags.length) {\n if (metaTags[i].getAttribute('property') === 'nimbu:sso:authorize_url') {\n sso_url = metaTags[i].getAttribute('content')\n break\n }\n i++\n }\n\n // get CSRF token\n let csrfToken: string | null = null\n i = 0\n\n while (i < metaTags.length) {\n if (metaTags[i].getAttribute('name') === 'csrf-token') {\n csrfToken = metaTags[i].getAttribute('content')\n break\n }\n i++\n }\n\n if (csrfToken == null) {\n throw 'Please include the CSRF meta tags in your html header.'\n }\n\n if (sso_data != null && sso_url != null) {\n try {\n sso_id = AES.decrypt(decodeURIComponent(sso_data), Config.accessToken).toString(enc.Utf8)\n } catch (e) {\n sso_id = 'unauthenticated'\n }\n }\n\n const customer = NimbuCustomer.current()\n\n if (sso_id == null || sso_id === 'unauthenticated') {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n await NimbuCustomer.logOut()\n return false\n } else if (customer != null && sso_id !== customer.id) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n await NimbuCustomer.logOut()\n return false\n } else if (\n sso_url != null &&\n sso_id != null &&\n sso_id !== 'unauthenticated' &&\n (customer == null || sso_id !== customer.id)\n ) {\n const { body } = await _request({\n route: 'customers',\n className: 'sso',\n method: 'POST',\n })\n\n let sharedSSOSecret: string | null = AES.decrypt(body.shared_secret, Config.accessToken).toString(enc.Utf8)\n const headers: AjaxHeaders = {}\n headers._clientVersion = VERSION\n headers._accessToken = Config.accessToken\n headers._installationId = getInstallationId()\n headers._csrfToken = csrfToken\n\n const { body: customerBody, status, xhr } = await Config.ajax('POST', sso_url, JSON.stringify({}), headers)\n const model = NimbuObject._create('customers') as NimbuCustomer\n\n const serverAttrs = model.parse(customerBody, status, xhr)\n serverAttrs.session_token = AES.decrypt(serverAttrs.session_token, sharedSSOSecret).toString(enc.Utf8)\n\n sharedSSOSecret = null\n\n model._finishFetch(serverAttrs)\n await model.updateOnDisk()\n return model as PersistedNimbuCustomer\n } else {\n return customer != null ? customer : false\n }\n },\n}\n\nexport const DefaultSessionManager: ISessionManager = {\n logIn: (email: string, password: string, options?: ILoginOptions) => {\n if (Config.useOauth2) {\n return OAuth2SessionManager.logIn(email, password, options)\n } else {\n return BasicSessionManager.logIn(email, password, options)\n }\n },\n\n logOut: () => {\n if (Config.useOauth2) {\n return OAuth2SessionManager.logOut()\n } else {\n return BasicSessionManager.logOut()\n }\n },\n\n validate: () => {\n if (Config.useOauth2) {\n return OAuth2SessionManager.validate()\n } else {\n return BasicSessionManager.validate()\n }\n },\n}\n\nConfig.setSessionManager(DefaultSessionManager)\n\nexport default DefaultSessionManager\n","import { NimbuObject, AttributeMap } from '../internal'\n\n/*\n@class\n\n<p>A Nimbu.Device object is a local representation of a user persisted to the\nNimbu cloud. This class is a subclass of a Nimbu.Object, and retains the\nsame functionality of a Nimbu.Object, but also extends it with various\nuser specific methods, like authentication, signing up, and validation of\nuniqueness.</p>\n*/\nexport class NimbuDevice extends NimbuObject {\n constructor(attributes?: AttributeMap) {\n super('device', attributes)\n }\n}\n\nexport default NimbuDevice\n","/**\n * Constructs a new Nimbu.Error object with the given code and message.\n *\n * @alias Nimbu.Error\n */\nexport class NimbuError extends Error {\n code: number\n errors: any[] | undefined\n\n constructor(code: number, message?: string) {\n super(message)\n\n this.code = code\n }\n\n toString() {\n return 'NimbuError: ' + this.code + ' ' + this.message\n }\n\n /*\n Error code indicating some error other than those enumerated here.\n */\n static OTHER_CAUSE = -1\n\n /*\n Error code indicating that something has gone wrong with the server.\n If you get this error code, it is Nimbu's fault.\n */\n static INTERNAL_SERVER_ERROR = 1\n\n /*\n Error code indicating the connection to the Nimbu servers failed.\n */\n static CONNECTION_FAILED = 100\n\n /*\n Error code indicating the specified object doesn't exist.\n */\n static OBJECT_NOT_FOUND = 101\n\n /*\n Error code indicating you tried to query with a datatype that doesn't\n support it, like exact matching an array or object.\n */\n static INVALID_QUERY = 102\n\n /*\n Error code indicating a missing or invalid classname. Classnames are\n case-sensitive. They must start with a letter, and a-zA-Z0-9_ are the\n only valid characters.\n */\n static INVALID_CLASS_NAME = 103\n\n /*\n Error code indicating an unspecified object id.\n */\n static MISSING_OBJECT_ID = 104\n\n /*\n Error code indicating an invalid key name. Keys are case-sensitive. They\n must start with a letter, and a-zA-Z0-9_ are the only valid characters.\n */\n static INVALID_KEY_NAME = 105\n\n /*\n Error code indicating a malformed pointer. You should not see this unless\n you have been mucking about changing internal Nimbu code.\n */\n static INVALID_POINTER = 106\n\n /*\n Error code indicating that badly formed JSON was received upstream. This\n either indicates you have done something unusual with modifying how\n things encode to JSON, or the network is failing badly.\n */\n static INVALID_JSON = 107\n\n /*\n Error code indicating that the feature you tried to access is only\n available internally for testing purposes.\n */\n static COMMAND_UNAVAILABLE = 108\n\n /*\n You must call Nimbu.initialize before using the Nimbu library.\n */\n static NOT_INITIALIZED = 109\n\n /*\n Error code indicating that a field was set to an inconsistent type.\n */\n static INCORRECT_TYPE = 111\n\n /*\n Error code indicating an invalid channel name. A channel name is either\n an empty string (the broadcast channel) or contains only a-zA-Z0-9_\n characters and starts with a letter.\n */\n static INVALID_CHANNEL_NAME = 112\n\n /*\n Error code indicating that push is misconfigured.\n */\n static PUSH_MISCONFIGURED = 115\n\n /*\n Error code indicating that the object is too large.\n */\n static OBJECT_TOO_LARGE = 116\n\n /*\n Error code indicating that the operation isn't allowed for clients.\n */\n static OPERATION_FORBIDDEN = 119\n\n /*\n Error code indicating the result was not found in the cache.\n */\n static CACHE_MISS = 120\n\n /*\n Error code indicating that an invalid key was used in a nested\n JSONObject.\n */\n static INVALID_NESTED_KEY = 121\n\n /*\n Error code indicating that an invalid filename was used for NimbuFile.\n A valid file name contains only a-zA-Z0-9_. characters and is between 1\n and 128 characters.\n */\n static INVALID_FILE_NAME = 122\n\n /*\n Error code indicating an invalid ACL was provided.\n */\n static INVALID_ACL = 123\n\n /*\n Error code indicating that the request timed out on the server. Typically\n this indicates that the request is too expensive to run.\n */\n static TIMEOUT = 124\n\n /*\n Error code indicating that the email address was invalid.\n */\n static INVALID_EMAIL_ADDRESS = 125\n\n /*\n Error code indicating a missing content type.\n */\n static MISSING_CONTENT_TYPE = 126\n\n /*\n Error code indicating a missing content length.\n */\n static MISSING_CONTENT_LENGTH = 127\n\n /*\n Error code indicating an invalid content length.\n */\n static INVALID_CONTENT_LENGTH = 128\n\n /*\n Error code indicating a file that was too large.\n */\n static FILE_TOO_LARGE = 129\n\n /*\n Error code indicating an error saving a file.\n */\n static FILE_SAVE_ERROR = 130\n\n /*\n Error code indicating an error deleting a file.\n */\n static FILE_DELETE_ERROR = 153\n\n /*\n Error code indicating that a unique field was given a value that is\n already taken.\n */\n static DUPLICATE_VALUE = 137\n\n /*\n Error code indicating that a role's name is invalid.\n */\n static INVALID_ROLE_NAME = 139\n\n /*\n Error code indicating that an application quota was exceeded. Upgrade to\n resolve.\n */\n static EXCEEDED_QUOTA = 140\n\n /*\n Error code indicating that a Cloud Code script failed.\n */\n static SCRIPT_FAILED = 141\n\n /*\n Error code indicating that a Cloud Code validation failed.\n */\n static VALIDATION_ERROR = 142\n\n /*\n Error code indicating that invalid image data was provided.\n */\n static INVALID_IMAGE_DATA = 150\n\n /*\n Error code indicating an unsaved file.\n */\n static UNSAVED_FILE_ERROR = 151\n\n /*\n Error code indicating an invalid push time.\n */\n static INVALID_PUSH_TIME_ERROR = 152\n\n /*\n Error code indicating that the username is missing or empty.\n */\n static USERNAME_MISSING = 200\n\n /*\n Error code indicating that the password is missing or empty.\n */\n static PASSWORD_MISSING = 201\n\n /*\n Error code indicating that the username has already been taken.\n */\n static USERNAME_TAKEN = 202\n\n /*\n Error code indicating that the email has already been taken.\n */\n static EMAIL_TAKEN = 203\n\n /*\n Error code indicating that the email is missing, but must be specified.\n */\n static EMAIL_MISSING = 204\n\n /*\n Error code indicating that a user with the specified email was not found.\n */\n static EMAIL_NOT_FOUND = 205\n\n /*\n Error code indicating that a user object without a valid session could\n not be altered.\n */\n static SESSION_MISSING = 206\n\n /*\n Error code indicating that a user can only be created through signup.\n */\n static MUST_CREATE_USER_THROUGH_SIGNUP = 207\n\n /*\n Error code indicating that an an account being linked is already linked\n to another user.\n */\n static ACCOUNT_ALREADY_LINKED = 208\n\n /*\n Error code indicating that a user cannot be linked to an account because\n that account's id could not be found.\n */\n static LINKED_ID_MISSING = 250\n\n /*\n Error code indicating that a user with a linked (e.g. Facebook) account\n has an invalid session.\n */\n static INVALID_LINKED_SESSION = 251\n\n /*\n Error code indicating that a service being linked (e.g. Facebook or\n Twitter) is unsupported.\n */\n static UNSUPPORTED_SERVICE = 252\n\n /*\n Error code indicating that there were multiple errors. Aggregate errors\n have an \"errors\" property, which is an array of error objects with more\n detail about each error that occurred.\n */\n static AGGREGATE_ERROR = 600\n}\n\nexport default NimbuError\n","import { isArray, isObject, isString } from 'underscore'\nimport { encodeBase64, NimbuObject, AtomicRemoveFile } from '../internal'\n\ntype Base64 = { base64: string }\ntype Uri = { uri: string }\n\ntype ICommonFile = {\n url: string\n filename: string\n width: number\n height: number\n content_type: string\n version: string\n checksum: string\n size: number\n}\n\ninterface IPublicFile extends ICommonFile {\n private: false\n permanent_url?: never\n permanent_relative_url?: never\n permanent_backend_url?: never\n}\n\ninterface IPrivateFile extends ICommonFile {\n private: true\n permanent_url: string\n permanent_relative_url: string\n permanent_backend_url: string\n}\n\ndeclare type NimbuFileFromAPI = ICommonFile & (IPublicFile | IPrivateFile)\n\ntype FileData = Array<number> | Base64 | Blob | Uri | NimbuFileFromAPI\n\nconst isNimbuFileFromAPI = (data: FileData): data is NimbuFileFromAPI => {\n return isObject(data) && 'url' in data && data.url != null\n}\n\nconst isPrivateNimbuFile = (data: FileData): data is IPrivateFile => {\n return isNimbuFileFromAPI(data) && data.private\n}\n\nconst isBase64Data = (data: FileData): data is Base64 => {\n return isObject(data) && 'base64' in data && data.base64 != null\n}\n\nexport class NimbuFile {\n filename: string\n private: boolean\n\n url?: string\n width?: number\n height?: number\n content_type?: string\n version?: string\n checksum?: string\n size?: number\n\n permanent_url?: string\n permanent_relative_url?: string\n permanent_backend_url?: string\n\n // base64 representation of the file\n _data?: string\n\n parent?: NimbuObject\n key?: string\n removed = false\n\n constructor(filename: string, data: FileData) {\n this.filename = filename\n this.private = false\n\n if (data != null && isNimbuFileFromAPI(data)) {\n this.url = data.url\n this.width = data.width\n this.height = data.height\n this.content_type = data.content_type\n this.version = data.version\n this.checksum = data.checksum\n this.size = data.size\n\n if (isPrivateNimbuFile(data)) {\n this.private = true\n this.permanent_url = data.permanent_url\n this.permanent_relative_url = data.permanent_relative_url\n this.permanent_backend_url = data.permanent_backend_url\n } else {\n this.private = false\n }\n } else if (data != null && isObject(data) && isBase64Data(data)) {\n // if the string contains data uri, extract based64 and the type out of it.\n const regexp = /^data:([a-zA-Z]*\\/[a-zA-Z+.-]*);(charset=[a-zA-Z0-9\\-/\\s]*,)?base64,(\\S+)/\n const matches = regexp.exec(data.base64)\n\n if (matches && matches.length > 0) {\n // if data is an URI with charset, there will have 4 matches.\n this._data = matches.length === 4 ? matches[3] : matches[2]\n } else {\n this._data = data.base64\n }\n } else if (data != null && isArray(data)) {\n this._data = encodeBase64(data)\n } else if (isString(data)) {\n throw 'Creating a Nimbu.File from a String is not yet supported.'\n }\n }\n\n /*\n * Makes sure that this file has the right parent and key.\n */\n _ensureParentAndKey(parent: NimbuObject, key: string) {\n this.parent = this.parent || parent\n this.key = this.key || key\n if (this.parent !== parent) {\n throw 'Internal Error. File retrieved from two different Objects.'\n }\n if (this.key !== key) {\n throw 'Internal Error. File retrieved from two different keys.'\n }\n }\n\n /*\n * Returns a JSON version of the object suitable for saving to disk.\n * @return {Object}\n */\n toJSON() {\n const json: {\n __type: string\n filename: string\n attachment?: string\n url?: string\n } = {\n __type: 'File',\n filename: this.filename,\n }\n if (this._data != null) {\n json.attachment = this._data\n }\n\n if (this.url != null) {\n json.url = this.url\n }\n\n return json\n }\n\n remove() {\n if (this.parent != null && this.key != null) {\n this.removed = true\n this.parent.set(this.key, new AtomicRemoveFile())\n return true\n } else {\n throw 'Internal Error. Tried to remove a File that is not linked to an Object.'\n }\n }\n}\n\nexport default NimbuFile\n","import { _request, encode } from '../internal'\n\nexport const NimbuCloud = {\n /*\n * Makes a call to a cloud function.\n * @param {String} name The function name.\n * @param {Object} data The parameters to send to the cloud function.\n * @return {Nimbu.Future} A promise that will be resolved with the result\n * of the function.\n */\n async run<T extends Record<string, any> = any>(name: string, data: any): Promise<T> {\n const { body } = await _request({\n route: 'functions',\n className: name,\n method: 'POST',\n data: encode({ value: data, seenObjects: null, disallowObjects: true }),\n })\n\n if (body && body.code === 141) {\n return Promise.reject(body)\n } else {\n return body.result\n }\n },\n}\n\nexport default NimbuCloud\n","import { all, each, indexOf, isArray, isObject, map } from 'underscore'\nimport { AtomicGallery, ChannelConfig, NimbuGalleryImage, NimbuObject, encode } from '../internal'\n\n// We need to check the properties of the gallery, since after a change, the instance of the gallery can change\nconst galleryMatches = function (image: NimbuGalleryImage, gallery: NimbuGallery, blankAllowed: boolean) {\n if (blankAllowed && image.gallery == null) {\n return true\n }\n if (gallery != null) {\n return (\n (image.gallery != null ? image.gallery.parent : undefined) === (gallery != null ? gallery.parent : undefined) &&\n (image.gallery != null ? image.gallery.key : undefined) === (gallery != null ? gallery.key : undefined)\n )\n } else {\n return image.gallery == null\n }\n}\n\nconst validImage = function (image: any, requiredGallery: any, blankGalleryAllowed = false) {\n return image instanceof NimbuGalleryImage && galleryMatches(image, requiredGallery, blankGalleryAllowed)\n}\n\nconst validImages = function (images: any, requiredGallery: any, blankGalleryAllowed = false) {\n if (!isObject(images)) {\n return false\n }\n return (\n validImage(images, requiredGallery, blankGalleryAllowed) ||\n (isArray(images) && all(images, (image: any) => validImage(image, requiredGallery, blankGalleryAllowed)))\n )\n}\n\nexport class NimbuGallery<P extends ChannelConfig = ChannelConfig> {\n parent: NimbuObject<P> | null\n key: string\n _images: NimbuGalleryImage<P>[]\n\n constructor(parent: NimbuObject<P> | null, key: string, images?: NimbuGalleryImage<P>[]) {\n this.parent = parent\n this.key = key\n if (images != null) {\n this._images = images\n each(this._images, (image) => image._setGallery(this))\n } else {\n this._images = []\n }\n }\n\n /*\n * Makes sure that this relation has the right parent and key.\n */\n _ensureParentAndKey(parent: NimbuObject<P>, key: string) {\n this.parent = this.parent || parent\n this.key = this.key || key\n if (this.parent !== parent) {\n throw 'Internal Error. Gallery retrieved from two different Objects.'\n }\n if (this.key !== key) {\n throw 'Internal Error. Gallery retrieved from two different keys.'\n }\n }\n\n /*\n * List images in the gallery\n */\n list() {\n return this._images\n }\n\n /*\n * Add (an) image(s) to the gallery\n */\n add(images: NimbuGalleryImage<P>[]) {\n if (!validImages(images, this, true)) {\n throw \"You must supply a Nimbu.GalleryImage or array of Nimbu.GalleryImage that don't belong to a gallery yet.\"\n }\n if (!isArray(images)) {\n images = [images]\n }\n const change = new AtomicGallery(images, [], [])\n\n this.parent?.set(this.key as any, change)\n }\n\n /*\n * Remove (an) image(s) from the gallery\n */\n remove(images: NimbuGalleryImage[]) {\n if (!validImages(images, this)) {\n throw 'You must supply a Nimbu.GalleryImage or array of Nimbu.GalleryImage that belong to this gallery.'\n }\n if (!isArray(images)) {\n images = [images]\n }\n const change = new AtomicGallery([], images, [])\n this.parent?.set(this.key as any, change)\n }\n\n /*\n * Record dirtyness of an image\n */\n _updateImage(image: NimbuGalleryImage<P>, changes: any) {\n if (!validImage(image, this)) {\n throw 'You must supply a Nimbu.GalleryImage that belongs to this gallery.'\n }\n // Save the original image\n const index = indexOf(this._images, image)\n this._images[index] = new NimbuGalleryImage(image.attributes)\n const updates: any = {}\n updates[image.id] = changes\n const change = new AtomicGallery([], [], updates)\n this.parent?.set(this.key as any, change)\n }\n\n /*\n * Returns a JSON version of the object suitable for saving to disk.\n * @return {Object}\n */\n toJSON() {\n return {\n __type: 'Gallery',\n images: map(this._images, (image) => encode({ value: image })),\n }\n }\n}\n\n// // Underscore methods that we want to implement on gallery.\n// const methods = [\n// 'forEach',\n// 'each',\n// 'map',\n// 'reduce',\n// 'reduceRight',\n// 'find',\n// 'detect',\n// 'filter',\n// 'select',\n// 'reject',\n// 'every',\n// 'all',\n// 'some',\n// 'any',\n// 'include',\n// 'contains',\n// 'invoke',\n// 'max',\n// 'min',\n// 'sortBy',\n// 'sortedIndex',\n// 'toArray',\n// 'size',\n// 'first',\n// 'initial',\n// 'rest',\n// 'last',\n// 'without',\n// 'indexOf',\n// 'shuffle',\n// 'lastIndexOf',\n// 'isEmpty',\n// 'groupBy',\n// ];\n\n// // Mix in each Underscore method as a proxy to `Gallery#_images`.\n// _arrayEach(\n// methods,\n// (method: string) =>\n// (NimbuGallery.prototype[method] = function() {\n// return _[method].apply(_, [this._images].concat(_.toArray(arguments)));\n// })\n// );\n\nexport default NimbuGallery\n","import { clone } from 'underscore'\nimport { AttributeMap, ChannelConfig, NimbuGallery, encode } from '../internal'\n\nexport type NimbuGalleryImageJSON = {\n __type: 'GalleryImage'\n id: string\n caption?: string\n position?: number\n file?: string\n}\n\nexport class NimbuGalleryImage<P extends ChannelConfig = ChannelConfig> {\n id: string\n attributes: AttributeMap\n gallery?: NimbuGallery<P>\n\n constructor(attributes: AttributeMap) {\n this.id = attributes.id\n this.attributes = clone(attributes) || {}\n }\n\n /*\n * Set the Gallery this image belongs to.\n */\n _setGallery(gallery: NimbuGallery<P>) {\n this.gallery = gallery\n }\n\n /*\n * Is an attribute set\n */\n has(key: string | number) {\n return this.attributes[key] != null\n }\n\n /*\n * Get an atribute\n */\n get(key: string | number) {\n return this.attributes[key]\n }\n\n /*\n * Set an attribute\n */\n set(key: string | number, value: any) {\n if (this.gallery != null && this.id != null) {\n // As long as we are not in a gallery or if we are a new object, we don't care about tracking changes\n const changes: AttributeMap = {}\n changes[key] = value\n this.gallery._updateImage(this, changes)\n }\n return (this.attributes[key] = value)\n }\n\n /*\n * Returns a JSON version of the object suitable for saving to disk.\n * @return {Object}\n */\n toJSON() {\n const json: NimbuGalleryImageJSON = {\n __type: 'GalleryImage',\n id: this.id,\n }\n if (this.has('caption')) {\n json.caption = this.get('caption')\n }\n if (this.has('position')) {\n json.position = this.get('position')\n }\n if (this.has('file')) {\n json.file = encode(this.get('file'))\n }\n\n return json\n }\n}\n\nexport default NimbuGalleryImage\n","import { extend, isUndefined, isNull, isObject, each, keys, isFunction } from 'underscore'\n\n// Helpers\n// -------\n\n// Shared empty constructor function to aid in prototype-chain creation.\nconst EmptyConstructor = function () {}\n\n// Helper function to correctly set up the prototype chain, for subclasses.\n// Similar to `goog.inherits`, but uses a hash of prototype properties and\n// class properties to be extended.\nconst inherits = function (parent: any, protoProps?: any, staticProps?: any) {\n let child = undefined\n\n // The constructor function for the new subclass is either defined by you\n // (the \"constructor\" property in your `extend` definition), or defaulted\n // by us to simply call the parent's constructor.\n if (protoProps && Object.prototype.hasOwnProperty.call(protoProps, 'constructor')) {\n child = protoProps.constructor\n } else {\n child = function (this: any) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, prefer-rest-params\n return parent.apply(this, arguments)\n }\n }\n\n // Inherit class (static) properties from parent.\n extend(child, parent)\n\n // Set the prototype chain to inherit from `parent`, without calling\n // `parent`'s constructor function.\n EmptyConstructor.prototype = parent.prototype\n child.prototype = Object.create(EmptyConstructor.prototype)\n\n // Add prototype properties (instance properties) to the subclass,\n // if supplied.\n if (protoProps) {\n extend(child.prototype, protoProps)\n }\n\n // Add static properties to the constructor function, if supplied.\n if (staticProps) {\n extend(child, staticProps)\n }\n\n // Correctly set child's `prototype.constructor`.\n child.prototype.constructor = child\n\n // Set a convenience property in case the parent's prototype is\n // needed later.\n child.__super__ = parent.prototype\n return child\n}\n\n// A self-propagating extend function.\nexport const _extend = function (this: any, protoProps: any, classProps: any) {\n const child = inherits(this, protoProps, classProps)\n child.extend = this.extend\n return child\n}\n\nexport const _arrayEach = each\n\n/*\nThis is like _.each, except:\nit doesn't work for so-called array-like objects,\nit does work for dictionaries with a \"length\" attribute.\n*/\nexport const _objectEach = function (obj: { [x: string]: any }, callback: (arg0: any, arg1: any) => any) {\n if (isObject(obj)) {\n return each(keys(obj), (key: string | number) => callback(obj[key], key))\n } else {\n return each(obj, callback)\n }\n}\n\nexport const _each = _objectEach\n\n// Helper function to check null or undefined.\nexport const _isNullOrUndefined = (x: any) => isNull(x) || isUndefined(x)\n\nexport const _trim = (string: string) => string.replace(/^\\s+|\\s+$/g, '')\n\nexport const _toCamel = (string: string) =>\n string.replace(/(_[a-z])/g, ($1: string) => $1.toUpperCase().replace('_', ''))\n\nexport const _toUnderscore = (string: string) => string.replace(/([A-Z])/g, ($1: string) => '_' + $1.toLowerCase())\n\n// Helper function to get a value from a Backbone object as a property\n// or as a function.\nexport const _getValue = function (object: { [x: string]: any }, prop: string | number) {\n if (!object || !object[prop]) {\n return null\n }\n const value = object[prop]\n if (isFunction(value)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n return value()\n } else {\n return value\n }\n}\n\nexport const parseDate = function (iso8601: any) {\n // detect if iso8601 is already a Date object\n if (iso8601 instanceof Date) {\n return iso8601\n }\n\n const regexp = new RegExp(\n '^([0-9]{1,4})-([0-9]{1,2})-([0-9]{1,2})T([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})(.([0-9]+))?Z$'\n )\n const match = regexp.exec(iso8601)\n if (!match) {\n return null\n }\n\n const year = Number(match[1]) || 0\n const month = (Number(match[2]) ?? 1) - 1\n const day = Number(match[3]) || 0\n const hour = Number(match[4]) || 0\n const minute = Number(match[5]) || 0\n const second = Number(match[6]) || 0\n const milli = Number(match[8]) || 0\n\n return new Date(Date.UTC(year, month, day, hour, minute, second, milli))\n}\n\nexport const _toQueryString = function (obj: any) {\n const parts = []\n for (const i in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, i)) {\n parts.push(encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]))\n }\n }\n return parts.join('&')\n}\n","import { _request, NimbuObject, NimbuError } from '../internal'\n\n/*\n * @class\n *\n * <p>A Nimbu.Order object is a local representation of a user persisted to the\n * Nimbu cloud. This class is a subclass of a Nimbu.Object, and retains the\n * same functionality of a Nimbu.Object, but also extends it with various\n * user specific methods, like authentication, signing up, and validation of\n * uniqueness.</p>\n */\nexport class NimbuOrder extends NimbuObject {\n constructor(attributes: any) {\n super('order', attributes)\n }\n\n // Instance Methods\n\n isCurrent() {\n return this.id === 'current'\n }\n\n async add(product: any, quantity: any, extras: any) {\n if (!this.isCurrent()) {\n return Promise.reject(new NimbuError(-1, 'You can only add line items to the current order'))\n }\n const data = {\n product,\n quantity,\n extras,\n }\n\n const { body } = await _request({\n path: `orders/${this.id}/items`,\n method: 'POST',\n data,\n })\n\n this._finishSave(body)\n\n // Set the id back to current\n this.id = 'current'\n return this\n }\n\n async remove(item: { id: string }) {\n // remove the order item\n if (!this.isCurrent()) {\n return Promise.reject(new NimbuError(-1, 'You can only remove items from the current order'))\n }\n\n const { body } = await _request({\n path: `orders/${this.id}/items/${item.id}`,\n method: 'DELETE',\n })\n\n this._finishSave(body)\n this.id = 'current'\n return this\n }\n\n getItems() {\n return this.get('items')\n }\n // Class Methods\n /*\n @lends Nimbu.Order\n */\n\n static current() {\n return new NimbuOrder({ id: 'current' })\n }\n}\n\nexport default NimbuOrder\n","import { ChannelConfig, NimbuObject, NimbuQuery } from '../internal'\n\ninterface ICommonPageItemFields extends ChannelConfig {\n slug: string\n type: string\n // repeatables: ReferenceMany<NimbuPageRepeatable>\n content: any\n}\n\nexport class NimbuPageItem extends NimbuObject<ICommonPageItemFields> {\n repeatables: NimbuPageRepeatable[] = []\n slug?: string\n type?: string\n content?: any\n parent?: NimbuPage\n\n constructor(attributes?: any) {\n super('page_items', attributes)\n }\n\n // _mergeSystemFields(attrs: { [x: string]: any; hasOwnProperty: (arg0: any) => any }) {\n // const specialFields = ['slug', 'type', 'repeatables', 'content', 'parent']\n // _arrayEach(specialFields, function (attr: string | number) {\n // if (Object.prototype.hasOwnProperty.call(attrs, attr)) {\n // switch (attr) {\n // case 'repeatables':\n // this[attr] = (attrs[attr] || []).map((values: any) => {\n // const repeatable = new NimbuPageRepeatable()\n // const repeatableValues = Object.assign({}, values, {\n // parent: this,\n // })\n // repeatable._finishFetch(repeatableValues)\n // return repeatable\n // })\n // delete attrs[attr]\n // break\n // default:\n // this.set(attr, attrs[attr])\n // }\n // }\n // })\n\n // // return super._mergeSystemFields.call(this, attrs)\n // }\n\n // _getSaveJSON() {\n // const json = super._getSaveJSON() ?? {}\n // json.repeatables = (this.repeatables || []).map((repeatable) => repeatable._getSaveJSON())\n // return json\n // }\n\n async save(key: any, val: any, options: any) {\n await this.parent?.save(key, val, options)\n\n return this as this & { id: string }\n }\n}\n\ntype PageItemsBySlug = { [slug: string]: NimbuPageItem }\n\n// interface ICommonPageRepeatableFields extends ChannelConfig {\n// slug: string\n// position: number\n// parent: NimbuPageItem\n// }\n\nexport class NimbuPageRepeatable extends NimbuObject {\n items: PageItemsBySlug = {}\n slug?: string\n position?: number\n parent?: NimbuPageItem\n\n constructor(attributes?: any) {\n super('page_repeatables', attributes)\n }\n\n // _mergeSystemFields(attrs: { [x: string]: any; hasOwnProperty: (arg0: any) => any }) {\n // const model = this\n // const specialFields = ['slug', 'position', 'parent', 'items']\n // _arrayEach(specialFields, function (attr: string | number) {\n // if (Object.prototype.hasOwnProperty.call(attrs, attr)) {\n // switch (attr) {\n // case 'items':\n // var itemObjects: PageItemsBySlug = {}\n // _arrayEach(keys(attrs[attr]), function (key: string | number) {\n // const value = attrs[attr][key]\n // const pageItem = new NimbuPageItem()\n // const pageItemValues = Object.assign({}, value, {\n // id: `page-${model.id}-item-${key}`,\n // parent: model,\n // })\n // pageItem._finishFetch(pageItemValues)\n // itemObjects[key] = pageItem\n // })\n\n // model.items = itemObjects\n // delete attrs[attr]\n // break\n // default:\n // ;(model as any)[attr] = attrs[attr]\n // }\n // }\n // })\n\n // // return super._mergeSystemFields.call(this, attrs)\n // }\n\n // _getSaveJSON() {\n // const json = super._getSaveJSON() ?? {}\n // json.id = this.id\n // _arrayEach(keys(this.items), function (key: string) {\n // const itemJson = this.items[key]._getSaveJSON()\n // if (Object.keys(itemJson).length > 0) {\n // if (!json.items) {\n // json.items = {}\n // }\n // json.items[key] = itemJson\n // }\n // })\n\n // return json\n // }\n\n markForDeletion() {\n return this.set('_destroy', true)\n }\n\n async save(\n key: any,\n val: any,\n options: {\n wait?: boolean\n useACL?: boolean\n forceChannel?: boolean\n locale?: string\n silent?: boolean\n } = {}\n ) {\n await this.parent?.save(key, val, options)\n\n return this as this & { id: string }\n }\n}\n\n/*\n@class\n\n<p>A Nimbu.Page object is a local representation of a page persisted to the\nNimbu cloud. This class is a subclass of a Nimbu.Object, and retains the\nsame functionality of a Nimbu.Object, but also extends it with various\nuser specific methods, like page items, translations, etc.</p>\n*/\nexport class NimbuPage extends NimbuObject {\n slug?: string\n published?: boolean\n homepage?: boolean\n fullpath?: string\n path?: string\n position?: number\n template?: string\n title?: string\n public_url?: string\n url?: string\n parent_path?: string\n parent?: NimbuPage\n items: PageItemsBySlug = {}\n\n constructor(attributes?: any) {\n super('page', attributes)\n }\n\n // _mergeSystemFields(attrs: { [x: string]: any; hasOwnProperty: (arg0: any) => any }) {\n // const model = this\n // const specialFields = [\n // 'slug',\n // 'published',\n // 'homepage',\n // 'fullpath',\n // 'position',\n // 'template',\n // 'title',\n // 'public_url',\n // 'url',\n // 'parent_path',\n // 'parent',\n // 'items',\n // ]\n // _arrayEach(specialFields, function (attr: string | number) {\n // if (Object.prototype.hasOwnProperty.call(attrs, attr)) {\n // switch (attr) {\n // case 'published':\n // case 'homepage':\n // return (model[attr] = !!attrs[attr])\n // case 'public_url':\n // return (model.url = attrs[attr])\n // case 'fullpath':\n // return (model.fullpath = model.path = attrs[attr])\n // case 'url':\n // return delete attrs[attr]\n // case 'items':\n // var itemObjects: PageItemsBySlug = {}\n // _arrayEach(keys(attrs[attr]), function (key: string) {\n // const value = attrs[attr][key]\n // const pageItem = new NimbuPageItem()\n // const pageItemValues = Object.assign({}, value, {\n // id: `page-${model.id}-item-${key}`,\n // parent: model,\n // })\n // pageItem._finishFetch(pageItemValues)\n // itemObjects[key] = pageItem\n // })\n\n // model.items = itemObjects\n // return delete attrs[attr]\n // case 'parent':\n // model.parent = new NimbuPage()\n // model.parent._finishFetch({ id: attrs[attr] })\n // return (attrs[attr] = model.parent)\n // default:\n // ;(model as any)[attr] = attrs[attr]\n // }\n // }\n // })\n\n // // return super._mergeSystemFields.call(this, attrs)\n // }\n\n getItem(slug: string | number) {\n return this.items[slug]\n }\n\n // _getSaveJSON() {\n // const json = super._getSaveJSON.call(this)\n // const model = this\n // _arrayEach(keys(this.items), function (key: string) {\n // const itemJson = model.items[key]._getSaveJSON()\n // if (Object.keys(itemJson).length > 0) {\n // if (!json.items) {\n // json.items = {}\n // }\n // json.items[key] = itemJson\n // }\n // })\n\n // return json\n // }\n\n static get(idOrPath: string) {\n const query = new NimbuQuery('page')\n if (idOrPath.match(/^[0-9a-fA-F]{24}$/)) {\n return query.get(idOrPath)\n } else {\n return query.equalTo('fullpath', idOrPath.replace(/^\\/|\\/$/g, '')).first()\n }\n }\n}\n\nexport default NimbuPage\n","import { ChannelConfig, NimbuObject, NimbuProductAggregate, NimbuRelation } from '../internal'\n\n/*\n@class\n\n<p>A Nimbu.Product object is a local representation of a user persisted to the\nNimbu cloud. This class is a subclass of a Nimbu.Object, and retains the\nsame functionality of a Nimbu.Object, but also extends it with various\nuser specific methods, like authentication, signing up, and validation of\nuniqueness.</p>\n*/\n\ntype IProductVariant = {\n price: number\n on_sale_price: number\n no_taxes: boolean\n no_shipping: boolean\n stock: number\n amount_in_cart: number\n amount_sold: number\n}\n\ntype ICommonProductFields = {\n name: string\n description: string\n digital: boolean\n requires_shipping: boolean\n weight?: number\n sku?: string\n status: string\n variants: IProductVariant[]\n images: any[] // FIXME: define image type\n variantsEnabled: boolean\n subproducts: NimbuRelation<{\n product: string | object\n variant: string | object\n }>\n}\n\nexport class NimbuProduct<T extends ChannelConfig = ChannelConfig> extends NimbuObject<T & ICommonProductFields> {\n constructor(attributes: Partial<T & ICommonProductFields>) {\n super('product', attributes)\n }\n\n // Instance Methods\n\n getVariants() {\n return this.get('variants')\n }\n\n hasVariants() {\n return this.get('variantsEnabled')\n }\n\n getSubProducts() {\n return this.relation('subproducts')!\n }\n\n addSubProduct(product: string | object | NimbuProduct<T>, variant: string | object | NimbuProduct<T>) {\n // add a product aggregate to the relation\n return this.getSubProducts().add(\n new NimbuProductAggregate({\n product,\n variant,\n })\n )\n }\n\n removeSubProduct(aggregate: any) {\n return this.getSubProducts().remove(aggregate)\n }\n}\n\nexport default NimbuProduct\n","import { compact } from 'underscore'\nimport { NimbuCollection, NimbuObject, NimbuProduct } from '../internal'\n\nfunction hasId(obj: any): obj is { id: string } {\n return obj != null && obj.id != null\n}\n\n/*\n@class\n\n<p>A Nimbu.ProductAggregate object is a local representation of a product aggregate in the Nimbu Cloud.\nA product aggregate is a reference to a specific product with a specific variant. This class is a subclass\nof a Nimbu.Object, and retains the same functionality of a Nimbu.Object, but also extends it with various\nuser specific methods.</p>\n*/\nexport class NimbuProductAggregate extends NimbuObject<{\n product: string\n variant: string\n}> {\n /*\n @lends Nimbu.ProductAggregate.prototype\n */\n\n constructor(\n attributes: Partial<{\n id?: string\n product?: string | object\n variant?: string | object\n }> = {},\n options: { ignoreValidation?: boolean; collection?: NimbuCollection } = {}\n ) {\n const attrs = { ...attributes } as {\n id?: string\n product?: string\n variant?: string\n }\n let product = attributes['product']\n let variant = attributes['variant']\n\n if (hasId(product)) {\n product = product.id\n }\n\n if (hasId(variant)) {\n variant = variant.id\n }\n\n const id = compact([product, variant]).join('-')\n if (id != null) {\n attrs['id'] = id\n }\n attrs['product'] = undefined\n attrs['variant'] = undefined\n\n super('product_aggregate', attrs, options)\n }\n\n getProductId() {\n let parts: string[] | undefined = undefined\n if (this.id != null) {\n parts = this.id.split('-')\n }\n if (parts != null && (parts?.length ?? 0) >= 1) {\n return parts[0]\n } else {\n return undefined\n }\n }\n\n getVariantId() {\n let parts: string[] | undefined = undefined\n if (this.id != null) {\n parts = this.id.split('-')\n }\n if (parts != null && (parts?.length ?? 0) === 2) {\n return parts[1]\n } else {\n return undefined\n }\n }\n\n getProduct() {\n return new NimbuProduct({ id: this.getProductId() })\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n save(_key: any, _val: any, _options: any) {\n return Promise.reject('Product Aggregates are read-only')\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async fetch(_options: any) {\n // There is nothing to fetch\n return await Promise.resolve(this as this & { id: string })\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n destroy(options: any) {\n return Promise.reject('Product Aggregates are read-only')\n }\n}\n\nexport default NimbuProductAggregate\n","import { _request, RequestOptions } from '../internal'\n\n/*\n * Contains functions to deal with Push in Nimbu\n * @name Nimbu.Push\n * @namespace\n */\n\n/*\n * Sends a push notification.\n * @param {Object} data - The data of the push notification. Valid fields\n * are:\n * <ol>\n * <li>where - A Nimbu.Query over Nimbu.Device that is used to match\n * a set of installations to push to.</li>\n * <li>data - The data to send as part of the push</li>\n * <ol>\n * @param {Object} options An object that has an optional success function,\n * that takes no arguments and will be called on a successful push, and\n * an error function that takes a Nimbu.Error and will be called if the push\n * failed.\n */\n\nexport const NimbuPush = {\n send(data: { data: any; where: { toQueryString: () => any } }, options: { useACL?: any }) {\n if (!options) {\n options = {}\n }\n\n const requestData: RequestOptions = {\n route: 'push',\n method: 'POST',\n useACL: options.useACL,\n data: data.data,\n }\n\n if (data.where) {\n requestData.query = data.where.toQueryString()\n }\n\n return _request(requestData)\n },\n}\n\nexport default NimbuPush\n","// Nimbu.Query is a way to create a list of Nimbu.Objects.\n\nimport {\n ChannelConfig,\n NimbuCollection,\n NimbuError,\n NimbuObject,\n RequestOptions,\n _arrayEach,\n _objectEach,\n _request,\n _toQueryString,\n continueWhile,\n decode,\n encode,\n} from '../internal'\n\nimport { clone, each, extend, isArray, isEmpty, isNull, isString, isUndefined, map } from 'underscore'\n\nexport type NimbuQueryOptions = {\n useACL?: boolean\n forceChannel?: boolean\n}\n\n/*\n * Creates a new parse Nimbu.Query for the given Nimbu.Object subclass.\n * @param objectClass -\n * An instance of a subclass of Nimbu.Object, or a Nimbu className string.\n * @class\n\n * <p>Nimbu.Query defines a query that is used to fetch Nimbu.Objects. The\n * most common use case is finding all objects that match a query through the\n * <code>find</code> method. For example, this sample code fetches all objects\n * of class <code>MyClass</code>. It calls a different function depending on\n * whether the fetch succeeded or not.\n\n * <pre>\n * var query = new Nimbu.Query(MyClass);\n * query.find({\n * success: function(results) {\n * // results is an array of Nimbu.Object.\n * },\n\n * error: function(error) {\n * // error is an instance of Nimbu.Error.\n * }\n * });</pre></p>\n\n * <p>A Nimbu.Query can also be used to retrieve a single object whose id is\n * known, through the get method. For example, this sample code fetches an\n * object of class <code>MyClass</code> and id <code>myId</code>. It calls a\n * different function depending on whether the fetch succeeded or not.\n\n * <pre>\n * var query = new Nimbu.Query(MyClass);\n * query.get(myId, {\n * success: function(object) {\n * // object is an instance of Nimbu.Object.\n * },\n\n * error: function(object, error) {\n * // error is an instance of Nimbu.Error.\n * }\n * });</pre></p>\n\n * <p>A Nimbu.Query can also be used to count the number of objects that match\n * the query without retrieving all of those objects. For example, this\n * sample code counts the number of objects of the class <code>MyClass</code>\n * <pre>\n * var query = new Nimbu.Query(MyClass);\n * query.count({\n * success: function(number) {\n * // There are number instances of MyClass.\n * },\n\n * error: function(error) {\n * // error is an instance of Nimbu.Error.\n * }\n * });</pre></p>\n */\nexport class NimbuQuery<T extends ChannelConfig = ChannelConfig> {\n /**\n * @property {string} className\n */\n className: string\n objectClass: typeof NimbuObject<T>\n pageCount?: number\n currentPage?: number\n\n _where: any\n _extraOptions: any\n _limit: number\n _skip: number\n _next?: boolean\n _prev?: boolean\n _last?: boolean\n _perPage: number = -1\n _resolve: string[] = []\n _only: string[] = []\n _sort: string[] = []\n\n constructor(objectClass: string | NimbuObject<T> | typeof NimbuObject<T>) {\n if (typeof objectClass === 'string') {\n this.className = objectClass\n } else if (objectClass instanceof NimbuObject) {\n this.className = objectClass.className\n } else if (typeof objectClass === 'function') {\n const objectClz = objectClass as typeof NimbuObject\n if (typeof objectClz.className === 'string') {\n this.className = objectClz.className\n } else {\n const obj = new objectClz()\n this.className = obj.className\n }\n } else {\n throw new TypeError('A Nimbu.Query must be constructed with a Nimbu.Object or class name.')\n }\n\n this.objectClass = NimbuObject._getSubclass(this.className)\n this.pageCount = undefined\n this._next = undefined\n this._prev = undefined\n this._last = undefined\n this.currentPage = undefined\n this._perPage = -1\n this._where = {}\n this._resolve = []\n this._limit = -1 // negative limit means, do not send a limit\n this._skip = 0\n this._extraOptions = {}\n }\n\n /*\n * Constructs a Nimbu.Query that is the OR of the passed in queries. For\n * example:\n * <pre>var compoundQuery = Nimbu.Query.or(query1, query2, query3);</pre>\n\n * will create a compoundQuery that is an or of the query1, query2, and\n * query3.\n * @param {...Nimbu.Query} var_args The list of queries to OR.\n * @return {Nimbu.Query} The query that is the OR of the passed in queries.\n */\n static or<T extends ChannelConfig = { [key: string]: any }>(...queries: NimbuQuery<T>[]) {\n let className: string | null = null\n _arrayEach(queries, function (q: { className: any }) {\n if (isNull(className)) {\n ;({ className } = q)\n }\n if (className !== q.className) {\n throw 'All queries must be for the same class'\n }\n })\n\n if (className == null) {\n throw 'A class name is required to create a query'\n }\n\n const query = new NimbuQuery<T>(className)\n query._orQuery(queries)\n return query\n }\n\n /*\n * Constructs a Nimbu.Object whose id is already known by fetching data from\n * the server. Either options.success or options.error is called when the\n * find completes.\n\n * @param {String} id The id of the object to be fetched.\n */\n async get(id: any, options?: any): Promise<NimbuObject<T> | undefined> {\n const response = await this.find({ ...options, id })\n\n if (response && isArray(response)) {\n return response[0]\n }\n\n const errorObject = new NimbuError(NimbuError.OBJECT_NOT_FOUND, 'Object not found.')\n return Promise.reject(errorObject)\n }\n\n /*\n * Returns a JSON representation of this query.\n * @return {Object} The JSON representation of the query.\n */\n toJSON() {\n const params: any = { where: this._where }\n if (this._resolve.length > 0) {\n params.resolve = this._resolve.join(',')\n }\n if (this._only && this._only.length > 0) {\n params.only = this._only.join(',')\n }\n if (this._limit >= 0) {\n params.limit = this._limit\n }\n if (this.currentPage != null && this.currentPage >= 0) {\n params.page = this.currentPage\n }\n if (this._perPage >= 0) {\n params.per_page = this._perPage\n }\n if (this._skip > 0) {\n params.skip = this._skip\n }\n if (this._sort != null && this._sort.length > 0) {\n params.sort = this._sort.join(',')\n }\n _objectEach(this._extraOptions, (v, k) => (params[k] = v))\n\n return params\n }\n\n /*\n * Returns a JSON representation of this query.\n * @return {Object} The JSON representation of the query.\n */\n toQueryString() {\n const json = this.toJSON()\n delete json.where\n\n const params = {\n ...(this._where ?? {}),\n ...json,\n }\n\n if (!isEmpty(params)) {\n return _toQueryString(params)\n } else {\n return undefined\n }\n }\n\n /*\n * Retrieves a list of Objects that satisfy this query.\n * Either options.success or options.error is called when the find\n * completes.\n\n * @param {Object} options A Backbone-style options object. Valid options\n * are:<ul>\n * <li>success: Function to call when the find completes successfully.\n * <li>error: Function to call when the find fails.\n * be used for this request.\n * </ul>\n\n * @return {Promise} A promise that is resolved with the results when\n * the query completes.\n */\n async find(options: NimbuQueryOptions & { id?: string } = {}) {\n const requestData: RequestOptions = {\n route: 'objects',\n className: this.className,\n method: 'GET',\n useACL: options.useACL,\n query: this.toQueryString(),\n forceChannel: !!options.forceChannel,\n }\n\n if (options.id != null) {\n requestData.id = options.id\n }\n\n this.pageCount = undefined\n\n const { body, xhr } = await _request(requestData)\n let link: any\n if (xhr != null) {\n link = xhr.getResponseHeader('Link')\n }\n\n if (link != null) {\n this._next = /rel=\"next\"/i.test(link)\n this._prev = /rel=\"prev\"/i.test(link)\n this._last = /rel=\"last\"/i.test(link)\n\n if (this._next) {\n const regexp = /<.*(?:\\?|&)page=([0-9]+).*>; rel=\"next\"/\n const result = regexp.exec(link)\n if (result != null) {\n this.currentPage = parseInt(result[1]) - 1\n }\n }\n\n if (this._prev) {\n const regexp = /<.*(?:\\?|&)page=([0-9]+).*>; rel=\"prev\"/\n const result = regexp.exec(link)\n if (result != null) {\n this.currentPage = parseInt(result[1]) + 1\n }\n }\n\n if (this._last) {\n const regexp = /<.*(?:\\?|&)page=([0-9]+).*>; rel=\"last\"/\n const result = regexp.exec(link)\n if (result != null) {\n this.pageCount = parseInt(result[1])\n }\n }\n }\n\n const arrayBody = isArray(body) ? body : [body]\n\n return map(arrayBody, (json: any) => {\n let obj: NimbuObject<T> | undefined = undefined\n if (json.className) {\n obj = new NimbuObject<T>(json.className)\n } else {\n obj = new this.objectClass()\n }\n obj._finishFetch(json)\n return obj\n })\n }\n\n /**\n * Retrieves a complete list of NimbuObjects that satisfy this query.\n * Using `eachBatch` under the hood to fetch all the valid objects.\n *\n * @param {object} options Valid options are:<ul>\n * <li>batchSize: How many objects to yield in each batch (default: 100)\n * <li>the usual options for find</li>\n * </ul>\n * @returns {Promise} A promise that is resolved with the results when\n * the query completes.\n */\n async findAll(options?: NimbuQueryOptions & { batchSize?: number }): Promise<Array<NimbuObject<T>>> {\n let result: NimbuObject<T>[] = []\n await this.eachBatch((objects: NimbuObject<T>[]) => {\n result = [...result, ...objects]\n }, options)\n return result\n }\n\n /**\n * Iterates over objects matching a query, calling a callback for each batch.\n * If the callback returns a promise, the iteration will not continue until\n * that promise has been fulfilled. If the callback returns a rejected\n * promise, then iteration will stop with that error. The items are processed\n * in an unspecified order. The query may not have any sort order, and may\n * not use limit or skip.\n *\n * @param {Function} callback Callback that will be called with each result\n * of the query.\n * @param {object} options Valid options are:<ul>\n * <li>batchSize: How many objects to yield in each batch (default: 100)\n * <li>useMasterKey: In Cloud Code and Node only, causes the Master Key to\n * be used for this request.\n * <li>sessionToken: A valid session token, used for making a request on\n * behalf of a specific user.\n * <li>context: A dictionary that is accessible in Cloud Code `beforeFind` trigger.\n * </ul>\n * @returns {Promise} A promise that will be fulfilled once the\n * iteration has completed.\n */\n eachBatch(\n callback: (objs: Array<NimbuObject<T>>) => void,\n options?: NimbuQueryOptions & { batchSize?: number }\n ): Promise<void> {\n options = options || {}\n\n if ((this._sort != null && this._sort.length > 0) || this._skip || this._limit >= 0) {\n const error = 'Cannot iterate on a query with sort, skip, or limit.'\n return Promise.reject(error)\n }\n\n const query = new NimbuQuery<T>(this.className)\n query._limit = options.batchSize || 100\n query._resolve = [...this._resolve]\n query._only = [...this._only]\n query._where = {}\n for (const attr in this._where) {\n const val = this._where[attr]\n if (Array.isArray(val)) {\n query._where[attr] = val.map((v) => {\n return v\n })\n } else if (val && typeof val === 'object') {\n const conditionMap: any = {}\n query._where[attr] = conditionMap\n for (const cond in val) {\n conditionMap[cond] = val[cond]\n }\n } else {\n query._where[attr] = val\n }\n }\n\n query.ascending('id')\n\n let finished = false\n let previousResults: NimbuObject<T>[] = []\n return continueWhile(\n () => {\n return !finished\n },\n async () => {\n const [results] = await Promise.all([\n query.find(options),\n Promise.resolve(previousResults.length > 0 && callback(previousResults)),\n ])\n if (results.length >= query._limit) {\n query.greaterThan('id', results[results.length - 1].id)\n previousResults = results\n } else if (results.length > 0) {\n await Promise.resolve(callback(results))\n finished = true\n } else {\n finished = true\n }\n }\n )\n }\n\n hasNext() {\n return this._next != null && this._next\n }\n\n next(options?: NimbuQueryOptions) {\n if (this.hasNext()) {\n if (this.currentPage == null) {\n this.currentPage = 1\n }\n\n return this.page(this.currentPage + 1).find(options)\n } else {\n throw 'No next page for query available'\n }\n }\n\n hasPrevious() {\n return this._prev != null && this._prev\n }\n\n prev(options?: NimbuQueryOptions) {\n if (this.hasPrevious() && this.currentPage != null) {\n if (this.currentPage == null) {\n this.currentPage = 1\n }\n\n return this.page(this.currentPage - 1).find(options)\n } else {\n throw 'No previous page for query available'\n }\n }\n\n /*\n Counts the number of objects that match this query.\n Either options.success or options.error is called when the count\n completes.\n\n @param {Object} options A Backbone-style options object. Valid options\n are:<ul>\n <li>success: Function to call when the count completes successfully.\n <li>error: Function to call when the find fails.\n </ul>\n\n @return {Promise} A promise that is resolved with the count when\n the query completes.\n */\n async count(options?: NimbuQueryOptions) {\n options = options || {}\n\n const { body } = await _request({\n route: 'objects',\n className: this.className,\n id: 'count',\n method: 'GET',\n query: this.toQueryString(),\n useACL: options.useACL,\n forceChannel: options.forceChannel,\n })\n\n return body.count ?? 0\n }\n\n async findDeleted(options: NimbuQueryOptions = {}) {\n let { body } = await _request({\n route: 'objects',\n className: this.className,\n id: 'deleted',\n method: 'GET',\n query: this.toQueryString(),\n useACL: options.useACL,\n forceChannel: options.forceChannel,\n })\n\n if (!isArray(body)) {\n body = [body]\n }\n return map(body, (json) => ({\n id: json.id,\n deleted_at: decode(json.deleted_at),\n }))\n }\n\n /*\n Retrieves at most one Nimbu.Object that satisfies this query.\n\n Either options.success or options.error is called when it completes.\n success is passed the object if there is one. otherwise, undefined.\n\n @param {Object} options A Backbone-style options object. Valid options\n are:<ul>\n <li>success: Function to call when the find completes successfully.\n <li>error: Function to call when the find fails.\n </ul>\n\n @return {Promise} A promise that is resolved with the object when\n the query completes.\n */\n async first(options: NimbuQueryOptions = {}): Promise<(NimbuObject<T> & { id: string }) | undefined> {\n this._limit = 1\n\n const response = await this.find(options)\n const json = isArray(response) ? response[0] : response\n const obj = new this.objectClass()\n if (json != null) {\n obj._finishFetch(json)\n return obj as NimbuObject<T> & { id: string }\n } else {\n return undefined\n }\n }\n\n /*\n Returns a new instance of Nimbu.Collection backed by this query.\n @param {Array} items An array of instances of <code>Nimbu.Object</code>\n with which to start this Collection.\n @param {Object} options An optional object with Backbone-style options.\n Valid options are:<ul>\n <li>model: The Nimbu.Object subclass that this collection contains.\n <li>query: An instance of Nimbu.Query to use when fetching items.\n <li>comparator: A string property name or function to sort by.\n </ul>\n @return {Nimbu.Collection}\n */\n collection(items: any, options: NimbuQueryOptions = {}) {\n options = options || {}\n return new NimbuCollection(\n items,\n extend(options, {\n model: this.objectClass,\n query: this,\n })\n )\n }\n\n /*\n Sets the number of results to skip before returning any results.\n This is useful for pagination.\n Default is to skip zero results.\n @param {Number} n the number of results to skip.\n @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n skip(n: number) {\n this._skip = n\n return this\n }\n\n page(n: number) {\n this.currentPage = n\n return this\n }\n\n per(n: number) {\n this._perPage = n\n return this\n }\n\n /*\n Sets the limit of the number of results to return. The default limit is\n 100, with a maximum of 1000 results being returned at a time.\n @param {Number} n the number of results to limit to.\n @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n limit(n: number) {\n this._limit = n\n return this\n }\n\n /*\n Add a constraint to the query that requires a particular key's value to\n be equal to the provided value.\n @param {String} key The key to check.\n @param value The value that the Nimbu.Object must contain.\n @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n equalTo(key: string, value: any) {\n if (isUndefined(value)) {\n return this.doesNotExist(key)\n }\n this._where[key] = encode({ value })\n return this\n }\n\n /*\n Helper for condition queries\n */\n _addCondition(key: string, condition: any, value: any) {\n // Check if we already have a condition\n this._where[`${key}.${condition}`] = encode({ value })\n return this\n }\n\n /*\n Add a constraint to the query that requires a particular key's value to\n be not equal to the provided value.\n @param {String} key The key to check.\n @param value The value that must not be equalled.\n @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n notEqualTo(key: string, value: any) {\n this._addCondition(key, 'ne', value)\n return this\n }\n\n /*\n Add a constraint to the query that requires a particular key's value to\n be less than the provided value.\n @param {String} key The key to check.\n @param value The value that provides an upper bound.\n @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n lessThan(key: string, value: any) {\n this._addCondition(key, 'lt', value)\n return this\n }\n\n /*\n Add a constraint to the query that requires a particular key's value to\n be greater than the provided value.\n @param {String} key The key to check.\n @param value The value that provides an lower bound.\n @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n greaterThan(key: string, value: any) {\n this._addCondition(key, 'gt', value)\n return this\n }\n\n /*\n Add a constraint to the query that requires a particular key's value to\n be less than or equal to the provided value.\n @param {String} key The key to check.\n @param value The value that provides an upper bound.\n @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n lessThanOrEqualTo(key: string, value: any) {\n this._addCondition(key, 'lte', value)\n return this\n }\n\n /*\n Add a constraint to the query that requires a particular key's value to\n be greater than or equal to the provided value.\n @param {String} key The key to check.\n @param value The value that provides an lower bound.\n @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n greaterThanOrEqualTo(key: string, value: any) {\n this._addCondition(key, 'gte', value)\n return this\n }\n\n /*\n * Add a constraint to the query that requires a particular key's value to\n * be contained in the provided list of values.\n * @param {String} key The key to check.\n * @param {Array} values The values that will match.\n * @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n containedIn(key: string, values: any) {\n this._addCondition(key, 'in', values)\n return this\n }\n\n /*\n * Add a constraint to the query that requires a particular key's value to\n * not be contained in the provided list of values.\n * @param {String} key The key to check.\n * @param {Array} values The values that will not match.\n * @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n notContainedIn(key: string, values: any) {\n this._addCondition(key, 'nin', values)\n return this\n }\n\n /*\n * Add a constraint to the query that requires a particular key's value to\n * contain each one of the provided list of values.\n * @param {String} key The key to check. This key's value must be an array.\n * @param {Array} values The values that will match.\n * @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n containsAll(key: string, values: any) {\n this._addCondition(key, 'all', values)\n return this\n }\n\n /*\n * Add a constraint for finding objects that contain the given key.\n * @param {String} key The key that should exist.\n * @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n exists(key: string) {\n this._addCondition(key, 'exists', true)\n return this\n }\n\n /*\n Add a constraint for finding objects that do not contain a given key.\n @param {String} key The key that should not exist\n @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n doesNotExist(key: string) {\n this._addCondition(key, 'exists', false)\n return this\n }\n\n /*\n * Add a regular expression constraint for finding string values that match\n * the provided regular expression.\n * This may be slow for large datasets.\n * @param {String} key The key that the string to match is stored in.\n * @param {RegExp} regex The regular expression pattern to match.\n * @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n matches(key: string, regex: { ignoreCase: any; multiline: any }, modifiers: string) {\n this._addCondition(key, 'regex', regex)\n if (!modifiers) {\n modifiers = ''\n }\n\n // Javascript regex options support mig as inline options but store them\n // as properties of the object. We support mi & should migrate them to\n // modifiers\n if (regex.ignoreCase) {\n modifiers += 'i'\n }\n if (regex.multiline) {\n modifiers += 'm'\n }\n if (modifiers && modifiers.length) {\n this._addCondition(key, 'options', modifiers)\n }\n return this\n }\n\n /*\n * Add constraint that at least one of the passed in queries matches.\n * @param {Array} queries\n * @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n _orQuery(queries: NimbuQuery<T>[]) {\n const queryJSON = map(queries, function (q) {\n const query = q.toJSON().where\n const parts = []\n for (const i in query) {\n if (Object.prototype.hasOwnProperty.call(query, i)) {\n const objectValue = query[i]\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n parts.push(i + ': ' + JSON.stringify(objectValue.toString()))\n }\n }\n return '(' + parts.join(' and ') + ')'\n })\n\n this._where.where = queryJSON.join(' or ')\n return this\n }\n\n /*\n * Converts a string into a regex that matches it.\n * Surrounding with \\Q .. \\E does this, we just need to escape \\E's in\n * the text separately.\n */\n _quote(s: { replace: (arg0: string, arg1: string) => string }) {\n return '\\\\Q' + s.replace('\\\\E', '\\\\E\\\\\\\\E\\\\Q') + '\\\\E'\n }\n\n /*\n * Add a constraint for finding string values that contain a provided\n * string. This may be slow for large datasets.\n * @param {String} key The key that the string to match is stored in.\n * @param {String} substring The substring that the value must contain.\n * @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n contains(key: string, value: any) {\n this._addCondition(key, 'contains', value)\n return this\n }\n\n /*\n * Add a constraint for finding string values that start with a provided\n * string. This query will use the backend index, so it will be fast even\n * for large datasets.\n * @param {String} key The key that the string to match is stored in.\n * @param {String} prefix The substring that the value must start with.\n * @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n startsWith(key: string, value: any) {\n this._addCondition(key, 'start', value)\n return this\n }\n\n /*\n * Add a constraint for finding string values that end with a provided\n * string. This will be slow for large datasets.\n * @param {String} key The key that the string to match is stored in.\n * @param {String} suffix The substring that the value must end with.\n * @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n endsWith(key: string, value: any) {\n this._addCondition(key, 'end', value)\n return this\n }\n\n /*\n * Searches the current className for objects that contains a value matching\n * the given string.\n * @param {String} key The search value\n * @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n search(value: string) {\n this.equalTo('search', value)\n return this\n }\n\n /*\n * Add a constraint for finding geo values that intersect with a provided\n * geometry.\n * @param {String} key The name of the geo field to constrain\n * @param {Object or String} geometry The geometry to query for intersection\n * @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n geoIntersects(key: string, geometry: any) {\n const json = isString(geometry) ? geometry : JSON.stringify(geometry)\n this._addCondition(key, 'geoIntersects', json)\n return this\n }\n\n /*\n Add a constraint for finding geo values that are within a provided\n geometry.\n @param {String} key The name of the geo field to constrain\n @param {Object or String} geometry The geometry (of type \"Polygon\" or \"MultiPolygon\")\n that should contain the geo field.\n @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n geoWithin(key: string, geometry: any) {\n const json = isString(geometry) ? geometry : JSON.stringify(geometry)\n this._addCondition(key, 'geoWithin', json)\n return this\n }\n\n /*\n * Add a constraint for finding geo values that are near a provided\n * point.\n * @param {String} key The name of the geo field to constrain\n * @param {Object or String} geometry The geometry (of type \"Point\")\n * where the geo field should be near.\n * @param {Number} maxDistance Maximum distance in meters from the point.\n * (optional, default: none)\n * @param {Number} minDistance Minimum distance in meters from the point.\n * (optional, default: none)\n * @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n near(key: string, geometry: any, maxDistance: any, minDistance: any) {\n const point = isString(geometry) ? JSON.parse(geometry) : geometry\n const condition: any = {\n geometry: point,\n }\n if (maxDistance != null) {\n condition.maxDistance = maxDistance\n }\n if (minDistance != null) {\n condition.minDistance = minDistance\n }\n const json = JSON.stringify(condition)\n this._addCondition(key, 'near', json)\n return this\n }\n\n /*\n * Add a constraint for finding geo values that are near a provided\n * point.\n * @param {String} key The name of the geo field to constrain.\n * @param {Number} lng The longitude of the point.\n * @param {Number} lat The latitute of the point.\n * @param {Number} maxDistance Maximum distance in meters from the point.\n * (optional, default: none)\n * @param {Number} minDistance Minimum distance in meters from the point.\n * (optional, default: none)\n * @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n nearCoordinates(key: string, lng: any, lat: any, maxDistance: any, minDistance: any) {\n return this.near(\n key,\n {\n type: 'Point',\n coordinates: [lng, lat],\n },\n maxDistance,\n minDistance\n )\n }\n\n /**\n * Sorts the results in ascending order by the given key.\n *\n * @param {(string|string[])} keys The key to order by, which is a\n * string of comma separated values, or an Array of keys, or multiple keys.\n * @returns {Nimbu.Query} Returns the query, so you can chain this call.\n */\n ascending(...keys: Array<string>) {\n this._sort = []\n return this.addAscending(...keys)\n }\n\n /**\n * Sorts the results in ascending order by the given key,\n * but can also add secondary sort descriptors without overwriting _order.\n *\n * @param {(string|string[])} keys The key to order by, which is a\n * string of comma separated values, or an Array of keys, or multiple keys.\n * @returns {Nimbu.Query} Returns the query, so you can chain this call.\n */\n addAscending(...keys: Array<string>) {\n if (!this._sort) {\n this._sort = []\n }\n keys.forEach((key) => {\n if (Array.isArray(key)) {\n key = key.join()\n }\n this._sort = this._sort.concat(key.replace(/\\s/g, '').split(','))\n })\n\n return this\n }\n\n /**\n * Sorts the results in descending order by the given key.\n *\n * @param {(string|string[])} keys The key to order by, which is a\n * string of comma separated values, or an Array of keys, or multiple keys.\n * @returns {Nimbu.Query} Returns the query, so you can chain this call.\n */\n descending(...keys: Array<string>) {\n this._sort = []\n return this.addDescending(...keys)\n }\n\n /**\n * Sorts the results in descending order by the given key,\n * but can also add secondary sort descriptors without overwriting _order.\n *\n * @param {(string|string[])} keys The key to order by, which is a\n * string of comma separated values, or an Array of keys, or multiple keys.\n * @returns {Nimbu.Query} Returns the query, so you can chain this call.\n */\n addDescending(...keys: Array<string>) {\n if (!this._sort) {\n this._sort = []\n }\n keys.forEach((key) => {\n if (Array.isArray(key)) {\n key = key.join()\n }\n this._sort = this._sort.concat(\n key\n .replace(/\\s/g, '')\n .split(',')\n .map((k) => {\n return '-' + k\n })\n )\n })\n\n return this\n }\n\n /*\n * Include nested Nimbu.Objects for the provided key. You can use dot\n * notation to specify which fields in the included object are also fetch.\n * @param {String} key The name of the key to include.\n * @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n include(...keys: Array<string | Array<string>>) {\n keys.forEach((key) => {\n if (Array.isArray(key)) {\n this._resolve = this._resolve.concat(key)\n } else {\n this._resolve.push(key)\n }\n })\n return this\n }\n\n /**\n * Includes all nested Nimbu.Objects one level deep.\n *\n * @returns {Nimbu.Query} Returns the query, so you can chain this call.\n */\n includeAll() {\n return this.include('*')\n }\n\n /*\n * Restrict the fields of the returned Nimbu.Objects to include only the\n * provided keys. If this is called multiple times, then all of the keys\n * specified in each of the calls will be included.\n * @param {Array} keys The names of the keys to include.\n * @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n only(...keys: Array<string | Array<string>>) {\n keys.forEach((key) => {\n if (Array.isArray(key)) {\n this._only = this._only.concat(key)\n } else {\n this._only.push(key)\n }\n })\n return this\n }\n\n /*\n * Iterates over each result of a query, calling a callback for each one. If\n * the callback returns a promise, the iteration will not continue until\n * that promise has been fulfilled. If the callback returns a rejected\n * promise, then iteration will stop with that error. The items are\n * processed in an unspecified sort. The query may not have any sort sort,\n * and may not use limit or skip.\n * @param {Function} callback Callback that will be called with each result\n * of the query.\n * @param {Object} options An optional Backbone-like options object with\n * success and error callbacks that will be invoked once the iteration\n * has finished.\n * @return {Promise} A promise that will be fulfilled once the\n * iteration has completed.\n */\n each(callback: (value: any) => any, options: { batchSize?: any } = {}) {\n if ((this._sort != null && this._sort.length > 0) || this._skip || this._limit >= 0) {\n const error = 'Cannot iterate on a query with sort, skip, or limit.'\n return Promise.reject(error)\n }\n const query = new NimbuQuery(this.objectClass)\n\n // We can override the batch size from the options.\n // This is undocumented, but useful for testing.\n query._limit = options.batchSize || 100\n query._where = clone(this._where)\n query._resolve = clone(this._resolve)\n query.ascending('id')\n let finished = false\n return continueWhile(\n () => !finished,\n () =>\n query.find().then(function (results) {\n let callbacksDone = Promise.resolve()\n each(results, (result: any) => {\n callbacksDone = callbacksDone.then(() => callback(result))\n })\n\n return callbacksDone.then(function () {\n if (results.length >= query._limit) {\n return query.greaterThan('id', results[results.length - 1].id)\n } else {\n return (finished = true)\n }\n })\n })\n )\n }\n}\n\nexport default NimbuQuery\n","import _ from 'underscore'\nimport { AtomicRelation, ChannelConfig, NimbuObject } from '../internal'\n\nexport type GetRelationChannelConfig<R> = R extends NimbuRelation<infer T, any> ? T : never\n\n/*\nCreates a new Relation for the given parent object and key. This\nconstructor should rarely be used directly, but rather created by\nNimbu.Object.relation.\n@param {Nimbu.Object} parent The parent of this relation.\n@param {String} key The key for this relation on the parent.\n@see Nimbu.Object#relation\n@class\n\n<p>\nA class that is used to access all of the children of a many-to-many\nrelationship. Each instance of Nimbu.Relation is associated with a\nparticular parent object and key.\n</p>\n*/\nexport class NimbuRelation<T extends ChannelConfig = ChannelConfig, P extends ChannelConfig = ChannelConfig> {\n parent: NimbuObject<P> | null\n key: keyof T\n targetClassName: string | null\n _objects: NimbuObject<T>[]\n\n constructor(parent: NimbuObject<P> | null, key: string, objects?: NimbuObject<T>[]) {\n this.parent = parent\n this.key = key\n this.targetClassName = null\n\n if (objects != null) {\n this._objects = objects\n } else {\n this._objects = []\n }\n }\n\n /*\n * Makes sure that this relation has the right parent and key.\n */\n _ensureParentAndKey(parent: any, key: any) {\n this.parent = this.parent || parent\n this.key = this.key || key\n if (this.parent !== parent) {\n throw 'Internal Error. Relation retrieved from two different Objects.'\n }\n if (this.key !== key) {\n throw 'Internal Error. Relation retrieved from two different keys.'\n }\n }\n\n /*\n * Lists the array of Nimbu.Objects in this relation.\n */\n list() {\n return this._objects\n }\n\n /*\n * Adds a Nimbu.Object or an array of Nimbu.Objects to the relation.\n * @param {} objects The item or items to add.\n */\n add(objects: NimbuObject<T> | NimbuObject<T>[]) {\n if (!_.isObject(objects)) {\n throw 'You must supply a Nimbu.Object or array of Nimbu.Object'\n }\n if (!_.isArray(objects)) {\n objects = [objects]\n }\n const change = new AtomicRelation(objects, [])\n if (this.parent) {\n this.parent.set(this.key as any, change)\n }\n this.targetClassName = change._targetClassName\n }\n\n /*\n * Removes a Nimbu.Object or an array of Nimbu.Objects from this relation.\n * @param {} objects The item or items to remove.\n */\n remove(objects: NimbuObject<T> | NimbuObject<T>[]) {\n if (!_.isObject(objects)) {\n throw 'You must supply a Nimbu.Object or array of Nimbu.Object'\n }\n if (!_.isArray(objects)) {\n objects = [objects]\n }\n const change = new AtomicRelation([], objects)\n if (this.parent) {\n this.parent.set(this.key as any, change)\n }\n this.targetClassName = change._targetClassName\n }\n\n /*\n * Returns a JSON version of the object suitable for saving to disk.\n * @return {Object}\n */\n toJSON() {\n return {\n __type: 'Relation',\n className: this.targetClassName,\n }\n }\n}\n\nexport default NimbuRelation\n","import { NimbuCustomer, NimbuError, VERSION, Config, getInstallationId } from '../internal'\n\nimport _, { isObject } from 'underscore'\n\nlet useChaos = false\nlet chaosThreshold = 0.95\n\nexport enum RequestMethod {\n GET = 'GET',\n POST = 'POST',\n PUT = 'PUT',\n PATCH = 'PATCH',\n DELETE = 'DELETE',\n}\n\nexport type RequestOptions = {\n data?: any\n query?: string\n route?: string\n className?: string\n id?: string\n method?: string\n useACL?: boolean\n sessionToken?: string\n path?: string\n forceChannel?: boolean\n locale?: string\n include?: string[]\n progress?: IProgressHandler\n}\n\nexport type IProgressHandler = (\n percentage: number | null,\n loaded: number | null,\n total: number | null,\n type: 'download' | 'upload'\n) => void\nexport type IOptions = {\n success?: any\n error?: any\n useACL?: boolean\n sessionToken?: string\n cascadeSave?: boolean\n locale?: string\n progress?: IProgressHandler\n}\n\nlet XHR: typeof XMLHttpRequest = null as any\nif (typeof XMLHttpRequest !== 'undefined') {\n XHR = XMLHttpRequest\n}\n\nif (Config.isNode) {\n // XHR = require('xmlhttprequest').XMLHttpRequest\n}\n\n/*\n * Options:\n * route: is classes, users, login, etc.\n * id: null if there is no associated objectId.\n * method: the http method for the REST API.\n * dataObject: the payload as an object, or null if there is none.\n * @ignore\n */\nexport const _request = async <T extends Record<string, any>>({\n method = 'GET',\n route,\n className,\n id,\n useACL,\n sessionToken,\n path,\n forceChannel,\n locale,\n include,\n data: dataObject,\n query: queryString,\n}: RequestOptions): Promise<AjaxResponse<T>> => {\n let classRoute: string | undefined = undefined\n\n const accessToken = await Config.getAccessToken()\n if (accessToken == null) {\n throw 'You need to call Nimbu.initialize before using the SDK.'\n }\n\n if (_.isUndefined(useACL)) {\n useACL = Config.useACL\n }\n\n if (!sessionToken) {\n // Use the current user session token if none was provided.\n const currentCustomer = NimbuCustomer.current()\n if (currentCustomer && currentCustomer.sessionToken) {\n sessionToken = currentCustomer.sessionToken\n }\n }\n\n if (useACL) {\n if (queryString != null) {\n queryString = queryString + '&use_acl=1'\n } else {\n queryString = 'use_acl=1'\n }\n }\n\n if (include != null && include.length > 0) {\n if (queryString != null) {\n queryString = queryString + '&include=' + include.join(',')\n } else {\n queryString = 'include=' + include.join(',')\n }\n }\n\n if (locale != null) {\n if (queryString != null) {\n queryString = queryString + '&content_locale=' + locale\n } else {\n queryString = 'content_locale=' + locale\n }\n }\n\n if (!path) {\n if (\n route !== 'batch' &&\n route !== 'objects' &&\n route !== 'events' &&\n route !== 'files' &&\n route !== 'functions' &&\n route !== 'login' &&\n route !== 'push' &&\n route !== 'customers' &&\n route !== 'jobs'\n ) {\n throw \"Bad route: '\" + route + \"'.\"\n }\n\n if (route === 'objects') {\n if (forceChannel) {\n route = 'channels'\n if (id !== 'customizations') {\n classRoute = 'entries'\n }\n } else if (className === 'customer' || className === 'customers') {\n route = 'customers'\n className = undefined\n } else if (className === 'product' || className === 'products') {\n route = 'products'\n className = undefined\n } else if (className === 'page' || className === 'pages') {\n route = 'pages'\n className = undefined\n } else if (className === 'role') {\n route = 'roles'\n className = undefined\n } else if (className === 'coupon' || className === 'coupons') {\n route = 'coupons'\n className = undefined\n } else if (className === 'order' || className === 'orders') {\n route = 'orders'\n className = undefined\n } else if (className === 'device' || className === 'devices') {\n route = 'devices'\n className = undefined\n } else {\n route = 'channels'\n if (id !== 'customizations') {\n classRoute = 'entries'\n }\n }\n }\n\n if (route === 'push') {\n route = 'devices'\n className = 'push'\n }\n\n path = route\n if (className != null) {\n path += '/' + className\n }\n if (classRoute) {\n path += '/' + classRoute\n }\n if (id) {\n path += '/' + id\n }\n }\n\n let url = Config.endpoint\n if (url.charAt(url.length - 1) !== '/') {\n url += '/'\n }\n if (path.charAt(0) === '/') {\n path = path.substring(1)\n }\n url += path\n if (queryString) {\n url += '?' + queryString\n }\n\n dataObject = _.clone(dataObject || {})\n\n const headers: AjaxHeaders = {\n _accessToken: accessToken,\n _installationId: getInstallationId(),\n _clientVersion: VERSION,\n }\n\n if (sessionToken != null) {\n headers._sessionToken = sessionToken\n }\n const data = JSON.stringify(dataObject)\n\n return Config.ajax(method, url, data, headers).then(null, (error: any) => {\n // Transform the error into an instance of Nimbu.Error by trying to Nimbu\n // the error string as JSON.\n\n if (error && error.responseText) {\n try {\n const json = JSON.parse(error.responseText)\n if (json) {\n error = new NimbuError(json.code, json.message)\n\n if (json.errors != null) {\n error.errors = json.errors\n }\n }\n } catch (e) {\n console.error(e)\n }\n }\n\n // If we fail to Nimbu the error text, that's okay.\n error = error || new NimbuError(-1, error.responseText)\n\n // By explicitly returning a rejected Future, this will work with\n // either jQuery or Futures/A semantics.\n return Promise.reject(error)\n })\n}\n\nexport type AjaxHeaders = {\n _accessToken?: string | null\n _sessionToken?: string\n _clientVersion?: string\n _installationId?: string\n _csrfToken?: string | null\n}\n\nexport type AjaxResponse<T extends Record<string, any> = Record<string, any>> = {\n body: T\n status: number\n xhr?: XMLHttpRequest\n}\n\ntype AjaxOptions = Pick<RequestOptions, 'progress'> & { formPost?: boolean }\n\nexport type IAjax<T extends Record<string, any> = Record<string, any>> = (\n method: string,\n url: string,\n data: any,\n headers?: AjaxHeaders,\n options?: AjaxOptions\n) => Promise<AjaxResponse<T>>\n\nConfig.setAjax((method: string, url: string, data: any, headers: AjaxHeaders = {}, options: AjaxOptions = {}) => {\n if (!_.isString(data) && !options.formPost) {\n data = JSON.stringify(data)\n }\n\n if (useChaos && Math.random() > chaosThreshold) {\n return Promise.reject('Chaos!')\n }\n\n if (options.formPost && isObject(data)) {\n const urlEncodedDataPairs: string[] = []\n for (const name in data) {\n urlEncodedDataPairs.push(encodeURIComponent(name) + '=' + encodeURIComponent(data[name]))\n }\n data = urlEncodedDataPairs.join('&')\n }\n\n return new Promise<AjaxResponse>((resolve, reject) => {\n let handled = false\n const xhr = new XHR()\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (handled) {\n return\n }\n handled = true\n if (xhr.status >= 200 && xhr.status < 300) {\n let body = undefined\n try {\n if (xhr.status !== 204) {\n // here the actual parsing of the response happens\n body = JSON.parse(xhr.responseText)\n } else {\n // status 204 is 'No Content'\n body = ''\n }\n } catch (e) {\n reject(e)\n }\n if (body || xhr.status === 204) {\n return resolve({ body, status: xhr.status, xhr })\n }\n } else {\n return reject(xhr)\n }\n }\n }\n\n xhr.open(method, url, true)\n\n if (options.formPost) {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')\n } else {\n xhr.setRequestHeader('Content-Type', 'text/plain') // avoid pre-flight.\n }\n\n if (headers._accessToken != null) {\n xhr.setRequestHeader('X-Nimbu-Access-Token', `token ${headers._accessToken}`)\n }\n if (headers._sessionToken != null) {\n xhr.setRequestHeader('X-Nimbu-Session-Token', headers._sessionToken)\n }\n if (headers._clientVersion != null) {\n xhr.setRequestHeader('X-Nimbu-Client-Version', headers._clientVersion)\n }\n if (headers._installationId != null) {\n xhr.setRequestHeader('X-Nimbu-Installation-Id', headers._installationId)\n }\n if (headers._csrfToken != null) {\n xhr.setRequestHeader('X-CSRF-Token', headers._csrfToken)\n }\n\n // Add a special user agent just for request from node.js.\n if (Config.isNode) {\n // eslint-disable-next-line no-undef\n xhr.setRequestHeader('User-Agent', 'Nimbu/' + VERSION + ' (NodeJS ' + process.versions.node + ')')\n }\n\n if (options && options.progress != null && typeof options.progress === 'function') {\n const progressHandler = options.progress\n\n const handleProgress = function (type: 'upload' | 'download', event: ProgressEvent<EventTarget>) {\n if (event.lengthComputable) {\n progressHandler(event.loaded / event.total, event.loaded, event.total, type)\n } else {\n progressHandler(null, null, null, type)\n }\n }\n\n xhr.onprogress = (event) => {\n handleProgress('download', event)\n }\n\n if (xhr.upload) {\n xhr.upload.onprogress = (event) => {\n handleProgress('upload', event)\n }\n }\n }\n\n xhr.onabort = function () {\n resolve({\n body: { code: 0, error: 'Request aborted' },\n status: 0,\n xhr,\n })\n }\n\n if (method.toUpperCase() === 'GET') {\n xhr.send()\n } else {\n xhr.send(data)\n }\n })\n})\n\nexport const enableChaos = function (percentage: number) {\n useChaos = true\n if (percentage != null) {\n return (chaosThreshold = 1 - percentage / 100)\n } else {\n return chaosThreshold\n }\n}\n\nexport default _request\n","import { NimbuACL, NimbuObject, NimbuError, AttributeMap } from '../internal'\n\nimport _ from 'underscore'\n\n/*\n * Represents a Role on the Nimbu server. Roles represent groupings of\n * Users for the purposes of granting permissions (e.g. specifying an ACL\n * for an Object). Roles are specified by their sets of child users and\n * child roles, all of which are granted any permissions that the parent\n * role has.\n\n * <p>Roles must have a name (which cannot be changed after creation of the\n * role), and must specify an ACL.</p>\n * @class\n * A Nimbu.Role is a local representation of a role persisted to the Nimbu\n * cloud.\n */\nexport class NimbuRole extends NimbuObject {\n /*\n * Constructs a new Nimbu Role with the given name and ACL.\n *\n * @param {String} name The name of the Role to create.\n * @param {Nimbu.ACL} acl The ACL for this role. Roles must have an ACL.\n */\n constructor(name: string, acl: NimbuACL) {\n super('role')\n if (typeof name === 'string' && acl instanceof NimbuACL) {\n this.setName(name)\n this.setACL(acl)\n }\n }\n\n /*\n * Gets the name of the role. You can alternatively call role.get(\"name\")\n *\n * @return {String} the name of the role.\n */\n getName() {\n return this.get('name')\n }\n\n /*\n * Sets the name for a role. This value must be set before the role has\n * been saved to the server, and cannot be set once the role has been\n * saved.\n *\n * <p>\n * A role's name can only contain alphanumeric characters, _, -, and\n * spaces.\n * </p>\n *\n * <p>This is equivalent to calling role.set(\"name\", name)</p>\n *\n * @param {String} name The name of the role.\n * @param {Object} options Standard options object with success and error\n * callbacks.\n */\n setName(name: any, options?: any) {\n return this.set('name', name, options)\n }\n\n /*\n * Gets the Nimbu.Relation for the Nimbu.Customers that are direct\n * children of this role. These users are granted any privileges that this\n * role has been granted (e.g. read or write access through ACLs). You can\n * add or remove users from the role through this relation.\n *\n * <p>This is equivalent to calling role.relation(\"users\")</p>\n *\n * @return {Nimbu.Relation} the relation for the users belonging to this\n * role.\n */\n getCustomers() {\n return this.relation('customers')\n }\n\n /*\n * @deprecated This has never been functional and will be removed in the next\n * major release.\n *\n * Gets the Nimbu.Relation for the Nimbu.Roles that are direct\n * children of this role. These roles' users are granted any privileges that\n * this role has been granted (e.g. read or write access through ACLs). You\n * can add or remove child roles from this role through this relation.\n *\n * <p>This is equivalent to calling role.relation(\"roles\")</p>\n *\n * @return {Nimbu.Relation} the relation for the roles belonging to this\n * role.\n */\n getRoles() {\n return this.relation('roles')\n }\n\n /*\n * Gets the Nimbu.Relation for the Nimbu.Roles that are direct\n * children of this role. This role's users are granted any privileges that\n * the child roles have been granted (e.g. read or write access through ACLs). You\n * can add or remove child roles to/from this role through this relation.\n *\n * <p>This is equivalent to calling role.relation(\"children\")</p>\n *\n * @return {Nimbu.Relation} the relation for the child roles of this role.\n */\n getChildren() {\n return this.relation('children')\n }\n\n /*\n * Gets the Nimbu.Relation for the Nimbu.Roles that are direct\n * parents of this role. These roles' users are granted any privileges that\n * this role has been granted (e.g. read or write access through ACLs). You\n * can add or remove parent roles from this role through this relation.\n *\n * <p>This is equivalent to calling role.relation(\"parents\")</p>\n *\n * @return {Nimbu.Relation} the relation for the parent roles of this role.\n */\n getParents() {\n return this.relation('parents')\n }\n\n /*\n * @ignore\n */\n validate(attrs: AttributeMap) {\n if ('name' in attrs && attrs.name !== this.getName()) {\n const newName = attrs.name\n\n // Check to see if the id being set matches this.id.\n // This happens during a fetch -- the id is set before calling fetch.\n // Let the name be set in this case.\n if (this.id && this.id !== attrs.id) {\n return new NimbuError(NimbuError.OTHER_CAUSE, \"A role's name can only be set before it has been saved.\")\n }\n if (!_.isString(newName)) {\n return new NimbuError(NimbuError.OTHER_CAUSE, \"A role's name must be a String.\")\n }\n if (!/^[0-9a-zA-Z\\-_ ]+$/.test(newName)) {\n return new NimbuError(\n NimbuError.OTHER_CAUSE,\n \"A role's name can only contain alphanumeric characters, _, -, and spaces.\"\n )\n }\n }\n if (NimbuObject.prototype.validate) {\n return NimbuObject.prototype.validate.call(this, attrs)\n }\n return false\n }\n}\n\nexport default NimbuRole\n","import { Config } from '../internal'\n\ntype SyncStorage = {\n async: 0\n getItem: (path: string) => string | null\n setItem: (path: string, value: string) => string\n removeItem: (path: string) => void\n getAllKeys?: () => Array<string>\n clear: () => void\n}\n\ntype AsyncStorage = {\n async: 1\n getItemAsync: (path: string) => Promise<string | null>\n setItemAsync: (path: string, value: string) => Promise<string>\n removeItemAsync: (path: string) => Promise<void>\n getAllKeysAsync?: () => Promise<Array<string>>\n clear: () => void\n}\n\nexport type IStorage = SyncStorage | AsyncStorage\n\nexport const Storage = {\n async(): boolean {\n const storage = Config.getStorage()\n return !!storage.async\n },\n\n async getItem(path: string): Promise<string | null> {\n const storage = Config.getStorage()\n if (storage.async === 1) {\n return storage.getItemAsync(path)\n } else {\n return storage.getItem(path)\n }\n },\n\n async setItem(path: string, value: string): Promise<string> {\n const storage = Config.getStorage()\n if (storage.async === 1) {\n return storage.setItemAsync(path, value)\n } else {\n return storage.setItem(path, value)\n }\n },\n\n async removeItem(path: string): Promise<void> {\n const storage = Config.getStorage()\n if (storage.async === 1) {\n return storage.removeItemAsync(path)\n } else {\n return storage.removeItem(path)\n }\n },\n\n async getAllKeys(): Promise<Array<string> | null> {\n const storage = Config.getStorage()\n if (storage.async === 1) {\n return storage.getAllKeysAsync ? storage.getAllKeysAsync() : null\n } else {\n return storage.getAllKeys ? storage.getAllKeys() : null\n }\n },\n}\n\nconst memMap: { [key: string]: any } = {}\n\nconst MemoryStorage: IStorage = {\n async: 0,\n getItem(path: string): string | null {\n if (Object.prototype.hasOwnProperty.call(memMap, path)) {\n return memMap[path]\n }\n return null\n },\n\n setItem(path: string, value: string) {\n memMap[path] = String(value)\n return memMap[path]\n },\n\n removeItem(path: string) {\n delete memMap[path]\n },\n\n getAllKeys() {\n return Object.keys(memMap)\n },\n\n clear() {\n for (const key in memMap) {\n if (Object.prototype.hasOwnProperty.call(memMap, key)) {\n delete memMap[key]\n }\n }\n },\n}\n\nconst BrowserSessionStorage: IStorage = {\n async: 0,\n getItem(path: string): string | null {\n return window.sessionStorage.getItem(path)\n },\n\n setItem(path: string, value: string) {\n window.sessionStorage.setItem(path, value)\n return value\n },\n\n removeItem(path: string) {\n window.sessionStorage.removeItem(path)\n },\n\n getAllKeys() {\n return Object.keys(window.sessionStorage)\n },\n\n clear() {\n window.sessionStorage.clear()\n },\n}\n\nconst LocalStorage: IStorage = {\n async: 0,\n getItem(path: string): string | null {\n return window.localStorage.getItem(path)\n },\n\n setItem(path: string, value: string) {\n window.localStorage.setItem(path, value)\n return value\n },\n\n removeItem(path: string) {\n window.localStorage.removeItem(path)\n },\n\n getAllKeys() {\n return Object.keys(window.localStorage)\n },\n\n clear() {\n window.localStorage.clear()\n },\n}\n\n// detect if we have localStorage available\ntry {\n if (typeof window !== 'undefined' && window.localStorage) {\n Config.setStorage(LocalStorage)\n } else {\n Config.setStorage(MemoryStorage)\n }\n} catch (e) {\n Config.setStorage(MemoryStorage)\n}\n\nexport const SessionStorage =\n typeof window !== 'undefined' && window.localStorage ? BrowserSessionStorage : MemoryStorage\n\nexport default Storage\n","import { Config } from './config'\nimport { RequestMethod } from './requests'\nimport Storage, { SessionStorage } from './storage'\n\nexport type AuthOptions = {\n name?: string\n clientSecret?: string\n refreshToken?: string\n scope?: string[]\n remember?: boolean\n sessionStorage?: Storage\n persistentStorage?: Storage\n}\n\ntype AccessToken = {\n access_token: string\n expires_in: number\n refresh_token?: string\n}\n\nexport class OAuth2 {\n clientId: string\n\n private clientSecret?: string\n private name?: string\n\n // OAuth token related\n private scope?: string[]\n private accessToken: string | undefined\n private refreshToken: string | undefined\n private anonymousRefreshToken: string | undefined\n\n // We keep expiredAt in milliseconds since the epoch\n private expiresAt: number | undefined\n\n // Persistence\n private _remember: boolean\n private restored = false\n\n constructor(clientId: string, options?: AuthOptions) {\n this.clientId = clientId\n this.clientSecret = options?.clientSecret\n this.refreshToken = options?.refreshToken\n this.anonymousRefreshToken = options?.refreshToken\n this.scope = options?.scope\n this._remember = options?.remember || false\n this.name = options?.name\n }\n\n private get sessionStorageKey(): string {\n return `nimbu-${this.clientId}${this.name != null ? `-${this.name}` : ''}-oauth2`\n }\n\n private get persistentStorageKey(): string {\n return `nimbu-${this.clientId}${this.name != null ? `-${this.name}` : ''}-refresh`\n }\n\n private get needsRefresh(): boolean {\n if (this.accessToken == null) {\n return true\n } else if (this.expiresAt == null) {\n return false\n } else {\n // Use 10s leeway (in milliseconds)\n return this.expiresAt - 10000 < Date.now()\n }\n }\n\n private async restore(): Promise<void> {\n if (!this.restored) {\n // Read refreshToken from persistentStorage\n const refreshTokenFromPersistentStorage = await Storage.getItem(this.persistentStorageKey)\n\n if (refreshTokenFromPersistentStorage != null) {\n // There was a refresh token in persistent storage -> use it + remember was true\n this.refreshToken = refreshTokenFromPersistentStorage\n this._remember = true\n }\n // Now read from the sessionStorage\n const json = SessionStorage.getItem(this.sessionStorageKey)\n\n if (json != null) {\n const { accessToken, expiresAt, refreshToken, scope } = JSON.parse(json)\n this.accessToken = accessToken\n this.expiresAt = expiresAt\n this.scope = scope ?? this.scope\n this.refreshToken = refreshTokenFromPersistentStorage ?? refreshToken ?? this.refreshToken\n }\n }\n this.restored = true\n }\n\n private async apply(token: AccessToken): Promise<void> {\n this.accessToken = token.access_token\n this.expiresAt = Date.now() + token.expires_in * 1000 // expires_in is in seconds\n\n let newRefreshToken = false\n if (token.refresh_token != null) {\n this.refreshToken = token.refresh_token\n newRefreshToken = true\n }\n\n SessionStorage.setItem(\n this.sessionStorageKey,\n JSON.stringify({\n accessToken: this.accessToken,\n expiresAt: this.expiresAt,\n refreshToken: this.refreshToken,\n scope: this.scope,\n })\n )\n if (this._remember && newRefreshToken && this.refreshToken != null) {\n await Storage.setItem(this.persistentStorageKey, this.refreshToken)\n }\n }\n\n async refresh(): Promise<string | undefined> {\n await this.restore()\n\n if (this.refreshToken == null) {\n throw new Error(`No refresh token available`)\n }\n\n const data: any = {\n client_id: this.clientId,\n refresh_token: this.refreshToken,\n grant_type: 'refresh_token',\n }\n\n if (this.clientSecret != null) {\n data.client_secret = this.clientSecret\n }\n\n if (this.scope != null) {\n data.scope = this.scope.join(' ')\n }\n\n const response = await Config.ajax(\n RequestMethod.POST,\n Config.endpoint + '/oauth2/tokens',\n data,\n {},\n {\n formPost: true,\n }\n )\n if (response.status === 200) {\n const token = response.body as AccessToken\n await this.apply(token)\n return this.accessToken\n } else {\n return undefined\n }\n }\n\n async getAccessToken(): Promise<string | undefined> {\n await this.restore()\n\n if (this.needsRefresh) {\n return this.refresh()\n } else {\n return this.accessToken\n }\n }\n\n async logIn(username: string, password: string, remember = false): Promise<boolean> {\n await this.restore()\n\n this._remember = remember\n\n const formData: any = {\n client_id: this.clientId,\n grant_type: 'password',\n username,\n password,\n }\n\n if (this.scope != null) {\n formData.scope = this.scope.join(' ')\n }\n\n const response = await Config.ajax(\n RequestMethod.POST,\n Config.endpoint + '/oauth2/tokens',\n formData,\n {},\n { formPost: true }\n )\n\n if (response.status === 200) {\n const token = response.body as AccessToken\n await this.apply(token)\n\n return true\n } else {\n return false\n }\n }\n\n async logOut(): Promise<void> {\n this.refreshToken = this.anonymousRefreshToken\n this.accessToken = undefined\n this.expiresAt = undefined\n\n await Promise.all([\n SessionStorage.removeItem(this.sessionStorageKey),\n Storage.removeItem(this.persistentStorageKey),\n ])\n }\n\n get remember(): boolean {\n return this._remember\n }\n}\n\nexport default OAuth2\n","export class NimbuSelectOption {\n id: string | null\n value: string | null\n\n constructor(id: string | null, value: string | null) {\n this.id = id\n this.value = value\n }\n\n toJSON() {\n if (this.id != null) {\n return this.id\n } else {\n return this.value\n }\n }\n}\n\nexport default NimbuSelectOption\n","import { find, map, union, without } from 'underscore'\nimport { NimbuObject, NimbuSelectOption } from '../internal'\n\nexport type NimbuSelectOptionListType = {\n __type: string\n ids: string[]\n values: string[]\n}\n\nexport class NimbuSelectOptionList {\n parent: NimbuObject\n key: string\n _options: NimbuSelectOption[]\n\n constructor(parent: NimbuObject, key: string, options?: NimbuSelectOption[]) {\n this.parent = parent\n this.key = key\n if (options != null) {\n this._options = options\n } else {\n this._options = []\n }\n }\n\n static decode = function (parent: any, key: any, value: NimbuSelectOptionListType) {\n if (value.__type !== 'MultiSelect') {\n throw \"Internal Error. Tried to decode a value that isn't a MultiSelect to SelectOptionList\"\n }\n const options = map(value.ids, (id, i) => new NimbuSelectOption(id, value.values[i]))\n return new NimbuSelectOptionList(parent, key, options)\n }\n\n /*\n * Makes sure that this select option list has the right parent and key.\n */\n _ensureParentAndKey(parent: any, key: any) {\n this.parent = this.parent || parent\n this.key = this.key || key\n if (this.parent !== parent) {\n throw 'Internal Error. SelectOptionList retrieved from two different Objects.'\n }\n if (this.key !== key) {\n throw 'Internal Error. SelectOptionList retrieved from two different keys.'\n }\n }\n\n list() {\n return this._options\n }\n\n values() {\n return map(this._options, (o: { value: any }) => o.value)\n }\n\n ids() {\n return map(this._options, (o: { id: any }) => o.id)\n }\n\n includes(option: { id: any; value: any }) {\n if (!(option instanceof NimbuSelectOption)) {\n throw 'You need to provide an instance of Nimbu.SelectOption'\n }\n const o = find(\n this._options,\n (o: { id: any; value: any }) =>\n (o.id != null && o.id === option.id) || (o.value != null && o.value === option.value)\n )\n return o != null\n }\n\n includesValue(value: any) {\n const o = find(this._options, (o: { value: any }) => o.value === value)\n return o != null\n }\n\n includesId(id: any) {\n const o = find(this._options, (o: { id: any }) => o.id === id)\n return o != null\n }\n\n add(option: NimbuSelectOption) {\n if (!(option instanceof NimbuSelectOption)) {\n throw 'You need to provide an instance of Nimbu.SelectOption'\n }\n if (!this.includes(option)) {\n this._options = union(this._options, [option])\n this.parent.set(this.key, this)\n }\n }\n\n addValue(value: any) {\n return this.add(new NimbuSelectOption(null, value))\n }\n\n addId(id: any) {\n return this.add(new NimbuSelectOption(id, null))\n }\n\n remove(option: NimbuSelectOption) {\n if (!(option instanceof NimbuSelectOption)) {\n throw 'You need to provide an instance of Nimbu.SelectOption'\n }\n const o = find(\n this._options,\n (o) => (o.id != null && o.id === option.id) || (o.value != null && o.value === option.value)\n )\n if (o != null) {\n this._options = without(this._options, o)\n this.parent.set(this.key, this)\n }\n }\n\n removeValue(value: string) {\n return this.remove(new NimbuSelectOption(null, value))\n }\n\n removeId(id: string) {\n return this.remove(new NimbuSelectOption(id, null))\n }\n\n toJSON() {\n return map(this._options, (o) => o.toJSON())\n }\n}\n\nexport default NimbuSelectOptionList\n","import { NimbuObject } from '../internal'\n\nexport function arrayContainsObject(array: Array<any>, object: NimbuObject): boolean {\n if (array.indexOf(object) > -1) {\n return true\n }\n for (let i = 0; i < array.length; i++) {\n const item = array[i]\n if (item instanceof NimbuObject && item.className === object.className && item._getId() === object._getId()) {\n return true\n }\n }\n return false\n}\n","import {\n NimbuACL,\n NimbuAtomic,\n NimbuFile,\n NimbuGallery,\n NimbuGalleryImage,\n NimbuObject,\n NimbuRelation,\n NimbuSelectOption,\n NimbuSelectOptionList,\n _arrayEach,\n _objectEach,\n parseDate,\n} from '../internal'\n\nimport { isArray, isObject, isString, map } from 'underscore'\n\n/*\nThe inverse function of Nimbu.encode.\nTODO: make decode not mutate value.\n*/\nexport const decode = function (key: string | number | null, value?: any) {\n let className: any\n if (isString(value)) {\n // check if the value is a date\n const dateValue = parseDate(value)\n if (dateValue != null) {\n return dateValue\n }\n }\n\n if (!isObject(value)) {\n return value\n }\n\n if (isArray(value)) {\n _arrayEach(value, (v, k) => {\n value[k] = decode(k, v)\n })\n return value\n }\n\n if (value instanceof NimbuObject || value instanceof NimbuAtomic) {\n return value\n }\n\n if (key === '_acl') {\n if (value instanceof NimbuACL) {\n return value\n }\n return new NimbuACL(value)\n }\n\n if (value.__type === 'File') {\n return new NimbuFile(value.filename, value as any)\n }\n\n if (value.__type === 'Select') {\n return new NimbuSelectOption(value.id, value.value)\n }\n\n if (value.__type === 'MultiSelect') {\n return NimbuSelectOptionList.decode(null, key, value as any)\n }\n\n if (value.__type === 'Reference') {\n const pointer = NimbuObject._create(value.className)\n pointer._finishFetch({ id: value.id })\n return pointer\n }\n\n if (value.__type === 'Object') {\n ;({ className } = value)\n delete value.__type\n delete value.className\n\n const object = NimbuObject._create(className)\n object._finishFetch(value)\n return object\n }\n\n // return parseDate(value.iso) if value.__type is \"Date\"\n // if value.__type is \"GeoPoint\"\n // return new Nimbu.GeoPoint(\n // latitude: value.latitude\n // longitude: value.longitude\n // )\n\n if (value.__type === 'Relation') {\n const values = map(value.objects, (v: any, k: any) => decode(k, v))\n const relation: NimbuRelation = new NimbuRelation(null, key as any, values)\n relation.targetClassName = value.className\n return relation\n }\n\n if (value.__type === 'Gallery') {\n const images = map(value.images, (img: any) => decode('image', img))\n const gallery: NimbuGallery = new NimbuGallery(null, key as any, images)\n return gallery\n }\n\n if (value.__type === 'GalleryImage') {\n value.file = decode('file', value.file)\n const gallery_image = new NimbuGalleryImage(value)\n return gallery_image\n }\n\n // if value.__type is \"File\"\n // file = new Nimbu.File(value.name)\n // file._url = value.url\n // return file\n _objectEach(value, (v: any, k: string | number) => (value[k] = decode(k, v)))\n\n return value\n}\n\nexport default decode\n","import {\n AttributeMap,\n NimbuACL,\n NimbuFile,\n NimbuGallery,\n NimbuGalleryImage,\n NimbuObject,\n NimbuRelation,\n NimbuSelectOption,\n NimbuSelectOptionList,\n _objectEach,\n} from '../internal'\n\nimport { include, isArray, isDate, isObject, isRegExp, map, times } from 'underscore'\n\n/**\n * Converts a value in a Nimbu Object into the appropriate representation.\n * This is the JS equivalent of Java's Nimbu.maybeReferenceAndEncode(Object)\n * if seenObjects is falsey. Otherwise any Nimbu.Objects not in\n * seenObjects will be fully embedded rather than encoded\n * as a pointer. This array will be used to prevent going into an infinite\n * loop because we have circular references. If seenObjects\n * is set, then none of the Nimbu Objects that are serialized can be dirty.\n */\n\nexport type EncodeOptions = {\n value: any\n seenObjects?: Array<any> | null\n disallowObjects?: boolean\n forcePointers?: boolean\n}\n\nexport const encode = ({ value, seenObjects, disallowObjects, forcePointers }: EncodeOptions): any => {\n // FIXME: improve types\n if (value instanceof NimbuObject) {\n if (disallowObjects) {\n throw 'Nimbu.Objects not allowed here'\n }\n\n if (forcePointers || !seenObjects || include(seenObjects, value) || !value._hasData) {\n return value._toReference()\n }\n\n throw 'Tried to save an object with a pointer to a new, unsaved object.'\n }\n\n if (\n value instanceof NimbuACL ||\n value instanceof NimbuRelation ||\n value instanceof NimbuFile ||\n value instanceof NimbuGallery ||\n value instanceof NimbuGalleryImage ||\n value instanceof NimbuSelectOption ||\n value instanceof NimbuSelectOptionList\n ) {\n return value.toJSON()\n }\n\n if (isDate(value)) {\n return value.toJSON()\n }\n\n // if value instanceof Nimbu.GeoPoint\n // return value.toJSON()\n\n if (isArray(value)) {\n return map(value, (x: any) => encode({ value: x, seenObjects, disallowObjects }))\n }\n\n if (isRegExp(value)) {\n return value.source\n }\n\n if (isObject(value)) {\n const output: AttributeMap = {}\n _objectEach(value, (v: any, k: string | number) => {\n output[k] = encode({ value: v, seenObjects, disallowObjects })\n })\n\n return output\n }\n return value\n}\n\nexport const encodeDigit = (number: number) => {\n if (number < 26) {\n return String.fromCharCode(65 + number)\n }\n if (number < 52) {\n return String.fromCharCode(97 + number - 26)\n }\n if (number < 62) {\n return String.fromCharCode(48 + number - 52)\n }\n if (number === 62) {\n return '+'\n }\n if (number === 63) {\n return '/'\n }\n throw 'Tried to encode large digit ' + number + ' in base64.'\n}\n\nexport const encodeBase64 = (array: any[]) => {\n const chunks: string[] = []\n chunks.length = Math.ceil(array.length / 3)\n times(chunks.length, function (i: number) {\n const b1 = array[i * 3]\n const b2 = array[i * 3 + 1] || 0\n const b3 = array[i * 3 + 2] || 0\n const has2 = i * 3 + 1 < array.length\n const has3 = i * 3 + 2 < array.length\n chunks[i] = [\n encodeDigit((b1 >> 2) & 0x3f),\n encodeDigit(((b1 << 4) & 0x30) | ((b2 >> 4) & 0x0f)),\n has2 ? encodeDigit(((b2 << 2) & 0x3c) | ((b3 >> 6) & 0x03)) : '=',\n has3 ? encodeDigit(b3 & 0x3f) : '=',\n ].join('')\n })\n return chunks.join('')\n}\n\nexport default encode\n","/* eslint-disable jest/no-export */\n/* eslint-disable jest/no-disabled-tests */\n/* eslint-disable jest/expect-expect */\n// => jest eslint plugin looks for usage of jest functions, so \"when\" is triggering this\n\nimport { isArray } from 'underscore'\n\n// Create Deferred Promise\nexport function resolvingPromise<T = any>() {\n let res: (val: T) => void\n let rej: (err: any) => void\n const promise = new Promise<T>((resolve, reject) => {\n res = resolve\n rej = reject\n })\n const ret: typeof promise & {\n resolve: (res: T) => void\n reject: (err: any) => void\n } = promise as any\n ret.resolve = res!\n ret.reject = rej!\n return ret\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function when(promises: Promise<any> | Promise<any>[], ...others: Promise<any>[]) {\n let objects: Promise<any>[]\n\n if (isArray(promises)) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n objects = promises\n } else {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n objects = [promises, ...others]\n }\n\n let total = objects.length\n let hadError = false\n const results: any[] = []\n const returnValue = isArray(promises) ? [results] : results\n const errors: any[] = []\n results.length = objects.length\n errors.length = objects.length\n\n if (total === 0) {\n return Promise.resolve(returnValue)\n }\n\n const promise = resolvingPromise()\n\n const resolveOne = function () {\n total--\n if (total <= 0) {\n if (hadError) {\n promise.reject(errors)\n } else {\n promise.resolve(returnValue)\n }\n }\n }\n\n const chain = function (object: Promise<any>, index: number) {\n if (object != null && typeof object.then === 'function') {\n object.then(\n function (result) {\n results[index] = result\n resolveOne()\n },\n function (error) {\n errors[index] = error\n hadError = true\n resolveOne()\n }\n )\n } else {\n results[index] = object\n resolveOne()\n }\n }\n for (let i = 0; i < objects.length; i++) {\n chain(objects[i], i)\n }\n return promise\n}\n\nexport function continueWhile(test: () => boolean, emitter: () => Promise<any>): Promise<void> {\n if (test()) {\n return emitter().then(() => {\n return continueWhile(test, emitter)\n })\n }\n return Promise.resolve()\n}\n","import { arrayContainsObject, NimbuObject } from '../internal'\n\nexport function unique<T>(arr: Array<T>): Array<T> {\n const uniques: T[] = []\n arr.forEach((value) => {\n if (value instanceof NimbuObject) {\n if (!arrayContainsObject(uniques, value)) {\n uniques.push(value)\n }\n } else {\n if (uniques.indexOf(value) < 0) {\n uniques.push(value)\n }\n }\n })\n return uniques\n}\n","import { resolvingPromise } from '../internal'\n\ntype Task = {\n task: () => Promise<void>\n _completion: ReturnType<typeof resolvingPromise<void>>\n}\n\nexport class TaskQueue {\n queue: Array<Task>\n\n constructor() {\n this.queue = []\n }\n\n enqueue(task: () => Promise<void>): Promise<void> {\n const taskComplete = resolvingPromise<void>()\n this.queue.push({\n task: task,\n _completion: taskComplete,\n })\n if (this.queue.length === 1) {\n task().then(\n () => {\n this._dequeue()\n taskComplete.resolve()\n },\n (error) => {\n this._dequeue()\n taskComplete.reject(error)\n }\n )\n }\n return taskComplete\n }\n\n _dequeue() {\n this.queue.shift()\n if (this.queue.length) {\n const next = this.queue[0]\n next.task().then(\n () => {\n this._dequeue()\n next._completion.resolve()\n },\n (error) => {\n this._dequeue()\n next._completion.reject(error)\n }\n )\n }\n }\n}\n\nexport default TaskQueue\n","// Internal file helping to solve circular dependencies\n\nexport const VERSION = '2.0.0.alpha.2'\n\nexport * from './utils/types'\n\nexport * from './sdk/object'\nexport * from './sdk/atomic'\nexport * from './sdk/acl'\nexport * from './sdk/api'\nexport * from './sdk/collection'\nexport * from './sdk/config'\nexport * from './sdk/coupon'\nexport * from './sdk/customer'\nexport * from './sdk/customer-sessions'\nexport * from './sdk/device'\nexport * from './sdk/errors'\nexport * from './sdk/file'\nexport * from './sdk/functions'\nexport * from './sdk/gallery'\nexport * from './sdk/gallery-image'\nexport * from './sdk/helpers'\nexport * from './sdk/order'\nexport * from './sdk/page'\nexport * from './sdk/product'\nexport * from './sdk/product-aggregate'\nexport * from './sdk/push'\nexport * from './sdk/query'\nexport * from './sdk/relation'\nexport * from './sdk/requests'\nexport * from './sdk/role'\nexport * from './sdk/oauth2'\nexport * from './sdk/select-option'\nexport * from './sdk/select-option-list'\nexport * from './sdk/storage'\nexport * from './sdk/state'\n\nexport * from './utils/array-contains-object'\nexport * from './utils/decode'\nexport * from './utils/encode'\nexport * from './utils/promise-utils'\nexport * from './utils/traverse'\nexport * from './utils/unique'\nexport * from './utils/task-queue'\n","/* eslint-disable @typescript-eslint/unbound-method */\nimport {\n NimbuACL,\n NimbuAPI,\n NimbuCloud,\n NimbuCollection,\n NimbuCoupon,\n NimbuCustomer,\n NimbuDevice,\n NimbuFile,\n NimbuGallery,\n NimbuGalleryImage,\n NimbuObject,\n NimbuOrder,\n NimbuPage,\n NimbuProduct,\n NimbuProductAggregate,\n NimbuPush,\n NimbuQuery,\n NimbuRelation,\n NimbuRole,\n NimbuSelectOption,\n NimbuSelectOptionList,\n NimbuError,\n enableChaos,\n getInstallationId,\n initialize,\n useACL,\n useSSO,\n VERSION,\n Config,\n IAjax,\n IStorage,\n ChannelConfig,\n Select,\n MultiSelect,\n} from './internal'\n\nconst Nimbu = {\n VERSION,\n ACL: NimbuACL,\n API: {\n // weird hack to get the types correctly exported\n get: NimbuAPI.get,\n post: NimbuAPI.post,\n put: NimbuAPI.put,\n patch: NimbuAPI.patch,\n delete: NimbuAPI.delete,\n request: NimbuAPI.request,\n },\n // Atomic: NimbuAtomic,\n Cloud: {\n run: NimbuCloud.run,\n },\n Config,\n Collection: NimbuCollection,\n Coupon: NimbuCoupon,\n Customer: NimbuCustomer,\n Device: NimbuDevice,\n enableChaos,\n Error: NimbuError,\n File: NimbuFile,\n Gallery: NimbuGallery,\n GalleryImage: NimbuGalleryImage,\n getInstallationId,\n initialize,\n Object: NimbuObject,\n Order: NimbuOrder,\n Page: NimbuPage,\n Product: NimbuProduct,\n ProductAggregate: NimbuProductAggregate,\n Push: NimbuPush,\n Query: NimbuQuery,\n Relation: NimbuRelation,\n Role: NimbuRole,\n SelectOption: NimbuSelectOption,\n SelectOptionList: NimbuSelectOptionList,\n setAjax: (fn: IAjax) => Config.setAjax(fn),\n setStorage: (storage: IStorage) => Config.setStorage(storage),\n useACL,\n useSSO,\n}\n\nexport {\n ChannelConfig,\n Select,\n MultiSelect,\n NimbuACL,\n NimbuAPI,\n NimbuCloud,\n NimbuCollection,\n NimbuCoupon,\n NimbuCustomer,\n NimbuDevice,\n NimbuFile,\n NimbuGallery,\n NimbuGalleryImage,\n NimbuObject,\n NimbuOrder,\n NimbuPage,\n NimbuProduct,\n NimbuProductAggregate,\n NimbuPush,\n NimbuQuery,\n NimbuRelation,\n NimbuRole,\n NimbuSelectOption,\n NimbuSelectOptionList,\n NimbuError,\n}\n\nexport default Nimbu\n"],"names":["_defaultGetOptions","transformedKeys","objectId","created_at","updated_at","session_token","inverseTransformedKeys","key","isValidDate","d","Date","isNaN","getTime","classMap","objectCount","unsavedChildren","model","unsaved","attributes","attr","NimbuObject","id","push","_proto","prototype","initialize","className","options","cid","collection","changed","_objCount","_operations","validationError","idAttribute","_hasData","_refreshingCache","_changing","_saving","apply","arguments","uniqueId","toSet","_className","undefined","Error","set","_getId","get","value","NimbuSelectOption","_value","NimbuSelectOptionList","values","_ensureParentAndKey","escape","isString","has","_options2","changes","newAtomics","readonly","constructor","readOnlyAttributes","concat","k","_options","indexOf","unset","AtomicUnset","NimbuAtomic","__op","atomic","atomicFromJSON","NimbuACL","AtomicSet","NimbuRelation","relation","targetClassName","currentAttributes","newValues","AtomicRelation","applyTo","validate","validation","error","stateManager","Config","getStateManager","stateIdentifier","_getStateIdentifier","pendingAtomics","getPendingAtomics","last","length","nextAtomic","mergeWith","setPendingAtomic","increment","amount","AtomicIncrement","clear","attrs","extend","_toReference","__type","gallery","NimbuGallery","file","NimbuFile","hasChanged","isEmpty","fetch","_fetch","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_yield$_request","body","status","xhr","wrap","_callee$","_context","prev","next","_request","method","route","useACL","forceChannel","include","sent","_finishFetch","parse","abrupt","stop","_x","fetchWithInclude","_fetchWithInclude","_callee2","keys","_context2","_x2","_x3","save","arg1","arg2","arg3","_this","Promise","reject","saveOptions","Object","hasOwnProperty","call","sessionToken","cascadeSave","_save","then","destroy","_this2","request","wait","response","output","clone","each","parseDate","_extends","isNew","getACL","setACL","acl","isValid","_validate","_acl","NimbuError","OTHER_CAUSE","correct","_objectEach","unused_value","test","INVALID_KEY_NAME","_getPendingAtomics","_clearPendingAtomics","keysToClear","pending","latest","forEach","_getDirtyObjectAttributes","objectCache","getObjectCache","dirty","json","encode","disallowObjects","forcePointers","stringified","JSON","stringify","e","_getSaveJSON","dirtyObjects","isDotNotation","i","field","includes","fieldName","split","toJSON","seen","seenEntry","_inverseTransformedKe","attrValue","targetKey","seenObjects","_inverseTransformedKe2","_toFullJSON","_getSaveParams","data","locale","progress","_finishSave","serverData","state","popPendingState","_transformedKeys$attr","val","decode","getPrototypeOf","currentObject","isObject","createdAt","updatedAt","_migrateId","commitServerChanges","_onSaveError","mergeFirstPendingState","serverId","oldState","removeState","initializeState","decoded","_transformedKeys$attr2","decodedTargetValue","_save2","_callee4","target","saved","params","_yield$_request2","_callee4$","_context4","Array","isArray","continueWhile","_callee3","objectToSave","_callee3$","_context3","shift","t0","t1","_x4","_x5","createWithoutData","obj","fromJSON","override","object","otherAttributes","protoProps","classProps","parentProto","__super__","NimbuObjectSubclass","_initializers","_iterator","_createForOfIteratorHelperLoose","_step","done","initializer","name","create","enumerable","writable","configurable","prop","defineProperty","saveAll","list","registerSubclass","TypeError","unregisterSubclass","_createClass","freeze","estimateAttributes","shortId","_getSubclass","ObjectClass","_create","setDefaultGetOptions","AtomicAdd","objects","AtomicAddUnique","AtomicRemove","toAdd","toRemove","ops","previous","_NimbuAtomic2","_inheritsLoose","_proto2","_NimbuAtomic3","_proto3","_NimbuAtomic4","_amount","_proto4","_NimbuAtomic5","_this3","_proto5","_NimbuAtomic6","_this4","unique","_proto6","v","arrayContainsObject","_NimbuAtomic7","_this5","_proto7","removed","index","splice","j","uniques","_NimbuAtomic8","adds","removes","_this6","_targetClassName","relationsToAdd","relationsToRemove","map","o","_extractId","_assertThisInitialized","_proto8","parent","newAdd","r","newRemove","newRelation","_this7","idToPointer","ret","references","AtomicRemoveFile","_NimbuAtomic9","_proto9","remove","AtomicGallery","_NimbuAtomic10","updates","_this8","_imagesToAdd","_idsToAdd","_idsToRemove","_imagesToRemove","_idsToUpdate","img","compact","_proto10","_additions","image","_removals","_updates","pairs","pair","_images","images","newUpdates","union","difference","_estimate","oldValue","_this9","oldImages","NimbuGalleryImage","contains","PUBLIC_KEY","AUTHENTICATED_KEY","permissionsById","NimbuCustomer","allowRead","allowUpdate","allowDelete","isFunction","accessList","customerId","allowed","permission","isBoolean","_setPermission","action","NimbuRole","getName","permissions","_getPermission","getReadAccess","getUpdateAccess","getDeleteAccess","setPublicReadAccess","getPublicReadAccess","setPublicUpdateAccess","getPublicUpdateAccess","setPublicDeleteAccess","getPublicDeleteAccess","setLoggedInReadAccess","getLoggedInReadAccess","setLoggedInUpdateAccess","getLoggedInUpdateAccess","setLoggedInDeleteAccess","getLoggedInDeleteAccess","getRoleReadAccess","role","getRoleUpdateAccess","getRoleDeleteAccess","setRoleReadAccess","setRoleUpdateAccess","setRoleDeleteAccess","GET","path","POST","PUT","PATCH","DELETE","charAt","substring","requestData","NimbuAPI","post","put","patch","NimbuCollection","models","comparator","query","_byCid","_byId","_reset","reset","silent","add","cids","ids","slice","_models","_prepareModel","_models2","l","getByCid","_removeReference","modelId","at","pluck","_arrayEach","count","NimbuQuery","finished","find","results","hasNext","currentPage","page","resp","defaultState","tasks","TaskQueue","existed","setServerData","pushPendingState","first","merged","estimateAttribute","fields","nestedSet","objectState","getState","classData","initial","ObjectStateMutations","getServerData","enqueueTask","task","enqueue","clearAllState","duplicateState","source","dest","requireMethods","methods","controller","func","SSO_STORAGE_PREFIX","isOAuth2AccessToken","accessToken","_ref","endpoint","installationId","OAuth2","clientId","refreshToken","useSSO","initInstallationId","initCurrent","sso","getStoragePath","_Config$accessToken","initialized","_","prefix","getInstallationId","hexOctet","Math","floor","random","toString","_ref2","existingInstallationId","newInstallationId","_callee2$","Storage","getItem","setItem","config","isNode","process","versions","node","version","VERSION","StateManager","allowNull","oauth2Client","OAuth2Manager","useOauth2","_config$OAuth2Manager","getAccessToken","ajax","setAjax","fn","setStateManager","manager","setStorage","storage","getStorage","setSessionManager","typedConfig","getSessionManager","NimbuCoupon","_NimbuObject","_logOutWithAll","authData","signUp","username","password","_len","args","_key","_args","isCurrent","updateOnDisk","_len2","_key2","_args2","_len3","_key3","_args3","logIn","_logIn","email","customer","existingCustomerObject","currentCustomer","setEmail","setPassword","getAutologinToken","token","authentication_token","validateSession","_callee5","_callee5$","_context5","console","logOut","_updateOnDisk","_callee6","_callee6$","_context6","CURRENT_CUSTOMER_KEY","user","_logIn2","_callee7","result","_callee7$","_context7","setCurrent","_logOut","_callee8","_callee8$","_context8","removeItem","requestPasswordReset","validateCurrent","_validateCurrent","_callee9","_callee9$","_context9","current","currentCustomerMatchesDisk","_initCurrent","_callee10","customerFromStorage","customerJSON","_callee10$","_context10","resolve","firstName","lastName","OAuth2SessionManager","_options$existingCust","success","remember","BasicSessionManager","log","_x6","_logOut2","_validate2","sso_id","metaTags","sso_data","sso_url","csrfToken","_yield$_request3","sharedSSOSecret","headers","_yield$Config$ajax","customerBody","serverAttrs","document","window","getElementsByTagName","getAttribute","AES","decrypt","decodeURIComponent","enc","Utf8","shared_secret","_clientVersion","_accessToken","_installationId","_csrfToken","DefaultSessionManager","NimbuDevice","_Error","code","message","errors","_wrapNativeSuper","INTERNAL_SERVER_ERROR","CONNECTION_FAILED","OBJECT_NOT_FOUND","INVALID_QUERY","INVALID_CLASS_NAME","MISSING_OBJECT_ID","INVALID_POINTER","INVALID_JSON","COMMAND_UNAVAILABLE","NOT_INITIALIZED","INCORRECT_TYPE","INVALID_CHANNEL_NAME","PUSH_MISCONFIGURED","OBJECT_TOO_LARGE","OPERATION_FORBIDDEN","CACHE_MISS","INVALID_NESTED_KEY","INVALID_FILE_NAME","INVALID_ACL","TIMEOUT","INVALID_EMAIL_ADDRESS","MISSING_CONTENT_TYPE","MISSING_CONTENT_LENGTH","INVALID_CONTENT_LENGTH","FILE_TOO_LARGE","FILE_SAVE_ERROR","FILE_DELETE_ERROR","DUPLICATE_VALUE","INVALID_ROLE_NAME","EXCEEDED_QUOTA","SCRIPT_FAILED","VALIDATION_ERROR","INVALID_IMAGE_DATA","UNSAVED_FILE_ERROR","INVALID_PUSH_TIME_ERROR","USERNAME_MISSING","PASSWORD_MISSING","USERNAME_TAKEN","EMAIL_TAKEN","EMAIL_MISSING","EMAIL_NOT_FOUND","SESSION_MISSING","MUST_CREATE_USER_THROUGH_SIGNUP","ACCOUNT_ALREADY_LINKED","LINKED_ID_MISSING","INVALID_LINKED_SESSION","UNSUPPORTED_SERVICE","AGGREGATE_ERROR","isNimbuFileFromAPI","url","isPrivateNimbuFile","isBase64Data","base64","filename","width","height","content_type","checksum","size","permanent_url","permanent_relative_url","permanent_backend_url","_data","regexp","matches","exec","encodeBase64","attachment","NimbuCloud","run","galleryMatches","blankAllowed","validImage","requiredGallery","blankGalleryAllowed","validImages","all","_setGallery","_this$parent","change","_this$parent2","_updateImage","_this$parent3","caption","position","callback","iso8601","_Number","RegExp","match","year","Number","month","day","hour","minute","second","milli","UTC","_toQueryString","parts","encodeURIComponent","join","NimbuOrder","_add","product","quantity","extras","_remove","item","getItems","NimbuPage","_NimbuObject3","slug","published","homepage","fullpath","template","title","public_url","parent_path","items","idOrPath","equalTo","replace","NimbuProduct","getVariants","hasVariants","getSubProducts","addSubProduct","variant","NimbuProductAggregate","removeSubProduct","aggregate","hasId","getProductId","_parts$length","_parts","getVariantId","_parts$length2","_parts2","getProduct","_val","NimbuPush","send","where","toQueryString","objectClass","pageCount","_where","_extraOptions","_limit","_skip","_next","_prev","_last","_perPage","_resolve","_only","_sort","objectClz","or","queries","q","isNull","_orQuery","_get","errorObject","only","limit","per_page","skip","sort","_this$_where","_find","link","_regexp","_result","_regexp2","_result2","arrayBody","getResponseHeader","parseInt","findAll","_findAll","eachBatch","batchSize","conditionMap","cond","ascending","previousResults","_yield$Promise$all","greaterThan","hasPrevious","_count","_body$count","findDeleted","_findDeleted","deleted_at","_first","_x7","n","per","isUndefined","doesNotExist","_addCondition","condition","notEqualTo","lessThan","lessThanOrEqualTo","greaterThanOrEqualTo","containedIn","notContainedIn","containsAll","exists","regex","modifiers","ignoreCase","multiline","queryJSON","objectValue","_quote","s","startsWith","endsWith","search","geoIntersects","geometry","geoWithin","near","maxDistance","minDistance","point","nearCoordinates","lng","lat","type","coordinates","addAscending","descending","addDescending","_len4","_key4","includeAll","_len5","_key5","callbacksDone","_objects","useChaos","chaosThreshold","RequestMethod","XHR","XMLHttpRequest","_ref$method","dataObject","queryString","classRoute","_sessionToken","responseText","formPost","urlEncodedDataPairs","handled","onreadystatechange","readyState","open","setRequestHeader","progressHandler","handleProgress","event","lengthComputable","loaded","total","onprogress","upload","onabort","toUpperCase","enableChaos","percentage","setName","getCustomers","getRoles","getChildren","getParents","newName","async","getItemAsync","setItemAsync","removeItemAsync","getAllKeys","getAllKeysAsync","memMap","MemoryStorage","String","BrowserSessionStorage","sessionStorage","LocalStorage","localStorage","SessionStorage","clientSecret","scope","anonymousRefreshToken","expiresAt","_remember","restored","restore","_restore","refreshTokenFromPersistentStorage","_JSON$parse","persistentStorageKey","sessionStorageKey","_apply","newRefreshToken","access_token","now","expires_in","refresh_token","refresh","_refresh","client_id","grant_type","client_secret","_getAccessToken","needsRefresh","formData","option","includesValue","includesId","addValue","addId","without","removeValue","removeId","array","dateValue","pointer","gallery_image","isDate","x","isRegExp","encodeDigit","number","fromCharCode","chunks","ceil","times","b1","b2","b3","has2","has3","resolvingPromise","res","rej","promise","emitter","arr","queue","taskComplete","_completion","_dequeue","Nimbu","ACL","API","Cloud","Collection","Coupon","Customer","Device","File","Gallery","GalleryImage","Order","Page","Product","ProductAggregate","Push","Query","Relation","Role","SelectOption","SelectOptionList"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nimbu-js-sdk.cjs.development.js","sources":["../src/sdk/object.ts","../src/sdk/atomic.ts","../src/sdk/acl.ts","../src/sdk/api.ts","../src/sdk/collection.ts","../src/sdk/state-mutations.ts","../src/sdk/state.ts","../src/sdk/config.ts","../src/sdk/coupon.ts","../src/sdk/customer.ts","../src/sdk/customer-sessions.ts","../src/sdk/device.ts","../src/sdk/errors.ts","../src/sdk/file.ts","../src/sdk/functions.ts","../src/sdk/gallery.ts","../src/sdk/gallery-image.ts","../src/sdk/helpers.ts","../src/sdk/order.ts","../src/sdk/page.ts","../src/sdk/product.ts","../src/sdk/product-aggregate.ts","../src/sdk/push.ts","../src/sdk/query.ts","../src/sdk/relation.ts","../src/sdk/requests.ts","../src/sdk/role.ts","../src/sdk/storage.ts","../src/sdk/oauth2.ts","../src/sdk/select-option.ts","../src/sdk/select-option-list.ts","../src/utils/array-contains-object.ts","../src/utils/decode.ts","../src/utils/encode.ts","../src/utils/promise-utils.ts","../src/utils/unique.ts","../src/utils/task-queue.ts","../src/internal.ts","../src/index.ts"],"sourcesContent":["import { clone, each, escape, extend, has, isEmpty, isObject, isString, uniqueId } from 'underscore'\n\nimport {\n AtomicIncrement,\n AtomicRelation,\n AtomicSet,\n AtomicUnset,\n AtomicsMap,\n AttributeMap,\n ChannelConfig,\n Config,\n IOptions,\n NimbuACL,\n NimbuAtomic,\n NimbuCollection,\n NimbuError,\n NimbuFile,\n NimbuGallery,\n NimbuRelation,\n NimbuSelectOption,\n NimbuSelectOptionList,\n NimbuValue,\n RequestOptions,\n _objectEach,\n _request,\n atomicFromJSON,\n continueWhile,\n decode,\n encode,\n parseDate,\n} from '../internal'\n\nlet _defaultGetOptions = {}\n\nconst transformedKeys: AttributeMap = {\n objectId: 'id',\n created_at: 'createdAt',\n updated_at: 'updatedAt',\n session_token: 'sessionToken',\n}\n// go from value to key of transformedKeys\nconst inverseTransformedKeys: AttributeMap = {}\nfor (const key in transformedKeys) {\n inverseTransformedKeys[transformedKeys[key]] = key\n}\n\nconst isValidDate = function (d: any): d is Date {\n return d instanceof Date && !isNaN(d.getTime())\n}\n\nexport type Reference = {\n __type: 'Reference'\n className: string\n id?: string\n}\n\nexport type ISetOptions = {\n unset?: boolean\n validate?: boolean\n error?: <T extends ChannelConfig = ChannelConfig>(model: NimbuObject<T>, error: NimbuError) => void\n}\n\nexport type IGetOptions = {\n options?: boolean\n}\n\n// Set up a map of className to class so that we can create new instances of\n// Nimbu Objects from JSON automatically.\nconst classMap: { [className: string]: any } = {}\n\n// Global counter for generating unique Ids for non-single-instance objects\nlet objectCount = 0\n\nconst unsavedChildren = function <T extends ChannelConfig>(model: NimbuObject<T>) {\n const unsaved: NimbuObject<T>[] = []\n const attributes = model.attributes as any\n for (const attr in attributes) {\n if (attributes[attr] instanceof NimbuObject) {\n if (!attributes[attr].id) {\n unsaved.push(attributes[attr])\n }\n }\n }\n return unsaved\n}\n\nexport type ICommonFields = {\n id: string\n createdAt: Date\n updatedAt: Date\n short_id: string\n title_field_value: string\n _acl: NimbuACL\n _destroy: boolean\n _owner: string | null | undefined\n slug: string\n}\n\n// type NimbuObjectValues<T extends ChannelConfig> = {\n// [Property in keyof T | keyof ICommonFields]: Property extends keyof T\n// ? T[Property]\n// : Property extends keyof ICommonFields\n// ? ICommonFields[Property]\n// : never\n// }\n\n// get types where the value is a NimbuRelation\ntype RelationalObjectValues<T extends ChannelConfig> = {\n [Property in keyof T]?: T[Property] extends NimbuRelation ? T[Property] : never\n}\n\ntype GalleryObjectValues<T extends ChannelConfig> = {\n [Property in keyof T]?: T[Property] extends NimbuGallery ? T[Property] : never\n}\n\ntype FileObjectValues<T extends ChannelConfig> = {\n [Property in keyof T]?: T[Property] extends NimbuFile ? T[Property] : never\n}\n\n// Nimbu.Object\n// --------------\n\n// Nimbu **Nimbu.Objects** are the basic data object in the framework --\n// frequently representing a row in a table in a database on your server.\n// A discrete chunk of data and a bunch of useful, related methods for\n// performing computations and transformations on that data.\n\n// Create a new model with the specified attributes. A client id (`cid`)\n// is automatically generated and assigned for you.\nexport class NimbuObject<U extends ChannelConfig = Record<string, any>> {\n /**\n * The ID of this object, unique within its class.\n *\n * @property {string} id\n */\n id?: string | undefined\n cid: string\n className: string\n collection?: NimbuCollection\n static className: string\n\n // A hash of attributes whose current and previous value differ.\n changed: U = {} as U\n\n _objCount: number\n\n // A hash of atomic operations to be performed on the object.\n _operations: AtomicsMap = {}\n\n // The value returned during the last failed validation.\n validationError: NimbuError | null = null\n\n // The default name for the JSON `id` attribute is `\"id\"`. MongoDB and\n // CouchDB users may want to set this to `\"_id\"`.\n idAttribute = 'id'\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize() {}\n\n _hasData = true\n _refreshingCache = false\n _changing = false\n _saving = 0\n\n constructor(\n className?: string | { className: string; [attr: string]: any },\n attributes?: Partial<U>,\n options: { ignoreValidation?: boolean; collection?: NimbuCollection } = {}\n ) {\n // Enable legacy initializers\n if (typeof this.initialize === 'function') {\n // eslint-disable-next-line prefer-spread, prefer-rest-params\n this.initialize.apply(this, arguments as any)\n }\n\n this.cid = uniqueId('c')\n this.changed = {} as U\n\n this._hasData = true\n\n let toSet: AttributeMap | null = null\n this._objCount = objectCount++\n\n let _className = undefined\n\n if (typeof className === 'string') {\n _className = className\n if (attributes && typeof attributes === 'object') {\n toSet = attributes\n }\n } else if (className && typeof className === 'object') {\n _className = className.className\n toSet = {}\n for (const attr in className) {\n if (attr !== 'className') {\n toSet[attr] = className[attr]\n }\n }\n if (attributes && typeof attributes === 'object') {\n options = attributes as any\n }\n }\n\n if (!_className) {\n throw new Error('A Nimbu.Object must have a className')\n } else {\n this.className = _className\n }\n\n if (toSet && !this.set(toSet as Partial<U>)) {\n throw new Error(\"Can't create an invalid Nimbu Object\")\n }\n\n if (options.collection) {\n this.collection = options.collection\n }\n // if (options.parse) {\n // attrs = this.parse(attrs, options) || {};\n // }\n // attrs = _.defaults({}, attrs, _.result(this, 'defaults'));\n }\n\n get attributes(): U & ICommonFields {\n const stateManager = Config.getStateManager()\n return Object.freeze(stateManager.estimateAttributes(this._getStateIdentifier())) as U & ICommonFields\n }\n\n get createdAt() {\n return this.get('createdAt')\n }\n\n get updatedAt() {\n const value = this.get('updatedAt')\n return value\n }\n\n get shortId() {\n return this.get('short_id')\n }\n\n get created_at() {\n return this.createdAt\n }\n\n get updated_at() {\n return this.updatedAt\n }\n\n get short_id() {\n return this.shortId\n }\n\n /**\n * Returns a local or server Id used uniquely identify this object\n *\n * @returns {string}\n */\n _getId(): string {\n if (typeof this.id === 'string') {\n return this.id\n } else {\n return this.cid\n }\n }\n\n /*\n Get the value of an attribute.\n\n Options:\n - options: if truthy, SelectOption and SelectOptionList will be used for single_select and multi_select fields\n */\n get<K extends keyof ICommonFields | keyof U>(attr: K, options?: IGetOptions) {\n options = options || _defaultGetOptions\n let value = (this.attributes as any)[attr]\n\n if (value instanceof NimbuSelectOption && !options.options) {\n ;({ value } = value)\n } else if (value instanceof NimbuSelectOptionList && !options.options) {\n value = value.values()\n }\n\n if (value != null && value._ensureParentAndKey != null && options.options) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n value._ensureParentAndKey(this, attr)\n }\n\n return value as K extends keyof ICommonFields ? ICommonFields[K] : U[K]\n }\n\n // Get the HTML-escaped value of an attribute.\n escape<K extends keyof ICommonFields | keyof U>(attr: K) {\n const value = this.get(attr)\n return isString(value) ? escape(value) : undefined\n }\n\n // Returns `true` if the attribute contains a value that is not null\n // or undefined.\n has<K extends keyof ICommonFields | keyof U>(attr: K) {\n return this.get(attr) != null\n }\n\n // Set a hash of model attributes on the object, firing `\"change\"`. This is\n // the core primitive operation of a model, updating the data and notifying\n // anyone who needs to know about the change in state. The heart of the beast.\n set<K extends keyof ICommonFields | keyof U>(\n key: K | (Partial<U> & Partial<ICommonFields>),\n value?: (K extends keyof ICommonFields ? ICommonFields[K] : U[K]) | ISetOptions | NimbuAtomic | null,\n options?: ISetOptions\n ) {\n let changes: AttributeMap = {}\n const newAtomics: AtomicsMap = {}\n if (key && typeof key === 'object') {\n changes = key\n options = value as ISetOptions\n } else if (typeof key === 'string') {\n changes[key] = value\n } else {\n return false\n }\n\n /** Readonly attributes of the object class */\n let readonly: string[] = []\n if (typeof (this.constructor as any).readOnlyAttributes === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n readonly = readonly.concat((this.constructor as any).readOnlyAttributes())\n }\n for (const k in changes) {\n if (k === 'createdAt' || k === 'updatedAt' || k === 'created_at' || k === 'updated_at') {\n // This property is read-only, but for legacy reasons we silently\n // ignore it\n continue\n }\n if (readonly.indexOf(k) > -1) {\n throw new Error('Cannot modify readonly attribute: ' + k)\n }\n if (options?.unset) {\n newAtomics[k] = new AtomicUnset()\n } else if (changes[k] instanceof NimbuAtomic) {\n newAtomics[k] = changes[k]\n } else if (changes[k] && typeof changes[k] === 'object' && typeof changes[k].__op === 'string') {\n const atomic = atomicFromJSON(changes[k])\n if (atomic != null) newAtomics[k] = atomic\n } else if (k === 'objectId' || k === 'id') {\n if (typeof changes[k] === 'string') {\n this.id = changes[k]\n }\n } else if (k === '_acl' && typeof changes[k] === 'object' && !(changes[k] instanceof NimbuACL)) {\n newAtomics[k] = new AtomicSet(new NimbuACL(changes[k]))\n } else if (changes[k] instanceof NimbuRelation) {\n const relation = new NimbuRelation(this, k)\n relation.targetClassName = changes[k].targetClassName\n newAtomics[k] = new AtomicSet(relation)\n } else {\n newAtomics[k] = new AtomicSet(changes[k])\n }\n }\n\n const currentAttributes = this.attributes\n\n // Calculate new values\n const newValues: AttributeMap = {}\n for (const attr in newAtomics) {\n if (newAtomics[attr] instanceof AtomicRelation) {\n newValues[attr] = newAtomics[attr].applyTo(currentAttributes[attr], this, attr)\n } else if (!(newAtomics[attr] instanceof AtomicUnset)) {\n newValues[attr] = newAtomics[attr].applyTo(currentAttributes[attr])\n }\n }\n\n // Validate changes\n if (options?.validate) {\n const validation = this.validate(newValues)\n if (validation) {\n if (typeof options.error === 'function') {\n options.error(this, validation)\n }\n return false\n }\n }\n\n // Consolidate Atomics\n const stateManager = Config.getStateManager()\n const stateIdentifier = this._getStateIdentifier()\n const pendingAtomics = stateManager.getPendingAtomics(stateIdentifier)\n const last = pendingAtomics.length - 1\n for (const attr in newAtomics) {\n const nextAtomic = newAtomics[attr].mergeWith(pendingAtomics[last][attr])\n stateManager.setPendingAtomic(stateIdentifier, attr, nextAtomic)\n }\n\n return this\n }\n\n /*\n Remove an attribute from the model, firing <code>\"change\"</code> unless\n you choose to silence it. This is a noop if the attribute doesn't\n exist.\n */\n unset<K extends keyof ICommonFields | keyof U>(attr: K, options: { unset?: any } = {}) {\n options.unset = true\n return this.set(attr, null, options)\n }\n\n /*\n Atomically increments the value of the given attribute the next time the\n object is saved. If no amount is specified, 1 is used by default.\n\n @param attr {String} The key.\n @param amount {Number} The amount to increment by.\n */\n increment<K extends keyof ICommonFields | keyof U>(attr: K, amount?: number) {\n if (amount == null) {\n amount = 1\n }\n this.set(attr, new AtomicIncrement(amount))\n return this\n }\n\n // Clear all attributes on the model, firing `\"change\"`.\n clear(options: any) {\n const attrs: AttributeMap = {}\n for (const key in this.attributes) {\n attrs[key] = undefined\n }\n this.set(attrs as any, extend({}, options, { unset: true }))\n return this\n }\n\n /**\n * Returns a unique identifier used to pull data from the State Controller.\n *\n * @returns {Nimbu.Object|object}\n */\n _getStateIdentifier(): NimbuObject | { id: string; className: string } {\n let id = this.id\n if (!id) {\n id = this.cid\n }\n return {\n id: id,\n className: this.className,\n }\n }\n\n /*\n Gets a Reference referencing this Object.\n */\n _toReference(): Reference {\n if (!this.id) {\n throw new Error(\"Can't serialize an unsaved Nimbu.Object\")\n }\n return {\n __type: 'Reference',\n className: this.className,\n id: this.id,\n }\n }\n\n /*\n * Gets a relation on the given class for the attribute.\n * @param String attr The attribute to get the relation for.\n */\n relation<K extends keyof RelationalObjectValues<U> & string>(attr: K): RelationalObjectValues<U>[K] {\n const value = this.get(attr) as any\n if (value) {\n if (!(value instanceof NimbuRelation)) {\n throw 'Called relation() on non-relation field ' + attr\n }\n value._ensureParentAndKey(this, attr)\n return value as RelationalObjectValues<U>[K]\n } else {\n return new NimbuRelation(this, attr) as unknown as RelationalObjectValues<U>[K] // FIXME: this feels hacked\n }\n }\n\n /*\n * Gets a gallery on the given class for the attribute.\n * @param String attr The attribute to get the gallery for.\n */\n gallery<K extends keyof GalleryObjectValues<U> & string>(attr: K): GalleryObjectValues<U>[K] {\n const value = this.get(attr) as any\n if (value) {\n if (!(value instanceof NimbuGallery)) {\n throw 'Called gallery() on a non-gallery field ' + attr\n }\n value._ensureParentAndKey(this as any, attr)\n return value as GalleryObjectValues<U>[K]\n } else {\n return new NimbuGallery(this, attr) as unknown as GalleryObjectValues<U>[K]\n }\n }\n\n file<K extends keyof FileObjectValues<U> & string>(attr: K): FileObjectValues<U>[K] {\n const value = this.get(attr) as any\n if (value) {\n if (!(value instanceof NimbuFile)) {\n throw 'Called file() on a non-file field' + attr\n }\n value._ensureParentAndKey(this as any, attr)\n return value as FileObjectValues<U>[K]\n } else {\n return undefined\n }\n }\n\n // Determine if the model has changed since the last `\"change\"` event.\n // If you specify an attribute name, determine if that attribute has changed.\n hasChanged(attr: any) {\n if (attr == null) {\n return !isEmpty(this.changed)\n }\n return has(this.changed, attr)\n }\n\n /**\n * Fetch the model from the server. If the server's representation of the\n * model differs from its current attributes, they will be overriden.\n *\n * @param {object} options\n * Valid options are:<ul>\n * <li>useACL: In Cloud Code and Node with Master Key only, to\n * force ACL to be respected (default is `false`).\n * <li>forceChannel: in case your channel is called 'products' or 'orders', this forces to fetch\n * items from the channel instead of i.e. the Products or Orders API.\n * <li>include: The name(s) of the key(s) to include. Can be a string or an array of strings\n * </ul>\n * @returns {Promise<Nimbu.Object>} A promise that is fulfilled when the fetch completes.\n */\n async fetch(options?: Pick<RequestOptions, 'useACL' | 'forceChannel' | 'include'>): Promise<this & { id: string }> {\n options = options || {}\n const { body, status, xhr } = await _request({\n method: 'GET',\n route: 'objects',\n className: this.className,\n id: this.id,\n useACL: options.useACL,\n forceChannel: options.forceChannel,\n include: options.include,\n })\n\n this._finishFetch(this.parse(body, status, xhr))\n return this as this & { id: string }\n }\n\n /**\n * Fetch the model from the server. If the server's representation of the\n * model differs from its current attributes, they will be overriden.\n *\n * Includes nested Nimbu.Objects for the provided key. You can use dot\n * notation to specify which fields in the included object are also fetched.\n *\n * @param {string | Array<string | Array<string>>} keys The name(s) of the key(s) to include.\n * @param {object} options\n * Valid options are:<ul>\n * <li>useACL: In Cloud Code and Node with Master Key only, to\n * force ACL to be respected (default is `false`).\n * <li>forceChannel: in case your channel is called 'products' or 'orders', this forces to fetch\n * items from the channel instead of i.e. the Products or Orders API.\n * </ul>\n\n * @returns {Promise} A promise that is fulfilled when the fetch\n * completes.\n */\n async fetchWithInclude(\n keys: string | Array<string>,\n options: Pick<RequestOptions, 'useACL' | 'forceChannel' | 'include'> = {}\n ): Promise<this> {\n options.include = isString(keys) ? [keys] : keys\n return this.fetch(options)\n }\n\n /**\n * Set a hash of model attributes, and save the model to the server.\n * updatedAt will be updated when the request returns.\n * You can either call it as:\n * <pre>\n * object.save();\n * </pre>\n * or\n * <pre>\n * object.save(attrs);\n * </pre>\n * or\n * <pre>\n * object.save(null, options);\n * </pre>\n * or\n * <pre>\n * object.save(attrs, options);\n * </pre>\n * or\n * <pre>\n * object.save(key, value);\n * </pre>\n * or\n * <pre>\n * object.save(key, value, options);\n * </pre>\n *\n * Example 1:\n * <pre>\n * object.save({\n * name: \"John Doe\",\n * age: 45\n * }).then(function(savedObject) {\n * // The save was successful.\n * }, function(error) {\n * // The save failed. Error is an instance of Nimbu.Error.\n * });\n * </pre>\n *\n * Example 2:\n * <pre>\n * object.save(\"name\", \"John Doe\");\n * </pre>\n *\n * @param {string | object | null} [arg1]\n * Valid options are:\n * <ul>\n * <li>`Object` - Key/value pairs to update on the object.</li>\n * <li>`String` Key - Key of attribute to update (requires arg2 to also be string)</li>\n * <li>`null` - Passing null for arg1 allows you to save the object with options passed in arg2.</li>\n * </ul>\n * @param {string | object} [arg2]\n * <ul>\n * <li>`String` Value - If arg1 was passed as a key, arg2 is the value that should be set on that key.</li>\n * <li>`Object` Options - Valid options are:\n * <ul>\n * <li>useACL: only applicable when using a Master Key, forces ACL rules to be respected (default is `false`).</li>\n * <li>sessionToken: A valid session token, used for making a request on behalf of a specific user.</li>\n * <li>cascadeSave: If `false`, nested objects will not be saved (default is `true`).</li>\n * <li>locale: The locale to use for the object (optional).</li>\n * <li>progress: A function that is called with the current progress of the request.</li>\n * </ul>\n * </li>\n * </ul>\n * @param {object} [arg3]\n * Used to pass option parameters to method if arg1 and arg2 were both passed as strings.\n * Valid options are:\n * <ul>\n * <li>useACL: only applicable when using a Master Key, forces ACL rules to be respected (default is `false`).</li>\n * <li>sessionToken: A valid session token, used for making a request on behalf of a specific user.</li>\n * <li>cascadeSave: If `false`, nested objects will not be saved (default is `true`).</li>\n * <li>locale: The locale to use for the object (optional).</li>\n * <li>progress: A function that is called with the current progress of the request.</li>\n * </ul>\n * </ul>\n * @returns {Promise} A promise that is fulfilled when the save\n * completes.\n */\n save(\n arg1?: undefined | string | { [attr: string]: any } | null,\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n arg2?: IOptions | any,\n arg3?: IOptions\n ): Promise<this & { id: string }> {\n let attrs: { [attr: string]: NimbuValue } | null\n let options: IOptions | undefined\n if (typeof arg1 === 'object' || typeof arg1 === 'undefined' || arg1 == null) {\n attrs = (arg1 as { [attr: string]: any }) || null\n\n if (typeof arg2 === 'object') {\n options = arg2\n }\n } else {\n attrs = {}\n attrs[arg1] = arg2\n options = arg3\n }\n\n if (attrs) {\n const validation = this.validate(attrs)\n if (validation) {\n return Promise.reject(validation)\n }\n this.set(attrs as any, options)\n }\n\n options = options || {}\n const saveOptions: IOptions = {}\n if (Object.prototype.hasOwnProperty.call(options, 'sessionToken') && typeof options.sessionToken === 'string') {\n saveOptions.sessionToken = options.sessionToken\n }\n\n const unsaved = options.cascadeSave !== false ? unsavedChildren(this) : []\n return NimbuObject._save(unsaved, saveOptions).then(() => {\n return NimbuObject._save(this, saveOptions)\n }) as Promise<this & { id: string }>\n }\n\n // Destroy this model on the server if it was already persisted.\n // Optimistically removes the model from its collection, if it has one.\n // If `wait: true` is passed, waits for the server to respond before removal.\n destroy(options: { wait?: any; useACL?: any; forceChannel?: any } = {}) {\n options = options || {}\n\n const request = _request({\n route: 'objects',\n className: this.className,\n id: this.id,\n method: 'DELETE',\n useACL: options.useACL,\n forceChannel: options.forceChannel,\n })\n\n return options.wait ? request.then(() => this) : this\n }\n\n // **parse** converts a response into the hash of attributes to be `set` on\n // the model. The default implementation is just to pass the response along.\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n parse(response: any, status?: number, xhr?: any) {\n const output = clone(response)\n each(['created_at', 'updated_at'], (key) => {\n if (output[key]) {\n output[key] = parseDate(output[key])\n }\n })\n\n if (!output.updated_at) {\n output.updated_at = output.created_at\n }\n // if (status) {\n // this._existed = status !== 201;\n // }\n return output\n }\n\n // Create a new model with identical attributes to this one.\n clone() {\n return new NimbuObject({ ...this.attributes, className: this.className })\n }\n\n // A model is new if it has never been saved to the server, and lacks an id.\n isNew() {\n return !this.id\n }\n\n /*\n * Returns the ACL for this object.\n * @returns {Nimbu.ACL} An instance of Nimbu.ACL.\n * @see Nimbu.Object#get\n */\n getACL() {\n return this.get('_acl')\n }\n\n /*\n * Sets the ACL to be used for this object.\n * @param {Nimbu.ACL} acl An instance of Nimbu.ACL.\n * @param {Object} options Optional Backbone-like options object to be\n * passed in to set.\n * @return {Boolean} Whether the set passed validation.\n * @see Nimbu.Object#set\n */\n setACL(acl: any, options?: any) {\n return this.set('_acl', acl, options)\n }\n\n // Check if the model is currently in a valid state.\n isValid(options: any) {\n return this._validate({}, extend(options || {}, { validate: true }))\n }\n\n /*\n * You should not call this function directly unless you subclass\n * <code>Nimbu.Object</code>, in which case you can override this method\n * to provide additional validation on <code>set</code> and\n * <code>save</code>. Your implementation should return\n\n * @param {Object} attrs The current data to validate.\n * @return {} False if the data is valid. An error object otherwise.\n * @see Nimbu.Object#set\n */\n validate(attrs: AttributeMap) {\n if (has(attrs, '_acl') && !(attrs._acl instanceof NimbuACL)) {\n return new NimbuError(NimbuError.OTHER_CAUSE, 'ACL must be a Nimbu.ACL.')\n }\n let correct = true\n _objectEach(attrs, function (unused_value, key) {\n if (!/^[A-Za-z][0-9A-Za-z_]*$/.test(key)) {\n correct = false\n }\n })\n\n if (!correct) {\n return new NimbuError(NimbuError.INVALID_KEY_NAME)\n }\n\n return false\n }\n\n _getPendingAtomics(): Array<AtomicsMap> {\n return Config.getStateManager().getPendingAtomics(this._getStateIdentifier())\n }\n\n /**\n * @param {Array<string>} [keysToClear] - if specified, only ops matching\n * these fields will be cleared\n */\n _clearPendingAtomics(keysToClear?: Array<string>) {\n const pending = this._getPendingAtomics()\n const latest = pending[pending.length - 1]\n const keys = keysToClear || Object.keys(latest)\n keys.forEach((key) => {\n delete latest[key]\n })\n }\n\n _getDirtyObjectAttributes(): AttributeMap {\n const attributes = this.attributes\n const objectCache = Config.getStateManager().getObjectCache(this._getStateIdentifier())\n const dirty: AttributeMap = {}\n for (const attr in attributes) {\n const value = attributes[attr]\n if (\n value &&\n typeof value === 'object' &&\n !(value instanceof NimbuObject) &&\n !(value instanceof NimbuFile) &&\n !(value instanceof NimbuRelation) &&\n !(value instanceof NimbuGallery)\n ) {\n // Due to the way browsers construct maps, the key order will not change\n // unless the object is changed\n try {\n const json = encode({ value, disallowObjects: false, forcePointers: true })\n const stringified = JSON.stringify(json)\n if (objectCache[attr] !== stringified) {\n dirty[attr] = value\n }\n } catch (e) {\n // Error occurred, possibly by a nested unsaved pointer in a mutable container\n // No matter how it happened, it indicates a change in the attribute\n dirty[attr] = value\n }\n }\n }\n return dirty\n }\n\n /*\n * Returns a JSON-encoded set of operations to be sent with the next save\n * request.\n */\n _getSaveJSON(): AttributeMap {\n const pending = this._getPendingAtomics()\n const dirtyObjects = this._getDirtyObjectAttributes()\n const json: AttributeMap = {}\n let attr: string\n\n for (attr in dirtyObjects) {\n let isDotNotation = false\n for (let i = 0; i < pending.length; i += 1) {\n for (const field in pending[i]) {\n // Dot notation operations are handled later\n if (field.includes('.')) {\n const fieldName = field.split('.')[0]\n if (fieldName === attr) {\n isDotNotation = true\n break\n }\n }\n }\n }\n if (!isDotNotation) {\n json[attr] = new AtomicSet(dirtyObjects[attr]).toJSON()\n }\n }\n for (attr in pending[0]) {\n json[attr] = pending[0][attr].toJSON()\n }\n return json\n }\n\n /**\n * Returns a JSON version of the object suitable for saving to Nimbu.\n *\n * @param seen\n * @returns {object}\n */\n toJSON(seen: Array<any> | void): AttributeMap {\n const seenEntry = this.id ? this.className + ':' + this.id : this\n seen = seen || [seenEntry]\n const json: AttributeMap = {}\n const attrs = this.attributes\n for (const attr in attrs) {\n const attrValue = attrs[attr]\n const targetKey = inverseTransformedKeys[attr] ?? attr\n\n if ((attr === 'createdAt' || attr === 'updatedAt') && attrValue != null && isValidDate(attrValue)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n json[targetKey] = attrValue.toJSON()\n } else {\n json[targetKey] = encode({\n value: attrs[attr],\n disallowObjects: false,\n forcePointers: false,\n seenObjects: seen,\n })\n }\n }\n const pending = this._getPendingAtomics()\n for (const attr in pending[0]) {\n const targetKey = inverseTransformedKeys[attr] ?? attr\n json[targetKey] = pending[0][attr].toJSON()\n }\n\n if (this.id) {\n json.id = this.id\n }\n return json\n }\n\n _toFullJSON(seen?: Array<any>): AttributeMap {\n const json: { [key: string]: any } = this.toJSON(seen)\n json.__type = 'Object'\n json.className = this.className\n return json\n }\n\n _getSaveParams(options: IOptions = {}): RequestOptions {\n return {\n method: this.id ? 'PUT' : 'POST',\n route: 'objects',\n className: this.className,\n id: this.id,\n data: this._getSaveJSON(),\n useACL: !!options.useACL,\n locale: options.locale,\n progress: options.progress,\n }\n }\n\n // Run validation against the next complete set of model attributes,\n // returning `true` if all is well. Otherwise, fire an `\"invalid\"` event.\n _validate(attrs: any, options: { validate?: boolean } = {}) {\n if (!options.validate || !this.validate) {\n return true\n }\n attrs = extend({}, this.attributes, attrs)\n const error = this.validate(attrs)\n if (error !== false) {\n this.validationError = error ?? null\n }\n if (!error) {\n return true\n }\n return false\n }\n\n /*\n * Called when a save completes successfully. This merges the changes that\n * were saved into the known server data, and overrides it with any data\n * sent directly from the server.\n */\n _finishSave(serverData: AttributeMap) {\n const changes: Partial<{\n createdAt: Date | null\n updatedAt: Date | null\n [key: string]: any\n }> = {}\n let attr\n const state = Config.getStateManager()\n const pending = state.popPendingState(this._getStateIdentifier())\n if (pending) {\n for (attr in pending) {\n if (pending[attr] instanceof AtomicRelation) {\n changes[attr] = pending[attr].applyTo(undefined, this, attr)\n } else if (!(attr in serverData)) {\n // Only SetOps and UnsetOps should not come back with results\n changes[attr] = pending[attr].applyTo(undefined)\n }\n }\n }\n for (attr in serverData) {\n const targetKey = transformedKeys[attr] ?? attr\n\n if ((targetKey === 'createdAt' || targetKey === 'updatedAt') && typeof serverData[attr] === 'string') {\n changes[targetKey] = parseDate(serverData[attr])\n } else if (targetKey === '_acl') {\n changes[targetKey] = new NimbuACL(serverData[attr])\n } else if (targetKey !== 'id') {\n const val = decode(attr, serverData[attr])\n if (val && Object.getPrototypeOf(val) === Object.prototype) {\n const currentObject = this.attributes[targetKey]\n changes[targetKey] = isObject(currentObject) ? { ...currentObject, ...val } : val\n } else {\n changes[targetKey] = val\n }\n if (changes[targetKey] instanceof AtomicUnset) {\n changes[targetKey] = undefined\n }\n }\n }\n if (changes.createdAt && !changes.updatedAt) {\n changes.updatedAt = changes.createdAt\n }\n\n this._migrateId(serverData.id)\n state.commitServerChanges(this._getStateIdentifier(), changes)\n\n return this\n }\n\n _onSaveError() {\n Config.getStateManager().mergeFirstPendingState(this._getStateIdentifier())\n }\n\n private _migrateId(serverId: string) {\n if (this.cid && serverId) {\n const state = Config.getStateManager()\n const oldState = state.removeState(this._getStateIdentifier())\n this.id = serverId\n\n if (oldState) {\n state.initializeState(this._getStateIdentifier(), oldState)\n }\n }\n }\n\n /*\n * Called when a fetch or login is complete to set the known server data to\n * the given object.\n */\n _finishFetch(serverData: AttributeMap) {\n if (!this.id && serverData.id) {\n this.id = serverData.id\n }\n const state = Config.getStateManager()\n state.initializeState(this._getStateIdentifier())\n const decoded: Partial<{\n createdAt?: Date\n updatedAt?: Date\n ACL?: any\n [key: string]: any\n }> = {}\n for (const attr in serverData) {\n const targetKey = transformedKeys[attr] ?? attr\n if (targetKey === '_acl') {\n decoded[targetKey] = new NimbuACL(serverData[attr])\n } else if (targetKey !== 'id') {\n decoded[targetKey] = decode(attr, serverData[attr])\n const decodedTargetValue = decoded[targetKey]\n if (decodedTargetValue instanceof NimbuRelation || decodedTargetValue instanceof NimbuGallery) {\n decodedTargetValue._ensureParentAndKey(this, attr)\n }\n }\n }\n if (decoded.createdAt && typeof decoded.createdAt === 'string') {\n decoded.createdAt = parseDate(decoded.createdAt) || undefined\n }\n if (decoded.updatedAt && typeof decoded.updatedAt === 'string') {\n decoded.updatedAt = parseDate(decoded.updatedAt) || undefined\n }\n if (!decoded.updatedAt && decoded.createdAt) {\n decoded.updatedAt = decoded.createdAt\n }\n\n state.commitServerChanges(this._getStateIdentifier(), decoded)\n }\n\n static async _save<T extends ChannelConfig, K extends NimbuObject<T>[] | NimbuObject<T>>(\n target: K,\n options?: IOptions\n ): Promise<K extends Array<NimbuObject<T>> ? NimbuObject<T>[] : NimbuObject<T>> {\n if (Array.isArray(target)) {\n const saved: NimbuObject<T>[] = []\n await continueWhile(\n () => target.length > 0,\n async () => {\n const objectToSave = target.shift()\n if (objectToSave) {\n saved.push(await NimbuObject._save(objectToSave, options))\n }\n }\n )\n return saved as any\n } else if (target != null) {\n const params = target._getSaveParams(options)\n // try {\n const { body } = await _request(params)\n return target._finishSave(body) as any\n // }\n } else {\n throw new Error('Cannot save a null object')\n }\n }\n\n /**\n * Creates a reference to a subclass of Nimbu.Object with the given id. This\n * does not exist on Nimbu.Object, only on subclasses.\n *\n * <p>A shortcut for: <pre>\n * var Foo = Nimbu.Object.extend(\"Foo\");\n * var pointerToFoo = new Foo();\n * pointerToFoo.id = \"myObjectId\";\n * </pre>\n *\n * @param {string} id The ID of the object to create a reference to.\n * @static\n * @returns {Nimbu.Object} A Nimbu.Object reference.\n */\n static createWithoutData(id: string): NimbuObject {\n const obj = new this()\n obj.id = id\n return obj\n }\n\n /*\n * Returns the appropriate subclass for making new instances of the given\n * className string.\n */\n static _getSubclass = (className: string | number): typeof NimbuObject => {\n if (!isString(className)) {\n throw 'Nimbu.Object._getSubclass requires a string argument.'\n }\n let ObjectClass = classMap[className]\n if (!ObjectClass) {\n ObjectClass = NimbuObject.extend(className)\n classMap[className] = ObjectClass\n }\n return ObjectClass\n }\n\n /*\n * Creates an instance of a subclass of Nimbu.Object for the given class name.\n */\n static _create = function (className: string, attributes?: AttributeMap, options?: any) {\n const ObjectClass = NimbuObject._getSubclass(className)\n return new ObjectClass(attributes as any, options)\n }\n\n /**\n * Creates a new instance of a Nimbu Object from a JSON representation.\n *\n * @param {object} json The JSON map of the Object's data\n * @param {boolean} override In single instance mode, all old server data\n * is overwritten if this is set to true\n * @param {boolean} dirty Whether the Nimbu.Object should set JSON keys to dirty\n * @static\n * @returns {Nimbu.Object} A Nimbu.Object reference\n */\n\n static fromJSON(json: AttributeMap & { className: string }): NimbuObject\n static fromJSON(json: AttributeMap, className: string, override?: boolean, dirty?: boolean): NimbuObject\n static fromJSON(json: AttributeMap, className?: string, override?: boolean, dirty?: boolean): NimbuObject {\n if (!className && !json.className) throw new Error('Cannot create an object without a className')\n\n const constructor = classMap[className ?? json.className]\n const object: NimbuObject = constructor\n ? // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n new constructor(className ?? json.className)\n : new NimbuObject(className ?? json.className)\n const otherAttributes: AttributeMap = {}\n for (const attr in json) {\n if (attr !== 'className' && attr !== '__type') {\n otherAttributes[attr] = json[attr]\n if (dirty) {\n object.set(attr, json[attr])\n }\n }\n }\n if (override) {\n // id needs to be set before clearServerData can work\n if (otherAttributes.id) {\n object.id = otherAttributes.id\n }\n }\n object._finishFetch(otherAttributes)\n return object\n }\n\n /*\n * Returns a JSON version of the custom fields defined for this object.\n * @return {Object}\n */\n // static config = function(options: { forceChannel?: any } = {}) {\n // const request = _request({\n // method: 'GET',\n // route: 'objects',\n // className: this.prototype.className,\n // id: 'customizations',\n // forceChannel: options.forceChannel,\n // });\n // return request.then(({ body }) => body);\n // };\n\n /**\n * Creates a new subclass of Nimbu.Object for the given Nimbu class name.\n *\n * <p>Every extension of a Nimbu class will inherit from the most recent\n * previous extension of that class. When a Nimbu.Object is automatically\n * created by parsing JSON, it will use the most recent extension of that\n * class.</p>\n *\n * <p>You should call either:<pre>\n * var MyClass = Nimbu.Object.extend(\"MyClass\", {\n * <i>Instance methods</i>,\n * initialize: function(attrs, options) {\n * this.someInstanceProperty = [],\n * <i>Other instance properties</i>\n * }\n * }, {\n * <i>Class properties</i>\n * });</pre>\n * or, for Backbone compatibility:<pre>\n * var MyClass = Nimbu.Object.extend({\n * className: \"MyClass\",\n * <i>Instance methods</i>,\n * initialize: function(attrs, options) {\n * this.someInstanceProperty = [],\n * <i>Other instance properties</i>\n * }\n * }, {\n * <i>Class properties</i>\n * });</pre></p>\n *\n * @param {string} className The name of the Nimbu class backing this model.\n * @param {object} protoProps Instance properties to add to instances of the\n * class returned from this method.\n * @param {object} classProps Class properties to add the class returned from\n * this method.\n * @returns {Nimbu.Object} A new subclass of Nimbu.Object.\n */\n static extend<T extends ChannelConfig = any>(className: any, protoProps?: any, classProps?: any): NimbuSubClass<T> {\n if (typeof className !== 'string') {\n if (className && typeof className.className === 'string') {\n return NimbuObject.extend(className.className, className, protoProps)\n } else {\n throw new Error(\"Nimbu.Object.extend's first argument should be the className.\")\n }\n }\n\n let parentProto = NimbuObject.prototype\n if (Object.prototype.hasOwnProperty.call(this, '__super__') && (this as any).__super__) {\n parentProto = this.prototype\n }\n let NimbuObjectSubclass = function (this: NimbuObject, attributes: any, options: any) {\n this.cid = uniqueId('c')\n this.className = className\n this._objCount = objectCount++\n // Enable legacy initializers\n if (typeof this.initialize === 'function') {\n // eslint-disable-next-line prefer-rest-params, prefer-spread\n this.initialize.apply(this, arguments as any)\n }\n\n if ((this as any)._initializers) {\n for (const initializer of (this as any)._initializers) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, prefer-rest-params\n initializer.apply(this, arguments)\n }\n }\n\n if (attributes && typeof attributes === 'object') {\n if (!this.set(attributes || {}, options)) {\n throw new Error(\"Can't create an invalid Nimbu Object\")\n }\n }\n }\n if (classMap[className]) {\n NimbuObjectSubclass = classMap[className]\n } else {\n // TODO: Maybe there is a more elegant solution to this?\n ;(NimbuObjectSubclass as any).extend = function (name: string, protoProps: any, classProps: any) {\n if (typeof name === 'string') {\n return NimbuObject.extend.call(NimbuObjectSubclass, name, protoProps, classProps)\n }\n return NimbuObject.extend.call(NimbuObjectSubclass, className, name, protoProps)\n }\n // eslint-disable-next-line @typescript-eslint/unbound-method\n ;(NimbuObjectSubclass as any).createWithoutData = NimbuObject.createWithoutData\n ;(NimbuObjectSubclass as any).className = className\n ;(NimbuObjectSubclass as any).__super__ = parentProto\n NimbuObjectSubclass.prototype = Object.create(parentProto, {\n constructor: {\n value: NimbuObjectSubclass,\n enumerable: false,\n writable: true,\n configurable: true,\n },\n })\n }\n\n if (protoProps) {\n for (const prop in protoProps) {\n if (prop === 'initialize') {\n Object.defineProperty(NimbuObjectSubclass.prototype, '_initializers', {\n value: [...(NimbuObjectSubclass.prototype._initializers || []), protoProps[prop]],\n enumerable: false,\n writable: true,\n configurable: true,\n })\n continue\n }\n if (prop !== 'className') {\n Object.defineProperty(NimbuObjectSubclass.prototype, prop, {\n value: protoProps[prop],\n enumerable: false,\n writable: true,\n configurable: true,\n })\n }\n }\n }\n\n if (classProps) {\n for (const prop in classProps) {\n if (prop !== 'className') {\n Object.defineProperty(NimbuObjectSubclass, prop, {\n value: classProps[prop],\n enumerable: false,\n writable: true,\n configurable: true,\n })\n }\n }\n }\n classMap[className] = NimbuObjectSubclass\n return NimbuObjectSubclass as unknown as NimbuSubClass<T>\n }\n\n static setDefaultGetOptions = (options: IGetOptions = {}) => {\n _defaultGetOptions = options\n }\n\n /**\n * Saves the given list of Nimbu.Object.\n * If any error is encountered, stops and calls the error handler.\n *\n * <pre>\n * Nimbu.Object.saveAll([object1, object2, ...])\n * .then((list) => {\n * // All the objects were saved.\n * }, (error) => {\n * // An error occurred while saving one of the objects.\n * });\n * </pre>\n *\n * @param {Array} list A list of <code>Nimbu.Object</code>.\n * @param {object} options\n * @static\n * @returns {Nimbu.Object[]}\n */\n static saveAll(list: Array<NimbuObject>, saveOptions: IOptions = {}): Promise<NimbuObject[]> {\n return NimbuObject._save(list, saveOptions)\n }\n\n /**\n * Registers a subclass of Nimbu.Object with a specific class name.\n * When objects of that class are retrieved from a query, they will be\n * instantiated with this subclass. This is only necessary when using ES6 subclassing.\n *\n * @param {string} className The class name of the subclass\n * @param {Function} constructor The subclass\n */\n static registerSubclass(className: string, constructor: any) {\n if (typeof className !== 'string') {\n throw new TypeError('The first argument must be a valid class name.')\n }\n if (typeof constructor === 'undefined') {\n throw new TypeError('You must supply a subclass constructor.')\n }\n if (typeof constructor !== 'function') {\n throw new TypeError(\n `You must register the subclass constructor for ${className}. Did you attempt to register an instance of the subclass?`\n )\n }\n classMap[className] = constructor\n if (!constructor.className) {\n constructor.className = className\n }\n }\n\n /**\n * Unregisters a subclass of Nimbu.Object with a specific class name.\n *\n * @param {string} className The class name of the subclass\n */\n static unregisterSubclass(className: string) {\n if (typeof className !== 'string') {\n throw new TypeError('The first argument must be a valid class name.')\n }\n delete classMap[className]\n }\n}\n\ninterface NimbuSubClass<T extends ChannelConfig = ChannelConfig> extends NimbuObject<T> {\n // eslint-disable-next-line @typescript-eslint/no-misused-new\n new (attributes?: AttributeMap): NimbuSubClass<T>\n}\nexport default NimbuObject\n","/* eslint-disable @typescript-eslint/no-redundant-type-constituents */\nimport {\n ChannelConfig,\n NimbuGallery,\n NimbuGalleryImage,\n NimbuGalleryImageJSON,\n NimbuObject,\n NimbuRelation,\n Reference,\n _objectEach,\n arrayContainsObject,\n decode,\n encode,\n unique,\n} from '../internal'\n\nimport { compact, contains, difference, extend, map, pairs, reject, union } from 'underscore'\n\nexport function atomicFromJSON(json: { [key: string]: any }): NimbuAtomic | null {\n if (!json || !json.__op) {\n return null\n }\n switch (json.__op) {\n case 'Delete':\n return new AtomicUnset()\n case 'Increment':\n return new AtomicIncrement(json.amount)\n case 'Add':\n return new AtomicAdd(decode(json.objects))\n case 'AddUnique':\n return new AtomicAddUnique(decode(json.objects))\n case 'Remove':\n return new AtomicRemove(decode(json.objects))\n case 'AddRelation': {\n const toAdd = decode(json.objects)\n if (!Array.isArray(toAdd)) {\n return new AtomicRelation([], [])\n }\n return new AtomicRelation(toAdd, [])\n }\n case 'RemoveRelation': {\n const toRemove = decode(json.objects)\n if (!Array.isArray(toRemove)) {\n return new AtomicRelation([], [])\n }\n return new AtomicRelation([], toRemove)\n }\n case 'Batch': {\n let toAdd: NimbuObject[] = []\n let toRemove: NimbuObject[] = []\n for (let i = 0; i < json.ops.length; i++) {\n if (json.ops[i].__op === 'AddRelation') {\n toAdd = toAdd.concat(decode(json.ops[i].objects))\n } else if (json.ops[i].__op === 'RemoveRelation') {\n toRemove = toRemove.concat(decode(json.ops[i].objects))\n }\n }\n return new AtomicRelation(toAdd, toRemove)\n }\n }\n return null\n}\n\nexport class NimbuAtomic {\n __op?: string\n objects?: any[]\n\n // Empty parent class\n applyTo(...value: any): any {} /* eslint-disable-line @typescript-eslint/no-unused-vars */\n mergeWith(previous: NimbuAtomic): NimbuAtomic {\n return previous // Added return statement\n }\n toJSON(): any {}\n}\n\nexport class AtomicSet extends NimbuAtomic {\n _value: any\n\n constructor(value: any) {\n super()\n this._value = value\n }\n\n get value() {\n return this._value\n }\n\n applyTo(): any {\n return this._value\n }\n\n mergeWith(): AtomicSet {\n return new AtomicSet(this._value)\n }\n\n toJSON(): any {\n return encode({\n value: this._value,\n disallowObjects: false,\n forcePointers: true,\n })\n }\n}\n\nexport class AtomicUnset extends NimbuAtomic {\n applyTo() {\n return undefined\n }\n\n mergeWith(): AtomicUnset {\n return new AtomicUnset()\n }\n\n toJSON(): { __op: string } {\n return { __op: 'Delete' }\n }\n}\n\nexport class AtomicIncrement extends NimbuAtomic {\n _amount: number\n\n constructor(amount: number) {\n super()\n if (typeof amount !== 'number') {\n throw new TypeError('Increment Op must be initialized with a numeric amount.')\n }\n this._amount = amount\n }\n\n applyTo(value: any): number {\n if (typeof value === 'undefined') {\n return this._amount\n }\n if (typeof value !== 'number') {\n throw new TypeError('Cannot increment a non-numeric value.')\n }\n return this._amount + value\n }\n\n mergeWith(previous: NimbuAtomic): NimbuAtomic {\n if (!previous) {\n return this\n }\n if (previous instanceof AtomicSet) {\n return new AtomicSet(this.applyTo(previous._value))\n }\n if (previous instanceof AtomicUnset) {\n return new AtomicSet(this._amount)\n }\n if (previous instanceof AtomicIncrement) {\n return new AtomicIncrement(this.applyTo(previous._amount))\n }\n throw new Error('Cannot merge Increment Op with the previous Op')\n }\n\n toJSON(): { __op: string; amount: number } {\n return { __op: 'Increment', amount: this._amount }\n }\n}\n\nexport class AtomicAdd extends NimbuAtomic {\n _value: any[]\n\n constructor(value: any | any[]) {\n super()\n this._value = Array.isArray(value) ? value : [value]\n }\n\n applyTo(value: any): any[] {\n if (value == null) {\n return this._value\n }\n if (Array.isArray(value)) {\n return value.concat(this._value)\n }\n throw new Error('Cannot add elements to a non-array value')\n }\n\n mergeWith(previous: NimbuAtomic): NimbuAtomic {\n if (!previous) {\n return this\n }\n if (previous instanceof AtomicSet) {\n return new AtomicSet(this.applyTo(previous._value))\n }\n if (previous instanceof AtomicUnset) {\n return new AtomicSet(this._value)\n }\n if (previous instanceof AtomicAdd) {\n return new AtomicAdd(this.applyTo(previous._value))\n }\n throw new Error('Cannot merge AtomicAdd with the previous Atomic operation')\n }\n\n toJSON(): { __op: string; objects: any } {\n return {\n __op: 'Add',\n objects: encode({\n value: this._value,\n disallowObjects: false,\n forcePointers: true,\n }),\n }\n }\n}\n\nexport class AtomicAddUnique extends NimbuAtomic {\n _value: any[]\n\n constructor(value: any | any[]) {\n super()\n this._value = unique(Array.isArray(value) ? value : [value])\n }\n\n applyTo(value: any | any[]): any[] {\n if (value == null) {\n return this._value || []\n }\n if (Array.isArray(value)) {\n const toAdd: any[] = []\n this._value.forEach((v) => {\n if (v instanceof NimbuObject) {\n if (!arrayContainsObject(value, v)) {\n toAdd.push(v)\n }\n } else {\n if (value.indexOf(v) < 0) {\n toAdd.push(v)\n }\n }\n })\n return value.concat(toAdd)\n }\n throw new Error('Cannot add elements to a non-array value')\n }\n\n mergeWith(previous: NimbuAtomic): NimbuAtomic {\n if (!previous) {\n return this\n }\n if (previous instanceof AtomicSet) {\n return new AtomicSet(this.applyTo(previous._value))\n }\n if (previous instanceof AtomicUnset) {\n return new AtomicSet(this._value)\n }\n if (previous instanceof AtomicAddUnique) {\n return new AtomicAddUnique(this.applyTo(previous._value))\n }\n throw new Error('Cannot merge AddUnique Op with the previous Op')\n }\n\n toJSON(): { __op: string; objects: any } {\n return {\n __op: 'AddUnique',\n objects: encode({\n value: this._value,\n disallowObjects: false,\n forcePointers: true,\n }),\n }\n }\n}\n\nexport class AtomicRemove extends NimbuAtomic {\n _value: any[]\n\n constructor(value: any | any[]) {\n super()\n this._value = unique(Array.isArray(value) ? value : [value])\n }\n\n applyTo(value: any | any[]): any[] {\n if (value == null) {\n return []\n }\n if (Array.isArray(value)) {\n // var i = value.indexOf(this._value);\n const removed = value.concat([])\n for (let i = 0; i < this._value.length; i++) {\n let index = removed.indexOf(this._value[i])\n while (index > -1) {\n removed.splice(index, 1)\n index = removed.indexOf(this._value[i])\n }\n if (this._value[i] instanceof NimbuObject && this._value[i].id) {\n for (let j = 0; j < removed.length; j++) {\n if (removed[j] instanceof NimbuObject && this._value[i].id === removed[j].id) {\n removed.splice(j, 1)\n j--\n }\n }\n }\n }\n return removed\n }\n throw new Error('Cannot remove elements from a non-array value')\n }\n\n mergeWith(previous: NimbuAtomic): NimbuAtomic {\n if (!previous) {\n return this\n }\n if (previous instanceof AtomicSet) {\n return new AtomicSet(this.applyTo(previous._value))\n }\n if (previous instanceof AtomicUnset) {\n return new AtomicUnset()\n }\n if (previous instanceof AtomicRemove) {\n const uniques = previous._value.concat([])\n for (let i = 0; i < this._value.length; i++) {\n if (this._value[i] instanceof NimbuObject) {\n if (!arrayContainsObject(uniques, this._value[i])) {\n uniques.push(this._value[i])\n }\n } else {\n if (uniques.indexOf(this._value[i]) < 0) {\n uniques.push(this._value[i])\n }\n }\n }\n return new AtomicRemove(uniques)\n }\n throw new Error('Cannot merge Remove Op with the previous Op')\n }\n\n toJSON(): { __op: string; objects: any } {\n return {\n __op: 'Remove',\n objects: encode({\n value: this._value,\n disallowObjects: false,\n forcePointers: true,\n }),\n }\n }\n}\n\nexport class AtomicRelation<T extends ChannelConfig = ChannelConfig> extends NimbuAtomic {\n _targetClassName: string | null\n relationsToAdd: Array<string> = []\n relationsToRemove: Array<string> = []\n\n constructor(adds: Array<NimbuObject<T> | string>, removes: Array<NimbuObject<T> | string>) {\n super()\n this._targetClassName = null\n\n if (Array.isArray(adds)) {\n this.relationsToAdd = unique(adds.map((o) => this._extractId(o), this))\n }\n\n if (Array.isArray(removes)) {\n this.relationsToRemove = unique(removes.map((o) => this._extractId(o), this))\n }\n }\n\n _extractId(obj: string | NimbuObject<T>): string {\n if (typeof obj === 'string') {\n return obj\n }\n if (!obj.id) {\n throw new Error('You cannot add or remove an unsaved Nimbu Object from a relation')\n }\n if (!this._targetClassName) {\n this._targetClassName = obj.className\n }\n if (this._targetClassName !== obj.className) {\n throw new Error(\n `Tried to create a Relation with 2 different object types: ${this._targetClassName} and ${obj.className}.`\n )\n }\n return obj.id\n }\n\n applyTo(value: any, object?: { className: string; id?: string }, key?: string): NimbuRelation<T> {\n if (!value) {\n if (!object || !key) {\n throw new Error('Cannot apply a AtomicRelation without either a previous value, or an object and a key')\n }\n const parent = new NimbuObject(object.className)\n if (object.id) {\n parent.id = object.id\n }\n const relation = new NimbuRelation<T>(parent, key)\n relation.targetClassName = this._targetClassName\n return relation\n }\n if (value instanceof NimbuRelation) {\n if (this._targetClassName) {\n if (value.targetClassName) {\n if (this._targetClassName !== value.targetClassName) {\n throw new Error(\n `Related object must be a ${value.targetClassName} but a ${this._targetClassName} was passed in.`\n )\n }\n } else {\n value.targetClassName = this._targetClassName\n }\n }\n return value\n } else {\n throw new Error('Relation cannot be applied to a non-relation field')\n }\n }\n\n mergeWith(previous: NimbuAtomic): NimbuAtomic {\n if (!previous) {\n return this\n } else if (previous instanceof AtomicUnset) {\n throw new Error('You cannot modify a relation after deleting it.')\n } else if (previous instanceof AtomicSet && previous._value instanceof NimbuRelation) {\n return this\n } else if (previous instanceof AtomicRelation) {\n if (previous._targetClassName && previous._targetClassName !== this._targetClassName) {\n throw new Error(\n `Related object must be of class ${previous._targetClassName} but ${\n this._targetClassName || 'null'\n } was passed in.`\n )\n }\n const newAdd = previous.relationsToAdd.concat([])\n this.relationsToRemove.forEach((r) => {\n const index = newAdd.indexOf(r)\n if (index > -1) {\n newAdd.splice(index, 1)\n }\n })\n this.relationsToAdd.forEach((r) => {\n const index = newAdd.indexOf(r)\n if (index < 0) {\n newAdd.push(r)\n }\n })\n\n const newRemove = previous.relationsToRemove.concat([])\n this.relationsToAdd.forEach((r) => {\n const index = newRemove.indexOf(r)\n if (index > -1) {\n newRemove.splice(index, 1)\n }\n })\n this.relationsToRemove.forEach((r) => {\n const index = newRemove.indexOf(r)\n if (index < 0) {\n newRemove.push(r)\n }\n })\n\n const newRelation = new AtomicRelation(newAdd, newRemove)\n newRelation._targetClassName = this._targetClassName\n return newRelation\n }\n throw new Error('Cannot merge Relation Op with the previous Op')\n }\n\n toJSON(): { __op?: string; objects?: any; ops?: any } {\n const idToPointer = (id: string) => {\n const ret: Reference = {\n __type: 'Reference',\n className: this._targetClassName!,\n id: id,\n }\n return ret\n }\n\n let references: null | Reference[] = null\n let adds: null | { __op: string; objects: null | Reference[] } = null\n let removes: null | { __op: string; objects: null | Reference[] } = null\n\n if (this.relationsToAdd.length > 0) {\n references = this.relationsToAdd.map(idToPointer)\n adds = { __op: 'AddRelation', objects: references }\n }\n if (this.relationsToRemove.length > 0) {\n references = this.relationsToRemove.map(idToPointer)\n removes = { __op: 'RemoveRelation', objects: references }\n }\n\n if (adds && removes) {\n return { __op: 'Batch', ops: [adds, removes] }\n }\n return adds || removes || {}\n }\n}\n\nexport class AtomicRemoveFile extends NimbuAtomic {\n /*\n * Returns a JSON version of the operation suitable for sending to Nimbu.\n * @return {Object}\n */\n toJSON() {\n return {\n __type: 'File',\n remove: '1',\n }\n }\n\n applyTo(): any {\n return this\n }\n\n mergeWith(): AtomicRemoveFile {\n return new AtomicRemoveFile()\n }\n}\n\nexport class AtomicGallery<P extends ChannelConfig = ChannelConfig> extends NimbuAtomic {\n _imagesToAdd: NimbuGalleryImage<P>[]\n _idsToAdd: string[]\n _idsToRemove: string[]\n _imagesToRemove: NimbuGalleryImage<P>[]\n _idsToUpdate: { [key: string]: any }\n\n constructor(adds: NimbuGalleryImage<P>[], removes: NimbuGalleryImage<P>[], updates: NimbuGalleryImage<P>[]) {\n super()\n\n // The new ones\n this._imagesToAdd = reject(adds, (img) => img?.id != null)\n\n // The ones that have an id already -> must have belonged to this gallery before\n // Keep the ids around to remove from previous._idsToRemove in _mergeWithPrevious\n this._idsToAdd = compact(map(adds, (img) => img?.id))\n\n // The ones we can remove by id\n this._idsToRemove = compact(map(removes, (img) => img?.id))\n\n // The ones without an id -> keep them around to remove from previous._imagesToAdd in _mergeWithPrevious\n this._imagesToRemove = reject(removes, (img) => img?.id != null)\n\n this._idsToUpdate = updates\n }\n\n _additions() {\n return map(this._imagesToAdd, (image) => image.toJSON())\n }\n\n _removals() {\n return map(\n this._idsToRemove,\n (id) =>\n ({\n __type: 'GalleryImage',\n id: id,\n remove: true,\n } as NimbuGalleryImageJSON)\n )\n }\n\n _updates() {\n return map(pairs(this._idsToUpdate), (pair) => {\n return extend(\n {\n __type: 'GalleryImage',\n id: pair[0],\n },\n pair[1]\n )\n })\n }\n\n _images() {\n let images = this._additions()\n images = images.concat(this._removals())\n images = images.concat(this._updates())\n return images\n }\n\n /*\n Returns a JSON version of the operation suitable for sending to Nimbu.\n @return {Object}\n */\n toJSON() {\n return {\n __type: 'Gallery',\n images: this._images(),\n }\n }\n\n mergeWith(previous: any) {\n const newUpdates: any = {}\n\n if (previous) {\n this._imagesToAdd = union(difference(previous._imagesToAdd, this._imagesToRemove), this._imagesToAdd)\n this._idsToRemove = union(difference(previous._idsToRemove, this._idsToAdd), this._idsToRemove)\n _objectEach(this._idsToUpdate, function (value, key) {\n if (previous._idsToUpdate[key] != null) {\n return (newUpdates[key] = extend(previous._idsToUpdate[key], value))\n } else {\n return (newUpdates[key] = value)\n }\n })\n this._idsToUpdate = newUpdates\n this._idsToAdd = []\n this._imagesToRemove = []\n return this\n } else {\n return this\n }\n }\n\n _estimate(oldValue: any, object: any, key: any) {\n let images, oldImages\n\n if (!oldValue) {\n return new NimbuGallery<P>(object, key, ([] as NimbuGalleryImage<P>[]).concat(this._imagesToAdd))\n } else if (oldValue instanceof NimbuGallery) {\n oldImages = map(oldValue._images, (image) => {\n let attributes = image.attributes\n if (this._idsToUpdate != null && this._idsToUpdate[image.id] != null) {\n attributes = extend({}, attributes, this._idsToUpdate[image.id])\n }\n return new NimbuGalleryImage<P>(attributes)\n })\n images = union(oldImages, this._imagesToAdd)\n images = reject(images, (image) => {\n return contains(this._idsToRemove, image.id)\n })\n return new NimbuGallery(object, key, images)\n } else {\n throw 'Atomic is invalid after previous op'\n }\n }\n}\n\nexport default NimbuAtomic\n","import { NimbuCustomer, NimbuRole, _objectEach } from '../internal'\nimport { clone, isBoolean, isEmpty, isFunction, isObject, isString } from 'underscore'\n\ntype PermissionsMap = { [permission: string]: boolean }\ntype PermissionsByIdMap = { [userId: string]: PermissionsMap }\n\nconst PUBLIC_KEY = '*'\nconst AUTHENTICATED_KEY = 'users'\n\n/*\n * Creates a new ACL.\n * If no argument is given, the ACL has no permissions for anyone.\n * If the argument is a Nimbu.Customer, the ACL will have read and write\n * permission for only that customer.\n * If the argument is any other JSON object, that object will be interpretted\n * as a serialized ACL created with toJSON().\n * @see Nimbu.Object#setACL\n * @class\n *\n * <p>An ACL, or Access Control List can be added to any\n * <code>Nimbu.Object</code> to restrict access to only a subset of customers\n * of your application.</p>\n */\nexport class NimbuACL {\n permissionsById: PermissionsByIdMap = {}\n\n constructor(object: any) {\n if (isObject(object)) {\n if (object instanceof NimbuCustomer) {\n this.allowRead(object, true)\n this.allowUpdate(object, true)\n this.allowDelete(object, true)\n } else if (isFunction(object)) {\n throw 'Nimbu.ACL() called with a function?'\n } else {\n _objectEach(object, (accessList: any, customerId: string | number) => {\n if (!isString(customerId)) {\n throw 'Tried to create an ACL with an invalid customerId.'\n }\n\n this.permissionsById[customerId] = {}\n\n _objectEach(accessList, (allowed = true, permission: string) => {\n if (permission !== 'read' && permission !== 'update' && permission !== 'delete') {\n throw `Tried to create an ACL with an invalid permission type ${permission}.`\n }\n\n if (!isBoolean(allowed)) {\n throw 'Tried to create an ACL with an invalid permission value.'\n }\n\n this.permissionsById[customerId][permission] = allowed\n })\n })\n }\n }\n }\n\n /*\n * Returns a JSON-encoded version of the ACL.\n * @return {Object}\n */\n toJSON(): PermissionsByIdMap {\n return clone(this.permissionsById)\n }\n\n _setPermission(action: string | number, customerId: string | NimbuCustomer | NimbuRole, allowed = true) {\n if (customerId instanceof NimbuCustomer) {\n customerId = 'id:' + customerId.id\n } else if (customerId instanceof NimbuRole) {\n customerId = 'role:' + customerId.getName()\n }\n\n if (!isString(customerId)) {\n throw 'customerId must be a string.'\n }\n\n if (!isBoolean(allowed)) {\n throw 'allowed must be either true or false.'\n }\n let permissions = this.permissionsById[customerId]\n if (!permissions) {\n if (!allowed) {\n // The customer already doesn't have this permission, so no action needed.\n } else {\n permissions = {}\n this.permissionsById[customerId] = permissions\n }\n }\n if (allowed) {\n this.permissionsById[customerId][action] = true\n } else {\n delete permissions[action]\n\n if (isEmpty(permissions)) {\n delete permissions[customerId]\n } // TODO: => moet dit niet @permissionsById zijn?\n }\n }\n\n _getPermission(action: string | number, customerId: string | NimbuCustomer | NimbuRole) {\n if (customerId instanceof NimbuCustomer) {\n customerId = 'id:' + customerId.id\n } else if (customerId instanceof NimbuRole) {\n customerId = 'role:' + customerId.getName()\n }\n const permissions = this.permissionsById[customerId]\n if (!permissions) {\n return false\n }\n if (permissions[action]) {\n return true\n } else {\n return false\n }\n }\n\n /*\n * Set whether the given customer is allowed to read this object.\n * @param customerId An instance of Nimbu.Customer or its id.\n * @param {Boolean} allowed Whether that customer should have read access.\n */\n allowRead(customerId: string | NimbuCustomer | NimbuRole, allowed = true) {\n return this._setPermission('read', customerId, allowed)\n }\n\n /*\n * Get whether the given customer is allowed to read this object.\n *\n * Even if this returns false, the customer may still be able to access it if\n * getPublicReadAccess returns true or a role that the customer belongs to has\n * write access.\n * @param customerId An instance of Nimbu.Customer or its id, or a Nimbu.Role.\n * @return {Boolean}\n */\n getReadAccess(customerId: string | NimbuCustomer | NimbuRole) {\n return this._getPermission('read', customerId)\n }\n\n /*\n * Set whether the given customer id is allowed to update this object.\n * @param customerId An instance of Nimbu.Customer or its id, or a Nimbu.Role..\n * @param {Boolean} allowed Whether that customer should have update access.\n */\n allowUpdate(customerId: string | NimbuCustomer | NimbuRole, allowed = true) {\n return this._setPermission('update', customerId, allowed)\n }\n\n /*\n * Get whether the given customer id is *explicitly* allowed to update this object.\n * Even if this returns false, the customer may still be able to update it if\n * getPublicUpdateAccess returns true or a role that the customer belongs to has\n * update access.\n * @param customerId An instance of Nimbu.Customer or its id, or a Nimbu.Role.\n * @return {Boolean}\n */\n getUpdateAccess(customerId: string | NimbuCustomer | NimbuRole) {\n return this._getPermission('update', customerId)\n }\n\n /*\n * Set whether the given customer id is allowed to update this object.\n * @param customerId An instance of Nimbu.Customer or its id, or a Nimbu.Role..\n * @param {Boolean} allowed Whether that customer should have update access.\n */\n allowDelete(customerId: string | NimbuCustomer | NimbuRole, allowed = true) {\n return this._setPermission('delete', customerId, allowed)\n }\n\n /*\n * Get whether the given customer id is *explicitly* allowed to update this object.\n * Even if this returns false, the customer may still be able to update it if\n * getPublicUpdateAccess returns true or a role that the customer belongs to has\n * update access.\n * @param customerId An instance of Nimbu.Customer or its id, or a Nimbu.Role.\n * @return {Boolean}\n */\n getDeleteAccess(customerId: string | NimbuCustomer | NimbuRole) {\n return this._getPermission('delete', customerId)\n }\n\n /*\n * Set whether the public is allowed to read this object.\n * @param {Boolean} allowed\n */\n setPublicReadAccess(allowed = true) {\n return this.allowRead(PUBLIC_KEY, allowed)\n }\n\n /*\n * Get whether the public is allowed to read this object.\n * @return {Boolean}\n */\n getPublicReadAccess() {\n return this.getReadAccess(PUBLIC_KEY)\n }\n\n /*\n * Set whether the public is allowed to update this object.\n * @param {Boolean} allowed\n */\n setPublicUpdateAccess(allowed = true) {\n return this.allowUpdate(PUBLIC_KEY, allowed)\n }\n\n /*\n * Get whether the public is allowed to update this object.\n * @return {Boolean}\n */\n getPublicUpdateAccess() {\n return this.getUpdateAccess(PUBLIC_KEY)\n }\n\n /*\n * Set whether the public is allowed to delete this object.\n * @param {Boolean} allowed\n */\n setPublicDeleteAccess(allowed = true) {\n return this.allowDelete(PUBLIC_KEY, allowed)\n }\n\n /*\n * Get whether the public is allowed to delete this object.\n * @return {Boolean}\n */\n getPublicDeleteAccess() {\n return this.getDeleteAccess(PUBLIC_KEY)\n }\n\n /*\n * Set whether logged-in users are allowed to read this object.\n * @param {Boolean} allowed\n */\n setLoggedInReadAccess(allowed = true) {\n return this.allowRead(AUTHENTICATED_KEY, allowed)\n }\n\n /*\n * Get whether logged-in users are allowed to read this object.\n * @return {Boolean}\n */\n getLoggedInReadAccess() {\n return this.getReadAccess(AUTHENTICATED_KEY)\n }\n\n /*\n * Set whether logged-in users are allowed to update this object.\n * @param {Boolean} allowed\n */\n setLoggedInUpdateAccess(allowed = true) {\n return this.allowUpdate(AUTHENTICATED_KEY, allowed)\n }\n\n /*\n * Get whether logged-in users are allowed to update this object.\n * @return {Boolean}\n */\n getLoggedInUpdateAccess() {\n return this.getUpdateAccess(AUTHENTICATED_KEY)\n }\n\n /*\n * Set whether logged-in users are allowed to delete this object.\n * @param {Boolean} allowed\n */\n setLoggedInDeleteAccess(allowed = true) {\n return this.allowDelete(AUTHENTICATED_KEY, allowed)\n }\n\n /*\n * Get whether logged-in users are allowed to delete this object.\n * @return {Boolean}\n */\n getLoggedInDeleteAccess() {\n return this.getDeleteAccess(AUTHENTICATED_KEY)\n }\n\n /*\n * Get whether customers belonging to the given role are allowed\n * to read this object. Even if this returns false, the role may\n * still be able to write it if a parent role has read access.\n *\n * @param role The name of the role, or a Nimbu.Role object.\n * @return {Boolean} true if the role has read access. false otherwise.\n * @throws {String} If role is neither a Nimbu.Role nor a String.\n */\n getRoleReadAccess(role: string | NimbuRole) {\n // Normalize to the String name\n if (role instanceof NimbuRole) {\n role = role.getName()\n }\n\n if (isString(role)) {\n return this.getReadAccess('role:' + role)\n }\n\n throw 'role must be a Nimbu.Role or a String'\n }\n\n /*\n * Get whether customers belonging to the given role are allowed\n * to write this object. Even if this returns false, the role may\n * still be able to write it if a parent role has write access.\n *\n * @param role The name of the role, or a Nimbu.Role object.\n * @return {Boolean} true if the role has write access. false otherwise.\n * @throws {String} If role is neither a Nimbu.Role nor a String.\n */\n getRoleUpdateAccess(role: string | NimbuRole) {\n // Normalize to the String name\n if (role instanceof NimbuRole) {\n role = role.getName()\n }\n if (isString(role)) {\n return this.getUpdateAccess('role:' + role)\n }\n throw 'role must be a Nimbu.Role or a String'\n }\n\n /*\n * Get whether customers belonging to the given role are allowed\n * to delete this object. Even if this returns false, the role may\n * still be able to write it if a parent role has write access.\n *\n * @param role The name of the role, or a Nimbu.Role object.\n * @return {Boolean} true if the role has write access. false otherwise.\n * @throws {String} If role is neither a Nimbu.Role nor a String.\n */\n getRoleDeleteAccess(role: string | NimbuRole) {\n // Normalize to the String name\n if (role instanceof NimbuRole) {\n role = role.getName()\n }\n if (isString(role)) {\n return this.getDeleteAccess('role:' + role)\n }\n throw 'role must be a Nimbu.Role or a String'\n }\n\n /*\n * Set whether customers belonging to the given role are allowed\n * to read this object.\n *\n * @param role The name of the role, or a Nimbu.Role object.\n * @param {Boolean} allowed Whether the given role can read this object.\n * @throws {String} If role is neither a Nimbu.Role nor a String.\n */\n setRoleReadAccess(role: string | NimbuRole, allowed = true) {\n // Normalize to the String name\n if (role instanceof NimbuRole) {\n role = role.getName()\n }\n if (isString(role)) {\n this.allowRead('role:' + role, allowed)\n return\n }\n throw 'role must be a Nimbu.Role or a String'\n }\n\n /*\n * Set whether customers belonging to the given role are allowed\n * to update this object.\n *\n * @param role The name of the role, or a Nimbu.Role object.\n * @param {Boolean} allowed Whether the given role can write this object.\n * @throws {String} If role is neither a Nimbu.Role nor a String.\n */\n setRoleUpdateAccess(role: string | NimbuRole, allowed = true) {\n // Normalize to the String name\n if (role instanceof NimbuRole) {\n role = role.getName()\n }\n if (isString(role)) {\n this.allowUpdate('role:' + role, allowed)\n return\n }\n throw 'role must be a Nimbu.Role or a String'\n }\n\n /*\n * Set whether customers belonging to the given role are allowed\n * to delete this object.\n *\n * @param role The name of the role, or a Nimbu.Role object.\n * @param {Boolean} allowed Whether the given role can write this object.\n * @throws {String} If role is neither a Nimbu.Role nor a String.\n */\n setRoleDeleteAccess(role: string | NimbuRole, allowed = true) {\n // Normalize to the String name\n if (role instanceof NimbuRole) {\n role = role.getName()\n }\n if (isString(role)) {\n this.allowDelete('role:' + role, allowed)\n return\n }\n throw 'role must be a Nimbu.Role or a String'\n }\n}\n\nexport default NimbuACL\n","import { _request, RequestOptions } from '../internal'\n\n/*\nContains functions to directly talk with the Nimbu API\n@name Nimbu.API\n@namespace\n*/\nexport type APIRequestOptions = {\n useACL?: boolean\n}\n\nexport const GET = <T extends Record<string, any>>(path: string, options?: APIRequestOptions) =>\n request<T>('GET', path, undefined, options)\nexport const POST = <T extends Record<string, any>>(path: string, data: any, options?: APIRequestOptions) =>\n request<T>('POST', path, data, options)\nexport const PUT = <T extends Record<string, any>>(path: string, data: any, options?: APIRequestOptions) =>\n request<T>('PUT', path, data, options)\nexport const PATCH = <T extends Record<string, any>>(path: string, data: any, options?: APIRequestOptions) =>\n request<T>('PATCH', path, data, options)\nexport const DELETE = (path: string, options?: APIRequestOptions) => request('DELETE', path, undefined, options)\n\nexport const request = <T extends Record<string, any>>(\n method: string,\n path: string,\n data: any,\n options: APIRequestOptions = {}\n) => {\n if (!options) {\n options = {}\n }\n\n if (path.charAt(0) === '/' && path !== '/') {\n path = path.substring(1)\n }\n\n const requestData: RequestOptions = {\n path,\n method,\n useACL: options.useACL,\n }\n\n if ((method === 'POST' || method === 'PUT' || method === 'PATCH') && data != null) {\n requestData.data = data\n }\n\n return _request<T>(requestData)\n}\n\nexport const NimbuAPI = {\n get: GET,\n post: POST,\n put: PUT,\n patch: PATCH,\n delete: DELETE,\n request,\n}\n\nexport default NimbuAPI\n","import { indexOf, isArray, map } from 'underscore'\nimport { NimbuObject, NimbuQuery, _arrayEach, continueWhile } from '../internal'\n\ntype ModelsById = { [key: string]: NimbuObject }\n/*\n * Creates a new instance with the given models and options. Typically, you\n * will not call this method directly, but will instead make a subclass using\n * <code>Nimbu.Collection.extend</code>.\n *\n * @param {Array} models An array of instances of <code>Nimbu.Object</code>.\n *\n * @param {Object} options An optional object with Backbone-style options.\n * Valid options are:<ul>\n * <li>model: The Nimbu.Object subclass that this collection contains.\n * <li>query: An instance of Nimbu.Query to use when fetching items.\n * <li>comparator: A string property name or function to sort by.\n * </ul>\n *\n * @see Nimbu.Collection.extend\n *\n * @class\n *\n * <p>Provides a standard collection class for our sets of models, ordered\n * or unordered. For more information, see the\n * <a href=\"http://documentcloud.github.com/backbone/#Collection\">Backbone\n * documentation</a>.</p>\n */\nexport class NimbuCollection {\n models: NimbuObject[] = []\n\n comparator?: string\n model?: typeof NimbuObject\n query?: NimbuQuery\n\n private length = 0\n private _byCid: ModelsById = {}\n private _byId: ModelsById = {}\n\n constructor(\n models: any,\n options: {\n comparator?: string\n model?: typeof NimbuObject\n query?: NimbuQuery\n } = {}\n ) {\n if (options.comparator) {\n this.comparator = options.comparator\n }\n if (options.model) {\n this.model = options.model\n }\n if (options.query) {\n this.query = options.query\n }\n this._reset()\n // this.initialize.apply(this, arguments);\n if (models) {\n return this.reset(models, {\n silent: true,\n // parse: options.parse,\n })\n }\n }\n\n /*\n Initialize is an empty function by default. Override it with your own\n initialization logic.\n */\n initialize() {}\n\n /*\n The JSON representation of a Collection is an array of the\n models' attributes.\n */\n toJSON() {\n return map(this.models, (model) => model.toJSON())\n }\n\n /*\n Add a model, or list of models to the set. Pass **silent** to avoid\n firing the `add` event for every new model.\n\n @param {Array} models An array of instances of <code>Nimbu.Object</code>.\n\n @param {Object} options An optional object with Backbone-style options.\n Valid options are:<ul>\n <li>at: The index at which to add the models.\n <li>silent: Set to true to avoid firing the `add` event for every new\n model.\n </ul>\n */\n add(models: NimbuObject[], options: { at?: number; silent?: boolean; index?: any; parse?: boolean }) {\n let i = undefined\n let length = undefined\n let model = undefined\n\n const cids: ModelsById = {}\n const ids: ModelsById = {}\n options = options || {}\n models = isArray(models) ? models.slice() : [models]\n\n // Begin by turning bare objects into model references, and preventing\n // invalid models or duplicate models from being added.\n i = 0\n ;({ length } = models)\n\n while (i < length) {\n const model = this._prepareModel(models[i], options as any)\n\n if (!model) {\n throw new Error(\"Can't add an blank model to a collection\")\n }\n models[i] = model\n const cid = model.cid\n const id = model.id\n if (cids[cid] || this._byCid[cid] || (id != null && (ids[id] || this._byId[id]))) {\n // The model is already present in the collection\n models.splice(i, 1)\n ;({ length } = models)\n } else {\n if (id != null) ids[id] = model\n cids[cid] = model\n i++\n }\n }\n\n // Listen to added models' events, and index models for lookup by\n // `id` and by `cid`.\n i = 0\n while (i < length) {\n model = models[i] //.on('all', this._onModelEvent, this); //FIXME: add events back\n this._byCid[model.cid] = model\n if (model.id) {\n this._byId[model.id] = model\n }\n i++\n }\n\n // Insert models into the collection, re-sorting if needed, and triggering\n // `add` events unless silenced.\n this.length += length\n //t index = options.at == null ? this.models.length : options.at\n // this.models.splice.apply(this.models, [index, 0].concat(models));\n if (this.comparator) {\n // this.sort({ silent: true });\n }\n if (options.silent) {\n return this\n }\n i = 0\n ;({ length } = this.models)\n\n while (i < length) {\n model = this.models[i]\n if (cids[model.cid]) {\n options.index = i\n // model.trigger('add', model, this, options);\n }\n i++\n }\n return this\n }\n\n /*\n Remove a model, or a list of models from the set. Pass silent to avoid\n firing the <code>remove</code> event for every model removed.\n\n @param {Array} models The model or list of models to remove from the\n collection.\n @param {Object} options An optional object with Backbone-style options.\n Valid options are: <ul>\n <li>silent: Set to true to avoid firing the `remove` event.\n </ul>\n */\n remove(models: NimbuObject | NimbuObject[], options: { silent?: any; index?: any }) {\n let i = undefined\n let l = undefined\n let index = undefined\n let model = undefined\n options = options || {}\n models = isArray(models) ? models.slice() : [models]\n i = 0\n l = models.length\n\n while (i < l) {\n model = this.getByCid(models[i]) || this.get(models[i])\n if (!model) {\n continue\n }\n if (model.id != null) {\n delete this._byId[model.id]\n }\n\n delete this._byCid[model.cid]\n\n index = indexOf(this.models, model)\n this.models.splice(index, 1)\n this.length--\n if (!options.silent) {\n options.index = index\n // model.trigger('remove', model, this, options);\n }\n this._removeReference(model)\n i++\n }\n return this\n }\n\n /*\n Gets a model from the set by id.\n @param {String} id The Nimbu objectId identifying the Nimbu.Object to\n fetch from this collection.\n */\n get(id: NimbuObject | string) {\n const modelId = id instanceof NimbuObject && id.id != null ? id.id : (id as string)\n return modelId != null ? this._byId[modelId] : undefined\n }\n\n /*\n Gets a model from the set by client id.\n @param {} cid The Backbone collection id identifying the Nimbu.Object to\n fetch from this collection.\n */\n getByCid(cid: NimbuObject | string) {\n const modelId = cid instanceof NimbuObject && cid.cid != null ? cid.cid : (cid as string)\n return modelId != null ? this._byCid[modelId] : undefined\n }\n\n /*\n Gets the model at the given index.\n\n @param {Number} index The index of the model to return.\n */\n at(index: number) {\n return this.models[index]\n }\n\n // /*\n // Forces the collection to re-sort itself. You don't need to call this\n // under normal circumstances, as the set will maintain sort order as each\n // item is added.\n // @param {Object} options An optional object with Backbone-style options.\n // Valid options are: <ul>\n // <li>silent: Set to true to avoid firing the `reset` event.\n // </ul>\n // */\n // sort(options: { silent?: any }) {\n // options = options || {};\n // if (!this.comparator) {\n // throw new Error('Cannot sort a set without a comparator');\n // }\n // const boundComparator = _.bind(this.comparator, this);\n // if (this.comparator.length === 1) {\n // this.models = this.sortBy(boundComparator);\n // } else {\n // this.models.sort(boundComparator);\n // }\n // if (!options.silent) {\n // this.trigger('reset', this, options);\n // }\n // return this;\n // }\n\n /*\n Plucks an attribute from each model in the collection.\n @param {String} attr The attribute to return from each model in the\n collection.\n */\n pluck(attr: any) {\n return map(this.models, (model) => model.get(attr))\n }\n\n /*\n When you have more items than you want to add or remove individually,\n you can reset the entire set with a new list of models, without firing\n any `add` or `remove` events. Fires `reset` when finished.\n\n @param {Array} models The model or list of models to remove from the\n collection.\n @param {Object} options An optional object with Backbone-style options.\n Valid options are: <ul>\n <li>silent: Set to true to avoid firing the `reset` event.\n </ul>\n */\n reset(models: NimbuObject[], options: { parse?: any; silent?: any }) {\n models = models || []\n options = options || {}\n _arrayEach(this.models, (model: any) => this._removeReference(model))\n\n this._reset()\n this.add(models, {\n silent: true,\n parse: options.parse,\n })\n\n if (!options.silent) {\n // this.trigger('reset', this, options);\n }\n return this\n }\n\n /*\n Fetches the default set of models for this collection, resetting the\n collection when they arrive. If `add: true` is passed, appends the\n models to the collection instead of resetting.\n\n @param {Object} options An optional object with Backbone-style options.\n Valid options are:<ul>\n <li>silent: Set to true to avoid firing `add` or `reset` events for\n models fetched by this fetch.\n <li>success: A Backbone-style success callback.\n <li>error: An Backbone-style error callback.\n </ul>\n */\n fetch(\n options: { parse?: boolean; useACL?: boolean; add?: boolean } = {\n parse: true,\n }\n ) {\n if (options.parse == null) {\n options.parse = true\n }\n let count = 0\n if (!this.model) {\n throw new Error('No model defined for this collection')\n }\n const query = this.query || new NimbuQuery(this.model)\n let finished = false\n\n return continueWhile(\n () => !finished,\n () =>\n query.find({ useACL: options.useACL }).then((results: any) => {\n if (options.add || count > 0) {\n this.add(results, options as any)\n } else {\n this.reset(results, options)\n }\n\n count = count + 1\n\n if (query.hasNext()) {\n if (query.currentPage == null) {\n query.currentPage = 1\n }\n query.page(query.currentPage + 1)\n } else {\n finished = true\n }\n\n return this\n })\n ).then(() => this)\n }\n\n // /*\n // Creates a new instance of a model in this collection. Add the model to\n // the collection immediately, unless `wait: true` is passed, in which case\n // we wait for the server to agree.\n\n // @param {Nimbu.Object} model The new model to create and add to the\n // collection.\n // @param {Object} options An optional object with Backbone-style options.\n // Valid options are:<ul>\n // <li>wait: Set to true to wait for the server to confirm creation of the\n // model before adding it to the collection.\n // <li>silent: Set to true to avoid firing an `add` event.\n // <li>success: A Backbone-style success callback.\n // <li>error: An Backbone-style error callback.\n // <li>useMasterKey: In Cloud Code and Node only, uses the Master Key for\n // this request.\n // </ul>\n // */\n // create(model: NimbuObject, options: { wait?: boolean; success: any }) {\n // const coll = this;\n // options = options ? _.clone(options) : {};\n // model = this._prepareModel(model, options);\n // if (!model) {\n // return false;\n // }\n // if (!options.wait) {\n // coll.add(model, options);\n // }\n // const { success } = options;\n // options.success = function(\n // nextModel: { trigger: (arg0: string, arg1: any, arg2: any, arg3: any) => any },\n // resp: any,\n // xhr: any\n // ) {\n // if (options.wait) {\n // coll.add(nextModel, options);\n // }\n // if (success) {\n // return success(nextModel, resp);\n // } else {\n // return nextModel.trigger('sync', model, resp, options);\n // }\n // };\n\n // model.save(null, options);\n // return model;\n // }\n\n /*\n * Converts a response into a list of models to be added to the collection.\n * The default implementation is just to pass it through.\n * @ignore\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n parse(resp: any, xhr: any) {\n return resp\n }\n\n /*\n * Reset all internal state. Called when the collection is reset.\n */\n _reset() {\n this.length = 0\n this.models = []\n this._byId = {}\n this._byCid = {}\n }\n\n /*\n * Prepare a model or hash of attributes to be added to this collection.\n */\n _prepareModel(model: NimbuObject, options: { collection: any }) {\n if (!(model instanceof NimbuObject) && this.model != null) {\n const attrs = model\n options.collection = this\n model = new this.model(attrs, options)\n if (!model._validate(model.attributes)) {\n return false\n }\n } else if (!model.collection) {\n model.collection = this\n }\n return model\n }\n\n /*\n Internal method to remove a model's ties to a collection.\n */\n _removeReference(model: NimbuObject) {\n if (this === model.collection) {\n delete model.collection\n }\n // return model.off('all', this._onModelEvent, this);\n }\n\n // map(...args: any[]) {\n // return map(this.models, ...args);\n // }\n}\n\n// // Underscore methods that we want to implement on the Collection.\n// const methods = [\n// 'forEach',\n// 'each',\n// 'map',\n// 'reduce',\n// 'reduceRight',\n// 'find',\n// 'detect',\n// 'filter',\n// 'select',\n// 'reject',\n// 'every',\n// 'all',\n// 'some',\n// 'any',\n// 'include',\n// 'contains',\n// 'invoke',\n// 'max',\n// 'min',\n// 'sortBy',\n// 'sortedIndex',\n// 'toArray',\n// 'size',\n// 'first',\n// 'initial',\n// 'rest',\n// 'last',\n// 'without',\n// 'indexOf',\n// 'shuffle',\n// 'lastIndexOf',\n// 'isEmpty',\n// 'groupBy',\n// ];\n\n// // Mix in each Underscore method as a proxy to `Collection#models`.\n// _arrayEach(\n// methods,\n// (method: string | number) =>\n// (Collection.prototype[method] = function() {\n// return _[method].apply(_, [this.models].concat(_.toArray(arguments)));\n// })\n// );\n\n/*\nCreates a new subclass of <code>Nimbu.Collection</code>. For example,<pre>\nvar MyCollection = Nimbu.Collection.extend({\n// Instance properties\n\nmodel: MyClass,\nquery: MyQuery,\n\ngetFirst: function() {\nreturn this.at(0);\n}\n}, {\n// Class properties\n\nmakeOne: function() {\nreturn new MyCollection();\n}\n});\n\nvar collection = new MyCollection();\n</pre>\n\n@function\n@param {Object} instanceProps Instance properties for the collection.\n@param {Object} classProps Class properies for the collection.\n@return {Class} A new subclass of <code>Nimbu.Collection</code>.\n*/\n// Collection.extend = _extend;\n\n// Add Collection to the type registry\nexport default NimbuCollection\n","import {\n AtomicRelation,\n NimbuRelation,\n NimbuObject,\n NimbuFile,\n encode,\n NimbuAtomic,\n State,\n AttributeMap,\n AtomicsMap,\n TaskQueue,\n ObjectCache,\n} from '../internal'\n// import TaskQueue from './TaskQueue';\n\nexport function defaultState(): State {\n return {\n serverData: {},\n pendingAtomics: [{}],\n objectCache: {},\n tasks: new TaskQueue(),\n existed: false,\n }\n}\n\nexport function setServerData(serverData: AttributeMap, attributes: AttributeMap) {\n for (const attr in attributes) {\n if (typeof attributes[attr] !== 'undefined') {\n serverData[attr] = attributes[attr]\n } else {\n delete serverData[attr]\n }\n }\n}\n\nexport function setPendingAtomic(pendingAtomics: Array<AtomicsMap>, attr: string, atomic?: NimbuAtomic) {\n const last = pendingAtomics.length - 1\n if (atomic) {\n pendingAtomics[last][attr] = atomic\n } else {\n delete pendingAtomics[last][attr]\n }\n}\n\nexport function pushPendingState(pendingAtomics: Array<AtomicsMap>) {\n pendingAtomics.push({})\n}\n\nexport function popPendingState(pendingAtomics: Array<AtomicsMap>): AtomicsMap | undefined {\n const first = pendingAtomics.shift()\n if (!pendingAtomics.length) {\n pendingAtomics[0] = {}\n }\n return first\n}\n\nexport function mergeFirstPendingState(pendingAtomics: Array<AtomicsMap>) {\n const first = popPendingState(pendingAtomics)\n const next = pendingAtomics[0]\n for (const attr in first) {\n if (next[attr] && first[attr]) {\n const merged = next[attr].mergeWith(first[attr])\n if (merged) {\n next[attr] = merged\n }\n } else {\n next[attr] = first[attr]\n }\n }\n}\n\nexport function estimateAttribute(\n serverData: AttributeMap,\n pendingAtomics: Array<AtomicsMap>,\n className: string,\n id: string | undefined,\n attr: string\n): any {\n let value = serverData[attr]\n for (let i = 0; i < pendingAtomics.length; i++) {\n if (pendingAtomics[i][attr]) {\n if (pendingAtomics[i][attr] instanceof AtomicRelation) {\n if (id) {\n value = pendingAtomics[i][attr].applyTo(value, { className: className, id: id }, attr)\n }\n } else {\n value = pendingAtomics[i][attr].applyTo(value)\n }\n }\n }\n return value\n}\n\nexport function estimateAttributes(\n serverData: AttributeMap,\n pendingAtomics: Array<AtomicsMap>,\n className: string,\n id?: string\n): AttributeMap {\n const data: AttributeMap = {}\n let attr\n for (attr in serverData) {\n data[attr] = serverData[attr]\n }\n for (let i = 0; i < pendingAtomics.length; i++) {\n for (attr in pendingAtomics[i]) {\n if (pendingAtomics[i][attr] instanceof AtomicRelation) {\n if (id) {\n data[attr] = pendingAtomics[i][attr].applyTo(data[attr], { className: className, id: id }, attr)\n }\n } else {\n if (attr.includes('.')) {\n // convert a.b.c into { a: { b: { c: value } } }\n const fields = attr.split('.')\n const first = fields[0]\n const last = fields[fields.length - 1]\n data[first] = { ...serverData[first] }\n let object = { ...data }\n for (let i = 0; i < fields.length - 1; i++) {\n const key = fields[i]\n if (!(key in object)) {\n object[key] = {}\n }\n object = object[key]\n }\n object[last] = pendingAtomics[i][attr].applyTo(object[last])\n } else {\n data[attr] = pendingAtomics[i][attr].applyTo(data[attr])\n }\n }\n }\n }\n return data\n}\n\n/**\n * Allows setting variables deep in an object.\n * @param obj The object to assign the value to\n * @param key The key to assign. If it's in a deeper path, then use dot notation (`foo.bar.nested`)\n * Note that intermediate object(s) in the nested path are automatically created if they don't exist.\n * @param value The value to assign. If it's an `undefined` then the key is deleted.\n */\nfunction nestedSet(obj: AttributeMap, key: string, value: any) {\n const path = key.split('.')\n for (let i = 0; i < path.length - 1; i++) {\n if (!(path[i] in obj)) {\n obj[path[i]] = {}\n }\n obj = obj[path[i]]\n }\n if (typeof value === 'undefined') {\n delete obj[path[path.length - 1]]\n } else {\n obj[path[path.length - 1]] = value\n }\n}\n\nexport function commitServerChanges(serverData: AttributeMap, objectCache: ObjectCache, changes: AttributeMap) {\n for (const attr in changes) {\n const value = changes[attr]\n nestedSet(serverData, attr, value)\n if (\n value &&\n typeof value === 'object' &&\n !(value instanceof NimbuObject) &&\n !(value instanceof NimbuFile) &&\n !(value instanceof NimbuRelation)\n ) {\n const json = encode({\n value,\n disallowObjects: false,\n forcePointers: true,\n })\n objectCache[attr] = JSON.stringify(json)\n }\n }\n}\n","import * as ObjectStateMutations from './state-mutations'\n\nimport { AtomicsMap, AttributeMap, NimbuAtomic, ObjectCache, ObjectIdentifier, State } from '../internal'\n\nlet objectState: {\n [className: string]: {\n [id: string]: State\n }\n} = {}\n\nexport function getState(obj: ObjectIdentifier): State | null {\n const classData = objectState[obj.className]\n if (classData) {\n return classData[obj.id] || null\n }\n return null\n}\n\nexport function initializeState(obj: ObjectIdentifier, initial?: State): State {\n let state = getState(obj)\n if (state) {\n return state\n }\n if (!objectState[obj.className]) {\n objectState[obj.className] = {}\n }\n if (!initial) {\n initial = ObjectStateMutations.defaultState()\n }\n state = objectState[obj.className][obj.id] = initial\n return state\n}\n\nexport function removeState(obj: ObjectIdentifier): State | null {\n const state = getState(obj)\n if (state === null) {\n return null\n }\n delete objectState[obj.className][obj.id]\n return state\n}\n\nexport function getServerData(obj: ObjectIdentifier): AttributeMap {\n const state = getState(obj)\n if (state) {\n return state.serverData\n }\n return {}\n}\n\nexport function setServerData(obj: ObjectIdentifier, attributes: AttributeMap) {\n const serverData = initializeState(obj).serverData\n ObjectStateMutations.setServerData(serverData, attributes)\n}\n\nexport function getPendingAtomics(obj: ObjectIdentifier): Array<AtomicsMap> {\n const state = getState(obj)\n if (state) {\n return state.pendingAtomics\n }\n return [{}]\n}\n\nexport function setPendingAtomic(obj: ObjectIdentifier, attr: string, atomic?: NimbuAtomic) {\n const pendingAtomics = initializeState(obj).pendingAtomics\n ObjectStateMutations.setPendingAtomic(pendingAtomics, attr, atomic)\n}\n\nexport function pushPendingState(obj: ObjectIdentifier) {\n const pendingAtomics = initializeState(obj).pendingAtomics\n ObjectStateMutations.pushPendingState(pendingAtomics)\n}\n\nexport function popPendingState(obj: ObjectIdentifier): AtomicsMap | undefined {\n const pendingAtomics = initializeState(obj).pendingAtomics\n return ObjectStateMutations.popPendingState(pendingAtomics)\n}\n\nexport function mergeFirstPendingState(obj: ObjectIdentifier) {\n const pendingAtomics = getPendingAtomics(obj)\n ObjectStateMutations.mergeFirstPendingState(pendingAtomics)\n}\n\nexport function getObjectCache(obj: ObjectIdentifier): ObjectCache {\n const state = getState(obj)\n if (state) {\n return state.objectCache\n }\n return {}\n}\n\nexport function estimateAttribute(obj: ObjectIdentifier, attr: string): any {\n const serverData = getServerData(obj)\n const pendingAtomics = getPendingAtomics(obj)\n return ObjectStateMutations.estimateAttribute(serverData, pendingAtomics, obj.className, obj.id, attr)\n}\n\nexport function estimateAttributes(obj: ObjectIdentifier): AttributeMap {\n const serverData = getServerData(obj)\n const pendingAtomics = getPendingAtomics(obj)\n return ObjectStateMutations.estimateAttributes(serverData, pendingAtomics, obj.className, obj.id)\n}\n\nexport function commitServerChanges(obj: ObjectIdentifier, changes: AttributeMap) {\n const state = initializeState(obj)\n ObjectStateMutations.commitServerChanges(state.serverData, state.objectCache, changes)\n}\n\nexport function enqueueTask(obj: ObjectIdentifier, task: () => Promise<any>): Promise<void> {\n const state = initializeState(obj)\n return state.tasks.enqueue(task)\n}\n\nexport function clearAllState() {\n objectState = {}\n}\n\nexport function duplicateState(source: { id: string }, dest: { id: string }) {\n dest.id = source.id\n}\n","import _ from 'underscore'\nimport {\n AtomicsMap,\n AttributeMap,\n ChannelConfig,\n IAjax,\n IStorage,\n NimbuAtomic,\n NimbuCustomer,\n OAuth2,\n ObjectCache,\n State,\n Storage,\n VERSION,\n} from '../internal'\nimport * as StateManager from './state'\n\nexport type IStateManager = {\n getState: (obj: any) => State | null\n initializeState: (obj: any, initial?: State) => State\n removeState: (obj: any) => State | null\n getServerData: (obj: any) => AttributeMap\n setServerData: (obj: any, attributes: AttributeMap) => void\n getPendingAtomics: (obj: any) => Array<AtomicsMap>\n setPendingAtomic: (obj: any, attr: string, atomic?: NimbuAtomic) => void\n pushPendingState: (obj: any) => void\n popPendingState: (obj: any) => AtomicsMap | undefined\n mergeFirstPendingState: (obj: any) => void\n getObjectCache: (obj: any) => ObjectCache\n estimateAttribute: (obj: any, attr: string) => any\n estimateAttributes: (obj: any) => AttributeMap\n commitServerChanges: (obj: any, changes: AttributeMap) => void\n enqueueTask: (obj: any, task: () => Promise<void>) => Promise<void>\n clearAllState: () => void\n duplicateState: (source: any, dest: any) => void\n}\n\nexport type ILoginOptions<T extends ChannelConfig = ChannelConfig> = {\n remember?: boolean\n existingCustomerObject?: NimbuCustomer<T>\n}\n\nexport type ISessionManager<T extends ChannelConfig = ChannelConfig> = {\n logIn: (\n username: string,\n password: string,\n options?: ILoginOptions<T>\n ) => Promise<(NimbuCustomer<T> & { id: string }) | false>\n logOut: () => Promise<void>\n validate: () => Promise<(NimbuCustomer<T> & { id: string }) | false>\n}\n\nfunction requireMethods(name: string, methods: Array<string>, controller: any) {\n methods.forEach((func) => {\n if (typeof controller[func] !== 'function') {\n throw new Error(`${name} must implement ${func}()`)\n }\n })\n}\n\nexport const isIE = function () {\n if (typeof navigator === 'undefined' || navigator === null || navigator.userAgent == null) {\n return false\n }\n\n const myNav = navigator.userAgent.toLowerCase()\n if (myNav.indexOf('msie') !== -1) {\n return parseInt(myNav.split('msie')[1])\n } else {\n return false\n }\n}\n\n/*\n * The storage prefix when SSO is in use\n */\nconst SSO_STORAGE_PREFIX = 'sso'\n\nexport type InitialOAuth2AccessToken = {\n clientId: string\n refreshToken: string\n}\n\nconst isOAuth2AccessToken = (\n accessToken: string | InitialOAuth2AccessToken\n): accessToken is InitialOAuth2AccessToken => {\n return typeof accessToken !== 'string' && 'clientId' in accessToken && 'refreshToken' in accessToken\n}\n/*\n * Call this method first to set up your authentication tokens for Nimbu.\n * You can get your keys from the Data Browser on Nimbu.com.\n * @param {String} accessToken Your Nimbu Access Token.\n * @param {String} endpoint The endpoint to use (optional).\n * @param {String} installationId The installation id to use (optional).\n */\nexport const initialize = async (\n accessToken: string | InitialOAuth2AccessToken,\n endpoint?: string,\n installationId?: string\n) => {\n if (isOAuth2AccessToken(accessToken)) {\n Config.set('accessToken', undefined)\n Config.set('OAuth2Manager', new OAuth2(accessToken.clientId, { refreshToken: accessToken.refreshToken }))\n } else {\n Config.set('accessToken', accessToken)\n Config.set('OAuth2Manager', undefined)\n }\n\n Config.useACL = false\n Config.useSSO = false\n\n if (endpoint != null) {\n Config.set('endpoint', endpoint)\n }\n\n if (installationId != null) {\n Config.installationId = installationId\n }\n\n await initInstallationId()\n return await NimbuCustomer.initCurrent()\n}\n\n/*\n * Force the use of ACLs for the Nimbu SDK, even when using the Master key.\n */\nexport const useACL = () => {\n Config.useACL = true\n}\n\n/*\n * Indicate whether SSO is in use or not\n */\nexport const useSSO = function (sso: boolean) {\n if (sso == null) {\n sso = true\n } else {\n Config.useSSO = sso\n }\n return Config.useSSO\n}\n\n/*\n * Returns prefix for storage keys used by this instance of Nimbu.\n * @param {String} path The relative suffix to append to it.\n * null or undefined is treated as the empty string.\n * @return {String} The full key name.\n */\nexport const getStoragePath = function (path: string) {\n if (!Config.initialized) {\n throw 'You need to call Nimbu.initialize before using the SDK.'\n }\n\n if (!path) path = ''\n\n if (!_.isString(path)) {\n throw \"Tried to get a storage path that wasn't a String.\"\n }\n\n if (path[0] === '/') {\n path = path.substring(1)\n }\n\n let prefix = Config.accessToken ?? Config.clientId\n if (Config.useSSO) {\n prefix = SSO_STORAGE_PREFIX\n }\n\n return 'nimbu/' + prefix + '/' + path\n}\n\n/*\n * Returns the unique string for this app on this machine.\n * Gets reset when storage is cleared.\n */\nexport const getInstallationId = function () {\n if (Config.installationId) {\n return Config.installationId\n } else {\n throw 'You need to call Nimbu.initialize before using the SDK.'\n }\n}\n\nconst hexOctet = () =>\n Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1)\n\nconst initInstallationId = async (): Promise<string> => {\n if (Config.installationId != null && Config.installationId !== '') {\n return Config.installationId\n }\n\n // Try to get it from storage.\n const path = getStoragePath('installationId')\n const existingInstallationId = await Storage.getItem(path)\n\n if (!existingInstallationId || existingInstallationId === '') {\n // It wasn't in storage, so create a new one.\n const newInstallationId = `${hexOctet()}${hexOctet()}-${hexOctet()}-${hexOctet()}-${hexOctet()}-${hexOctet()}${hexOctet()}${hexOctet()} `\n await Storage.setItem(path, newInstallationId)\n Config.installationId = newInstallationId\n return newInstallationId\n } else {\n Config.installationId = existingInstallationId\n return existingInstallationId\n }\n}\n\ntype IConfig<T extends ChannelConfig = ChannelConfig> = {\n Ajax?: IAjax\n endpoint: string\n isNode: boolean\n OAuth2Manager?: OAuth2\n SessionManager?: ISessionManager<T>\n StateManager?: IStateManager\n Storage?: IStorage\n useACL: boolean\n useSSO: boolean\n version: string\n accessToken?: string\n installationId?: string\n}\n\nconst config: IConfig = {\n // Check whether we are running in Node.js.\n isNode:\n // eslint-disable-next-line no-undef\n typeof process !== 'undefined' && process !== null && process.versions && process.versions.node ? true : false,\n // Set the server for Nimbu to talk to.\n endpoint: 'https://api.nimbu.io',\n // Version Number\n version: 'js-' + VERSION,\n StateManager,\n useSSO: false,\n useACL: false,\n}\n\nexport const Config = {\n get<U extends ChannelConfig = ChannelConfig, K extends keyof IConfig<U> = never, T extends boolean = false>(\n key: K,\n allowNull: T = false as T\n ): T extends true ? IConfig[K] | undefined : IConfig[K] {\n if (Object.prototype.hasOwnProperty.call(config, key)) {\n return config[key]\n }\n if (!allowNull) {\n throw new Error('Configuration key not found: ' + key)\n } else {\n return undefined as T extends true ? IConfig[K] | undefined : IConfig[K]\n }\n },\n\n set<K extends keyof IConfig>(key: K, value: IConfig[K]): void {\n config[key] = value\n },\n\n get endpoint() {\n return config.endpoint\n },\n\n get version() {\n return config.version\n },\n\n get isNode() {\n return config.isNode\n },\n\n get useSSO() {\n return config.useSSO\n },\n\n set useSSO(value: boolean) {\n config.useSSO = value\n },\n\n get useACL() {\n return config.useACL\n },\n\n set useACL(value: boolean) {\n config.useACL = value\n },\n\n get accessToken(): string | undefined {\n return this.get('accessToken', true)\n },\n\n set accessToken(value: string) {\n this.set('accessToken', value)\n },\n\n get oauth2Client(): OAuth2 | undefined {\n return config.OAuth2Manager\n },\n\n get useOauth2(): boolean {\n return config.OAuth2Manager != null\n },\n\n get clientId(): string | undefined {\n return config.OAuth2Manager?.clientId\n },\n\n async getAccessToken() {\n if (config.OAuth2Manager != null) {\n // refresh the token if needed and return it\n return config.OAuth2Manager.getAccessToken()\n } else {\n // return the static access token\n return this.accessToken\n }\n },\n\n get initialized() {\n return this.accessToken != null || this.useOauth2\n },\n\n get installationId(): string | undefined {\n return this.get('installationId', true)\n },\n\n set installationId(value: string) {\n this.set('installationId', value)\n },\n\n get ajax(): IAjax {\n if (!config['Ajax']) {\n throw new Error('Use setAjax to setup the network layer')\n }\n\n return config['Ajax']\n },\n\n setAjax(fn: IAjax) {\n config['Ajax'] = fn\n },\n\n setStateManager(manager: IStateManager) {\n requireMethods(\n 'StateManager',\n [\n 'getState',\n 'initializeState',\n 'removeState',\n 'getServerData',\n 'setServerData',\n 'getPendingAtomics',\n 'setPendingAtomic',\n 'pushPendingState',\n 'popPendingState',\n 'mergeFirstPendingState',\n 'getObjectCache',\n 'estimateAttribute',\n 'estimateAttributes',\n 'commitServerChanges',\n 'enqueueTask',\n 'clearAllState',\n ],\n manager\n )\n\n config['StateManager'] = manager\n },\n\n getStateManager(): IStateManager {\n return config['StateManager']!\n },\n\n setStorage(storage: IStorage) {\n requireMethods('Storage', ['getItem', 'setItem', 'removeItem', 'getAllKeys'], storage)\n\n config['Storage'] = storage\n },\n\n getStorage(): IStorage {\n return config['Storage']!\n },\n\n setSessionManager<T extends ChannelConfig>(manager: ISessionManager<T>) {\n requireMethods('SessionManager', ['logIn', 'logOut'], manager)\n\n const typedConfig = config as unknown as IConfig<T> // FIXME: this feels wrong\n typedConfig['SessionManager'] = manager\n },\n\n getSessionManager<T extends ChannelConfig>(): ISessionManager<T> {\n const typedConfig = config as unknown as IConfig<T> // FIXME: this feels wrong\n\n return typedConfig['SessionManager']!\n },\n}\n","import { NimbuObject } from '../internal'\n\n/*\n@class\n\n<p>A Nimbu.Product object is a local representation of a user persisted to the\nNimbu cloud. This class is a subclass of a Nimbu.Object, and retains the\nsame functionality of a Nimbu.Object, but also extends it with various\nuser specific methods, like authentication, signing up, and validation of\nuniqueness.</p>\n*/\nexport class NimbuCoupon extends NimbuObject {\n constructor() {\n super('coupon')\n }\n}\n\nexport default NimbuCoupon\n","import {\n ChannelConfig,\n Config,\n ILoginOptions,\n ISetOptions,\n NimbuError,\n NimbuObject,\n Storage,\n _request,\n getStoragePath,\n} from '../internal'\n\n/*\n@class\n\n<p>A Nimbu.Customer object is a local representation of a user persisted to the\nNimbu cloud. This class is a subclass of a Nimbu.Object, and retains the\nsame functionality of a Nimbu.Object, but also extends it with various\nuser specific methods, like authentication, signing up, and validation of\nuniqueness.</p>\n*/\n\ntype ICommonCustomerFields = {\n firstname: string\n lastname: string\n email: string\n name: string\n password?: string\n}\n\nexport class NimbuCustomer<U extends ChannelConfig = ChannelConfig> extends NimbuObject<U & ICommonCustomerFields> {\n /**\n * @param {object} attributes The initial set of data to store in the user.\n */\n constructor(attributes?: Partial<U & ICommonCustomerFields>) {\n super('customers')\n if (attributes && typeof attributes === 'object') {\n if (!this.set(attributes || {})) {\n throw new Error(\"Can't create an invalid Nimbu Customer\")\n }\n }\n }\n\n // Instance Variables\n sessionToken: string | null = null\n\n // Instance Methods\n\n /*\n * Deauthenticates all providers.\n */\n _logOutWithAll() {\n const authData = this.get('authData')\n if (!authData) {\n return\n }\n // const self = this\n // return _objectEach(this.get('authData'), (value: any, key: any) => self._logOutWith(key));\n }\n\n /*\n * Signs up a new user. You should call this instead of save for\n * new Nimbu.Customers. This will create a new Nimbu.Customer on the server, and\n * also persist the session on disk so that you can access the user using\n * <code>current</code>.\n\n * <p>A username and password must be set before calling signUp.</p>\n\n * <p>Calls options.success or options.error on completion.</p>\n\n * @param {Object} attrs Extra fields to set on the new user, or null.\n * @return {Nimbu.Future} A promise that is fulfilled when the signup\n * finishes.\n * @see Nimbu.Customer.signUp\n */\n signUp(attrs: { username: any; password: any }) {\n let error = undefined\n const username = (attrs && attrs.username) || this.get('username')\n if (!username || username === '') {\n error = new NimbuError(NimbuError.OTHER_CAUSE, 'Cannot sign up customer with an empty name.')\n return Promise.reject(error)\n }\n const password = (attrs && attrs.password) || this.get('password')\n if (!password || password === '') {\n error = new NimbuError(NimbuError.OTHER_CAUSE, 'Cannot sign up customer with an empty password.')\n return Promise.reject(error)\n }\n\n return this.save(attrs)\n }\n\n /**\n * Wrap the default save behavior with functionality to save to local\n * storage if this is current user.\n *\n * @param {...any} args\n * @returns {Promise}\n */\n async save(...args: Array<any>): Promise<this & { id: string }> {\n await super.save.apply(this, args as any)\n\n if (this.isCurrent()) {\n await this.updateOnDisk()\n }\n\n return this as this & { id: string }\n }\n\n /**\n * Wrap the default fetch behavior with functionality to save to local\n * storage if this is current user.\n *\n * @param {...any} args\n * @returns {Promise}\n */\n async fetch(...args: Array<any>): Promise<this & { id: string }> {\n await super.fetch.apply(this, args as any)\n\n if (this.isCurrent()) {\n await this.updateOnDisk()\n }\n\n return this as this & { id: string }\n }\n\n /**\n * Wrap the default fetchWithInclude behavior with functionality to save to local\n * storage if this is current user.\n *\n * @param {...any} args\n * @returns {Promise}\n */\n async fetchWithInclude(...args: Array<any>): Promise<this & { id: string }> {\n await super.fetchWithInclude.apply(this, args as any)\n\n if (this.isCurrent()) {\n await this.updateOnDisk()\n }\n\n return this as this & { id: string }\n }\n\n /*\n * Logs in a Nimbu.Customer. On success, this saves the session to storage,\n * so you can retrieve the currently logged in user using\n * <code>current</code>.\n\n * <p>A username and password must be set before calling logIn.</p>\n\n * @param {Object} options A Backbone-style options object.\n * @see Nimbu.Customer.logIn\n * @return {Promise} A promise that is fulfilled with the user when the login is complete.\n */\n async logIn(options: ILoginOptions<U> = {}) {\n const email = this.get('email')\n const password = this.get('password')\n\n if (!email || !password) {\n throw new Error('Cannot log in customer without email and password')\n }\n\n options.existingCustomerObject = this\n const customer = await Config.getSessionManager<U>().logIn(email, password, options)\n\n if (customer) {\n const state = Config.getStateManager()\n state.setPendingAtomic(customer._getStateIdentifier(), 'email', undefined)\n state.setPendingAtomic(customer._getStateIdentifier(), 'password', undefined)\n\n return this as this & { id: string }\n } else {\n return false\n }\n }\n\n /*\n Returns true if <code>current</code> would return this user.\n @see Nimbu.Customer#current\n */\n isCurrent() {\n return NimbuCustomer.currentCustomer != null && NimbuCustomer.currentCustomer.id === this.id\n }\n\n get name() {\n return `${this.firstName} ${this.lastName}`\n }\n\n get firstName() {\n return this.get('firstname')\n }\n\n get lastName() {\n return this.get('lastname')\n }\n\n // legacy aliases\n get firstname() {\n return this.firstName\n }\n\n get lastname() {\n return this.lastName\n }\n\n /*\n Returns get(\"email\").\n @return {String}\n @see Nimbu.Object#get\n */\n get email() {\n return this.get('email')\n }\n\n /*\n Calls set(\"email\", email, options) and returns the result.\n @param {String} email\n @see Nimbu.Object.set\n */\n setEmail(email: string, options: ISetOptions) {\n return this.set('email', email as any, options)\n }\n\n /*\n Calls set(\"password\", password, options) and returns the result.\n @param {String} password\n @see Nimbu.Object.set\n */\n setPassword(password: string, options: any) {\n return this.set('password', password as any, options)\n }\n\n /*\n Checks whether this user is the current user and has been authenticated.\n @return (Boolean) whether this user is the current user and is logged in.\n */\n // authenticated() {\n // return (\n // this.id != null &&\n // !!this.session_token &&\n // NimbuCustomer.currentCustomer != null &&\n // NimbuCustomer.currentCustomer.id === this.id\n // )\n // }\n\n /*\n Get the customers autologin token\n\n @param {Object} options A Backbone-style options object.\n @return {Nimbu.Future} A promise that is fulfilled with the autologin token.\n */\n getAutologinToken() {\n if (!this.isCurrent()) {\n return Promise.reject('You can only request the autologin token for the current customer')\n } else {\n let token = null\n return _request({\n path: 'customers/me/authentication_token',\n method: 'GET',\n }).then(function ({ body }) {\n token = body.authentication_token\n return token\n })\n }\n }\n\n /*\n Get the customers autologin token\n\n @param {Object} options A Backbone-style options object.\n @return {Nimbu.Future} A promise that is fulfilled with the autologin token.\n */\n validateSession() {\n if (!this.isCurrent()) {\n return Promise.reject('You can validate the login session for the current customer')\n } else {\n return _request({\n path: 'customers/me',\n method: 'GET',\n }).catch(async (error: any) => {\n console.error(error)\n await NimbuCustomer.logOut()\n })\n }\n }\n\n async updateOnDisk() {\n const path = getStoragePath(NimbuCustomer.CURRENT_CUSTOMER_KEY)\n return Storage.setItem(path, JSON.stringify(this.toJSON()))\n }\n\n // Class Variables\n\n // The currently logged-in user.\n private static currentCustomer: NimbuCustomer | null = null\n\n // Whether currentCustomer is known to match the serialized version on disk.\n // This is useful for saving a storage check if you try to load\n // currentCustomer frequently while there is none stored.\n private static currentCustomerMatchesDisk = false\n\n // The storage key suffix that the current user is stored under.\n private static CURRENT_CUSTOMER_KEY = 'currentCustomer'\n\n // Class Methods\n\n /*\n Signs up a new user with a username (or email) and password.\n This will create a new Nimbu.Customer on the server, and also persist the\n session in storage so that you can access the user using\n {@link #current}.\n\n <p>Calls options.success or options.error on completion.</p>\n\n @param {String} username The username (or email) to sign up with.\n @param {String} password The password to sign up with.\n @param {Object} attrs Extra fields to set on the new user.\n @param {Object} options A Backbone-style options object.\n @return {Nimbu.Future} A promise that is fulfilled with the user when\n the signup completes.\n @see Nimbu.Customer#signUp\n */\n static signUp(username: string, password: string, attrs: any = {}) {\n attrs.username = username\n attrs.password = password\n const user = NimbuObject._create('customers') as NimbuCustomer\n return user.signUp(attrs)\n }\n\n /*\n Logs in a user with email and password. On success, this\n saves the session to disk, so you can retrieve the currently logged in\n user using <code>current</code>.\n\n @param {String} email The email to log in with.\n @param {String} password The password to log in with.\n @return {Promise<Nimbu.Customer | false>} A promise that is fulfilled with the user when the login completes. Returns false when the login fails.\n @see Nimbu.Customer#logIn\n */\n static async logIn<U extends ChannelConfig>(\n email: string,\n password: string,\n options: ILoginOptions<U> = {}\n ): Promise<false | (NimbuCustomer<U> & { id: string })> {\n const result = await Config.getSessionManager<U>().logIn(email, password, options)\n if (result) {\n NimbuCustomer.setCurrent(result)\n await NimbuCustomer.currentCustomer!.updateOnDisk()\n }\n return result\n }\n\n // /*\n // Logs in a user with a session token. On success, this saves the session\n // to disk, so you can retrieve the currently logged in user using\n // <code>current</code>.\n\n // <p>Calls options.success or options.error on completion.</p>\n\n // @param {String} sessionToken The sessionToken to log in with.\n // @param {Object} options A Backbone-style options object.\n // @return {Nimbu.Future} A promise that is fulfilled with the user when\n // the login completes.\n // */\n // static async become(sessionToken: string, options: Pick<RequestOptions, 'useACL'> = {}) {\n // // const user = NimbuObject._create('customers') as NimbuCustomer\n // // const { body, status, xhr } = await _request({\n // // route: 'customers',\n // // className: 'me',\n // // method: 'GET',\n // // useACL: options.useACL,\n // // sessionToken,\n // // })\n // // const serverAttrs = user.parse(body, status, xhr)\n // // serverAttrs.session_token = sessionToken\n // // user._finishFetch(serverAttrs)\n // // return user\n // }\n\n /*\n Logs out the currently logged in user session. This will remove the\n session from disk and future calls to\n <code>current</code> will return <code>null</code>.\n */\n static async logOut() {\n await Config.getSessionManager().logOut()\n NimbuCustomer.currentCustomer = null\n\n // This is asynchronous, but we don't care about the result\n await Storage.removeItem(getStoragePath(NimbuCustomer.CURRENT_CUSTOMER_KEY))\n return true\n }\n\n /*\n Requests a password reset email to be sent to the specified email address\n associated with the user account. This email allows the user to securely\n reset their password on the Nimbu site.\n\n <p>Calls options.success or options.error on completion.</p>\n\n @param {String} email The email address associated with the user that\n forgot their password.\n @param {Object} options A Backbone-style options object.\n */\n static requestPasswordReset(email: any, options: { useACL?: any }) {\n options = options || {}\n return _request({\n route: 'customers',\n className: 'password/reset',\n method: 'POST',\n useACL: options.useACL,\n data: {\n email,\n },\n })\n }\n\n /*\n Validates the currently logged in NimbuCustomer using the meta headers\n provided in the html page. If no customer is logged in, it automatically\n signs out the current customer object.\n @return {Nimbu.Object} The currently logged in Nimbu.Customer.\n */\n static async validateCurrent<T extends ChannelConfig = ChannelConfig>() {\n return Config.getSessionManager<T>().validate()\n }\n\n /*\n Retrieves the currently logged in NimbuCustomer with a valid session,\n either from memory or storage, if necessary.\n @return {Nimbu.Object} The currently logged in Nimbu.Customer.\n */\n static current<U extends ChannelConfig = ChannelConfig>(): (NimbuCustomer<U> & { id: string }) | null {\n if (NimbuCustomer.currentCustomer || NimbuCustomer.currentCustomerMatchesDisk) {\n return NimbuCustomer.currentCustomer as unknown as NimbuCustomer<U> & { id: string }\n } else if (!Config.initialized) {\n throw 'You need to call Nimbu.initialize before using the SDK.'\n } else {\n return null\n }\n }\n\n private static setCurrent<U extends ChannelConfig = ChannelConfig>(customer: NimbuCustomer<U>) {\n NimbuCustomer.currentCustomer = customer as unknown as NimbuCustomer\n }\n\n static async initCurrent(): Promise<NimbuCustomer | null> {\n if (NimbuCustomer.currentCustomer) {\n return NimbuCustomer.currentCustomer\n }\n\n if (NimbuCustomer.currentCustomerMatchesDisk) {\n return Promise.resolve(NimbuCustomer.currentCustomer)\n }\n\n // Load the user from local Storage.\n const customerFromStorage = await Storage.getItem(getStoragePath(NimbuCustomer.CURRENT_CUSTOMER_KEY))\n NimbuCustomer.currentCustomerMatchesDisk = true\n\n if (!customerFromStorage) return null\n\n const customerJSON = JSON.parse(customerFromStorage)\n const currentCustomer = NimbuObject.fromJSON(customerJSON, 'customers') as NimbuCustomer // this allows for subclassing and overriding the default customer class\n NimbuCustomer.currentCustomer = currentCustomer\n return currentCustomer\n }\n}\n\nNimbuObject.registerSubclass('customers', NimbuCustomer)\n\nexport type PersistedNimbuCustomer = NimbuCustomer & { id: string }\nexport default NimbuCustomer\n","import { enc } from 'crypto-js'\nimport AES from 'crypto-js/aes'\n\nimport {\n AjaxHeaders,\n Config,\n ILoginOptions,\n ISessionManager,\n NimbuCustomer,\n NimbuObject,\n PersistedNimbuCustomer,\n VERSION,\n _request,\n getInstallationId,\n} from '../internal'\n\nconst OAuth2SessionManager = {\n logIn: async (\n email: string,\n password: string,\n options: ILoginOptions = {}\n ): Promise<PersistedNimbuCustomer | false> => {\n if (Config.oauth2Client == null) throw new Error('OAuth2 client not configured')\n\n const success = await Config.oauth2Client.logIn(email, password, !!options.remember)\n if (!success) return false\n\n const currentCustomer = options.existingCustomerObject ?? new NimbuCustomer()\n const { body, status, xhr } = await _request({\n route: 'customers',\n className: 'me',\n method: 'GET',\n })\n currentCustomer._finishFetch(currentCustomer.parse(body, status, xhr))\n\n return currentCustomer as PersistedNimbuCustomer\n },\n\n logOut: async () => {\n if (Config.oauth2Client == null) throw new Error('OAuth2 client not configured')\n\n await Config.oauth2Client.logOut()\n },\n\n validate: async (): Promise<PersistedNimbuCustomer | false> => {\n try {\n const accessToken = await Config.getAccessToken()\n if (accessToken == null) return false\n\n const currentCustomer = NimbuCustomer.current()\n if (currentCustomer == null) {\n return false\n }\n\n const { body, status, xhr } = await _request({\n route: 'customers',\n className: 'me',\n method: 'GET',\n })\n currentCustomer._finishFetch(currentCustomer.parse(body, status, xhr))\n return currentCustomer\n } catch (error) {\n await OAuth2SessionManager.logOut()\n return false\n }\n },\n}\n\nconst BasicSessionManager = {\n // eslint-disable-next-line @typescript-eslint/require-await\n logIn: async (\n email: string,\n password: string,\n options: ILoginOptions = {}\n ): Promise<PersistedNimbuCustomer | false> => {\n console.log('options', options)\n return false // TODO: implement\n },\n\n // eslint-disable-next-line @typescript-eslint/require-await\n logOut: async () => {\n return // TODO: implement\n },\n\n validate: async (): Promise<PersistedNimbuCustomer | false> => {\n Config.useSSO = true\n let sso_id: string | null = null\n\n if (!Config.accessToken) {\n throw 'You must specify your accessToken using Nimbu.initialize().'\n }\n\n if (typeof document === 'undefined' || document === null || typeof window === 'undefined' || window === null) {\n throw 'Nimbu.Customer.validateCurrent() can only be run from within a browser.'\n }\n\n // get meta headers\n const metaTags = document.getElementsByTagName('meta')\n let sso_data = null\n let i = 0\n\n while (i < metaTags.length) {\n if (metaTags[i].getAttribute('property') === 'nimbu:sso:current') {\n sso_data = metaTags[i].getAttribute('content')\n break\n }\n i++\n }\n\n let sso_url: string | null = null\n i = 0\n\n while (i < metaTags.length) {\n if (metaTags[i].getAttribute('property') === 'nimbu:sso:authorize_url') {\n sso_url = metaTags[i].getAttribute('content')\n break\n }\n i++\n }\n\n // get CSRF token\n let csrfToken: string | null = null\n i = 0\n\n while (i < metaTags.length) {\n if (metaTags[i].getAttribute('name') === 'csrf-token') {\n csrfToken = metaTags[i].getAttribute('content')\n break\n }\n i++\n }\n\n if (csrfToken == null) {\n throw 'Please include the CSRF meta tags in your html header.'\n }\n\n if (sso_data != null && sso_url != null) {\n try {\n sso_id = AES.decrypt(decodeURIComponent(sso_data), Config.accessToken).toString(enc.Utf8)\n } catch (e) {\n sso_id = 'unauthenticated'\n }\n }\n\n const customer = NimbuCustomer.current()\n\n if (sso_id == null || sso_id === 'unauthenticated') {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n await NimbuCustomer.logOut()\n return false\n } else if (customer != null && sso_id !== customer.id) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n await NimbuCustomer.logOut()\n return false\n } else if (\n sso_url != null &&\n sso_id != null &&\n sso_id !== 'unauthenticated' &&\n (customer == null || sso_id !== customer.id)\n ) {\n const { body } = await _request({\n route: 'customers',\n className: 'sso',\n method: 'POST',\n })\n\n let sharedSSOSecret: string | null = AES.decrypt(body.shared_secret, Config.accessToken).toString(enc.Utf8)\n const headers: AjaxHeaders = {}\n headers._clientVersion = VERSION\n headers._accessToken = Config.accessToken\n headers._installationId = getInstallationId()\n headers._csrfToken = csrfToken\n\n const { body: customerBody, status, xhr } = await Config.ajax('POST', sso_url, JSON.stringify({}), headers)\n const model = NimbuObject._create('customers') as NimbuCustomer\n\n const serverAttrs = model.parse(customerBody, status, xhr)\n serverAttrs.session_token = AES.decrypt(serverAttrs.session_token, sharedSSOSecret).toString(enc.Utf8)\n\n sharedSSOSecret = null\n\n model._finishFetch(serverAttrs)\n await model.updateOnDisk()\n return model as PersistedNimbuCustomer\n } else {\n return customer != null ? customer : false\n }\n },\n}\n\nexport const DefaultSessionManager: ISessionManager = {\n logIn: (email: string, password: string, options?: ILoginOptions) => {\n if (Config.useOauth2) {\n return OAuth2SessionManager.logIn(email, password, options)\n } else {\n return BasicSessionManager.logIn(email, password, options)\n }\n },\n\n logOut: () => {\n if (Config.useOauth2) {\n return OAuth2SessionManager.logOut()\n } else {\n return BasicSessionManager.logOut()\n }\n },\n\n validate: () => {\n if (Config.useOauth2) {\n return OAuth2SessionManager.validate()\n } else {\n return BasicSessionManager.validate()\n }\n },\n}\n\nConfig.setSessionManager(DefaultSessionManager)\n\nexport default DefaultSessionManager\n","import { NimbuObject, AttributeMap } from '../internal'\n\n/*\n@class\n\n<p>A Nimbu.Device object is a local representation of a user persisted to the\nNimbu cloud. This class is a subclass of a Nimbu.Object, and retains the\nsame functionality of a Nimbu.Object, but also extends it with various\nuser specific methods, like authentication, signing up, and validation of\nuniqueness.</p>\n*/\nexport class NimbuDevice extends NimbuObject {\n constructor(attributes?: AttributeMap) {\n super('device', attributes)\n }\n}\n\nexport default NimbuDevice\n","/**\n * Constructs a new Nimbu.Error object with the given code and message.\n *\n * @alias Nimbu.Error\n */\nexport class NimbuError extends Error {\n code: number\n errors: any[] | undefined\n\n constructor(code: number, message?: string) {\n super(message)\n\n this.code = code\n }\n\n toString() {\n return 'NimbuError: ' + this.code + ' ' + this.message\n }\n\n /*\n Error code indicating some error other than those enumerated here.\n */\n static OTHER_CAUSE = -1\n\n /*\n Error code indicating that something has gone wrong with the server.\n If you get this error code, it is Nimbu's fault.\n */\n static INTERNAL_SERVER_ERROR = 1\n\n /*\n Error code indicating the connection to the Nimbu servers failed.\n */\n static CONNECTION_FAILED = 100\n\n /*\n Error code indicating the specified object doesn't exist.\n */\n static OBJECT_NOT_FOUND = 101\n\n /*\n Error code indicating you tried to query with a datatype that doesn't\n support it, like exact matching an array or object.\n */\n static INVALID_QUERY = 102\n\n /*\n Error code indicating a missing or invalid classname. Classnames are\n case-sensitive. They must start with a letter, and a-zA-Z0-9_ are the\n only valid characters.\n */\n static INVALID_CLASS_NAME = 103\n\n /*\n Error code indicating an unspecified object id.\n */\n static MISSING_OBJECT_ID = 104\n\n /*\n Error code indicating an invalid key name. Keys are case-sensitive. They\n must start with a letter, and a-zA-Z0-9_ are the only valid characters.\n */\n static INVALID_KEY_NAME = 105\n\n /*\n Error code indicating a malformed pointer. You should not see this unless\n you have been mucking about changing internal Nimbu code.\n */\n static INVALID_POINTER = 106\n\n /*\n Error code indicating that badly formed JSON was received upstream. This\n either indicates you have done something unusual with modifying how\n things encode to JSON, or the network is failing badly.\n */\n static INVALID_JSON = 107\n\n /*\n Error code indicating that the feature you tried to access is only\n available internally for testing purposes.\n */\n static COMMAND_UNAVAILABLE = 108\n\n /*\n You must call Nimbu.initialize before using the Nimbu library.\n */\n static NOT_INITIALIZED = 109\n\n /*\n Error code indicating that a field was set to an inconsistent type.\n */\n static INCORRECT_TYPE = 111\n\n /*\n Error code indicating an invalid channel name. A channel name is either\n an empty string (the broadcast channel) or contains only a-zA-Z0-9_\n characters and starts with a letter.\n */\n static INVALID_CHANNEL_NAME = 112\n\n /*\n Error code indicating that push is misconfigured.\n */\n static PUSH_MISCONFIGURED = 115\n\n /*\n Error code indicating that the object is too large.\n */\n static OBJECT_TOO_LARGE = 116\n\n /*\n Error code indicating that the operation isn't allowed for clients.\n */\n static OPERATION_FORBIDDEN = 119\n\n /*\n Error code indicating the result was not found in the cache.\n */\n static CACHE_MISS = 120\n\n /*\n Error code indicating that an invalid key was used in a nested\n JSONObject.\n */\n static INVALID_NESTED_KEY = 121\n\n /*\n Error code indicating that an invalid filename was used for NimbuFile.\n A valid file name contains only a-zA-Z0-9_. characters and is between 1\n and 128 characters.\n */\n static INVALID_FILE_NAME = 122\n\n /*\n Error code indicating an invalid ACL was provided.\n */\n static INVALID_ACL = 123\n\n /*\n Error code indicating that the request timed out on the server. Typically\n this indicates that the request is too expensive to run.\n */\n static TIMEOUT = 124\n\n /*\n Error code indicating that the email address was invalid.\n */\n static INVALID_EMAIL_ADDRESS = 125\n\n /*\n Error code indicating a missing content type.\n */\n static MISSING_CONTENT_TYPE = 126\n\n /*\n Error code indicating a missing content length.\n */\n static MISSING_CONTENT_LENGTH = 127\n\n /*\n Error code indicating an invalid content length.\n */\n static INVALID_CONTENT_LENGTH = 128\n\n /*\n Error code indicating a file that was too large.\n */\n static FILE_TOO_LARGE = 129\n\n /*\n Error code indicating an error saving a file.\n */\n static FILE_SAVE_ERROR = 130\n\n /*\n Error code indicating an error deleting a file.\n */\n static FILE_DELETE_ERROR = 153\n\n /*\n Error code indicating that a unique field was given a value that is\n already taken.\n */\n static DUPLICATE_VALUE = 137\n\n /*\n Error code indicating that a role's name is invalid.\n */\n static INVALID_ROLE_NAME = 139\n\n /*\n Error code indicating that an application quota was exceeded. Upgrade to\n resolve.\n */\n static EXCEEDED_QUOTA = 140\n\n /*\n Error code indicating that a Cloud Code script failed.\n */\n static SCRIPT_FAILED = 141\n\n /*\n Error code indicating that a Cloud Code validation failed.\n */\n static VALIDATION_ERROR = 142\n\n /*\n Error code indicating that invalid image data was provided.\n */\n static INVALID_IMAGE_DATA = 150\n\n /*\n Error code indicating an unsaved file.\n */\n static UNSAVED_FILE_ERROR = 151\n\n /*\n Error code indicating an invalid push time.\n */\n static INVALID_PUSH_TIME_ERROR = 152\n\n /*\n Error code indicating that the username is missing or empty.\n */\n static USERNAME_MISSING = 200\n\n /*\n Error code indicating that the password is missing or empty.\n */\n static PASSWORD_MISSING = 201\n\n /*\n Error code indicating that the username has already been taken.\n */\n static USERNAME_TAKEN = 202\n\n /*\n Error code indicating that the email has already been taken.\n */\n static EMAIL_TAKEN = 203\n\n /*\n Error code indicating that the email is missing, but must be specified.\n */\n static EMAIL_MISSING = 204\n\n /*\n Error code indicating that a user with the specified email was not found.\n */\n static EMAIL_NOT_FOUND = 205\n\n /*\n Error code indicating that a user object without a valid session could\n not be altered.\n */\n static SESSION_MISSING = 206\n\n /*\n Error code indicating that a user can only be created through signup.\n */\n static MUST_CREATE_USER_THROUGH_SIGNUP = 207\n\n /*\n Error code indicating that an an account being linked is already linked\n to another user.\n */\n static ACCOUNT_ALREADY_LINKED = 208\n\n /*\n Error code indicating that a user cannot be linked to an account because\n that account's id could not be found.\n */\n static LINKED_ID_MISSING = 250\n\n /*\n Error code indicating that a user with a linked (e.g. Facebook) account\n has an invalid session.\n */\n static INVALID_LINKED_SESSION = 251\n\n /*\n Error code indicating that a service being linked (e.g. Facebook or\n Twitter) is unsupported.\n */\n static UNSUPPORTED_SERVICE = 252\n\n /*\n Error code indicating that there were multiple errors. Aggregate errors\n have an \"errors\" property, which is an array of error objects with more\n detail about each error that occurred.\n */\n static AGGREGATE_ERROR = 600\n}\n\nexport default NimbuError\n","import { isArray, isObject, isString } from 'underscore'\nimport { encodeBase64, NimbuObject, AtomicRemoveFile } from '../internal'\n\ntype Base64 = { base64: string }\ntype Uri = { uri: string }\n\ntype ICommonFile = {\n url: string\n filename: string\n width: number\n height: number\n content_type: string\n version: string\n checksum: string\n size: number\n}\n\ninterface IPublicFile extends ICommonFile {\n private: false\n permanent_url?: never\n permanent_relative_url?: never\n permanent_backend_url?: never\n}\n\ninterface IPrivateFile extends ICommonFile {\n private: true\n permanent_url: string\n permanent_relative_url: string\n permanent_backend_url: string\n}\n\ndeclare type NimbuFileFromAPI = ICommonFile & (IPublicFile | IPrivateFile)\n\ntype FileData = Array<number> | Base64 | Blob | Uri | NimbuFileFromAPI\n\nconst isNimbuFileFromAPI = (data: FileData): data is NimbuFileFromAPI => {\n return isObject(data) && 'url' in data && data.url != null\n}\n\nconst isPrivateNimbuFile = (data: FileData): data is IPrivateFile => {\n return isNimbuFileFromAPI(data) && data.private\n}\n\nconst isBase64Data = (data: FileData): data is Base64 => {\n return isObject(data) && 'base64' in data && data.base64 != null\n}\n\nexport class NimbuFile {\n filename: string\n private: boolean\n\n url?: string\n width?: number\n height?: number\n content_type?: string\n version?: string\n checksum?: string\n size?: number\n\n permanent_url?: string\n permanent_relative_url?: string\n permanent_backend_url?: string\n\n // base64 representation of the file\n _data?: string\n\n parent?: NimbuObject\n key?: string\n removed = false\n\n constructor(filename: string, data: FileData) {\n this.filename = filename\n this.private = false\n\n if (data != null && isNimbuFileFromAPI(data)) {\n this.url = data.url\n this.width = data.width\n this.height = data.height\n this.content_type = data.content_type\n this.version = data.version\n this.checksum = data.checksum\n this.size = data.size\n\n if (isPrivateNimbuFile(data)) {\n this.private = true\n this.permanent_url = data.permanent_url\n this.permanent_relative_url = data.permanent_relative_url\n this.permanent_backend_url = data.permanent_backend_url\n } else {\n this.private = false\n }\n } else if (data != null && isObject(data) && isBase64Data(data)) {\n // if the string contains data uri, extract based64 and the type out of it.\n const regexp = /^data:([a-zA-Z]*\\/[a-zA-Z+.-]*);(charset=[a-zA-Z0-9\\-/\\s]*,)?base64,(\\S+)/\n const matches = regexp.exec(data.base64)\n\n if (matches && matches.length > 0) {\n // if data is an URI with charset, there will have 4 matches.\n this._data = matches.length === 4 ? matches[3] : matches[2]\n } else {\n this._data = data.base64\n }\n } else if (data != null && isArray(data)) {\n this._data = encodeBase64(data)\n } else if (isString(data)) {\n throw 'Creating a Nimbu.File from a String is not yet supported.'\n }\n }\n\n /*\n * Makes sure that this file has the right parent and key.\n */\n _ensureParentAndKey(parent: NimbuObject, key: string) {\n this.parent = this.parent || parent\n this.key = this.key || key\n if (this.parent !== parent) {\n throw 'Internal Error. File retrieved from two different Objects.'\n }\n if (this.key !== key) {\n throw 'Internal Error. File retrieved from two different keys.'\n }\n }\n\n /*\n * Returns a JSON version of the object suitable for saving to disk.\n * @return {Object}\n */\n toJSON() {\n const json: {\n __type: string\n filename: string\n attachment?: string\n url?: string\n } = {\n __type: 'File',\n filename: this.filename,\n }\n if (this._data != null) {\n json.attachment = this._data\n }\n\n if (this.url != null) {\n json.url = this.url\n }\n\n return json\n }\n\n remove() {\n if (this.parent != null && this.key != null) {\n this.removed = true\n this.parent.set(this.key, new AtomicRemoveFile())\n return true\n } else {\n throw 'Internal Error. Tried to remove a File that is not linked to an Object.'\n }\n }\n}\n\nexport default NimbuFile\n","import { _request, encode } from '../internal'\n\nexport const NimbuCloud = {\n /*\n * Makes a call to a cloud function.\n * @param {String} name The function name.\n * @param {Object} data The parameters to send to the cloud function.\n * @return {Nimbu.Future} A promise that will be resolved with the result\n * of the function.\n */\n async run<T extends Record<string, any> = any>(name: string, data: any): Promise<T> {\n const { body } = await _request({\n route: 'functions',\n className: name,\n method: 'POST',\n data: encode({ value: data, seenObjects: null, disallowObjects: true }),\n })\n\n if (body && body.code === 141) {\n return Promise.reject(body)\n } else {\n return body.result\n }\n },\n}\n\nexport default NimbuCloud\n","import { all, each, indexOf, isArray, isObject, map } from 'underscore'\nimport { AtomicGallery, ChannelConfig, NimbuGalleryImage, NimbuObject, encode } from '../internal'\n\n// We need to check the properties of the gallery, since after a change, the instance of the gallery can change\nconst galleryMatches = function (image: NimbuGalleryImage, gallery: NimbuGallery, blankAllowed: boolean) {\n if (blankAllowed && image.gallery == null) {\n return true\n }\n if (gallery != null) {\n return (\n (image.gallery != null ? image.gallery.parent : undefined) === (gallery != null ? gallery.parent : undefined) &&\n (image.gallery != null ? image.gallery.key : undefined) === (gallery != null ? gallery.key : undefined)\n )\n } else {\n return image.gallery == null\n }\n}\n\nconst validImage = function (image: any, requiredGallery: any, blankGalleryAllowed = false) {\n return image instanceof NimbuGalleryImage && galleryMatches(image, requiredGallery, blankGalleryAllowed)\n}\n\nconst validImages = function (images: any, requiredGallery: any, blankGalleryAllowed = false) {\n if (!isObject(images)) {\n return false\n }\n return (\n validImage(images, requiredGallery, blankGalleryAllowed) ||\n (isArray(images) && all(images, (image: any) => validImage(image, requiredGallery, blankGalleryAllowed)))\n )\n}\n\nexport class NimbuGallery<P extends ChannelConfig = ChannelConfig> {\n parent: NimbuObject<P> | null\n key: string\n _images: NimbuGalleryImage<P>[]\n\n constructor(parent: NimbuObject<P> | null, key: string, images?: NimbuGalleryImage<P>[]) {\n this.parent = parent\n this.key = key\n if (images != null) {\n this._images = images\n each(this._images, (image) => image._setGallery(this))\n } else {\n this._images = []\n }\n }\n\n /*\n * Makes sure that this relation has the right parent and key.\n */\n _ensureParentAndKey(parent: NimbuObject<P>, key: string) {\n this.parent = this.parent || parent\n this.key = this.key || key\n if (this.parent !== parent) {\n throw 'Internal Error. Gallery retrieved from two different Objects.'\n }\n if (this.key !== key) {\n throw 'Internal Error. Gallery retrieved from two different keys.'\n }\n }\n\n /*\n * List images in the gallery\n */\n list() {\n return this._images\n }\n\n /*\n * Add (an) image(s) to the gallery\n */\n add(images: NimbuGalleryImage<P>[]) {\n if (!validImages(images, this, true)) {\n throw \"You must supply a Nimbu.GalleryImage or array of Nimbu.GalleryImage that don't belong to a gallery yet.\"\n }\n if (!isArray(images)) {\n images = [images]\n }\n const change = new AtomicGallery(images, [], [])\n\n this.parent?.set(this.key as any, change)\n }\n\n /*\n * Remove (an) image(s) from the gallery\n */\n remove(images: NimbuGalleryImage[]) {\n if (!validImages(images, this)) {\n throw 'You must supply a Nimbu.GalleryImage or array of Nimbu.GalleryImage that belong to this gallery.'\n }\n if (!isArray(images)) {\n images = [images]\n }\n const change = new AtomicGallery([], images, [])\n this.parent?.set(this.key as any, change)\n }\n\n /*\n * Record dirtyness of an image\n */\n _updateImage(image: NimbuGalleryImage<P>, changes: any) {\n if (!validImage(image, this)) {\n throw 'You must supply a Nimbu.GalleryImage that belongs to this gallery.'\n }\n // Save the original image\n const index = indexOf(this._images, image)\n this._images[index] = new NimbuGalleryImage(image.attributes)\n const updates: any = {}\n updates[image.id] = changes\n const change = new AtomicGallery([], [], updates)\n this.parent?.set(this.key as any, change)\n }\n\n /*\n * Returns a JSON version of the object suitable for saving to disk.\n * @return {Object}\n */\n toJSON() {\n return {\n __type: 'Gallery',\n images: map(this._images, (image) => encode({ value: image })),\n }\n }\n}\n\n// // Underscore methods that we want to implement on gallery.\n// const methods = [\n// 'forEach',\n// 'each',\n// 'map',\n// 'reduce',\n// 'reduceRight',\n// 'find',\n// 'detect',\n// 'filter',\n// 'select',\n// 'reject',\n// 'every',\n// 'all',\n// 'some',\n// 'any',\n// 'include',\n// 'contains',\n// 'invoke',\n// 'max',\n// 'min',\n// 'sortBy',\n// 'sortedIndex',\n// 'toArray',\n// 'size',\n// 'first',\n// 'initial',\n// 'rest',\n// 'last',\n// 'without',\n// 'indexOf',\n// 'shuffle',\n// 'lastIndexOf',\n// 'isEmpty',\n// 'groupBy',\n// ];\n\n// // Mix in each Underscore method as a proxy to `Gallery#_images`.\n// _arrayEach(\n// methods,\n// (method: string) =>\n// (NimbuGallery.prototype[method] = function() {\n// return _[method].apply(_, [this._images].concat(_.toArray(arguments)));\n// })\n// );\n\nexport default NimbuGallery\n","import { clone } from 'underscore'\nimport { AttributeMap, ChannelConfig, NimbuGallery, encode } from '../internal'\n\nexport type NimbuGalleryImageJSON = {\n __type: 'GalleryImage'\n id: string\n caption?: string\n position?: number\n file?: string\n}\n\nexport class NimbuGalleryImage<P extends ChannelConfig = ChannelConfig> {\n id: string\n attributes: AttributeMap\n gallery?: NimbuGallery<P>\n\n constructor(attributes: AttributeMap) {\n this.id = attributes.id\n this.attributes = clone(attributes) || {}\n }\n\n /*\n * Set the Gallery this image belongs to.\n */\n _setGallery(gallery: NimbuGallery<P>) {\n this.gallery = gallery\n }\n\n /*\n * Is an attribute set\n */\n has(key: string | number) {\n return this.attributes[key] != null\n }\n\n /*\n * Get an atribute\n */\n get(key: string | number) {\n return this.attributes[key]\n }\n\n /*\n * Set an attribute\n */\n set(key: string | number, value: any) {\n if (this.gallery != null && this.id != null) {\n // As long as we are not in a gallery or if we are a new object, we don't care about tracking changes\n const changes: AttributeMap = {}\n changes[key] = value\n this.gallery._updateImage(this, changes)\n }\n return (this.attributes[key] = value)\n }\n\n /*\n * Returns a JSON version of the object suitable for saving to disk.\n * @return {Object}\n */\n toJSON() {\n const json: NimbuGalleryImageJSON = {\n __type: 'GalleryImage',\n id: this.id,\n }\n if (this.has('caption')) {\n json.caption = this.get('caption')\n }\n if (this.has('position')) {\n json.position = this.get('position')\n }\n if (this.has('file')) {\n json.file = encode(this.get('file'))\n }\n\n return json\n }\n}\n\nexport default NimbuGalleryImage\n","import { extend, isUndefined, isNull, isObject, each, keys, isFunction } from 'underscore'\n\n// Helpers\n// -------\n\n// Shared empty constructor function to aid in prototype-chain creation.\nconst EmptyConstructor = function () {}\n\n// Helper function to correctly set up the prototype chain, for subclasses.\n// Similar to `goog.inherits`, but uses a hash of prototype properties and\n// class properties to be extended.\nconst inherits = function (parent: any, protoProps?: any, staticProps?: any) {\n let child = undefined\n\n // The constructor function for the new subclass is either defined by you\n // (the \"constructor\" property in your `extend` definition), or defaulted\n // by us to simply call the parent's constructor.\n if (protoProps && Object.prototype.hasOwnProperty.call(protoProps, 'constructor')) {\n child = protoProps.constructor\n } else {\n child = function (this: any) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, prefer-rest-params\n return parent.apply(this, arguments)\n }\n }\n\n // Inherit class (static) properties from parent.\n extend(child, parent)\n\n // Set the prototype chain to inherit from `parent`, without calling\n // `parent`'s constructor function.\n EmptyConstructor.prototype = parent.prototype\n child.prototype = Object.create(EmptyConstructor.prototype)\n\n // Add prototype properties (instance properties) to the subclass,\n // if supplied.\n if (protoProps) {\n extend(child.prototype, protoProps)\n }\n\n // Add static properties to the constructor function, if supplied.\n if (staticProps) {\n extend(child, staticProps)\n }\n\n // Correctly set child's `prototype.constructor`.\n child.prototype.constructor = child\n\n // Set a convenience property in case the parent's prototype is\n // needed later.\n child.__super__ = parent.prototype\n return child\n}\n\n// A self-propagating extend function.\nexport const _extend = function (this: any, protoProps: any, classProps: any) {\n const child = inherits(this, protoProps, classProps)\n child.extend = this.extend\n return child\n}\n\nexport const _arrayEach = each\n\n/*\nThis is like _.each, except:\nit doesn't work for so-called array-like objects,\nit does work for dictionaries with a \"length\" attribute.\n*/\nexport const _objectEach = function (obj: { [x: string]: any }, callback: (arg0: any, arg1: any) => any) {\n if (isObject(obj)) {\n return each(keys(obj), (key: string | number) => callback(obj[key], key))\n } else {\n return each(obj, callback)\n }\n}\n\nexport const _each = _objectEach\n\n// Helper function to check null or undefined.\nexport const _isNullOrUndefined = (x: any) => isNull(x) || isUndefined(x)\n\nexport const _trim = (string: string) => string.replace(/^\\s+|\\s+$/g, '')\n\nexport const _toCamel = (string: string) =>\n string.replace(/(_[a-z])/g, ($1: string) => $1.toUpperCase().replace('_', ''))\n\nexport const _toUnderscore = (string: string) => string.replace(/([A-Z])/g, ($1: string) => '_' + $1.toLowerCase())\n\n// Helper function to get a value from a Backbone object as a property\n// or as a function.\nexport const _getValue = function (object: { [x: string]: any }, prop: string | number) {\n if (!object || !object[prop]) {\n return null\n }\n const value = object[prop]\n if (isFunction(value)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n return value()\n } else {\n return value\n }\n}\n\nexport const parseDate = function (iso8601: any) {\n // detect if iso8601 is already a Date object\n if (iso8601 instanceof Date) {\n return iso8601\n }\n\n const regexp = new RegExp(\n '^([0-9]{1,4})-([0-9]{1,2})-([0-9]{1,2})T([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})(.([0-9]+))?Z$'\n )\n const match = regexp.exec(iso8601)\n if (!match) {\n return null\n }\n\n const year = Number(match[1]) || 0\n const month = (Number(match[2]) ?? 1) - 1\n const day = Number(match[3]) || 0\n const hour = Number(match[4]) || 0\n const minute = Number(match[5]) || 0\n const second = Number(match[6]) || 0\n const milli = Number(match[8]) || 0\n\n return new Date(Date.UTC(year, month, day, hour, minute, second, milli))\n}\n\nexport const _toQueryString = function (obj: any) {\n const parts = []\n for (const i in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, i)) {\n parts.push(encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]))\n }\n }\n return parts.join('&')\n}\n","import { _request, NimbuObject, NimbuError } from '../internal'\n\n/*\n * @class\n *\n * <p>A Nimbu.Order object is a local representation of a user persisted to the\n * Nimbu cloud. This class is a subclass of a Nimbu.Object, and retains the\n * same functionality of a Nimbu.Object, but also extends it with various\n * user specific methods, like authentication, signing up, and validation of\n * uniqueness.</p>\n */\nexport class NimbuOrder extends NimbuObject {\n constructor(attributes: any) {\n super('order', attributes)\n }\n\n // Instance Methods\n\n isCurrent() {\n return this.id === 'current'\n }\n\n async add(product: any, quantity: any, extras: any) {\n if (!this.isCurrent()) {\n return Promise.reject(new NimbuError(-1, 'You can only add line items to the current order'))\n }\n const data = {\n product,\n quantity,\n extras,\n }\n\n const { body } = await _request({\n path: `orders/${this.id}/items`,\n method: 'POST',\n data,\n })\n\n this._finishSave(body)\n\n // Set the id back to current\n this.id = 'current'\n return this\n }\n\n async remove(item: { id: string }) {\n // remove the order item\n if (!this.isCurrent()) {\n return Promise.reject(new NimbuError(-1, 'You can only remove items from the current order'))\n }\n\n const { body } = await _request({\n path: `orders/${this.id}/items/${item.id}`,\n method: 'DELETE',\n })\n\n this._finishSave(body)\n this.id = 'current'\n return this\n }\n\n getItems() {\n return this.get('items')\n }\n // Class Methods\n /*\n @lends Nimbu.Order\n */\n\n static current() {\n return new NimbuOrder({ id: 'current' })\n }\n}\n\nexport default NimbuOrder\n","import { ChannelConfig, NimbuObject, NimbuQuery } from '../internal'\n\ninterface ICommonPageItemFields extends ChannelConfig {\n slug: string\n type: string\n // repeatables: ReferenceMany<NimbuPageRepeatable>\n content: any\n}\n\nexport class NimbuPageItem extends NimbuObject<ICommonPageItemFields> {\n repeatables: NimbuPageRepeatable[] = []\n slug?: string\n type?: string\n content?: any\n parent?: NimbuPage\n\n constructor(attributes?: any) {\n super('page_items', attributes)\n }\n\n // _mergeSystemFields(attrs: { [x: string]: any; hasOwnProperty: (arg0: any) => any }) {\n // const specialFields = ['slug', 'type', 'repeatables', 'content', 'parent']\n // _arrayEach(specialFields, function (attr: string | number) {\n // if (Object.prototype.hasOwnProperty.call(attrs, attr)) {\n // switch (attr) {\n // case 'repeatables':\n // this[attr] = (attrs[attr] || []).map((values: any) => {\n // const repeatable = new NimbuPageRepeatable()\n // const repeatableValues = Object.assign({}, values, {\n // parent: this,\n // })\n // repeatable._finishFetch(repeatableValues)\n // return repeatable\n // })\n // delete attrs[attr]\n // break\n // default:\n // this.set(attr, attrs[attr])\n // }\n // }\n // })\n\n // // return super._mergeSystemFields.call(this, attrs)\n // }\n\n // _getSaveJSON() {\n // const json = super._getSaveJSON() ?? {}\n // json.repeatables = (this.repeatables || []).map((repeatable) => repeatable._getSaveJSON())\n // return json\n // }\n\n async save(key: any, val: any, options: any) {\n await this.parent?.save(key, val, options)\n\n return this as this & { id: string }\n }\n}\n\ntype PageItemsBySlug = { [slug: string]: NimbuPageItem }\n\n// interface ICommonPageRepeatableFields extends ChannelConfig {\n// slug: string\n// position: number\n// parent: NimbuPageItem\n// }\n\nexport class NimbuPageRepeatable extends NimbuObject {\n items: PageItemsBySlug = {}\n slug?: string\n position?: number\n parent?: NimbuPageItem\n\n constructor(attributes?: any) {\n super('page_repeatables', attributes)\n }\n\n // _mergeSystemFields(attrs: { [x: string]: any; hasOwnProperty: (arg0: any) => any }) {\n // const model = this\n // const specialFields = ['slug', 'position', 'parent', 'items']\n // _arrayEach(specialFields, function (attr: string | number) {\n // if (Object.prototype.hasOwnProperty.call(attrs, attr)) {\n // switch (attr) {\n // case 'items':\n // var itemObjects: PageItemsBySlug = {}\n // _arrayEach(keys(attrs[attr]), function (key: string | number) {\n // const value = attrs[attr][key]\n // const pageItem = new NimbuPageItem()\n // const pageItemValues = Object.assign({}, value, {\n // id: `page-${model.id}-item-${key}`,\n // parent: model,\n // })\n // pageItem._finishFetch(pageItemValues)\n // itemObjects[key] = pageItem\n // })\n\n // model.items = itemObjects\n // delete attrs[attr]\n // break\n // default:\n // ;(model as any)[attr] = attrs[attr]\n // }\n // }\n // })\n\n // // return super._mergeSystemFields.call(this, attrs)\n // }\n\n // _getSaveJSON() {\n // const json = super._getSaveJSON() ?? {}\n // json.id = this.id\n // _arrayEach(keys(this.items), function (key: string) {\n // const itemJson = this.items[key]._getSaveJSON()\n // if (Object.keys(itemJson).length > 0) {\n // if (!json.items) {\n // json.items = {}\n // }\n // json.items[key] = itemJson\n // }\n // })\n\n // return json\n // }\n\n markForDeletion() {\n return this.set('_destroy', true)\n }\n\n async save(\n key: any,\n val: any,\n options: {\n wait?: boolean\n useACL?: boolean\n forceChannel?: boolean\n locale?: string\n silent?: boolean\n } = {}\n ) {\n await this.parent?.save(key, val, options)\n\n return this as this & { id: string }\n }\n}\n\n/*\n@class\n\n<p>A Nimbu.Page object is a local representation of a page persisted to the\nNimbu cloud. This class is a subclass of a Nimbu.Object, and retains the\nsame functionality of a Nimbu.Object, but also extends it with various\nuser specific methods, like page items, translations, etc.</p>\n*/\nexport class NimbuPage extends NimbuObject {\n slug?: string\n published?: boolean\n homepage?: boolean\n fullpath?: string\n path?: string\n position?: number\n template?: string\n title?: string\n public_url?: string\n url?: string\n parent_path?: string\n parent?: NimbuPage\n items: PageItemsBySlug = {}\n\n constructor(attributes?: any) {\n super('page', attributes)\n }\n\n // _mergeSystemFields(attrs: { [x: string]: any; hasOwnProperty: (arg0: any) => any }) {\n // const model = this\n // const specialFields = [\n // 'slug',\n // 'published',\n // 'homepage',\n // 'fullpath',\n // 'position',\n // 'template',\n // 'title',\n // 'public_url',\n // 'url',\n // 'parent_path',\n // 'parent',\n // 'items',\n // ]\n // _arrayEach(specialFields, function (attr: string | number) {\n // if (Object.prototype.hasOwnProperty.call(attrs, attr)) {\n // switch (attr) {\n // case 'published':\n // case 'homepage':\n // return (model[attr] = !!attrs[attr])\n // case 'public_url':\n // return (model.url = attrs[attr])\n // case 'fullpath':\n // return (model.fullpath = model.path = attrs[attr])\n // case 'url':\n // return delete attrs[attr]\n // case 'items':\n // var itemObjects: PageItemsBySlug = {}\n // _arrayEach(keys(attrs[attr]), function (key: string) {\n // const value = attrs[attr][key]\n // const pageItem = new NimbuPageItem()\n // const pageItemValues = Object.assign({}, value, {\n // id: `page-${model.id}-item-${key}`,\n // parent: model,\n // })\n // pageItem._finishFetch(pageItemValues)\n // itemObjects[key] = pageItem\n // })\n\n // model.items = itemObjects\n // return delete attrs[attr]\n // case 'parent':\n // model.parent = new NimbuPage()\n // model.parent._finishFetch({ id: attrs[attr] })\n // return (attrs[attr] = model.parent)\n // default:\n // ;(model as any)[attr] = attrs[attr]\n // }\n // }\n // })\n\n // // return super._mergeSystemFields.call(this, attrs)\n // }\n\n getItem(slug: string | number) {\n return this.items[slug]\n }\n\n // _getSaveJSON() {\n // const json = super._getSaveJSON.call(this)\n // const model = this\n // _arrayEach(keys(this.items), function (key: string) {\n // const itemJson = model.items[key]._getSaveJSON()\n // if (Object.keys(itemJson).length > 0) {\n // if (!json.items) {\n // json.items = {}\n // }\n // json.items[key] = itemJson\n // }\n // })\n\n // return json\n // }\n\n static get(idOrPath: string) {\n const query = new NimbuQuery('page')\n if (idOrPath.match(/^[0-9a-fA-F]{24}$/)) {\n return query.get(idOrPath)\n } else {\n return query.equalTo('fullpath', idOrPath.replace(/^\\/|\\/$/g, '')).first()\n }\n }\n}\n\nexport default NimbuPage\n","import { ChannelConfig, NimbuObject, NimbuProductAggregate, NimbuRelation } from '../internal'\n\n/*\n@class\n\n<p>A Nimbu.Product object is a local representation of a user persisted to the\nNimbu cloud. This class is a subclass of a Nimbu.Object, and retains the\nsame functionality of a Nimbu.Object, but also extends it with various\nuser specific methods, like authentication, signing up, and validation of\nuniqueness.</p>\n*/\n\ntype IProductVariant = {\n price: number\n on_sale_price: number\n no_taxes: boolean\n no_shipping: boolean\n stock: number\n amount_in_cart: number\n amount_sold: number\n}\n\ntype ICommonProductFields = {\n name: string\n description: string\n digital: boolean\n requires_shipping: boolean\n weight?: number\n sku?: string\n status: string\n variants: IProductVariant[]\n images: any[] // FIXME: define image type\n variantsEnabled: boolean\n subproducts: NimbuRelation<{\n product: string | object\n variant: string | object\n }>\n}\n\nexport class NimbuProduct<T extends ChannelConfig = ChannelConfig> extends NimbuObject<T & ICommonProductFields> {\n constructor(attributes: Partial<T & ICommonProductFields>) {\n super('product', attributes)\n }\n\n // Instance Methods\n\n getVariants() {\n return this.get('variants')\n }\n\n hasVariants() {\n return this.get('variantsEnabled')\n }\n\n getSubProducts() {\n return this.relation('subproducts')!\n }\n\n addSubProduct(product: string | object | NimbuProduct<T>, variant: string | object | NimbuProduct<T>) {\n // add a product aggregate to the relation\n return this.getSubProducts().add(\n new NimbuProductAggregate({\n product,\n variant,\n })\n )\n }\n\n removeSubProduct(aggregate: any) {\n return this.getSubProducts().remove(aggregate)\n }\n}\n\nexport default NimbuProduct\n","import { compact } from 'underscore'\nimport { NimbuCollection, NimbuObject, NimbuProduct } from '../internal'\n\nfunction hasId(obj: any): obj is { id: string } {\n return obj != null && obj.id != null\n}\n\n/*\n@class\n\n<p>A Nimbu.ProductAggregate object is a local representation of a product aggregate in the Nimbu Cloud.\nA product aggregate is a reference to a specific product with a specific variant. This class is a subclass\nof a Nimbu.Object, and retains the same functionality of a Nimbu.Object, but also extends it with various\nuser specific methods.</p>\n*/\nexport class NimbuProductAggregate extends NimbuObject<{\n product: string\n variant: string\n}> {\n /*\n @lends Nimbu.ProductAggregate.prototype\n */\n\n constructor(\n attributes: Partial<{\n id?: string\n product?: string | object\n variant?: string | object\n }> = {},\n options: { ignoreValidation?: boolean; collection?: NimbuCollection } = {}\n ) {\n const attrs = { ...attributes } as {\n id?: string\n product?: string\n variant?: string\n }\n let product = attributes['product']\n let variant = attributes['variant']\n\n if (hasId(product)) {\n product = product.id\n }\n\n if (hasId(variant)) {\n variant = variant.id\n }\n\n const id = compact([product, variant]).join('-')\n if (id != null) {\n attrs['id'] = id\n }\n attrs['product'] = undefined\n attrs['variant'] = undefined\n\n super('product_aggregate', attrs, options)\n }\n\n getProductId() {\n let parts: string[] | undefined = undefined\n if (this.id != null) {\n parts = this.id.split('-')\n }\n if (parts != null && (parts?.length ?? 0) >= 1) {\n return parts[0]\n } else {\n return undefined\n }\n }\n\n getVariantId() {\n let parts: string[] | undefined = undefined\n if (this.id != null) {\n parts = this.id.split('-')\n }\n if (parts != null && (parts?.length ?? 0) === 2) {\n return parts[1]\n } else {\n return undefined\n }\n }\n\n getProduct() {\n return new NimbuProduct({ id: this.getProductId() })\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n save(_key: any, _val: any, _options: any) {\n return Promise.reject('Product Aggregates are read-only')\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async fetch(_options: any) {\n // There is nothing to fetch\n return await Promise.resolve(this as this & { id: string })\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n destroy(options: any) {\n return Promise.reject('Product Aggregates are read-only')\n }\n}\n\nexport default NimbuProductAggregate\n","import { _request, RequestOptions } from '../internal'\n\n/*\n * Contains functions to deal with Push in Nimbu\n * @name Nimbu.Push\n * @namespace\n */\n\n/*\n * Sends a push notification.\n * @param {Object} data - The data of the push notification. Valid fields\n * are:\n * <ol>\n * <li>where - A Nimbu.Query over Nimbu.Device that is used to match\n * a set of installations to push to.</li>\n * <li>data - The data to send as part of the push</li>\n * <ol>\n * @param {Object} options An object that has an optional success function,\n * that takes no arguments and will be called on a successful push, and\n * an error function that takes a Nimbu.Error and will be called if the push\n * failed.\n */\n\nexport const NimbuPush = {\n send(data: { data: any; where: { toQueryString: () => any } }, options: { useACL?: any }) {\n if (!options) {\n options = {}\n }\n\n const requestData: RequestOptions = {\n route: 'push',\n method: 'POST',\n useACL: options.useACL,\n data: data.data,\n }\n\n if (data.where) {\n requestData.query = data.where.toQueryString()\n }\n\n return _request(requestData)\n },\n}\n\nexport default NimbuPush\n","// Nimbu.Query is a way to create a list of Nimbu.Objects.\n\nimport {\n ChannelConfig,\n NimbuCollection,\n NimbuError,\n NimbuObject,\n RequestOptions,\n _arrayEach,\n _objectEach,\n _request,\n _toQueryString,\n continueWhile,\n decode,\n encode,\n} from '../internal'\n\nimport { clone, each, extend, isArray, isEmpty, isNull, isString, isUndefined, map } from 'underscore'\n\nexport type NimbuQueryOptions = {\n useACL?: boolean\n forceChannel?: boolean\n}\n\n/*\n * Creates a new parse Nimbu.Query for the given Nimbu.Object subclass.\n * @param objectClass -\n * An instance of a subclass of Nimbu.Object, or a Nimbu className string.\n * @class\n\n * <p>Nimbu.Query defines a query that is used to fetch Nimbu.Objects. The\n * most common use case is finding all objects that match a query through the\n * <code>find</code> method. For example, this sample code fetches all objects\n * of class <code>MyClass</code>. It calls a different function depending on\n * whether the fetch succeeded or not.\n\n * <pre>\n * var query = new Nimbu.Query(MyClass);\n * query.find({\n * success: function(results) {\n * // results is an array of Nimbu.Object.\n * },\n\n * error: function(error) {\n * // error is an instance of Nimbu.Error.\n * }\n * });</pre></p>\n\n * <p>A Nimbu.Query can also be used to retrieve a single object whose id is\n * known, through the get method. For example, this sample code fetches an\n * object of class <code>MyClass</code> and id <code>myId</code>. It calls a\n * different function depending on whether the fetch succeeded or not.\n\n * <pre>\n * var query = new Nimbu.Query(MyClass);\n * query.get(myId, {\n * success: function(object) {\n * // object is an instance of Nimbu.Object.\n * },\n\n * error: function(object, error) {\n * // error is an instance of Nimbu.Error.\n * }\n * });</pre></p>\n\n * <p>A Nimbu.Query can also be used to count the number of objects that match\n * the query without retrieving all of those objects. For example, this\n * sample code counts the number of objects of the class <code>MyClass</code>\n * <pre>\n * var query = new Nimbu.Query(MyClass);\n * query.count({\n * success: function(number) {\n * // There are number instances of MyClass.\n * },\n\n * error: function(error) {\n * // error is an instance of Nimbu.Error.\n * }\n * });</pre></p>\n */\nexport class NimbuQuery<T extends ChannelConfig = ChannelConfig> {\n /**\n * @property {string} className\n */\n className: string\n objectClass: typeof NimbuObject<T>\n pageCount?: number\n currentPage?: number\n\n _where: any\n _extraOptions: any\n _limit: number\n _skip: number\n _next?: boolean\n _prev?: boolean\n _last?: boolean\n _perPage: number = -1\n _resolve: string[] = []\n _only: string[] = []\n _sort: string[] = []\n\n constructor(objectClass: string | NimbuObject<T> | typeof NimbuObject<T>) {\n if (typeof objectClass === 'string') {\n this.className = objectClass\n } else if (objectClass instanceof NimbuObject) {\n this.className = objectClass.className\n } else if (typeof objectClass === 'function') {\n const objectClz = objectClass as typeof NimbuObject\n if (typeof objectClz.className === 'string') {\n this.className = objectClz.className\n } else {\n const obj = new objectClz()\n this.className = obj.className\n }\n } else {\n throw new TypeError('A Nimbu.Query must be constructed with a Nimbu.Object or class name.')\n }\n\n this.objectClass = NimbuObject._getSubclass(this.className)\n this.pageCount = undefined\n this._next = undefined\n this._prev = undefined\n this._last = undefined\n this.currentPage = undefined\n this._perPage = -1\n this._where = {}\n this._resolve = []\n this._limit = -1 // negative limit means, do not send a limit\n this._skip = 0\n this._extraOptions = {}\n }\n\n /*\n * Constructs a Nimbu.Query that is the OR of the passed in queries. For\n * example:\n * <pre>var compoundQuery = Nimbu.Query.or(query1, query2, query3);</pre>\n\n * will create a compoundQuery that is an or of the query1, query2, and\n * query3.\n * @param {...Nimbu.Query} var_args The list of queries to OR.\n * @return {Nimbu.Query} The query that is the OR of the passed in queries.\n */\n static or<T extends ChannelConfig = { [key: string]: any }>(...queries: NimbuQuery<T>[]) {\n let className: string | null = null\n _arrayEach(queries, function (q: { className: any }) {\n if (isNull(className)) {\n ;({ className } = q)\n }\n if (className !== q.className) {\n throw 'All queries must be for the same class'\n }\n })\n\n if (className == null) {\n throw 'A class name is required to create a query'\n }\n\n const query = new NimbuQuery<T>(className)\n query._orQuery(queries)\n return query\n }\n\n /*\n * Constructs a Nimbu.Object whose id is already known by fetching data from\n * the server. Either options.success or options.error is called when the\n * find completes.\n\n * @param {String} id The id of the object to be fetched.\n */\n async get(id: any, options?: any): Promise<NimbuObject<T> | undefined> {\n const response = await this.find({ ...options, id })\n\n if (response && isArray(response)) {\n return response[0]\n }\n\n const errorObject = new NimbuError(NimbuError.OBJECT_NOT_FOUND, 'Object not found.')\n return Promise.reject(errorObject)\n }\n\n /*\n * Returns a JSON representation of this query.\n * @return {Object} The JSON representation of the query.\n */\n toJSON() {\n const params: any = { where: this._where }\n if (this._resolve.length > 0) {\n params.resolve = this._resolve.join(',')\n }\n if (this._only && this._only.length > 0) {\n params.only = this._only.join(',')\n }\n if (this._limit >= 0) {\n params.limit = this._limit\n }\n if (this.currentPage != null && this.currentPage >= 0) {\n params.page = this.currentPage\n }\n if (this._perPage >= 0) {\n params.per_page = this._perPage\n }\n if (this._skip > 0) {\n params.skip = this._skip\n }\n if (this._sort != null && this._sort.length > 0) {\n params.sort = this._sort.join(',')\n }\n _objectEach(this._extraOptions, (v, k) => (params[k] = v))\n\n return params\n }\n\n /*\n * Returns a JSON representation of this query.\n * @return {Object} The JSON representation of the query.\n */\n toQueryString() {\n const json = this.toJSON()\n delete json.where\n\n const params = {\n ...(this._where ?? {}),\n ...json,\n }\n\n if (!isEmpty(params)) {\n return _toQueryString(params)\n } else {\n return undefined\n }\n }\n\n /*\n * Retrieves a list of Objects that satisfy this query.\n * Either options.success or options.error is called when the find\n * completes.\n\n * @param {Object} options A Backbone-style options object. Valid options\n * are:<ul>\n * <li>success: Function to call when the find completes successfully.\n * <li>error: Function to call when the find fails.\n * be used for this request.\n * </ul>\n\n * @return {Promise} A promise that is resolved with the results when\n * the query completes.\n */\n async find(options: NimbuQueryOptions & { id?: string } = {}) {\n const requestData: RequestOptions = {\n route: 'objects',\n className: this.className,\n method: 'GET',\n useACL: options.useACL,\n query: this.toQueryString(),\n forceChannel: !!options.forceChannel,\n }\n\n if (options.id != null) {\n requestData.id = options.id\n }\n\n this.pageCount = undefined\n\n const { body, xhr } = await _request(requestData)\n let link: any\n if (xhr != null) {\n link = xhr.getResponseHeader('Link')\n }\n\n if (link != null) {\n this._next = /rel=\"next\"/i.test(link)\n this._prev = /rel=\"prev\"/i.test(link)\n this._last = /rel=\"last\"/i.test(link)\n\n if (this._next) {\n const regexp = /<.*(?:\\?|&)page=([0-9]+).*>; rel=\"next\"/\n const result = regexp.exec(link)\n if (result != null) {\n this.currentPage = parseInt(result[1]) - 1\n }\n }\n\n if (this._prev) {\n const regexp = /<.*(?:\\?|&)page=([0-9]+).*>; rel=\"prev\"/\n const result = regexp.exec(link)\n if (result != null) {\n this.currentPage = parseInt(result[1]) + 1\n }\n }\n\n if (this._last) {\n const regexp = /<.*(?:\\?|&)page=([0-9]+).*>; rel=\"last\"/\n const result = regexp.exec(link)\n if (result != null) {\n this.pageCount = parseInt(result[1])\n }\n }\n }\n\n const arrayBody = isArray(body) ? body : [body]\n\n return map(arrayBody, (json: any) => {\n let obj: NimbuObject<T> | undefined = undefined\n if (json.className) {\n obj = new NimbuObject<T>(json.className)\n } else {\n obj = new this.objectClass()\n }\n obj._finishFetch(json)\n return obj\n })\n }\n\n /**\n * Retrieves a complete list of NimbuObjects that satisfy this query.\n * Using `eachBatch` under the hood to fetch all the valid objects.\n *\n * @param {object} options Valid options are:<ul>\n * <li>batchSize: How many objects to yield in each batch (default: 100)\n * <li>the usual options for find</li>\n * </ul>\n * @returns {Promise} A promise that is resolved with the results when\n * the query completes.\n */\n async findAll(options?: NimbuQueryOptions & { batchSize?: number }): Promise<Array<NimbuObject<T>>> {\n let result: NimbuObject<T>[] = []\n await this.eachBatch((objects: NimbuObject<T>[]) => {\n result = [...result, ...objects]\n }, options)\n return result\n }\n\n /**\n * Iterates over objects matching a query, calling a callback for each batch.\n * If the callback returns a promise, the iteration will not continue until\n * that promise has been fulfilled. If the callback returns a rejected\n * promise, then iteration will stop with that error. The items are processed\n * in an unspecified order. The query may not have any sort order, and may\n * not use limit or skip.\n *\n * @param {Function} callback Callback that will be called with each result\n * of the query.\n * @param {object} options Valid options are:<ul>\n * <li>batchSize: How many objects to yield in each batch (default: 100)\n * <li>useMasterKey: In Cloud Code and Node only, causes the Master Key to\n * be used for this request.\n * <li>sessionToken: A valid session token, used for making a request on\n * behalf of a specific user.\n * <li>context: A dictionary that is accessible in Cloud Code `beforeFind` trigger.\n * </ul>\n * @returns {Promise} A promise that will be fulfilled once the\n * iteration has completed.\n */\n eachBatch(\n callback: (objs: Array<NimbuObject<T>>) => void,\n options?: NimbuQueryOptions & { batchSize?: number }\n ): Promise<void> {\n options = options || {}\n\n if ((this._sort != null && this._sort.length > 0) || this._skip || this._limit >= 0) {\n const error = 'Cannot iterate on a query with sort, skip, or limit.'\n return Promise.reject(error)\n }\n\n const query = new NimbuQuery<T>(this.className)\n query._limit = options.batchSize || 100\n query._resolve = [...this._resolve]\n query._only = [...this._only]\n query._where = {}\n for (const attr in this._where) {\n const val = this._where[attr]\n if (Array.isArray(val)) {\n query._where[attr] = val.map((v) => {\n return v\n })\n } else if (val && typeof val === 'object') {\n const conditionMap: any = {}\n query._where[attr] = conditionMap\n for (const cond in val) {\n conditionMap[cond] = val[cond]\n }\n } else {\n query._where[attr] = val\n }\n }\n\n query.ascending('id')\n\n let finished = false\n let previousResults: NimbuObject<T>[] = []\n return continueWhile(\n () => {\n return !finished\n },\n async () => {\n const [results] = await Promise.all([\n query.find(options),\n Promise.resolve(previousResults.length > 0 && callback(previousResults)),\n ])\n if (results.length >= query._limit) {\n query.greaterThan('id', results[results.length - 1].id)\n previousResults = results\n } else if (results.length > 0) {\n await Promise.resolve(callback(results))\n finished = true\n } else {\n finished = true\n }\n }\n )\n }\n\n hasNext() {\n return this._next != null && this._next\n }\n\n next(options?: NimbuQueryOptions) {\n if (this.hasNext()) {\n if (this.currentPage == null) {\n this.currentPage = 1\n }\n\n return this.page(this.currentPage + 1).find(options)\n } else {\n throw 'No next page for query available'\n }\n }\n\n hasPrevious() {\n return this._prev != null && this._prev\n }\n\n prev(options?: NimbuQueryOptions) {\n if (this.hasPrevious() && this.currentPage != null) {\n if (this.currentPage == null) {\n this.currentPage = 1\n }\n\n return this.page(this.currentPage - 1).find(options)\n } else {\n throw 'No previous page for query available'\n }\n }\n\n /*\n Counts the number of objects that match this query.\n Either options.success or options.error is called when the count\n completes.\n\n @param {Object} options A Backbone-style options object. Valid options\n are:<ul>\n <li>success: Function to call when the count completes successfully.\n <li>error: Function to call when the find fails.\n </ul>\n\n @return {Promise} A promise that is resolved with the count when\n the query completes.\n */\n async count(options?: NimbuQueryOptions) {\n options = options || {}\n\n const { body } = await _request({\n route: 'objects',\n className: this.className,\n id: 'count',\n method: 'GET',\n query: this.toQueryString(),\n useACL: options.useACL,\n forceChannel: options.forceChannel,\n })\n\n return body.count ?? 0\n }\n\n async findDeleted(options: NimbuQueryOptions = {}) {\n let { body } = await _request({\n route: 'objects',\n className: this.className,\n id: 'deleted',\n method: 'GET',\n query: this.toQueryString(),\n useACL: options.useACL,\n forceChannel: options.forceChannel,\n })\n\n if (!isArray(body)) {\n body = [body]\n }\n return map(body, (json) => ({\n id: json.id,\n deleted_at: decode(json.deleted_at),\n }))\n }\n\n /*\n Retrieves at most one Nimbu.Object that satisfies this query.\n\n Either options.success or options.error is called when it completes.\n success is passed the object if there is one. otherwise, undefined.\n\n @param {Object} options A Backbone-style options object. Valid options\n are:<ul>\n <li>success: Function to call when the find completes successfully.\n <li>error: Function to call when the find fails.\n </ul>\n\n @return {Promise} A promise that is resolved with the object when\n the query completes.\n */\n async first(options: NimbuQueryOptions = {}): Promise<(NimbuObject<T> & { id: string }) | undefined> {\n this._limit = 1\n\n const response = await this.find(options)\n const json = isArray(response) ? response[0] : response\n const obj = new this.objectClass()\n if (json != null) {\n obj._finishFetch(json)\n return obj as NimbuObject<T> & { id: string }\n } else {\n return undefined\n }\n }\n\n /*\n Returns a new instance of Nimbu.Collection backed by this query.\n @param {Array} items An array of instances of <code>Nimbu.Object</code>\n with which to start this Collection.\n @param {Object} options An optional object with Backbone-style options.\n Valid options are:<ul>\n <li>model: The Nimbu.Object subclass that this collection contains.\n <li>query: An instance of Nimbu.Query to use when fetching items.\n <li>comparator: A string property name or function to sort by.\n </ul>\n @return {Nimbu.Collection}\n */\n collection(items: any, options: NimbuQueryOptions = {}) {\n options = options || {}\n return new NimbuCollection(\n items,\n extend(options, {\n model: this.objectClass,\n query: this,\n })\n )\n }\n\n /*\n Sets the number of results to skip before returning any results.\n This is useful for pagination.\n Default is to skip zero results.\n @param {Number} n the number of results to skip.\n @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n skip(n: number) {\n this._skip = n\n return this\n }\n\n page(n: number) {\n this.currentPage = n\n return this\n }\n\n per(n: number) {\n this._perPage = n\n return this\n }\n\n /*\n Sets the limit of the number of results to return. The default limit is\n 100, with a maximum of 1000 results being returned at a time.\n @param {Number} n the number of results to limit to.\n @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n limit(n: number) {\n this._limit = n\n return this\n }\n\n /*\n Add a constraint to the query that requires a particular key's value to\n be equal to the provided value.\n @param {String} key The key to check.\n @param value The value that the Nimbu.Object must contain.\n @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n equalTo(key: string, value: any) {\n if (isUndefined(value)) {\n return this.doesNotExist(key)\n }\n this._where[key] = encode({ value })\n return this\n }\n\n /*\n Helper for condition queries\n */\n _addCondition(key: string, condition: any, value: any) {\n // Check if we already have a condition\n this._where[`${key}.${condition}`] = encode({ value })\n return this\n }\n\n /*\n Add a constraint to the query that requires a particular key's value to\n be not equal to the provided value.\n @param {String} key The key to check.\n @param value The value that must not be equalled.\n @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n notEqualTo(key: string, value: any) {\n this._addCondition(key, 'ne', value)\n return this\n }\n\n /*\n Add a constraint to the query that requires a particular key's value to\n be less than the provided value.\n @param {String} key The key to check.\n @param value The value that provides an upper bound.\n @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n lessThan(key: string, value: any) {\n this._addCondition(key, 'lt', value)\n return this\n }\n\n /*\n Add a constraint to the query that requires a particular key's value to\n be greater than the provided value.\n @param {String} key The key to check.\n @param value The value that provides an lower bound.\n @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n greaterThan(key: string, value: any) {\n this._addCondition(key, 'gt', value)\n return this\n }\n\n /*\n Add a constraint to the query that requires a particular key's value to\n be less than or equal to the provided value.\n @param {String} key The key to check.\n @param value The value that provides an upper bound.\n @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n lessThanOrEqualTo(key: string, value: any) {\n this._addCondition(key, 'lte', value)\n return this\n }\n\n /*\n Add a constraint to the query that requires a particular key's value to\n be greater than or equal to the provided value.\n @param {String} key The key to check.\n @param value The value that provides an lower bound.\n @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n greaterThanOrEqualTo(key: string, value: any) {\n this._addCondition(key, 'gte', value)\n return this\n }\n\n /*\n * Add a constraint to the query that requires a particular key's value to\n * be contained in the provided list of values.\n * @param {String} key The key to check.\n * @param {Array} values The values that will match.\n * @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n containedIn(key: string, values: any) {\n this._addCondition(key, 'in', values)\n return this\n }\n\n /*\n * Add a constraint to the query that requires a particular key's value to\n * not be contained in the provided list of values.\n * @param {String} key The key to check.\n * @param {Array} values The values that will not match.\n * @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n notContainedIn(key: string, values: any) {\n this._addCondition(key, 'nin', values)\n return this\n }\n\n /*\n * Add a constraint to the query that requires a particular key's value to\n * contain each one of the provided list of values.\n * @param {String} key The key to check. This key's value must be an array.\n * @param {Array} values The values that will match.\n * @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n containsAll(key: string, values: any) {\n this._addCondition(key, 'all', values)\n return this\n }\n\n /*\n * Add a constraint for finding objects that contain the given key.\n * @param {String} key The key that should exist.\n * @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n exists(key: string) {\n this._addCondition(key, 'exists', true)\n return this\n }\n\n /*\n Add a constraint for finding objects that do not contain a given key.\n @param {String} key The key that should not exist\n @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n doesNotExist(key: string) {\n this._addCondition(key, 'exists', false)\n return this\n }\n\n /*\n * Add a regular expression constraint for finding string values that match\n * the provided regular expression.\n * This may be slow for large datasets.\n * @param {String} key The key that the string to match is stored in.\n * @param {RegExp} regex The regular expression pattern to match.\n * @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n matches(key: string, regex: { ignoreCase: any; multiline: any }, modifiers: string) {\n this._addCondition(key, 'regex', regex)\n if (!modifiers) {\n modifiers = ''\n }\n\n // Javascript regex options support mig as inline options but store them\n // as properties of the object. We support mi & should migrate them to\n // modifiers\n if (regex.ignoreCase) {\n modifiers += 'i'\n }\n if (regex.multiline) {\n modifiers += 'm'\n }\n if (modifiers && modifiers.length) {\n this._addCondition(key, 'options', modifiers)\n }\n return this\n }\n\n /*\n * Add constraint that at least one of the passed in queries matches.\n * @param {Array} queries\n * @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n _orQuery(queries: NimbuQuery<T>[]) {\n const queryJSON = map(queries, function (q) {\n const query = q.toJSON().where\n const parts = []\n for (const i in query) {\n if (Object.prototype.hasOwnProperty.call(query, i)) {\n const objectValue = query[i]\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n parts.push(i + ': ' + JSON.stringify(objectValue.toString()))\n }\n }\n return '(' + parts.join(' and ') + ')'\n })\n\n this._where.where = queryJSON.join(' or ')\n return this\n }\n\n /*\n * Converts a string into a regex that matches it.\n * Surrounding with \\Q .. \\E does this, we just need to escape \\E's in\n * the text separately.\n */\n _quote(s: { replace: (arg0: string, arg1: string) => string }) {\n return '\\\\Q' + s.replace('\\\\E', '\\\\E\\\\\\\\E\\\\Q') + '\\\\E'\n }\n\n /*\n * Add a constraint for finding string values that contain a provided\n * string. This may be slow for large datasets.\n * @param {String} key The key that the string to match is stored in.\n * @param {String} substring The substring that the value must contain.\n * @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n contains(key: string, value: any) {\n this._addCondition(key, 'contains', value)\n return this\n }\n\n /*\n * Add a constraint for finding string values that start with a provided\n * string. This query will use the backend index, so it will be fast even\n * for large datasets.\n * @param {String} key The key that the string to match is stored in.\n * @param {String} prefix The substring that the value must start with.\n * @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n startsWith(key: string, value: any) {\n this._addCondition(key, 'start', value)\n return this\n }\n\n /*\n * Add a constraint for finding string values that end with a provided\n * string. This will be slow for large datasets.\n * @param {String} key The key that the string to match is stored in.\n * @param {String} suffix The substring that the value must end with.\n * @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n endsWith(key: string, value: any) {\n this._addCondition(key, 'end', value)\n return this\n }\n\n /*\n * Searches the current className for objects that contains a value matching\n * the given string.\n * @param {String} key The search value\n * @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n search(value: string) {\n this.equalTo('search', value)\n return this\n }\n\n /*\n * Add a constraint for finding geo values that intersect with a provided\n * geometry.\n * @param {String} key The name of the geo field to constrain\n * @param {Object or String} geometry The geometry to query for intersection\n * @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n geoIntersects(key: string, geometry: any) {\n const json = isString(geometry) ? geometry : JSON.stringify(geometry)\n this._addCondition(key, 'geoIntersects', json)\n return this\n }\n\n /*\n Add a constraint for finding geo values that are within a provided\n geometry.\n @param {String} key The name of the geo field to constrain\n @param {Object or String} geometry The geometry (of type \"Polygon\" or \"MultiPolygon\")\n that should contain the geo field.\n @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n geoWithin(key: string, geometry: any) {\n const json = isString(geometry) ? geometry : JSON.stringify(geometry)\n this._addCondition(key, 'geoWithin', json)\n return this\n }\n\n /*\n * Add a constraint for finding geo values that are near a provided\n * point.\n * @param {String} key The name of the geo field to constrain\n * @param {Object or String} geometry The geometry (of type \"Point\")\n * where the geo field should be near.\n * @param {Number} maxDistance Maximum distance in meters from the point.\n * (optional, default: none)\n * @param {Number} minDistance Minimum distance in meters from the point.\n * (optional, default: none)\n * @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n near(key: string, geometry: any, maxDistance: any, minDistance: any) {\n const point = isString(geometry) ? JSON.parse(geometry) : geometry\n const condition: any = {\n geometry: point,\n }\n if (maxDistance != null) {\n condition.maxDistance = maxDistance\n }\n if (minDistance != null) {\n condition.minDistance = minDistance\n }\n const json = JSON.stringify(condition)\n this._addCondition(key, 'near', json)\n return this\n }\n\n /*\n * Add a constraint for finding geo values that are near a provided\n * point.\n * @param {String} key The name of the geo field to constrain.\n * @param {Number} lng The longitude of the point.\n * @param {Number} lat The latitute of the point.\n * @param {Number} maxDistance Maximum distance in meters from the point.\n * (optional, default: none)\n * @param {Number} minDistance Minimum distance in meters from the point.\n * (optional, default: none)\n * @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n nearCoordinates(key: string, lng: any, lat: any, maxDistance: any, minDistance: any) {\n return this.near(\n key,\n {\n type: 'Point',\n coordinates: [lng, lat],\n },\n maxDistance,\n minDistance\n )\n }\n\n /**\n * Sorts the results in ascending order by the given key.\n *\n * @param {(string|string[])} keys The key to order by, which is a\n * string of comma separated values, or an Array of keys, or multiple keys.\n * @returns {Nimbu.Query} Returns the query, so you can chain this call.\n */\n ascending(...keys: Array<string>) {\n this._sort = []\n return this.addAscending(...keys)\n }\n\n /**\n * Sorts the results in ascending order by the given key,\n * but can also add secondary sort descriptors without overwriting _order.\n *\n * @param {(string|string[])} keys The key to order by, which is a\n * string of comma separated values, or an Array of keys, or multiple keys.\n * @returns {Nimbu.Query} Returns the query, so you can chain this call.\n */\n addAscending(...keys: Array<string>) {\n if (!this._sort) {\n this._sort = []\n }\n keys.forEach((key) => {\n if (Array.isArray(key)) {\n key = key.join()\n }\n this._sort = this._sort.concat(key.replace(/\\s/g, '').split(','))\n })\n\n return this\n }\n\n /**\n * Sorts the results in descending order by the given key.\n *\n * @param {(string|string[])} keys The key to order by, which is a\n * string of comma separated values, or an Array of keys, or multiple keys.\n * @returns {Nimbu.Query} Returns the query, so you can chain this call.\n */\n descending(...keys: Array<string>) {\n this._sort = []\n return this.addDescending(...keys)\n }\n\n /**\n * Sorts the results in descending order by the given key,\n * but can also add secondary sort descriptors without overwriting _order.\n *\n * @param {(string|string[])} keys The key to order by, which is a\n * string of comma separated values, or an Array of keys, or multiple keys.\n * @returns {Nimbu.Query} Returns the query, so you can chain this call.\n */\n addDescending(...keys: Array<string>) {\n if (!this._sort) {\n this._sort = []\n }\n keys.forEach((key) => {\n if (Array.isArray(key)) {\n key = key.join()\n }\n this._sort = this._sort.concat(\n key\n .replace(/\\s/g, '')\n .split(',')\n .map((k) => {\n return '-' + k\n })\n )\n })\n\n return this\n }\n\n /*\n * Include nested Nimbu.Objects for the provided key. You can use dot\n * notation to specify which fields in the included object are also fetch.\n * @param {String} key The name of the key to include.\n * @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n include(...keys: Array<string | Array<string>>) {\n keys.forEach((key) => {\n if (Array.isArray(key)) {\n this._resolve = this._resolve.concat(key)\n } else {\n this._resolve.push(key)\n }\n })\n return this\n }\n\n /**\n * Includes all nested Nimbu.Objects one level deep.\n *\n * @returns {Nimbu.Query} Returns the query, so you can chain this call.\n */\n includeAll() {\n return this.include('*')\n }\n\n /*\n * Restrict the fields of the returned Nimbu.Objects to include only the\n * provided keys. If this is called multiple times, then all of the keys\n * specified in each of the calls will be included.\n * @param {Array} keys The names of the keys to include.\n * @return {Nimbu.Query} Returns the query, so you can chain this call.\n */\n only(...keys: Array<string | Array<string>>) {\n keys.forEach((key) => {\n if (Array.isArray(key)) {\n this._only = this._only.concat(key)\n } else {\n this._only.push(key)\n }\n })\n return this\n }\n\n /*\n * Iterates over each result of a query, calling a callback for each one. If\n * the callback returns a promise, the iteration will not continue until\n * that promise has been fulfilled. If the callback returns a rejected\n * promise, then iteration will stop with that error. The items are\n * processed in an unspecified sort. The query may not have any sort sort,\n * and may not use limit or skip.\n * @param {Function} callback Callback that will be called with each result\n * of the query.\n * @param {Object} options An optional Backbone-like options object with\n * success and error callbacks that will be invoked once the iteration\n * has finished.\n * @return {Promise} A promise that will be fulfilled once the\n * iteration has completed.\n */\n each(callback: (value: any) => any, options: { batchSize?: any } = {}) {\n if ((this._sort != null && this._sort.length > 0) || this._skip || this._limit >= 0) {\n const error = 'Cannot iterate on a query with sort, skip, or limit.'\n return Promise.reject(error)\n }\n const query = new NimbuQuery(this.objectClass)\n\n // We can override the batch size from the options.\n // This is undocumented, but useful for testing.\n query._limit = options.batchSize || 100\n query._where = clone(this._where)\n query._resolve = clone(this._resolve)\n query.ascending('id')\n let finished = false\n return continueWhile(\n () => !finished,\n () =>\n query.find().then(function (results) {\n let callbacksDone = Promise.resolve()\n each(results, (result: any) => {\n callbacksDone = callbacksDone.then(() => callback(result))\n })\n\n return callbacksDone.then(function () {\n if (results.length >= query._limit) {\n return query.greaterThan('id', results[results.length - 1].id)\n } else {\n return (finished = true)\n }\n })\n })\n )\n }\n}\n\nexport default NimbuQuery\n","import _ from 'underscore'\nimport { AtomicRelation, ChannelConfig, NimbuObject } from '../internal'\n\nexport type GetRelationChannelConfig<R> = R extends NimbuRelation<infer T, any> ? T : never\n\n/*\nCreates a new Relation for the given parent object and key. This\nconstructor should rarely be used directly, but rather created by\nNimbu.Object.relation.\n@param {Nimbu.Object} parent The parent of this relation.\n@param {String} key The key for this relation on the parent.\n@see Nimbu.Object#relation\n@class\n\n<p>\nA class that is used to access all of the children of a many-to-many\nrelationship. Each instance of Nimbu.Relation is associated with a\nparticular parent object and key.\n</p>\n*/\nexport class NimbuRelation<T extends ChannelConfig = ChannelConfig, P extends ChannelConfig = ChannelConfig> {\n parent: NimbuObject<P> | null\n key: keyof T\n targetClassName: string | null\n _objects: NimbuObject<T>[]\n\n constructor(parent: NimbuObject<P> | null, key: string, objects?: NimbuObject<T>[]) {\n this.parent = parent\n this.key = key\n this.targetClassName = null\n\n if (objects != null) {\n this._objects = objects\n } else {\n this._objects = []\n }\n }\n\n /*\n * Makes sure that this relation has the right parent and key.\n */\n _ensureParentAndKey(parent: any, key: any) {\n this.parent = this.parent || parent\n this.key = this.key || key\n if (this.parent !== parent) {\n throw 'Internal Error. Relation retrieved from two different Objects.'\n }\n if (this.key !== key) {\n throw 'Internal Error. Relation retrieved from two different keys.'\n }\n }\n\n /*\n * Lists the array of Nimbu.Objects in this relation.\n */\n list() {\n return this._objects\n }\n\n /*\n * Adds a Nimbu.Object or an array of Nimbu.Objects to the relation.\n * @param {} objects The item or items to add.\n */\n add(objects: NimbuObject<T> | NimbuObject<T>[]) {\n if (!_.isObject(objects)) {\n throw 'You must supply a Nimbu.Object or array of Nimbu.Object'\n }\n if (!_.isArray(objects)) {\n objects = [objects]\n }\n const change = new AtomicRelation(objects, [])\n if (this.parent) {\n this.parent.set(this.key as any, change)\n }\n this.targetClassName = change._targetClassName\n }\n\n /*\n * Removes a Nimbu.Object or an array of Nimbu.Objects from this relation.\n * @param {} objects The item or items to remove.\n */\n remove(objects: NimbuObject<T> | NimbuObject<T>[]) {\n if (!_.isObject(objects)) {\n throw 'You must supply a Nimbu.Object or array of Nimbu.Object'\n }\n if (!_.isArray(objects)) {\n objects = [objects]\n }\n const change = new AtomicRelation([], objects)\n if (this.parent) {\n this.parent.set(this.key as any, change)\n }\n this.targetClassName = change._targetClassName\n }\n\n /*\n * Returns a JSON version of the object suitable for saving to disk.\n * @return {Object}\n */\n toJSON() {\n return {\n __type: 'Relation',\n className: this.targetClassName,\n }\n }\n}\n\nexport default NimbuRelation\n","import { NimbuCustomer, NimbuError, VERSION, Config, getInstallationId } from '../internal'\n\nimport _, { isObject } from 'underscore'\n\nlet useChaos = false\nlet chaosThreshold = 0.95\n\nexport enum RequestMethod {\n GET = 'GET',\n POST = 'POST',\n PUT = 'PUT',\n PATCH = 'PATCH',\n DELETE = 'DELETE',\n}\n\nexport type RequestOptions = {\n data?: any\n query?: string\n route?: string\n className?: string\n id?: string\n method?: string\n useACL?: boolean\n sessionToken?: string\n path?: string\n forceChannel?: boolean\n locale?: string\n include?: string[]\n progress?: IProgressHandler\n}\n\nexport type IProgressHandler = (\n percentage: number | null,\n loaded: number | null,\n total: number | null,\n type: 'download' | 'upload'\n) => void\nexport type IOptions = {\n success?: any\n error?: any\n useACL?: boolean\n sessionToken?: string\n cascadeSave?: boolean\n locale?: string\n progress?: IProgressHandler\n}\n\nlet XHR: typeof XMLHttpRequest = null as any\nif (typeof XMLHttpRequest !== 'undefined') {\n XHR = XMLHttpRequest\n}\n\nif (Config.isNode) {\n // XHR = require('xmlhttprequest').XMLHttpRequest\n}\n\n/*\n * Options:\n * route: is classes, users, login, etc.\n * id: null if there is no associated objectId.\n * method: the http method for the REST API.\n * dataObject: the payload as an object, or null if there is none.\n * @ignore\n */\nexport const _request = async <T extends Record<string, any>>({\n method = 'GET',\n route,\n className,\n id,\n useACL,\n sessionToken,\n path,\n forceChannel,\n locale,\n include,\n data: dataObject,\n query: queryString,\n}: RequestOptions): Promise<AjaxResponse<T>> => {\n let classRoute: string | undefined = undefined\n\n const accessToken = await Config.getAccessToken()\n if (accessToken == null) {\n throw 'You need to call Nimbu.initialize before using the SDK.'\n }\n\n if (_.isUndefined(useACL)) {\n useACL = Config.useACL\n }\n\n if (!sessionToken) {\n // Use the current user session token if none was provided.\n const currentCustomer = NimbuCustomer.current()\n if (currentCustomer && currentCustomer.sessionToken) {\n sessionToken = currentCustomer.sessionToken\n }\n }\n\n if (useACL) {\n if (queryString != null) {\n queryString = queryString + '&use_acl=1'\n } else {\n queryString = 'use_acl=1'\n }\n }\n\n if (include != null && include.length > 0) {\n if (queryString != null) {\n queryString = queryString + '&include=' + include.join(',')\n } else {\n queryString = 'include=' + include.join(',')\n }\n }\n\n if (locale != null) {\n if (queryString != null) {\n queryString = queryString + '&content_locale=' + locale\n } else {\n queryString = 'content_locale=' + locale\n }\n }\n\n if (!path) {\n if (\n route !== 'batch' &&\n route !== 'objects' &&\n route !== 'events' &&\n route !== 'files' &&\n route !== 'functions' &&\n route !== 'login' &&\n route !== 'push' &&\n route !== 'customers' &&\n route !== 'jobs'\n ) {\n throw \"Bad route: '\" + route + \"'.\"\n }\n\n if (route === 'objects') {\n if (forceChannel) {\n route = 'channels'\n if (id !== 'customizations') {\n classRoute = 'entries'\n }\n } else if (className === 'customer' || className === 'customers') {\n route = 'customers'\n className = undefined\n } else if (className === 'product' || className === 'products') {\n route = 'products'\n className = undefined\n } else if (className === 'page' || className === 'pages') {\n route = 'pages'\n className = undefined\n } else if (className === 'role') {\n route = 'roles'\n className = undefined\n } else if (className === 'coupon' || className === 'coupons') {\n route = 'coupons'\n className = undefined\n } else if (className === 'order' || className === 'orders') {\n route = 'orders'\n className = undefined\n } else if (className === 'device' || className === 'devices') {\n route = 'devices'\n className = undefined\n } else {\n route = 'channels'\n if (id !== 'customizations') {\n classRoute = 'entries'\n }\n }\n }\n\n if (route === 'push') {\n route = 'devices'\n className = 'push'\n }\n\n path = route\n if (className != null) {\n path += '/' + className\n }\n if (classRoute) {\n path += '/' + classRoute\n }\n if (id) {\n path += '/' + id\n }\n }\n\n let url = Config.endpoint\n if (url.charAt(url.length - 1) !== '/') {\n url += '/'\n }\n if (path.charAt(0) === '/') {\n path = path.substring(1)\n }\n url += path\n if (queryString) {\n url += '?' + queryString\n }\n\n dataObject = _.clone(dataObject || {})\n\n const headers: AjaxHeaders = {\n _accessToken: accessToken,\n _installationId: getInstallationId(),\n _clientVersion: VERSION,\n }\n\n if (sessionToken != null) {\n headers._sessionToken = sessionToken\n }\n const data = JSON.stringify(dataObject)\n\n return Config.ajax(method, url, data, headers).then(null, (error: any) => {\n // Transform the error into an instance of Nimbu.Error by trying to Nimbu\n // the error string as JSON.\n\n if (error && error.responseText) {\n try {\n const json = JSON.parse(error.responseText)\n if (json) {\n error = new NimbuError(json.code, json.message)\n\n if (json.errors != null) {\n error.errors = json.errors\n }\n }\n } catch (e) {\n console.error(e)\n }\n }\n\n // If we fail to Nimbu the error text, that's okay.\n error = error || new NimbuError(-1, error.responseText)\n\n // By explicitly returning a rejected Future, this will work with\n // either jQuery or Futures/A semantics.\n return Promise.reject(error)\n })\n}\n\nexport type AjaxHeaders = {\n _accessToken?: string | null\n _sessionToken?: string\n _clientVersion?: string\n _installationId?: string\n _csrfToken?: string | null\n}\n\nexport type AjaxResponse<T extends Record<string, any> = Record<string, any>> = {\n body: T\n status: number\n xhr?: XMLHttpRequest\n}\n\ntype AjaxOptions = Pick<RequestOptions, 'progress'> & { formPost?: boolean }\n\nexport type IAjax<T extends Record<string, any> = Record<string, any>> = (\n method: string,\n url: string,\n data: any,\n headers?: AjaxHeaders,\n options?: AjaxOptions\n) => Promise<AjaxResponse<T>>\n\nConfig.setAjax((method: string, url: string, data: any, headers: AjaxHeaders = {}, options: AjaxOptions = {}) => {\n if (!_.isString(data) && !options.formPost) {\n data = JSON.stringify(data)\n }\n\n if (useChaos && Math.random() > chaosThreshold) {\n return Promise.reject('Chaos!')\n }\n\n if (options.formPost && isObject(data)) {\n const urlEncodedDataPairs: string[] = []\n for (const name in data) {\n urlEncodedDataPairs.push(encodeURIComponent(name) + '=' + encodeURIComponent(data[name]))\n }\n data = urlEncodedDataPairs.join('&')\n }\n\n return new Promise<AjaxResponse>((resolve, reject) => {\n let handled = false\n const xhr = new XHR()\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (handled) {\n return\n }\n handled = true\n if (xhr.status >= 200 && xhr.status < 300) {\n let body = undefined\n try {\n if (xhr.status !== 204) {\n // here the actual parsing of the response happens\n body = JSON.parse(xhr.responseText)\n } else {\n // status 204 is 'No Content'\n body = ''\n }\n } catch (e) {\n reject(e)\n }\n if (body || xhr.status === 204) {\n return resolve({ body, status: xhr.status, xhr })\n }\n } else {\n return reject(xhr)\n }\n }\n }\n\n xhr.open(method, url, true)\n\n if (options.formPost) {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')\n } else {\n xhr.setRequestHeader('Content-Type', 'text/plain') // avoid pre-flight.\n }\n\n if (headers._accessToken != null) {\n xhr.setRequestHeader('X-Nimbu-Access-Token', `token ${headers._accessToken}`)\n }\n if (headers._sessionToken != null) {\n xhr.setRequestHeader('X-Nimbu-Session-Token', headers._sessionToken)\n }\n if (headers._clientVersion != null) {\n xhr.setRequestHeader('X-Nimbu-Client-Version', headers._clientVersion)\n }\n if (headers._installationId != null) {\n xhr.setRequestHeader('X-Nimbu-Installation-Id', headers._installationId)\n }\n if (headers._csrfToken != null) {\n xhr.setRequestHeader('X-CSRF-Token', headers._csrfToken)\n }\n\n // Add a special user agent just for request from node.js.\n if (Config.isNode) {\n // eslint-disable-next-line no-undef\n xhr.setRequestHeader('User-Agent', 'Nimbu/' + VERSION + ' (NodeJS ' + process.versions.node + ')')\n }\n\n if (options && options.progress != null && typeof options.progress === 'function') {\n const progressHandler = options.progress\n\n const handleProgress = function (type: 'upload' | 'download', event: ProgressEvent<EventTarget>) {\n if (event.lengthComputable) {\n progressHandler(event.loaded / event.total, event.loaded, event.total, type)\n } else {\n progressHandler(null, null, null, type)\n }\n }\n\n xhr.onprogress = (event) => {\n handleProgress('download', event)\n }\n\n if (xhr.upload) {\n xhr.upload.onprogress = (event) => {\n handleProgress('upload', event)\n }\n }\n }\n\n xhr.onabort = function () {\n resolve({\n body: { code: 0, error: 'Request aborted' },\n status: 0,\n xhr,\n })\n }\n\n if (method.toUpperCase() === 'GET') {\n xhr.send()\n } else {\n xhr.send(data)\n }\n })\n})\n\nexport const enableChaos = function (percentage: number) {\n useChaos = true\n if (percentage != null) {\n return (chaosThreshold = 1 - percentage / 100)\n } else {\n return chaosThreshold\n }\n}\n\nexport default _request\n","import { NimbuACL, NimbuObject, NimbuError, AttributeMap } from '../internal'\n\nimport _ from 'underscore'\n\n/*\n * Represents a Role on the Nimbu server. Roles represent groupings of\n * Users for the purposes of granting permissions (e.g. specifying an ACL\n * for an Object). Roles are specified by their sets of child users and\n * child roles, all of which are granted any permissions that the parent\n * role has.\n\n * <p>Roles must have a name (which cannot be changed after creation of the\n * role), and must specify an ACL.</p>\n * @class\n * A Nimbu.Role is a local representation of a role persisted to the Nimbu\n * cloud.\n */\nexport class NimbuRole extends NimbuObject {\n /*\n * Constructs a new Nimbu Role with the given name and ACL.\n *\n * @param {String} name The name of the Role to create.\n * @param {Nimbu.ACL} acl The ACL for this role. Roles must have an ACL.\n */\n constructor(name: string, acl: NimbuACL) {\n super('role')\n if (typeof name === 'string' && acl instanceof NimbuACL) {\n this.setName(name)\n this.setACL(acl)\n }\n }\n\n /*\n * Gets the name of the role. You can alternatively call role.get(\"name\")\n *\n * @return {String} the name of the role.\n */\n getName() {\n return this.get('name')\n }\n\n /*\n * Sets the name for a role. This value must be set before the role has\n * been saved to the server, and cannot be set once the role has been\n * saved.\n *\n * <p>\n * A role's name can only contain alphanumeric characters, _, -, and\n * spaces.\n * </p>\n *\n * <p>This is equivalent to calling role.set(\"name\", name)</p>\n *\n * @param {String} name The name of the role.\n * @param {Object} options Standard options object with success and error\n * callbacks.\n */\n setName(name: any, options?: any) {\n return this.set('name', name, options)\n }\n\n /*\n * Gets the Nimbu.Relation for the Nimbu.Customers that are direct\n * children of this role. These users are granted any privileges that this\n * role has been granted (e.g. read or write access through ACLs). You can\n * add or remove users from the role through this relation.\n *\n * <p>This is equivalent to calling role.relation(\"users\")</p>\n *\n * @return {Nimbu.Relation} the relation for the users belonging to this\n * role.\n */\n getCustomers() {\n return this.relation('customers')\n }\n\n /*\n * @deprecated This has never been functional and will be removed in the next\n * major release.\n *\n * Gets the Nimbu.Relation for the Nimbu.Roles that are direct\n * children of this role. These roles' users are granted any privileges that\n * this role has been granted (e.g. read or write access through ACLs). You\n * can add or remove child roles from this role through this relation.\n *\n * <p>This is equivalent to calling role.relation(\"roles\")</p>\n *\n * @return {Nimbu.Relation} the relation for the roles belonging to this\n * role.\n */\n getRoles() {\n return this.relation('roles')\n }\n\n /*\n * Gets the Nimbu.Relation for the Nimbu.Roles that are direct\n * children of this role. This role's users are granted any privileges that\n * the child roles have been granted (e.g. read or write access through ACLs). You\n * can add or remove child roles to/from this role through this relation.\n *\n * <p>This is equivalent to calling role.relation(\"children\")</p>\n *\n * @return {Nimbu.Relation} the relation for the child roles of this role.\n */\n getChildren() {\n return this.relation('children')\n }\n\n /*\n * Gets the Nimbu.Relation for the Nimbu.Roles that are direct\n * parents of this role. These roles' users are granted any privileges that\n * this role has been granted (e.g. read or write access through ACLs). You\n * can add or remove parent roles from this role through this relation.\n *\n * <p>This is equivalent to calling role.relation(\"parents\")</p>\n *\n * @return {Nimbu.Relation} the relation for the parent roles of this role.\n */\n getParents() {\n return this.relation('parents')\n }\n\n /*\n * @ignore\n */\n validate(attrs: AttributeMap) {\n if ('name' in attrs && attrs.name !== this.getName()) {\n const newName = attrs.name\n\n // Check to see if the id being set matches this.id.\n // This happens during a fetch -- the id is set before calling fetch.\n // Let the name be set in this case.\n if (this.id && this.id !== attrs.id) {\n return new NimbuError(NimbuError.OTHER_CAUSE, \"A role's name can only be set before it has been saved.\")\n }\n if (!_.isString(newName)) {\n return new NimbuError(NimbuError.OTHER_CAUSE, \"A role's name must be a String.\")\n }\n if (!/^[0-9a-zA-Z\\-_ ]+$/.test(newName)) {\n return new NimbuError(\n NimbuError.OTHER_CAUSE,\n \"A role's name can only contain alphanumeric characters, _, -, and spaces.\"\n )\n }\n }\n if (NimbuObject.prototype.validate) {\n return NimbuObject.prototype.validate.call(this, attrs)\n }\n return false\n }\n}\n\nexport default NimbuRole\n","import { Config } from '../internal'\n\ntype SyncStorage = {\n async: 0\n getItem: (path: string) => string | null\n setItem: (path: string, value: string) => string\n removeItem: (path: string) => void\n getAllKeys?: () => Array<string>\n clear: () => void\n}\n\ntype AsyncStorage = {\n async: 1\n getItemAsync: (path: string) => Promise<string | null>\n setItemAsync: (path: string, value: string) => Promise<string>\n removeItemAsync: (path: string) => Promise<void>\n getAllKeysAsync?: () => Promise<Array<string>>\n clear: () => void\n}\n\nexport type IStorage = SyncStorage | AsyncStorage\n\nexport const Storage = {\n async(): boolean {\n const storage = Config.getStorage()\n return !!storage.async\n },\n\n async getItem(path: string): Promise<string | null> {\n const storage = Config.getStorage()\n if (storage.async === 1) {\n return storage.getItemAsync(path)\n } else {\n return storage.getItem(path)\n }\n },\n\n async setItem(path: string, value: string): Promise<string> {\n const storage = Config.getStorage()\n if (storage.async === 1) {\n return storage.setItemAsync(path, value)\n } else {\n return storage.setItem(path, value)\n }\n },\n\n async removeItem(path: string): Promise<void> {\n const storage = Config.getStorage()\n if (storage.async === 1) {\n return storage.removeItemAsync(path)\n } else {\n return storage.removeItem(path)\n }\n },\n\n async getAllKeys(): Promise<Array<string> | null> {\n const storage = Config.getStorage()\n if (storage.async === 1) {\n return storage.getAllKeysAsync ? storage.getAllKeysAsync() : null\n } else {\n return storage.getAllKeys ? storage.getAllKeys() : null\n }\n },\n}\n\nconst memMap: { [key: string]: any } = {}\n\nconst MemoryStorage: IStorage = {\n async: 0,\n getItem(path: string): string | null {\n if (Object.prototype.hasOwnProperty.call(memMap, path)) {\n return memMap[path]\n }\n return null\n },\n\n setItem(path: string, value: string) {\n memMap[path] = String(value)\n return memMap[path]\n },\n\n removeItem(path: string) {\n delete memMap[path]\n },\n\n getAllKeys() {\n return Object.keys(memMap)\n },\n\n clear() {\n for (const key in memMap) {\n if (Object.prototype.hasOwnProperty.call(memMap, key)) {\n delete memMap[key]\n }\n }\n },\n}\n\nconst BrowserSessionStorage: IStorage = {\n async: 0,\n getItem(path: string): string | null {\n return window.sessionStorage.getItem(path)\n },\n\n setItem(path: string, value: string) {\n window.sessionStorage.setItem(path, value)\n return value\n },\n\n removeItem(path: string) {\n window.sessionStorage.removeItem(path)\n },\n\n getAllKeys() {\n return Object.keys(window.sessionStorage)\n },\n\n clear() {\n window.sessionStorage.clear()\n },\n}\n\nconst LocalStorage: IStorage = {\n async: 0,\n getItem(path: string): string | null {\n return window.localStorage.getItem(path)\n },\n\n setItem(path: string, value: string) {\n window.localStorage.setItem(path, value)\n return value\n },\n\n removeItem(path: string) {\n window.localStorage.removeItem(path)\n },\n\n getAllKeys() {\n return Object.keys(window.localStorage)\n },\n\n clear() {\n window.localStorage.clear()\n },\n}\n\n// detect if we have localStorage available\ntry {\n if (typeof window !== 'undefined' && window.localStorage) {\n Config.setStorage(LocalStorage)\n } else {\n Config.setStorage(MemoryStorage)\n }\n} catch (e) {\n Config.setStorage(MemoryStorage)\n}\n\nexport const SessionStorage =\n typeof window !== 'undefined' && window.localStorage ? BrowserSessionStorage : MemoryStorage\n\nexport default Storage\n","import { Config } from './config'\nimport { RequestMethod } from './requests'\nimport Storage, { SessionStorage } from './storage'\n\nexport type AuthOptions = {\n name?: string\n clientSecret?: string\n refreshToken?: string\n scope?: string[]\n remember?: boolean\n sessionStorage?: Storage\n persistentStorage?: Storage\n}\n\ntype AccessToken = {\n access_token: string\n expires_in: number\n refresh_token?: string\n}\n\nexport class OAuth2 {\n clientId: string\n\n private clientSecret?: string\n private name?: string\n\n // OAuth token related\n private scope?: string[]\n private accessToken: string | undefined\n private refreshToken: string | undefined\n private anonymousRefreshToken: string | undefined\n\n // We keep expiredAt in milliseconds since the epoch\n private expiresAt: number | undefined\n\n // Persistence\n private _remember: boolean\n private restored = false\n\n constructor(clientId: string, options?: AuthOptions) {\n this.clientId = clientId\n this.clientSecret = options?.clientSecret\n this.refreshToken = options?.refreshToken\n this.anonymousRefreshToken = options?.refreshToken\n this.scope = options?.scope\n this._remember = options?.remember || false\n this.name = options?.name\n }\n\n private get sessionStorageKey(): string {\n return `nimbu-${this.clientId}${this.name != null ? `-${this.name}` : ''}-oauth2`\n }\n\n private get persistentStorageKey(): string {\n return `nimbu-${this.clientId}${this.name != null ? `-${this.name}` : ''}-refresh`\n }\n\n private get needsRefresh(): boolean {\n if (this.accessToken == null) {\n return true\n } else if (this.expiresAt == null) {\n return false\n } else {\n // Use 10s leeway (in milliseconds)\n return this.expiresAt - 10000 < Date.now()\n }\n }\n\n private async restore(): Promise<void> {\n if (!this.restored) {\n // Read refreshToken from persistentStorage\n const refreshTokenFromPersistentStorage = await Storage.getItem(this.persistentStorageKey)\n\n if (refreshTokenFromPersistentStorage != null) {\n // There was a refresh token in persistent storage -> use it + remember was true\n this.refreshToken = refreshTokenFromPersistentStorage\n this._remember = true\n }\n // Now read from the sessionStorage\n const json = SessionStorage.getItem(this.sessionStorageKey)\n\n if (json != null) {\n const { accessToken, expiresAt, refreshToken, scope } = JSON.parse(json)\n this.accessToken = accessToken\n this.expiresAt = expiresAt\n this.scope = scope ?? this.scope\n this.refreshToken = refreshTokenFromPersistentStorage ?? refreshToken ?? this.refreshToken\n }\n }\n this.restored = true\n }\n\n private async apply(token: AccessToken): Promise<void> {\n this.accessToken = token.access_token\n this.expiresAt = Date.now() + token.expires_in * 1000 // expires_in is in seconds\n\n let newRefreshToken = false\n if (token.refresh_token != null) {\n this.refreshToken = token.refresh_token\n newRefreshToken = true\n }\n\n SessionStorage.setItem(\n this.sessionStorageKey,\n JSON.stringify({\n accessToken: this.accessToken,\n expiresAt: this.expiresAt,\n refreshToken: this.refreshToken,\n scope: this.scope,\n })\n )\n if (this._remember && newRefreshToken && this.refreshToken != null) {\n await Storage.setItem(this.persistentStorageKey, this.refreshToken)\n }\n }\n\n async refresh(): Promise<string | undefined> {\n await this.restore()\n\n if (this.refreshToken == null) {\n throw new Error(`No refresh token available`)\n }\n\n const data: any = {\n client_id: this.clientId,\n refresh_token: this.refreshToken,\n grant_type: 'refresh_token',\n }\n\n if (this.clientSecret != null) {\n data.client_secret = this.clientSecret\n }\n\n if (this.scope != null) {\n data.scope = this.scope.join(' ')\n }\n\n const response = await Config.ajax(\n RequestMethod.POST,\n Config.endpoint + '/oauth2/tokens',\n data,\n {},\n {\n formPost: true,\n }\n )\n if (response.status === 200) {\n const token = response.body as AccessToken\n await this.apply(token)\n return this.accessToken\n } else {\n return undefined\n }\n }\n\n async getAccessToken(): Promise<string | undefined> {\n await this.restore()\n\n if (this.needsRefresh) {\n return this.refresh()\n } else {\n return this.accessToken\n }\n }\n\n async logIn(username: string, password: string, remember = false): Promise<boolean> {\n await this.restore()\n\n this._remember = remember\n\n const formData: any = {\n client_id: this.clientId,\n grant_type: 'password',\n username,\n password,\n }\n\n if (this.scope != null) {\n formData.scope = this.scope.join(' ')\n }\n\n const response = await Config.ajax(\n RequestMethod.POST,\n Config.endpoint + '/oauth2/tokens',\n formData,\n {},\n { formPost: true }\n )\n\n if (response.status === 200) {\n const token = response.body as AccessToken\n await this.apply(token)\n\n return true\n } else {\n return false\n }\n }\n\n async logOut(): Promise<void> {\n this.refreshToken = this.anonymousRefreshToken\n this.accessToken = undefined\n this.expiresAt = undefined\n\n await Promise.all([\n SessionStorage.removeItem(this.sessionStorageKey),\n Storage.removeItem(this.persistentStorageKey),\n ])\n }\n\n get remember(): boolean {\n return this._remember\n }\n}\n\nexport default OAuth2\n","export class NimbuSelectOption {\n id: string | null\n value: string | null\n\n constructor(id: string | null, value: string | null) {\n this.id = id\n this.value = value\n }\n\n toJSON() {\n if (this.id != null) {\n return this.id\n } else {\n return this.value\n }\n }\n}\n\nexport default NimbuSelectOption\n","import { find, map, union, without } from 'underscore'\nimport { NimbuObject, NimbuSelectOption } from '../internal'\n\nexport type NimbuSelectOptionListType = {\n __type: string\n ids: string[]\n values: string[]\n}\n\nexport class NimbuSelectOptionList {\n parent: NimbuObject\n key: string\n _options: NimbuSelectOption[]\n\n constructor(parent: NimbuObject, key: string, options?: NimbuSelectOption[]) {\n this.parent = parent\n this.key = key\n if (options != null) {\n this._options = options\n } else {\n this._options = []\n }\n }\n\n static decode = function (parent: any, key: any, value: NimbuSelectOptionListType) {\n if (value.__type !== 'MultiSelect') {\n throw \"Internal Error. Tried to decode a value that isn't a MultiSelect to SelectOptionList\"\n }\n const options = map(value.ids, (id, i) => new NimbuSelectOption(id, value.values[i]))\n return new NimbuSelectOptionList(parent, key, options)\n }\n\n /*\n * Makes sure that this select option list has the right parent and key.\n */\n _ensureParentAndKey(parent: any, key: any) {\n this.parent = this.parent || parent\n this.key = this.key || key\n if (this.parent !== parent) {\n throw 'Internal Error. SelectOptionList retrieved from two different Objects.'\n }\n if (this.key !== key) {\n throw 'Internal Error. SelectOptionList retrieved from two different keys.'\n }\n }\n\n list() {\n return this._options\n }\n\n values() {\n return map(this._options, (o: { value: any }) => o.value)\n }\n\n ids() {\n return map(this._options, (o: { id: any }) => o.id)\n }\n\n includes(option: { id: any; value: any }) {\n if (!(option instanceof NimbuSelectOption)) {\n throw 'You need to provide an instance of Nimbu.SelectOption'\n }\n const o = find(\n this._options,\n (o: { id: any; value: any }) =>\n (o.id != null && o.id === option.id) || (o.value != null && o.value === option.value)\n )\n return o != null\n }\n\n includesValue(value: any) {\n const o = find(this._options, (o: { value: any }) => o.value === value)\n return o != null\n }\n\n includesId(id: any) {\n const o = find(this._options, (o: { id: any }) => o.id === id)\n return o != null\n }\n\n add(option: NimbuSelectOption) {\n if (!(option instanceof NimbuSelectOption)) {\n throw 'You need to provide an instance of Nimbu.SelectOption'\n }\n if (!this.includes(option)) {\n this._options = union(this._options, [option])\n this.parent.set(this.key, this)\n }\n }\n\n addValue(value: any) {\n return this.add(new NimbuSelectOption(null, value))\n }\n\n addId(id: any) {\n return this.add(new NimbuSelectOption(id, null))\n }\n\n remove(option: NimbuSelectOption) {\n if (!(option instanceof NimbuSelectOption)) {\n throw 'You need to provide an instance of Nimbu.SelectOption'\n }\n const o = find(\n this._options,\n (o) => (o.id != null && o.id === option.id) || (o.value != null && o.value === option.value)\n )\n if (o != null) {\n this._options = without(this._options, o)\n this.parent.set(this.key, this)\n }\n }\n\n removeValue(value: string) {\n return this.remove(new NimbuSelectOption(null, value))\n }\n\n removeId(id: string) {\n return this.remove(new NimbuSelectOption(id, null))\n }\n\n toJSON() {\n return map(this._options, (o) => o.toJSON())\n }\n}\n\nexport default NimbuSelectOptionList\n","import { NimbuObject } from '../internal'\n\nexport function arrayContainsObject(array: Array<any>, object: NimbuObject): boolean {\n if (array.indexOf(object) > -1) {\n return true\n }\n for (let i = 0; i < array.length; i++) {\n const item = array[i]\n if (item instanceof NimbuObject && item.className === object.className && item._getId() === object._getId()) {\n return true\n }\n }\n return false\n}\n","import {\n NimbuACL,\n NimbuAtomic,\n NimbuFile,\n NimbuGallery,\n NimbuGalleryImage,\n NimbuObject,\n NimbuRelation,\n NimbuSelectOption,\n NimbuSelectOptionList,\n _arrayEach,\n _objectEach,\n parseDate,\n} from '../internal'\n\nimport { isArray, isObject, isString, map } from 'underscore'\n\n/*\nThe inverse function of Nimbu.encode.\nTODO: make decode not mutate value.\n*/\nexport const decode = function (key: string | number | null, value?: any) {\n let className: any\n if (isString(value)) {\n // check if the value is a date\n const dateValue = parseDate(value)\n if (dateValue != null) {\n return dateValue\n }\n }\n\n if (!isObject(value)) {\n return value\n }\n\n if (isArray(value)) {\n _arrayEach(value, (v, k) => {\n value[k] = decode(k, v)\n })\n return value\n }\n\n if (value instanceof NimbuObject || value instanceof NimbuAtomic) {\n return value\n }\n\n if (key === '_acl') {\n if (value instanceof NimbuACL) {\n return value\n }\n return new NimbuACL(value)\n }\n\n if (value.__type === 'File') {\n return new NimbuFile(value.filename, value as any)\n }\n\n if (value.__type === 'Select') {\n return new NimbuSelectOption(value.id, value.value)\n }\n\n if (value.__type === 'MultiSelect') {\n return NimbuSelectOptionList.decode(null, key, value as any)\n }\n\n if (value.__type === 'Reference') {\n const pointer = NimbuObject._create(value.className)\n pointer._finishFetch({ id: value.id })\n return pointer\n }\n\n if (value.__type === 'Object') {\n ;({ className } = value)\n delete value.__type\n delete value.className\n\n const object = NimbuObject._create(className)\n object._finishFetch(value)\n return object\n }\n\n // return parseDate(value.iso) if value.__type is \"Date\"\n // if value.__type is \"GeoPoint\"\n // return new Nimbu.GeoPoint(\n // latitude: value.latitude\n // longitude: value.longitude\n // )\n\n if (value.__type === 'Relation') {\n const values = map(value.objects, (v: any, k: any) => decode(k, v))\n const relation: NimbuRelation = new NimbuRelation(null, key as any, values)\n relation.targetClassName = value.className\n return relation\n }\n\n if (value.__type === 'Gallery') {\n const images = map(value.images, (img: any) => decode('image', img))\n const gallery: NimbuGallery = new NimbuGallery(null, key as any, images)\n return gallery\n }\n\n if (value.__type === 'GalleryImage') {\n value.file = decode('file', value.file)\n const gallery_image = new NimbuGalleryImage(value)\n return gallery_image\n }\n\n // if value.__type is \"File\"\n // file = new Nimbu.File(value.name)\n // file._url = value.url\n // return file\n _objectEach(value, (v: any, k: string | number) => (value[k] = decode(k, v)))\n\n return value\n}\n\nexport default decode\n","import {\n AttributeMap,\n NimbuACL,\n NimbuFile,\n NimbuGallery,\n NimbuGalleryImage,\n NimbuObject,\n NimbuRelation,\n NimbuSelectOption,\n NimbuSelectOptionList,\n _objectEach,\n} from '../internal'\n\nimport { include, isArray, isDate, isObject, isRegExp, map, times } from 'underscore'\n\n/**\n * Converts a value in a Nimbu Object into the appropriate representation.\n * This is the JS equivalent of Java's Nimbu.maybeReferenceAndEncode(Object)\n * if seenObjects is falsey. Otherwise any Nimbu.Objects not in\n * seenObjects will be fully embedded rather than encoded\n * as a pointer. This array will be used to prevent going into an infinite\n * loop because we have circular references. If seenObjects\n * is set, then none of the Nimbu Objects that are serialized can be dirty.\n */\n\nexport type EncodeOptions = {\n value: any\n seenObjects?: Array<any> | null\n disallowObjects?: boolean\n forcePointers?: boolean\n}\n\nexport const encode = ({ value, seenObjects, disallowObjects, forcePointers }: EncodeOptions): any => {\n // FIXME: improve types\n if (value instanceof NimbuObject) {\n if (disallowObjects) {\n throw 'Nimbu.Objects not allowed here'\n }\n\n if (forcePointers || !seenObjects || include(seenObjects, value) || !value._hasData) {\n return value._toReference()\n }\n\n throw 'Tried to save an object with a pointer to a new, unsaved object.'\n }\n\n if (\n value instanceof NimbuACL ||\n value instanceof NimbuRelation ||\n value instanceof NimbuFile ||\n value instanceof NimbuGallery ||\n value instanceof NimbuGalleryImage ||\n value instanceof NimbuSelectOption ||\n value instanceof NimbuSelectOptionList\n ) {\n return value.toJSON()\n }\n\n if (isDate(value)) {\n return value.toJSON()\n }\n\n // if value instanceof Nimbu.GeoPoint\n // return value.toJSON()\n\n if (isArray(value)) {\n return map(value, (x: any) => encode({ value: x, seenObjects, disallowObjects }))\n }\n\n if (isRegExp(value)) {\n return value.source\n }\n\n if (isObject(value)) {\n const output: AttributeMap = {}\n _objectEach(value, (v: any, k: string | number) => {\n output[k] = encode({ value: v, seenObjects, disallowObjects })\n })\n\n return output\n }\n return value\n}\n\nexport const encodeDigit = (number: number) => {\n if (number < 26) {\n return String.fromCharCode(65 + number)\n }\n if (number < 52) {\n return String.fromCharCode(97 + number - 26)\n }\n if (number < 62) {\n return String.fromCharCode(48 + number - 52)\n }\n if (number === 62) {\n return '+'\n }\n if (number === 63) {\n return '/'\n }\n throw 'Tried to encode large digit ' + number + ' in base64.'\n}\n\nexport const encodeBase64 = (array: any[]) => {\n const chunks: string[] = []\n chunks.length = Math.ceil(array.length / 3)\n times(chunks.length, function (i: number) {\n const b1 = array[i * 3]\n const b2 = array[i * 3 + 1] || 0\n const b3 = array[i * 3 + 2] || 0\n const has2 = i * 3 + 1 < array.length\n const has3 = i * 3 + 2 < array.length\n chunks[i] = [\n encodeDigit((b1 >> 2) & 0x3f),\n encodeDigit(((b1 << 4) & 0x30) | ((b2 >> 4) & 0x0f)),\n has2 ? encodeDigit(((b2 << 2) & 0x3c) | ((b3 >> 6) & 0x03)) : '=',\n has3 ? encodeDigit(b3 & 0x3f) : '=',\n ].join('')\n })\n return chunks.join('')\n}\n\nexport default encode\n","/* eslint-disable jest/no-export */\n/* eslint-disable jest/no-disabled-tests */\n/* eslint-disable jest/expect-expect */\n// => jest eslint plugin looks for usage of jest functions, so \"when\" is triggering this\n\nimport { isArray } from 'underscore'\n\n// Create Deferred Promise\nexport function resolvingPromise<T = any>() {\n let res: (val: T) => void\n let rej: (err: any) => void\n const promise = new Promise<T>((resolve, reject) => {\n res = resolve\n rej = reject\n })\n const ret: typeof promise & {\n resolve: (res: T) => void\n reject: (err: any) => void\n } = promise as any\n ret.resolve = res!\n ret.reject = rej!\n return ret\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function when(promises: Promise<any> | Promise<any>[], ...others: Promise<any>[]) {\n let objects: Promise<any>[]\n\n if (isArray(promises)) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n objects = promises\n } else {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n objects = [promises, ...others]\n }\n\n let total = objects.length\n let hadError = false\n const results: any[] = []\n const returnValue = isArray(promises) ? [results] : results\n const errors: any[] = []\n results.length = objects.length\n errors.length = objects.length\n\n if (total === 0) {\n return Promise.resolve(returnValue)\n }\n\n const promise = resolvingPromise()\n\n const resolveOne = function () {\n total--\n if (total <= 0) {\n if (hadError) {\n promise.reject(errors)\n } else {\n promise.resolve(returnValue)\n }\n }\n }\n\n const chain = function (object: Promise<any>, index: number) {\n if (object != null && typeof object.then === 'function') {\n object.then(\n function (result) {\n results[index] = result\n resolveOne()\n },\n function (error) {\n errors[index] = error\n hadError = true\n resolveOne()\n }\n )\n } else {\n results[index] = object\n resolveOne()\n }\n }\n for (let i = 0; i < objects.length; i++) {\n chain(objects[i], i)\n }\n return promise\n}\n\nexport function continueWhile(test: () => boolean, emitter: () => Promise<any>): Promise<void> {\n if (test()) {\n return emitter().then(() => {\n return continueWhile(test, emitter)\n })\n }\n return Promise.resolve()\n}\n","import { arrayContainsObject, NimbuObject } from '../internal'\n\nexport function unique<T>(arr: Array<T>): Array<T> {\n const uniques: T[] = []\n arr.forEach((value) => {\n if (value instanceof NimbuObject) {\n if (!arrayContainsObject(uniques, value)) {\n uniques.push(value)\n }\n } else {\n if (uniques.indexOf(value) < 0) {\n uniques.push(value)\n }\n }\n })\n return uniques\n}\n","import { resolvingPromise } from '../internal'\n\ntype Task = {\n task: () => Promise<void>\n _completion: ReturnType<typeof resolvingPromise<void>>\n}\n\nexport class TaskQueue {\n queue: Array<Task>\n\n constructor() {\n this.queue = []\n }\n\n enqueue(task: () => Promise<void>): Promise<void> {\n const taskComplete = resolvingPromise<void>()\n this.queue.push({\n task: task,\n _completion: taskComplete,\n })\n if (this.queue.length === 1) {\n task().then(\n () => {\n this._dequeue()\n taskComplete.resolve()\n },\n (error) => {\n this._dequeue()\n taskComplete.reject(error)\n }\n )\n }\n return taskComplete\n }\n\n _dequeue() {\n this.queue.shift()\n if (this.queue.length) {\n const next = this.queue[0]\n next.task().then(\n () => {\n this._dequeue()\n next._completion.resolve()\n },\n (error) => {\n this._dequeue()\n next._completion.reject(error)\n }\n )\n }\n }\n}\n\nexport default TaskQueue\n","// Internal file helping to solve circular dependencies\n\nexport const VERSION = '2.0.0.alpha.2'\n\nexport * from './utils/types'\n\nexport * from './sdk/object'\nexport * from './sdk/atomic'\nexport * from './sdk/acl'\nexport * from './sdk/api'\nexport * from './sdk/collection'\nexport * from './sdk/config'\nexport * from './sdk/coupon'\nexport * from './sdk/customer'\nexport * from './sdk/customer-sessions'\nexport * from './sdk/device'\nexport * from './sdk/errors'\nexport * from './sdk/file'\nexport * from './sdk/functions'\nexport * from './sdk/gallery'\nexport * from './sdk/gallery-image'\nexport * from './sdk/helpers'\nexport * from './sdk/order'\nexport * from './sdk/page'\nexport * from './sdk/product'\nexport * from './sdk/product-aggregate'\nexport * from './sdk/push'\nexport * from './sdk/query'\nexport * from './sdk/relation'\nexport * from './sdk/requests'\nexport * from './sdk/role'\nexport * from './sdk/oauth2'\nexport * from './sdk/select-option'\nexport * from './sdk/select-option-list'\nexport * from './sdk/storage'\nexport * from './sdk/state'\n\nexport * from './utils/array-contains-object'\nexport * from './utils/decode'\nexport * from './utils/encode'\nexport * from './utils/promise-utils'\nexport * from './utils/traverse'\nexport * from './utils/unique'\nexport * from './utils/task-queue'\n","/* eslint-disable @typescript-eslint/unbound-method */\nimport {\n NimbuACL,\n NimbuAPI,\n NimbuCloud,\n NimbuCollection,\n NimbuCoupon,\n NimbuCustomer,\n NimbuDevice,\n NimbuFile,\n NimbuGallery,\n NimbuGalleryImage,\n NimbuObject,\n NimbuOrder,\n NimbuPage,\n NimbuProduct,\n NimbuProductAggregate,\n NimbuPush,\n NimbuQuery,\n NimbuRelation,\n NimbuRole,\n NimbuSelectOption,\n NimbuSelectOptionList,\n NimbuError,\n enableChaos,\n getInstallationId,\n initialize,\n useACL,\n useSSO,\n VERSION,\n Config,\n IAjax,\n IStorage,\n ChannelConfig,\n Select,\n MultiSelect,\n} from './internal'\n\nconst Nimbu = {\n VERSION,\n ACL: NimbuACL,\n API: {\n // weird hack to get the types correctly exported\n get: NimbuAPI.get,\n post: NimbuAPI.post,\n put: NimbuAPI.put,\n patch: NimbuAPI.patch,\n delete: NimbuAPI.delete,\n request: NimbuAPI.request,\n },\n // Atomic: NimbuAtomic,\n Cloud: {\n run: NimbuCloud.run,\n },\n Config,\n Collection: NimbuCollection,\n Coupon: NimbuCoupon,\n Customer: NimbuCustomer,\n Device: NimbuDevice,\n enableChaos,\n Error: NimbuError,\n File: NimbuFile,\n Gallery: NimbuGallery,\n GalleryImage: NimbuGalleryImage,\n getInstallationId,\n initialize,\n Object: NimbuObject,\n Order: NimbuOrder,\n Page: NimbuPage,\n Product: NimbuProduct,\n ProductAggregate: NimbuProductAggregate,\n Push: NimbuPush,\n Query: NimbuQuery,\n Relation: NimbuRelation,\n Role: NimbuRole,\n SelectOption: NimbuSelectOption,\n SelectOptionList: NimbuSelectOptionList,\n setAjax: (fn: IAjax) => Config.setAjax(fn),\n setStorage: (storage: IStorage) => Config.setStorage(storage),\n useACL,\n useSSO,\n}\n\nexport {\n ChannelConfig,\n Select,\n MultiSelect,\n NimbuACL,\n NimbuAPI,\n NimbuCloud,\n NimbuCollection,\n NimbuCoupon,\n NimbuCustomer,\n NimbuDevice,\n NimbuFile,\n NimbuGallery,\n NimbuGalleryImage,\n NimbuObject,\n NimbuOrder,\n NimbuPage,\n NimbuProduct,\n NimbuProductAggregate,\n NimbuPush,\n NimbuQuery,\n NimbuRelation,\n NimbuRole,\n NimbuSelectOption,\n NimbuSelectOptionList,\n NimbuError,\n}\n\nexport default Nimbu\n"],"names":["_defaultGetOptions","transformedKeys","objectId","created_at","updated_at","session_token","inverseTransformedKeys","key","isValidDate","d","Date","isNaN","getTime","classMap","objectCount","unsavedChildren","model","unsaved","attributes","attr","NimbuObject","id","push","_proto","prototype","initialize","className","options","cid","collection","changed","_objCount","_operations","validationError","idAttribute","_hasData","_refreshingCache","_changing","_saving","apply","arguments","uniqueId","toSet","_className","undefined","Error","set","_getId","get","value","NimbuSelectOption","_value","NimbuSelectOptionList","values","_ensureParentAndKey","escape","isString","has","_options2","changes","newAtomics","readonly","constructor","readOnlyAttributes","concat","k","_options","indexOf","unset","AtomicUnset","NimbuAtomic","__op","atomic","atomicFromJSON","NimbuACL","AtomicSet","NimbuRelation","relation","targetClassName","currentAttributes","newValues","AtomicRelation","applyTo","validate","validation","error","stateManager","Config","getStateManager","stateIdentifier","_getStateIdentifier","pendingAtomics","getPendingAtomics","last","length","nextAtomic","mergeWith","setPendingAtomic","increment","amount","AtomicIncrement","clear","attrs","extend","_toReference","__type","gallery","NimbuGallery","file","NimbuFile","hasChanged","isEmpty","fetch","_fetch","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_yield$_request","body","status","xhr","wrap","_callee$","_context","prev","next","_request","method","route","useACL","forceChannel","include","sent","_finishFetch","parse","abrupt","stop","_x","fetchWithInclude","_fetchWithInclude","_callee2","keys","_context2","_x2","_x3","save","arg1","arg2","arg3","_this","Promise","reject","saveOptions","Object","hasOwnProperty","call","sessionToken","cascadeSave","_save","then","destroy","_this2","request","wait","response","output","clone","each","parseDate","_extends","isNew","getACL","setACL","acl","isValid","_validate","_acl","NimbuError","OTHER_CAUSE","correct","_objectEach","unused_value","test","INVALID_KEY_NAME","_getPendingAtomics","_clearPendingAtomics","keysToClear","pending","latest","forEach","_getDirtyObjectAttributes","objectCache","getObjectCache","dirty","json","encode","disallowObjects","forcePointers","stringified","JSON","stringify","e","_getSaveJSON","dirtyObjects","isDotNotation","i","field","includes","fieldName","split","toJSON","seen","seenEntry","_inverseTransformedKe","attrValue","targetKey","seenObjects","_inverseTransformedKe2","_toFullJSON","_getSaveParams","data","locale","progress","_finishSave","serverData","state","popPendingState","_transformedKeys$attr","val","decode","getPrototypeOf","currentObject","isObject","createdAt","updatedAt","_migrateId","commitServerChanges","_onSaveError","mergeFirstPendingState","serverId","oldState","removeState","initializeState","decoded","_transformedKeys$attr2","decodedTargetValue","_save2","_callee4","target","saved","params","_yield$_request2","_callee4$","_context4","Array","isArray","continueWhile","_callee3","objectToSave","_callee3$","_context3","shift","t0","t1","_x4","_x5","createWithoutData","obj","fromJSON","override","object","otherAttributes","protoProps","classProps","parentProto","__super__","NimbuObjectSubclass","_initializers","_iterator","_createForOfIteratorHelperLoose","_step","done","initializer","name","create","enumerable","writable","configurable","prop","defineProperty","saveAll","list","registerSubclass","TypeError","unregisterSubclass","_createClass","freeze","estimateAttributes","shortId","_getSubclass","ObjectClass","_create","setDefaultGetOptions","AtomicAdd","objects","AtomicAddUnique","AtomicRemove","toAdd","toRemove","ops","previous","_NimbuAtomic2","_inheritsLoose","_proto2","_NimbuAtomic3","_proto3","_NimbuAtomic4","_amount","_proto4","_NimbuAtomic5","_this3","_proto5","_NimbuAtomic6","_this4","unique","_proto6","v","arrayContainsObject","_NimbuAtomic7","_this5","_proto7","removed","index","splice","j","uniques","_NimbuAtomic8","adds","removes","_this6","_targetClassName","relationsToAdd","relationsToRemove","map","o","_extractId","_assertThisInitialized","_proto8","parent","newAdd","r","newRemove","newRelation","_this7","idToPointer","ret","references","AtomicRemoveFile","_NimbuAtomic9","_proto9","remove","AtomicGallery","_NimbuAtomic10","updates","_this8","_imagesToAdd","_idsToAdd","_idsToRemove","_imagesToRemove","_idsToUpdate","img","compact","_proto10","_additions","image","_removals","_updates","pairs","pair","_images","images","newUpdates","union","difference","_estimate","oldValue","_this9","oldImages","NimbuGalleryImage","contains","PUBLIC_KEY","AUTHENTICATED_KEY","permissionsById","NimbuCustomer","allowRead","allowUpdate","allowDelete","isFunction","accessList","customerId","allowed","permission","isBoolean","_setPermission","action","NimbuRole","getName","permissions","_getPermission","getReadAccess","getUpdateAccess","getDeleteAccess","setPublicReadAccess","getPublicReadAccess","setPublicUpdateAccess","getPublicUpdateAccess","setPublicDeleteAccess","getPublicDeleteAccess","setLoggedInReadAccess","getLoggedInReadAccess","setLoggedInUpdateAccess","getLoggedInUpdateAccess","setLoggedInDeleteAccess","getLoggedInDeleteAccess","getRoleReadAccess","role","getRoleUpdateAccess","getRoleDeleteAccess","setRoleReadAccess","setRoleUpdateAccess","setRoleDeleteAccess","GET","path","POST","PUT","PATCH","DELETE","charAt","substring","requestData","NimbuAPI","post","put","patch","NimbuCollection","models","comparator","query","_byCid","_byId","_reset","reset","silent","add","cids","ids","slice","_models","_prepareModel","_models2","l","getByCid","_removeReference","modelId","at","pluck","_arrayEach","count","NimbuQuery","finished","find","results","hasNext","currentPage","page","resp","defaultState","tasks","TaskQueue","existed","setServerData","pushPendingState","first","merged","estimateAttribute","fields","nestedSet","objectState","getState","classData","initial","ObjectStateMutations","getServerData","enqueueTask","task","enqueue","clearAllState","duplicateState","source","dest","requireMethods","methods","controller","func","SSO_STORAGE_PREFIX","isOAuth2AccessToken","accessToken","_ref","endpoint","installationId","OAuth2","clientId","refreshToken","useSSO","initInstallationId","initCurrent","sso","getStoragePath","_Config$accessToken","initialized","_","prefix","getInstallationId","hexOctet","Math","floor","random","toString","_ref2","existingInstallationId","newInstallationId","_callee2$","Storage","getItem","setItem","config","isNode","process","versions","node","version","VERSION","StateManager","allowNull","oauth2Client","OAuth2Manager","useOauth2","_config$OAuth2Manager","getAccessToken","ajax","setAjax","fn","setStateManager","manager","setStorage","storage","getStorage","setSessionManager","typedConfig","getSessionManager","NimbuCoupon","_NimbuObject","_logOutWithAll","authData","signUp","username","password","_len","args","_key","_args","isCurrent","updateOnDisk","_len2","_key2","_args2","_len3","_key3","_args3","logIn","_logIn","email","customer","existingCustomerObject","currentCustomer","setEmail","setPassword","getAutologinToken","token","authentication_token","validateSession","_callee5","_callee5$","_context5","console","logOut","_updateOnDisk","_callee6","_callee6$","_context6","CURRENT_CUSTOMER_KEY","user","_logIn2","_callee7","result","_callee7$","_context7","setCurrent","_logOut","_callee8","_callee8$","_context8","removeItem","requestPasswordReset","validateCurrent","_validateCurrent","_callee9","_callee9$","_context9","current","currentCustomerMatchesDisk","_initCurrent","_callee10","customerFromStorage","customerJSON","_callee10$","_context10","resolve","firstName","lastName","OAuth2SessionManager","_options$existingCust","success","remember","BasicSessionManager","log","_x6","_logOut2","_validate2","sso_id","metaTags","sso_data","sso_url","csrfToken","_yield$_request3","sharedSSOSecret","headers","_yield$Config$ajax","customerBody","serverAttrs","document","window","getElementsByTagName","getAttribute","AES","decrypt","decodeURIComponent","enc","Utf8","shared_secret","_clientVersion","_accessToken","_installationId","_csrfToken","DefaultSessionManager","NimbuDevice","_Error","code","message","errors","_wrapNativeSuper","INTERNAL_SERVER_ERROR","CONNECTION_FAILED","OBJECT_NOT_FOUND","INVALID_QUERY","INVALID_CLASS_NAME","MISSING_OBJECT_ID","INVALID_POINTER","INVALID_JSON","COMMAND_UNAVAILABLE","NOT_INITIALIZED","INCORRECT_TYPE","INVALID_CHANNEL_NAME","PUSH_MISCONFIGURED","OBJECT_TOO_LARGE","OPERATION_FORBIDDEN","CACHE_MISS","INVALID_NESTED_KEY","INVALID_FILE_NAME","INVALID_ACL","TIMEOUT","INVALID_EMAIL_ADDRESS","MISSING_CONTENT_TYPE","MISSING_CONTENT_LENGTH","INVALID_CONTENT_LENGTH","FILE_TOO_LARGE","FILE_SAVE_ERROR","FILE_DELETE_ERROR","DUPLICATE_VALUE","INVALID_ROLE_NAME","EXCEEDED_QUOTA","SCRIPT_FAILED","VALIDATION_ERROR","INVALID_IMAGE_DATA","UNSAVED_FILE_ERROR","INVALID_PUSH_TIME_ERROR","USERNAME_MISSING","PASSWORD_MISSING","USERNAME_TAKEN","EMAIL_TAKEN","EMAIL_MISSING","EMAIL_NOT_FOUND","SESSION_MISSING","MUST_CREATE_USER_THROUGH_SIGNUP","ACCOUNT_ALREADY_LINKED","LINKED_ID_MISSING","INVALID_LINKED_SESSION","UNSUPPORTED_SERVICE","AGGREGATE_ERROR","isNimbuFileFromAPI","url","isPrivateNimbuFile","isBase64Data","base64","filename","width","height","content_type","checksum","size","permanent_url","permanent_relative_url","permanent_backend_url","_data","regexp","matches","exec","encodeBase64","attachment","NimbuCloud","run","galleryMatches","blankAllowed","validImage","requiredGallery","blankGalleryAllowed","validImages","all","_setGallery","_this$parent","change","_this$parent2","_updateImage","_this$parent3","caption","position","callback","iso8601","_Number","RegExp","match","year","Number","month","day","hour","minute","second","milli","UTC","_toQueryString","parts","encodeURIComponent","join","NimbuOrder","_add","product","quantity","extras","_remove","item","getItems","NimbuPage","_NimbuObject3","slug","published","homepage","fullpath","template","title","public_url","parent_path","items","idOrPath","equalTo","replace","NimbuProduct","getVariants","hasVariants","getSubProducts","addSubProduct","variant","NimbuProductAggregate","removeSubProduct","aggregate","hasId","getProductId","_parts$length","_parts","getVariantId","_parts$length2","_parts2","getProduct","_val","NimbuPush","send","where","toQueryString","objectClass","pageCount","_where","_extraOptions","_limit","_skip","_next","_prev","_last","_perPage","_resolve","_only","_sort","objectClz","or","queries","q","isNull","_orQuery","_get","errorObject","only","limit","per_page","skip","sort","_this$_where","_find","link","_regexp","_result","_regexp2","_result2","arrayBody","getResponseHeader","parseInt","findAll","_findAll","eachBatch","batchSize","conditionMap","cond","ascending","previousResults","_yield$Promise$all","greaterThan","hasPrevious","_count","_body$count","findDeleted","_findDeleted","deleted_at","_first","_x7","n","per","isUndefined","doesNotExist","_addCondition","condition","notEqualTo","lessThan","lessThanOrEqualTo","greaterThanOrEqualTo","containedIn","notContainedIn","containsAll","exists","regex","modifiers","ignoreCase","multiline","queryJSON","objectValue","_quote","s","startsWith","endsWith","search","geoIntersects","geometry","geoWithin","near","maxDistance","minDistance","point","nearCoordinates","lng","lat","type","coordinates","addAscending","descending","addDescending","_len4","_key4","includeAll","_len5","_key5","callbacksDone","_objects","useChaos","chaosThreshold","RequestMethod","XHR","XMLHttpRequest","_ref$method","dataObject","queryString","classRoute","_sessionToken","responseText","formPost","urlEncodedDataPairs","handled","onreadystatechange","readyState","open","setRequestHeader","progressHandler","handleProgress","event","lengthComputable","loaded","total","onprogress","upload","onabort","toUpperCase","enableChaos","percentage","setName","getCustomers","getRoles","getChildren","getParents","newName","async","getItemAsync","setItemAsync","removeItemAsync","getAllKeys","getAllKeysAsync","memMap","MemoryStorage","String","BrowserSessionStorage","sessionStorage","LocalStorage","localStorage","SessionStorage","clientSecret","scope","anonymousRefreshToken","expiresAt","_remember","restored","restore","_restore","refreshTokenFromPersistentStorage","_JSON$parse","persistentStorageKey","sessionStorageKey","_apply","newRefreshToken","access_token","now","expires_in","refresh_token","refresh","_refresh","client_id","grant_type","client_secret","_getAccessToken","needsRefresh","formData","option","includesValue","includesId","addValue","addId","without","removeValue","removeId","array","dateValue","pointer","gallery_image","isDate","x","isRegExp","encodeDigit","number","fromCharCode","chunks","ceil","times","b1","b2","b3","has2","has3","resolvingPromise","res","rej","promise","emitter","arr","queue","taskComplete","_completion","_dequeue","Nimbu","ACL","API","Cloud","Collection","Coupon","Customer","Device","File","Gallery","GalleryImage","Order","Page","Product","ProductAggregate","Push","Query","Relation","Role","SelectOption","SelectOptionList"],"mappings":"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"}
|