@opensanctions/followthemoney 4.3.3 → 4.4.0
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.
- package/dist/defaultModel.json +20 -3
- package/dist/{followthemoney.es5.js → followthemoney.es.js} +35 -61
- package/dist/followthemoney.es.js.map +1 -0
- package/dist/followthemoney.umd.js +36 -64
- package/dist/followthemoney.umd.js.map +1 -1
- package/dist/model.d.ts +6 -0
- package/dist/model.js +13 -2
- package/dist/model.js.map +1 -1
- package/package.json +3 -4
- package/dist/followthemoney.es5.js.map +0 -1
package/dist/defaultModel.json
CHANGED
|
@@ -1084,7 +1084,11 @@
|
|
|
1084
1084
|
},
|
|
1085
1085
|
"Company": {
|
|
1086
1086
|
"caption": [
|
|
1087
|
-
"name"
|
|
1087
|
+
"name",
|
|
1088
|
+
"alias",
|
|
1089
|
+
"weakAlias",
|
|
1090
|
+
"previousName",
|
|
1091
|
+
"registrationNumber"
|
|
1088
1092
|
],
|
|
1089
1093
|
"description": "A corporation, usually for profit. Does not distinguish between private and public companies, and can also be used to model more specific constructs like trusts and funds. Companies are assets, so they can be owned by other legal entities.\n",
|
|
1090
1094
|
"extends": [
|
|
@@ -3358,6 +3362,9 @@
|
|
|
3358
3362
|
"LegalEntity": {
|
|
3359
3363
|
"caption": [
|
|
3360
3364
|
"name",
|
|
3365
|
+
"alias",
|
|
3366
|
+
"weakAlias",
|
|
3367
|
+
"previousName",
|
|
3361
3368
|
"email",
|
|
3362
3369
|
"phone",
|
|
3363
3370
|
"registrationNumber"
|
|
@@ -4551,7 +4558,11 @@
|
|
|
4551
4558
|
},
|
|
4552
4559
|
"Organization": {
|
|
4553
4560
|
"caption": [
|
|
4554
|
-
"name"
|
|
4561
|
+
"name",
|
|
4562
|
+
"alias",
|
|
4563
|
+
"weakAlias",
|
|
4564
|
+
"previousName",
|
|
4565
|
+
"registrationNumber"
|
|
4555
4566
|
],
|
|
4556
4567
|
"description": "Any type of incorporated entity that cannot be owned by another (see Company). This might include charities, foundations or state-owned enterprises, depending on their jurisdiction.\n",
|
|
4557
4568
|
"extends": [
|
|
@@ -5182,6 +5193,9 @@
|
|
|
5182
5193
|
"Person": {
|
|
5183
5194
|
"caption": [
|
|
5184
5195
|
"name",
|
|
5196
|
+
"alias",
|
|
5197
|
+
"weakAlias",
|
|
5198
|
+
"previousName",
|
|
5185
5199
|
"lastName",
|
|
5186
5200
|
"email",
|
|
5187
5201
|
"phone"
|
|
@@ -5792,7 +5806,10 @@
|
|
|
5792
5806
|
},
|
|
5793
5807
|
"PublicBody": {
|
|
5794
5808
|
"caption": [
|
|
5795
|
-
"name"
|
|
5809
|
+
"name",
|
|
5810
|
+
"alias",
|
|
5811
|
+
"weakAlias",
|
|
5812
|
+
"previousName"
|
|
5796
5813
|
],
|
|
5797
5814
|
"description": "A public body, such as a ministry, department or state company.\n",
|
|
5798
5815
|
"extends": [
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { randomUUID } from 'crypto';
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* An entity proxy which provides simplified access to the
|
|
3
5
|
* properties and schema associated with an entity.
|
|
@@ -239,62 +241,6 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
|
|
|
239
241
|
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
240
242
|
};
|
|
241
243
|
|
|
242
|
-
const byteToHex = [];
|
|
243
|
-
for (let i = 0; i < 256; ++i) {
|
|
244
|
-
byteToHex.push((i + 0x100).toString(16).slice(1));
|
|
245
|
-
}
|
|
246
|
-
function unsafeStringify(arr, offset = 0) {
|
|
247
|
-
return (byteToHex[arr[offset + 0]] +
|
|
248
|
-
byteToHex[arr[offset + 1]] +
|
|
249
|
-
byteToHex[arr[offset + 2]] +
|
|
250
|
-
byteToHex[arr[offset + 3]] +
|
|
251
|
-
'-' +
|
|
252
|
-
byteToHex[arr[offset + 4]] +
|
|
253
|
-
byteToHex[arr[offset + 5]] +
|
|
254
|
-
'-' +
|
|
255
|
-
byteToHex[arr[offset + 6]] +
|
|
256
|
-
byteToHex[arr[offset + 7]] +
|
|
257
|
-
'-' +
|
|
258
|
-
byteToHex[arr[offset + 8]] +
|
|
259
|
-
byteToHex[arr[offset + 9]] +
|
|
260
|
-
'-' +
|
|
261
|
-
byteToHex[arr[offset + 10]] +
|
|
262
|
-
byteToHex[arr[offset + 11]] +
|
|
263
|
-
byteToHex[arr[offset + 12]] +
|
|
264
|
-
byteToHex[arr[offset + 13]] +
|
|
265
|
-
byteToHex[arr[offset + 14]] +
|
|
266
|
-
byteToHex[arr[offset + 15]]).toLowerCase();
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
let getRandomValues;
|
|
270
|
-
const rnds8 = new Uint8Array(16);
|
|
271
|
-
function rng() {
|
|
272
|
-
if (!getRandomValues) {
|
|
273
|
-
if (typeof crypto === 'undefined' || !crypto.getRandomValues) {
|
|
274
|
-
throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');
|
|
275
|
-
}
|
|
276
|
-
getRandomValues = crypto.getRandomValues.bind(crypto);
|
|
277
|
-
}
|
|
278
|
-
return getRandomValues(rnds8);
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);
|
|
282
|
-
var native = { randomUUID };
|
|
283
|
-
|
|
284
|
-
function v4(options, buf, offset) {
|
|
285
|
-
if (native.randomUUID && true && !options) {
|
|
286
|
-
return native.randomUUID();
|
|
287
|
-
}
|
|
288
|
-
options = options || {};
|
|
289
|
-
const rnds = options.random ?? options.rng?.() ?? rng();
|
|
290
|
-
if (rnds.length < 16) {
|
|
291
|
-
throw new Error('Random bytes length must be >= 16');
|
|
292
|
-
}
|
|
293
|
-
rnds[6] = (rnds[6] & 0x0f) | 0x40;
|
|
294
|
-
rnds[8] = (rnds[8] & 0x3f) | 0x80;
|
|
295
|
-
return unsafeStringify(rnds);
|
|
296
|
-
}
|
|
297
|
-
|
|
298
244
|
/**
|
|
299
245
|
* Definition of a property, with relevant metadata for type,
|
|
300
246
|
* labels and other useful criteria.
|
|
@@ -583,6 +529,17 @@ class Model {
|
|
|
583
529
|
return new Entity(this, raw);
|
|
584
530
|
}
|
|
585
531
|
}
|
|
532
|
+
/**
|
|
533
|
+
* Generate a new random UUID.
|
|
534
|
+
*
|
|
535
|
+
* @returns a new UUID.
|
|
536
|
+
*/
|
|
537
|
+
generateRandomId() {
|
|
538
|
+
if (typeof crypto !== 'undefined' && crypto.randomUUID) {
|
|
539
|
+
return crypto.randomUUID(); // Browser
|
|
540
|
+
}
|
|
541
|
+
return randomUUID(); // Node.js
|
|
542
|
+
}
|
|
586
543
|
/**
|
|
587
544
|
* Make a new object with the given schema, and generate a random ID for
|
|
588
545
|
* it.
|
|
@@ -591,7 +548,7 @@ class Model {
|
|
|
591
548
|
*/
|
|
592
549
|
createEntity(schema, namespace) {
|
|
593
550
|
return __awaiter(this, void 0, void 0, function* () {
|
|
594
|
-
const rawId =
|
|
551
|
+
const rawId = this.generateRandomId();
|
|
595
552
|
const id = namespace ? yield namespace.sign(rawId) : rawId;
|
|
596
553
|
return this.getEntity({
|
|
597
554
|
id,
|
|
@@ -2371,7 +2328,11 @@ var schemata = {
|
|
|
2371
2328
|
},
|
|
2372
2329
|
Company: {
|
|
2373
2330
|
caption: [
|
|
2374
|
-
"name"
|
|
2331
|
+
"name",
|
|
2332
|
+
"alias",
|
|
2333
|
+
"weakAlias",
|
|
2334
|
+
"previousName",
|
|
2335
|
+
"registrationNumber"
|
|
2375
2336
|
],
|
|
2376
2337
|
description: "A corporation, usually for profit. Does not distinguish between private and public companies, and can also be used to model more specific constructs like trusts and funds. Companies are assets, so they can be owned by other legal entities.\n",
|
|
2377
2338
|
"extends": [
|
|
@@ -4653,6 +4614,9 @@ var schemata = {
|
|
|
4653
4614
|
LegalEntity: {
|
|
4654
4615
|
caption: [
|
|
4655
4616
|
"name",
|
|
4617
|
+
"alias",
|
|
4618
|
+
"weakAlias",
|
|
4619
|
+
"previousName",
|
|
4656
4620
|
"email",
|
|
4657
4621
|
"phone",
|
|
4658
4622
|
"registrationNumber"
|
|
@@ -5848,7 +5812,11 @@ var schemata = {
|
|
|
5848
5812
|
},
|
|
5849
5813
|
Organization: {
|
|
5850
5814
|
caption: [
|
|
5851
|
-
"name"
|
|
5815
|
+
"name",
|
|
5816
|
+
"alias",
|
|
5817
|
+
"weakAlias",
|
|
5818
|
+
"previousName",
|
|
5819
|
+
"registrationNumber"
|
|
5852
5820
|
],
|
|
5853
5821
|
description: "Any type of incorporated entity that cannot be owned by another (see Company). This might include charities, foundations or state-owned enterprises, depending on their jurisdiction.\n",
|
|
5854
5822
|
"extends": [
|
|
@@ -6483,6 +6451,9 @@ var schemata = {
|
|
|
6483
6451
|
Person: {
|
|
6484
6452
|
caption: [
|
|
6485
6453
|
"name",
|
|
6454
|
+
"alias",
|
|
6455
|
+
"weakAlias",
|
|
6456
|
+
"previousName",
|
|
6486
6457
|
"lastName",
|
|
6487
6458
|
"email",
|
|
6488
6459
|
"phone"
|
|
@@ -7095,7 +7066,10 @@ var schemata = {
|
|
|
7095
7066
|
},
|
|
7096
7067
|
PublicBody: {
|
|
7097
7068
|
caption: [
|
|
7098
|
-
"name"
|
|
7069
|
+
"name",
|
|
7070
|
+
"alias",
|
|
7071
|
+
"weakAlias",
|
|
7072
|
+
"previousName"
|
|
7099
7073
|
],
|
|
7100
7074
|
description: "A public body, such as a ministry, department or state company.\n",
|
|
7101
7075
|
"extends": [
|
|
@@ -9480,4 +9454,4 @@ var defaultModel_ = {
|
|
|
9480
9454
|
const defaultModel = defaultModel_;
|
|
9481
9455
|
|
|
9482
9456
|
export { Entity, IconRegistry, Model, Namespace, Property, PropertyType, Schema, defaultModel };
|
|
9483
|
-
//# sourceMappingURL=followthemoney.
|
|
9457
|
+
//# sourceMappingURL=followthemoney.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"followthemoney.es.js","sources":["../src/entity.ts","../node_modules/tslib/tslib.es6.js","../src/property.ts","../src/schema.ts","../src/type.ts","../src/model.ts","../src/namespace.ts","../src/icons.ts","../src/followthemoney.ts"],"sourcesContent":["import { Schema } from './schema'\nimport { Model } from './model'\nimport { Property } from './property'\nimport { PropertyType } from './type'\n\nexport type Value = string | Entity\nexport type Values = Array<Value>\nexport type EntityProperties = { [prop: string]: Array<Value | IEntityDatum> }\n\nexport interface IEntityDatum {\n schema: Schema | string\n properties?: EntityProperties\n id: string\n}\n\n/**\n * An entity proxy which provides simplified access to the\n * properties and schema associated with an entity.\n */\nexport class Entity {\n public id: string\n public properties: Map<Property, Values> = new Map()\n public readonly schema: Schema\n\n constructor(model: Model, data: IEntityDatum) {\n this.schema = model.getSchema(data.schema)\n this.id = data.id\n\n if (data.properties) {\n Object.entries(data.properties).forEach(([prop, values]) => {\n values.forEach((value) => {\n this.setProperty(prop, value)\n })\n })\n }\n }\n\n setProperty(prop: string | Property, value: Value | IEntityDatum | undefined | null): Values {\n const property = this.schema.getProperty(prop)\n const values = this.properties.get(property) || []\n if (value === undefined || value === null) {\n return values\n }\n if (typeof (value) === 'string' && value.trim().length === 0) {\n return values\n }\n if (typeof (value) !== 'string') {\n value = this.schema.model.getEntity(value)\n }\n values.push(value)\n this.properties.set(property, values)\n return values\n }\n\n hasProperty(prop: string | Property): boolean {\n try {\n const property = this.schema.getProperty(prop)\n return this.properties.has(property)\n } catch {\n return false\n }\n }\n\n getProperty(prop: string | Property): Values {\n try {\n const property = this.schema.getProperty(prop)\n if (!this.properties.has(property)) {\n return []\n }\n return this.properties.get(property) as Values\n } catch {\n return []\n }\n }\n\n /**\n * The first value of a property only.\n *\n * @param prop A property name or object\n */\n getFirst(prop: string | Property): Value | null {\n for (const value of this.getProperty(prop)) {\n return value\n }\n return null\n }\n\n /**\n * List all properties for which this entity has values set. This\n * does not include unset properties.\n */\n getProperties(): Array<Property> {\n return Array.from(this.properties.keys())\n }\n\n /**\n * Copy the properties from a given entity that match the local\n * schema to this entity.\n */\n copyProperties(entity: Entity): void {\n entity.getProperties().forEach((prop) => {\n if (this.schema.hasProperty(prop)) {\n const localProp = this.schema.getProperty(prop.name)\n if (localProp.qname === prop.qname) {\n entity.getProperty(prop).forEach((value) => {\n this.setProperty(localProp, value)\n })\n }\n }\n })\n }\n\n /**\n * Get the designated label for the given entity.\n */\n getCaption(): string {\n for (const property of this.schema.caption) {\n for (const value of this.getProperty(property)) {\n return value as string\n }\n }\n return this.schema.label\n }\n\n /**\n * Set the designated label as the first caption prop for the given entity.\n */\n setCaption(value: string): void {\n const captionProperties = this.schema.caption\n if (captionProperties && captionProperties.length > 0) {\n this.setProperty(captionProperties[0], value)\n }\n }\n\n /**\n * Get the designated label for the given entity.\n */\n getEdgeCaption(): string {\n const captions = this.schema.edge ? this.schema.edge.caption : []\n for (const property of captions) {\n for (const value of this.getProperty(property)) {\n return value as string\n }\n }\n return this.schema.label\n }\n\n /**\n * Get a date that can be used to represent the start of the entity in a timeline.\n * If there are multiple possible dates, the earliest date is returned.\n */\n getTemporalStart(): { property: Property, value: string } | null {\n const values = []\n const properties = this.schema.getTemporalStartProperties()\n\n for (const property of properties) {\n for (const value of this.getProperty(property)) {\n if (typeof value === 'string') {\n values.push({ property, value })\n }\n }\n }\n\n const sortedValues = values.sort(\n (a, b) => a.value < b.value ? -1 : 1\n )\n\n return sortedValues[0] || null\n }\n\n /** \n * Get a date that can be used to represent the end of the entity in a timeline.\n * If there are multiple possible dates, the earliest date is returned.\n */\n getTemporalEnd(): { property: Property, value: string } | null {\n const values = []\n const properties = this.schema.getTemporalEndProperties()\n\n for (const property of properties) {\n for (const value of this.getProperty(property)) {\n if (typeof value === 'string') {\n values.push({ property, value })\n }\n }\n }\n\n const sortedValues = values.sort(\n (a, b) => b.value < a.value ? -1 : 1\n )\n\n return sortedValues[0] || null\n }\n\n /**\n * Get all the values of a particular type, irrespective of\n * which property it is associated with.\n */\n getTypeValues(type: string | PropertyType, matchableOnly = false): Values {\n const propType = this.schema.model.getType(type)\n const values = new Array<Value>()\n for (const property of this.getProperties()) {\n if (!matchableOnly || property.matchable) {\n if (property.type.toString() === propType.toString()) {\n for (const value of this.getProperty(property)) {\n if (values.indexOf(value) === -1) {\n values.push(value)\n }\n }\n }\n }\n }\n return values\n }\n\n /**\n * Serialise the entity to a plain JSON object, suitable for feeding to the\n * JSON.stringify() call.\n */\n toJSON(): IEntityDatum {\n const properties: EntityProperties = {}\n this.properties.forEach((values, prop) => {\n properties[prop.name] = values.map((value) =>\n Entity.isEntity(value) ? (value as Entity).toJSON() : value\n )\n })\n return {\n id: this.id,\n schema: this.schema.name,\n properties: properties\n }\n }\n\n /**\n * Make a copy of the entity with no shared object identity.\n */\n clone(): Entity {\n return Entity.fromJSON(this.schema.model, this.toJSON())\n }\n\n /**\n * Shortcut helper function.\n *\n * @param model active FollowTheMoney model\n * @param data the raw blob, which must match IEntityDatum\n */\n static fromJSON(model: Model, data: any): Entity { // eslint-disable-line\n return model.getEntity(data)\n }\n\n static isEntity(value: Value): boolean {\n return typeof (value) !== 'string'\n }\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import { Schema } from './schema'\nimport { PropertyType } from './type'\n\nexport interface IPropertyDatum {\n name: string\n qname: string\n label: string\n type: string\n description?: string\n maxLength?: number\n format?: string\n stub?: boolean\n hidden?: boolean\n matchable?: boolean\n deprecated?: boolean\n range?: string | null\n reverse?: string\n}\n\n/**\n * Definition of a property, with relevant metadata for type,\n * labels and other useful criteria.\n */\nexport class Property {\n public readonly schema: Schema\n public readonly name: string\n public readonly qname: string\n public readonly label: string\n public readonly type: PropertyType\n public readonly hidden: boolean\n public readonly matchable: boolean\n public readonly deprecated: boolean\n public readonly description: string | null\n public readonly format: string | null\n public readonly stub: boolean\n public readonly maxLength: number\n public readonly hasReverse: boolean\n public readonly hasRange: boolean\n private readonly range: string | null\n private readonly reverse: string | null\n\n constructor(schema: Schema, property: IPropertyDatum) {\n this.schema = schema\n this.name = property.name\n this.qname = property.qname\n this.label = property.label || property.name\n this.hidden = !!property.hidden\n this.description = property.description || null\n this.format = property.format || null\n this.stub = !!property.stub\n this.maxLength = property.maxLength || 0\n this.matchable = !!property.matchable\n this.deprecated = !!property.deprecated\n this.range = property.range || null\n this.reverse = property.reverse || null\n this.type = schema.model.getType(property.type)\n this.hasRange = this.range !== null\n this.hasReverse = this.range !== null && this.reverse !== null\n }\n\n getRange(): Schema {\n return this.schema.model.getSchema(this.range)\n }\n\n getReverse(): Property {\n if (this.range === null || this.reverse === null) {\n throw new Error(\"This property has no reverse\")\n }\n return this.getRange().getProperty(this.reverse)\n }\n\n static isProperty = (item: Property | undefined): item is Property => {\n return !!item\n }\n\n toString(): string {\n return this.qname\n }\n}\n","import { IPropertyDatum, Property } from './property'\nimport { Model } from './model'\n\ninterface IEdgeSpecification {\n source: string\n target: string\n directed: boolean\n label?: string\n caption: string[]\n required?: string[]\n}\n\ninterface ITemporalExtentSpecification {\n start: string[]\n end: string[]\n}\n\nexport type SchemaSpec = string | null | undefined | Schema;\n\nexport interface ISchemaDatum {\n label: string\n plural: string\n schemata: string[]\n extends: string[]\n abstract?: boolean\n hidden?: boolean\n matchable?: boolean\n generated?: boolean\n deprecated?: boolean\n description?: string\n edge?: IEdgeSpecification\n temporalExtent?: ITemporalExtentSpecification\n featured?: string[]\n caption?: string[]\n required?: string[]\n properties: {\n [x: string]: IPropertyDatum\n }\n}\n\nexport class Schema {\n static readonly THING = 'Thing'\n static readonly DOCUMENT = 'Document'\n\n public readonly model: Model\n public readonly name: string\n public readonly label: string\n public readonly plural: string\n public readonly abstract: boolean\n public readonly hidden: boolean\n public readonly matchable: boolean\n public readonly generated: boolean\n public readonly deprecated: boolean\n public readonly description: string | null\n public readonly featured: string[]\n public readonly schemata: string[]\n public readonly extends: string[]\n public readonly caption: string[]\n public readonly required: string[]\n public readonly edge?: IEdgeSpecification\n public readonly isEdge: boolean\n public readonly temporalStart: string[]\n public readonly temporalEnd: string[]\n private properties: Map<string, Property> = new Map()\n\n constructor(model: Model, schemaName: string, config: ISchemaDatum) {\n this.model = model\n this.name = schemaName\n this.label = config.label || this.name;\n this.plural = config.plural || this.label;\n this.schemata = config.schemata\n this.extends = config.extends\n this.featured = config.featured || []\n this.caption = config.caption || []\n this.required = config.required || []\n this.abstract = !!config.abstract\n this.hidden = !!config.hidden\n this.matchable = !!config.matchable\n this.generated = !!config.generated\n this.deprecated = !!config.deprecated\n this.description = config.description || null\n this.isEdge = !!config.edge\n this.edge = config.edge\n this.temporalStart = config.temporalExtent?.start || []\n this.temporalEnd = config.temporalExtent?.end || []\n\n Object.entries(config.properties).forEach(\n ([propertyName, property]) => {\n this.properties.set(propertyName, new Property(this, property))\n }\n )\n }\n\n isThing(): boolean {\n return this.isA(Schema.THING)\n }\n\n isDocument(): boolean {\n return this.isA(Schema.DOCUMENT)\n }\n\n getExtends(): Array<Schema> {\n return this.extends.map(name => this.model.getSchema(name))\n }\n\n getParents(): Array<Schema> {\n const parents = new Map<string, Schema>()\n for (const ext of this.getExtends()) {\n parents.set(ext.name, ext)\n for (const parent of ext.getParents()) {\n parents.set(parent.name, parent)\n }\n }\n return Array.from(parents.values())\n }\n\n getChildren(): Array<Schema> {\n const children = new Array<Schema>()\n for (const schema of this.model.getSchemata()) {\n const parents = schema.getParents().map(s => s.name)\n if (parents.indexOf(this.name) !== -1) {\n children.push(schema)\n }\n }\n return children;\n }\n\n getProperties(qualified = false): Map<string, Property> {\n const properties = new Map<string, Property>()\n this.getExtends().forEach((schema) => {\n schema.getProperties(qualified).forEach((prop, name) => {\n properties.set(name, prop)\n })\n })\n this.properties.forEach((prop, name) => {\n properties.set(qualified ? prop.qname : name, prop)\n })\n return properties\n }\n\n getEditableProperties(): Array<Property> {\n return Array.from(this.getProperties().values())\n .filter(prop => !prop.hidden && !prop.stub)\n }\n\n getFeaturedProperties(): Array<Property> {\n return this.featured.map(name => this.getProperty(name))\n }\n\n getTemporalStartProperties(): Array<Property> {\n const properties: Set<string> = new Set(this.temporalStart);\n\n for (const ext of this.getExtends()) {\n for (const property of ext.getTemporalStartProperties()) {\n properties.add(property.name);\n }\n }\n\n return Array.from(properties).map((name) => this.getProperty(name));\n }\n\n getTemporalEndProperties(): Array<Property> {\n const properties: Set<string> = new Set(this.temporalEnd);\n\n for (const ext of this.getExtends()) {\n for (const property of ext.getTemporalEndProperties()) {\n properties.add(property.name);\n }\n }\n\n return Array.from(properties).map((name) => this.getProperty(name));\n }\n\n hasProperty(prop: string | Property): boolean {\n if (prop instanceof Property) {\n return this.getProperties(true).has(prop.qname)\n }\n return this.getProperties().has(prop)\n }\n\n /**\n * Get the value of a property. If it's not defined, return an\n * empty array. If it's not a valid property, raise an error.\n *\n * @param prop name or Property\n */\n getProperty(prop: string | Property): Property {\n if (prop instanceof Property) {\n return prop\n }\n if (this.hasProperty(prop)) {\n return this.getProperties().get(prop) as Property\n } else {\n throw new Error('Property does not exist: ' + prop)\n }\n }\n\n isA(schema: SchemaSpec): boolean {\n try {\n schema = this.model.getSchema(schema)\n return !!~this.schemata.indexOf(schema.name)\n } catch {\n return false;\n }\n }\n\n isAny(schemata: Array<SchemaSpec>): boolean {\n for (const schema of schemata) {\n if (this.isA(schema)) {\n return true;\n }\n }\n return false;\n }\n\n static isSchema = (item: Schema | undefined): item is Schema => {\n return !!item\n }\n\n toString(): string {\n return this.name\n }\n}\n","\nexport interface IPropertyTypeDatum {\n group?: string\n label?: string\n description?: string\n maxLength?: number\n plural?: string | null\n matchable?: boolean,\n pivot?: boolean,\n values?: { [name: string]: string }\n}\n\n/**\n * A property type, such as a string, email address, phone number,\n * URL or a related entity.\n */\nexport class PropertyType {\n static ENTITY = 'entity';\n\n public name: string\n public group: string | null\n public grouped: boolean\n public label: string\n public plural: string\n public description: string | null\n public maxLength: number\n public matchable: boolean\n public pivot: boolean\n public values: Map<string, string>\n public isEntity: boolean\n\n constructor(name: string, data: IPropertyTypeDatum) {\n this.name = name\n this.label = data.label || name\n this.description = data.description || null\n this.maxLength = data.maxLength || 0\n this.plural = data.plural || this.label\n this.group = data.group || null\n this.grouped = data.group !== undefined\n this.matchable = !!data.matchable\n this.pivot = !!data.pivot\n this.isEntity = name === PropertyType.ENTITY\n this.values = new Map<string, string>()\n\n if (data.values) {\n Object.entries(data.values).forEach(([value, label]) => {\n this.values.set(value, label)\n })\n }\n }\n\n getLabel(value: string | undefined | null): string {\n if (!value) {\n return ''\n }\n return this.values.get(value) || value\n }\n\n toString(): string {\n return this.name\n }\n}","import { randomUUID as nodeRandomUUID } from 'crypto';\nimport { Entity, IEntityDatum } from './entity';\nimport { Namespace } from './namespace';\nimport { Property } from './property';\nimport { ISchemaDatum, Schema } from './schema';\nimport { IPropertyTypeDatum, PropertyType } from './type';\n\n\nexport interface IModelDatum {\n schemata: { [name: string]: ISchemaDatum }\n types: { [name: string]: IPropertyTypeDatum }\n}\n\nexport class Model {\n public readonly schemata: { [x: string]: Schema | undefined } = {}\n public readonly types: { [x: string]: PropertyType } = {}\n\n constructor(config: IModelDatum) {\n this.types = {}\n Object.entries(config.types).forEach(\n ([typeName, typeData]) => {\n this.types[typeName] = new PropertyType(typeName, typeData)\n }\n )\n\n this.schemata = {}\n Object.entries(config.schemata).forEach(\n ([schemaName, schema]) => {\n this.schemata[schemaName] = new Schema(this, schemaName, schema)\n }\n )\n }\n\n getSchema(schemaName: string | null | undefined | Schema): Schema {\n if (schemaName === null || schemaName === undefined) {\n throw new Error('Invalid schema.')\n }\n if (schemaName instanceof Schema) {\n return schemaName\n }\n const schema = this.schemata[schemaName];\n if (schema === undefined) {\n throw new Error('No such schema: ' + schemaName)\n }\n return schema;\n }\n\n /**\n * Get a list of all schemata.\n */\n getSchemata(): Schema[] {\n return Object.keys(this.schemata)\n .map((name) => this.schemata[name])\n .filter(Schema.isSchema)\n }\n\n /**\n * Get a list of all unique properties.\n */\n getProperties(): Property[] {\n const qnames = new Map<string, Property>()\n this.getSchemata().forEach((schema) => {\n schema.getProperties().forEach((prop) => {\n qnames.set(prop.qname, prop)\n })\n })\n return Array.from(qnames.values())\n }\n\n /**\n * Get a particular property type.\n *\n * @param type name of the type\n */\n getType(type: string | PropertyType): PropertyType {\n if (type instanceof PropertyType) {\n return type;\n }\n return this.types[type]\n }\n\n /**\n * Convert a raw JSON object to an entity proxy.\n *\n * @param raw entity source data\n */\n getEntity(raw: IEntityDatum | Entity): Entity {\n if (raw instanceof Entity) {\n return raw\n } else {\n return new Entity(this, raw)\n }\n }\n\n /**\n * Generate a new random UUID.\n * \n * @returns a new UUID.\n */\n generateRandomId(): string {\n if (typeof crypto !== 'undefined' && crypto.randomUUID) {\n return crypto.randomUUID(); // Browser\n }\n return nodeRandomUUID(); // Node.js\n }\n\n /**\n * Make a new object with the given schema, and generate a random ID for\n * it.\n *\n * @param schema Schema name or object\n */\n async createEntity(schema: string | Schema, namespace?: Namespace): Promise<Entity> {\n const rawId = this.generateRandomId();\n const id = namespace ? await namespace.sign(rawId) : rawId;\n return this.getEntity({\n id,\n schema: schema,\n properties: {}\n })\n }\n}\n","\nexport class Namespace {\n private separator = '.'\n private namespaceKey: string\n\n constructor(namespaceKey: string) {\n this.namespaceKey = namespaceKey;\n }\n\n parse(id: string): string[] {\n return id.split(this.separator);\n }\n\n async signature(id: string): Promise<string> {\n // Generate an HMAC signature for the given ID using the namespace key, using \n // SHA-1 as the hashing algorithm and returning the result as a hexadecimal string.\n // Use in-browser crypto library for compatibility with browsers.\n if (!this.namespaceKey.length) {\n return id;\n }\n // Convert strings to ArrayBuffers\n const encoder = new TextEncoder();\n const keyData = encoder.encode(this.namespaceKey);\n const data = encoder.encode(id);\n\n // Import the key\n const key = await crypto.subtle.importKey(\n 'raw',\n keyData,\n { name: 'HMAC', hash: 'SHA-1' },\n false,\n ['sign']\n );\n\n // Generate the signature\n const signature = await crypto.subtle.sign('HMAC', key, data);\n\n // Convert to hexadecimal string\n const hashArray = Array.from(new Uint8Array(signature));\n const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\n return hashHex;\n }\n\n async sign(id: string): Promise<string> {\n const entityId = this.parse(id)[0];\n if (!entityId) {\n return id;\n }\n if (!this.namespaceKey.length) {\n return entityId;\n }\n const digest = await this.signature(entityId);\n\n return [entityId, digest].join(this.separator);\n }\n}\n","import icons from './generated/icons.json'\nimport { Schema } from './schema'\n\ninterface IIconStorage {\n [iconName:string]: string[]\n}\n\nexport const IconRegistry = {\n SIZE: 24,\n storage: icons as IIconStorage,\n\n getIcon(iconName: string): string[] {\n return this.storage[iconName];\n },\n\n getSchemaIcon(schema: Schema): string[] {\n const iconName = schema.name.toLowerCase()\n return this.getIcon(iconName) || this.getIcon('info')\n }\n}\n","export * from './entity'\nexport * from './model'\nexport * from './namespace'\nexport * from './property'\nexport * from './schema'\nexport * from './type'\nexport * from './icons'\n\n\nimport defaultModel_ from './defaultModel.json';\nimport { IModelDatum } from './model';\nexport const defaultModel: IModelDatum = defaultModel_;\n"],"names":["nodeRandomUUID"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACPK,MAAM,YAAY,GAAgB;;;;","x_google_ignoreList":[1]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
|
3
|
-
typeof define === 'function' && define.amd ? define(['exports'], factory) :
|
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.followthemoney = {}));
|
|
5
|
-
})(this, (function (exports) { 'use strict';
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('crypto')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define(['exports', 'crypto'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.followthemoney = {}, global.crypto$1));
|
|
5
|
+
})(this, (function (exports, crypto$1) { 'use strict';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* An entity proxy which provides simplified access to the
|
|
@@ -245,62 +245,6 @@
|
|
|
245
245
|
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
246
246
|
};
|
|
247
247
|
|
|
248
|
-
const byteToHex = [];
|
|
249
|
-
for (let i = 0; i < 256; ++i) {
|
|
250
|
-
byteToHex.push((i + 0x100).toString(16).slice(1));
|
|
251
|
-
}
|
|
252
|
-
function unsafeStringify(arr, offset = 0) {
|
|
253
|
-
return (byteToHex[arr[offset + 0]] +
|
|
254
|
-
byteToHex[arr[offset + 1]] +
|
|
255
|
-
byteToHex[arr[offset + 2]] +
|
|
256
|
-
byteToHex[arr[offset + 3]] +
|
|
257
|
-
'-' +
|
|
258
|
-
byteToHex[arr[offset + 4]] +
|
|
259
|
-
byteToHex[arr[offset + 5]] +
|
|
260
|
-
'-' +
|
|
261
|
-
byteToHex[arr[offset + 6]] +
|
|
262
|
-
byteToHex[arr[offset + 7]] +
|
|
263
|
-
'-' +
|
|
264
|
-
byteToHex[arr[offset + 8]] +
|
|
265
|
-
byteToHex[arr[offset + 9]] +
|
|
266
|
-
'-' +
|
|
267
|
-
byteToHex[arr[offset + 10]] +
|
|
268
|
-
byteToHex[arr[offset + 11]] +
|
|
269
|
-
byteToHex[arr[offset + 12]] +
|
|
270
|
-
byteToHex[arr[offset + 13]] +
|
|
271
|
-
byteToHex[arr[offset + 14]] +
|
|
272
|
-
byteToHex[arr[offset + 15]]).toLowerCase();
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
let getRandomValues;
|
|
276
|
-
const rnds8 = new Uint8Array(16);
|
|
277
|
-
function rng() {
|
|
278
|
-
if (!getRandomValues) {
|
|
279
|
-
if (typeof crypto === 'undefined' || !crypto.getRandomValues) {
|
|
280
|
-
throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');
|
|
281
|
-
}
|
|
282
|
-
getRandomValues = crypto.getRandomValues.bind(crypto);
|
|
283
|
-
}
|
|
284
|
-
return getRandomValues(rnds8);
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);
|
|
288
|
-
var native = { randomUUID };
|
|
289
|
-
|
|
290
|
-
function v4(options, buf, offset) {
|
|
291
|
-
if (native.randomUUID && true && !options) {
|
|
292
|
-
return native.randomUUID();
|
|
293
|
-
}
|
|
294
|
-
options = options || {};
|
|
295
|
-
const rnds = options.random ?? options.rng?.() ?? rng();
|
|
296
|
-
if (rnds.length < 16) {
|
|
297
|
-
throw new Error('Random bytes length must be >= 16');
|
|
298
|
-
}
|
|
299
|
-
rnds[6] = (rnds[6] & 0x0f) | 0x40;
|
|
300
|
-
rnds[8] = (rnds[8] & 0x3f) | 0x80;
|
|
301
|
-
return unsafeStringify(rnds);
|
|
302
|
-
}
|
|
303
|
-
|
|
304
248
|
/**
|
|
305
249
|
* Definition of a property, with relevant metadata for type,
|
|
306
250
|
* labels and other useful criteria.
|
|
@@ -589,6 +533,17 @@
|
|
|
589
533
|
return new Entity(this, raw);
|
|
590
534
|
}
|
|
591
535
|
}
|
|
536
|
+
/**
|
|
537
|
+
* Generate a new random UUID.
|
|
538
|
+
*
|
|
539
|
+
* @returns a new UUID.
|
|
540
|
+
*/
|
|
541
|
+
generateRandomId() {
|
|
542
|
+
if (typeof crypto !== 'undefined' && crypto.randomUUID) {
|
|
543
|
+
return crypto.randomUUID(); // Browser
|
|
544
|
+
}
|
|
545
|
+
return crypto$1.randomUUID(); // Node.js
|
|
546
|
+
}
|
|
592
547
|
/**
|
|
593
548
|
* Make a new object with the given schema, and generate a random ID for
|
|
594
549
|
* it.
|
|
@@ -597,7 +552,7 @@
|
|
|
597
552
|
*/
|
|
598
553
|
createEntity(schema, namespace) {
|
|
599
554
|
return __awaiter(this, void 0, void 0, function* () {
|
|
600
|
-
const rawId =
|
|
555
|
+
const rawId = this.generateRandomId();
|
|
601
556
|
const id = namespace ? yield namespace.sign(rawId) : rawId;
|
|
602
557
|
return this.getEntity({
|
|
603
558
|
id,
|
|
@@ -2377,7 +2332,11 @@
|
|
|
2377
2332
|
},
|
|
2378
2333
|
Company: {
|
|
2379
2334
|
caption: [
|
|
2380
|
-
"name"
|
|
2335
|
+
"name",
|
|
2336
|
+
"alias",
|
|
2337
|
+
"weakAlias",
|
|
2338
|
+
"previousName",
|
|
2339
|
+
"registrationNumber"
|
|
2381
2340
|
],
|
|
2382
2341
|
description: "A corporation, usually for profit. Does not distinguish between private and public companies, and can also be used to model more specific constructs like trusts and funds. Companies are assets, so they can be owned by other legal entities.\n",
|
|
2383
2342
|
"extends": [
|
|
@@ -4659,6 +4618,9 @@
|
|
|
4659
4618
|
LegalEntity: {
|
|
4660
4619
|
caption: [
|
|
4661
4620
|
"name",
|
|
4621
|
+
"alias",
|
|
4622
|
+
"weakAlias",
|
|
4623
|
+
"previousName",
|
|
4662
4624
|
"email",
|
|
4663
4625
|
"phone",
|
|
4664
4626
|
"registrationNumber"
|
|
@@ -5854,7 +5816,11 @@
|
|
|
5854
5816
|
},
|
|
5855
5817
|
Organization: {
|
|
5856
5818
|
caption: [
|
|
5857
|
-
"name"
|
|
5819
|
+
"name",
|
|
5820
|
+
"alias",
|
|
5821
|
+
"weakAlias",
|
|
5822
|
+
"previousName",
|
|
5823
|
+
"registrationNumber"
|
|
5858
5824
|
],
|
|
5859
5825
|
description: "Any type of incorporated entity that cannot be owned by another (see Company). This might include charities, foundations or state-owned enterprises, depending on their jurisdiction.\n",
|
|
5860
5826
|
"extends": [
|
|
@@ -6489,6 +6455,9 @@
|
|
|
6489
6455
|
Person: {
|
|
6490
6456
|
caption: [
|
|
6491
6457
|
"name",
|
|
6458
|
+
"alias",
|
|
6459
|
+
"weakAlias",
|
|
6460
|
+
"previousName",
|
|
6492
6461
|
"lastName",
|
|
6493
6462
|
"email",
|
|
6494
6463
|
"phone"
|
|
@@ -7101,7 +7070,10 @@
|
|
|
7101
7070
|
},
|
|
7102
7071
|
PublicBody: {
|
|
7103
7072
|
caption: [
|
|
7104
|
-
"name"
|
|
7073
|
+
"name",
|
|
7074
|
+
"alias",
|
|
7075
|
+
"weakAlias",
|
|
7076
|
+
"previousName"
|
|
7105
7077
|
],
|
|
7106
7078
|
description: "A public body, such as a ministry, department or state company.\n",
|
|
7107
7079
|
"extends": [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"followthemoney.umd.js","sources":["../src/entity.ts","../node_modules/tslib/tslib.es6.js","../node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/uuid/dist/esm-browser/native.js","../node_modules/uuid/dist/esm-browser/v4.js","../src/property.ts","../src/schema.ts","../src/type.ts","../src/model.ts","../src/namespace.ts","../src/icons.ts","../src/followthemoney.ts"],"sourcesContent":["import { Schema } from './schema'\nimport { Model } from './model'\nimport { Property } from './property'\nimport { PropertyType } from './type'\n\nexport type Value = string | Entity\nexport type Values = Array<Value>\nexport type EntityProperties = { [prop: string]: Array<Value | IEntityDatum> }\n\nexport interface IEntityDatum {\n schema: Schema | string\n properties?: EntityProperties\n id: string\n}\n\n/**\n * An entity proxy which provides simplified access to the\n * properties and schema associated with an entity.\n */\nexport class Entity {\n public id: string\n public properties: Map<Property, Values> = new Map()\n public readonly schema: Schema\n\n constructor(model: Model, data: IEntityDatum) {\n this.schema = model.getSchema(data.schema)\n this.id = data.id\n\n if (data.properties) {\n Object.entries(data.properties).forEach(([prop, values]) => {\n values.forEach((value) => {\n this.setProperty(prop, value)\n })\n })\n }\n }\n\n setProperty(prop: string | Property, value: Value | IEntityDatum | undefined | null): Values {\n const property = this.schema.getProperty(prop)\n const values = this.properties.get(property) || []\n if (value === undefined || value === null) {\n return values\n }\n if (typeof (value) === 'string' && value.trim().length === 0) {\n return values\n }\n if (typeof (value) !== 'string') {\n value = this.schema.model.getEntity(value)\n }\n values.push(value)\n this.properties.set(property, values)\n return values\n }\n\n hasProperty(prop: string | Property): boolean {\n try {\n const property = this.schema.getProperty(prop)\n return this.properties.has(property)\n } catch {\n return false\n }\n }\n\n getProperty(prop: string | Property): Values {\n try {\n const property = this.schema.getProperty(prop)\n if (!this.properties.has(property)) {\n return []\n }\n return this.properties.get(property) as Values\n } catch {\n return []\n }\n }\n\n /**\n * The first value of a property only.\n *\n * @param prop A property name or object\n */\n getFirst(prop: string | Property): Value | null {\n for (const value of this.getProperty(prop)) {\n return value\n }\n return null\n }\n\n /**\n * List all properties for which this entity has values set. This\n * does not include unset properties.\n */\n getProperties(): Array<Property> {\n return Array.from(this.properties.keys())\n }\n\n /**\n * Copy the properties from a given entity that match the local\n * schema to this entity.\n */\n copyProperties(entity: Entity): void {\n entity.getProperties().forEach((prop) => {\n if (this.schema.hasProperty(prop)) {\n const localProp = this.schema.getProperty(prop.name)\n if (localProp.qname === prop.qname) {\n entity.getProperty(prop).forEach((value) => {\n this.setProperty(localProp, value)\n })\n }\n }\n })\n }\n\n /**\n * Get the designated label for the given entity.\n */\n getCaption(): string {\n for (const property of this.schema.caption) {\n for (const value of this.getProperty(property)) {\n return value as string\n }\n }\n return this.schema.label\n }\n\n /**\n * Set the designated label as the first caption prop for the given entity.\n */\n setCaption(value: string): void {\n const captionProperties = this.schema.caption\n if (captionProperties && captionProperties.length > 0) {\n this.setProperty(captionProperties[0], value)\n }\n }\n\n /**\n * Get the designated label for the given entity.\n */\n getEdgeCaption(): string {\n const captions = this.schema.edge ? this.schema.edge.caption : []\n for (const property of captions) {\n for (const value of this.getProperty(property)) {\n return value as string\n }\n }\n return this.schema.label\n }\n\n /**\n * Get a date that can be used to represent the start of the entity in a timeline.\n * If there are multiple possible dates, the earliest date is returned.\n */\n getTemporalStart(): { property: Property, value: string } | null {\n const values = []\n const properties = this.schema.getTemporalStartProperties()\n\n for (const property of properties) {\n for (const value of this.getProperty(property)) {\n if (typeof value === 'string') {\n values.push({ property, value })\n }\n }\n }\n\n const sortedValues = values.sort(\n (a, b) => a.value < b.value ? -1 : 1\n )\n\n return sortedValues[0] || null\n }\n\n /** \n * Get a date that can be used to represent the end of the entity in a timeline.\n * If there are multiple possible dates, the earliest date is returned.\n */\n getTemporalEnd(): { property: Property, value: string } | null {\n const values = []\n const properties = this.schema.getTemporalEndProperties()\n\n for (const property of properties) {\n for (const value of this.getProperty(property)) {\n if (typeof value === 'string') {\n values.push({ property, value })\n }\n }\n }\n\n const sortedValues = values.sort(\n (a, b) => b.value < a.value ? -1 : 1\n )\n\n return sortedValues[0] || null\n }\n\n /**\n * Get all the values of a particular type, irrespective of\n * which property it is associated with.\n */\n getTypeValues(type: string | PropertyType, matchableOnly = false): Values {\n const propType = this.schema.model.getType(type)\n const values = new Array<Value>()\n for (const property of this.getProperties()) {\n if (!matchableOnly || property.matchable) {\n if (property.type.toString() === propType.toString()) {\n for (const value of this.getProperty(property)) {\n if (values.indexOf(value) === -1) {\n values.push(value)\n }\n }\n }\n }\n }\n return values\n }\n\n /**\n * Serialise the entity to a plain JSON object, suitable for feeding to the\n * JSON.stringify() call.\n */\n toJSON(): IEntityDatum {\n const properties: EntityProperties = {}\n this.properties.forEach((values, prop) => {\n properties[prop.name] = values.map((value) =>\n Entity.isEntity(value) ? (value as Entity).toJSON() : value\n )\n })\n return {\n id: this.id,\n schema: this.schema.name,\n properties: properties\n }\n }\n\n /**\n * Make a copy of the entity with no shared object identity.\n */\n clone(): Entity {\n return Entity.fromJSON(this.schema.model, this.toJSON())\n }\n\n /**\n * Shortcut helper function.\n *\n * @param model active FollowTheMoney model\n * @param data the raw blob, which must match IEntityDatum\n */\n static fromJSON(model: Model, data: any): Entity { // eslint-disable-line\n return model.getEntity(data)\n }\n\n static isEntity(value: Value): boolean {\n return typeof (value) !== 'string'\n }\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n","import { Schema } from './schema'\nimport { PropertyType } from './type'\n\nexport interface IPropertyDatum {\n name: string\n qname: string\n label: string\n type: string\n description?: string\n maxLength?: number\n format?: string\n stub?: boolean\n hidden?: boolean\n matchable?: boolean\n deprecated?: boolean\n range?: string | null\n reverse?: string\n}\n\n/**\n * Definition of a property, with relevant metadata for type,\n * labels and other useful criteria.\n */\nexport class Property {\n public readonly schema: Schema\n public readonly name: string\n public readonly qname: string\n public readonly label: string\n public readonly type: PropertyType\n public readonly hidden: boolean\n public readonly matchable: boolean\n public readonly deprecated: boolean\n public readonly description: string | null\n public readonly format: string | null\n public readonly stub: boolean\n public readonly maxLength: number\n public readonly hasReverse: boolean\n public readonly hasRange: boolean\n private readonly range: string | null\n private readonly reverse: string | null\n\n constructor(schema: Schema, property: IPropertyDatum) {\n this.schema = schema\n this.name = property.name\n this.qname = property.qname\n this.label = property.label || property.name\n this.hidden = !!property.hidden\n this.description = property.description || null\n this.format = property.format || null\n this.stub = !!property.stub\n this.maxLength = property.maxLength || 0\n this.matchable = !!property.matchable\n this.deprecated = !!property.deprecated\n this.range = property.range || null\n this.reverse = property.reverse || null\n this.type = schema.model.getType(property.type)\n this.hasRange = this.range !== null\n this.hasReverse = this.range !== null && this.reverse !== null\n }\n\n getRange(): Schema {\n return this.schema.model.getSchema(this.range)\n }\n\n getReverse(): Property {\n if (this.range === null || this.reverse === null) {\n throw new Error(\"This property has no reverse\")\n }\n return this.getRange().getProperty(this.reverse)\n }\n\n static isProperty = (item: Property | undefined): item is Property => {\n return !!item\n }\n\n toString(): string {\n return this.qname\n }\n}\n","import { IPropertyDatum, Property } from './property'\nimport { Model } from './model'\n\ninterface IEdgeSpecification {\n source: string\n target: string\n directed: boolean\n label?: string\n caption: string[]\n required?: string[]\n}\n\ninterface ITemporalExtentSpecification {\n start: string[]\n end: string[]\n}\n\nexport type SchemaSpec = string | null | undefined | Schema;\n\nexport interface ISchemaDatum {\n label: string\n plural: string\n schemata: string[]\n extends: string[]\n abstract?: boolean\n hidden?: boolean\n matchable?: boolean\n generated?: boolean\n deprecated?: boolean\n description?: string\n edge?: IEdgeSpecification\n temporalExtent?: ITemporalExtentSpecification\n featured?: string[]\n caption?: string[]\n required?: string[]\n properties: {\n [x: string]: IPropertyDatum\n }\n}\n\nexport class Schema {\n static readonly THING = 'Thing'\n static readonly DOCUMENT = 'Document'\n\n public readonly model: Model\n public readonly name: string\n public readonly label: string\n public readonly plural: string\n public readonly abstract: boolean\n public readonly hidden: boolean\n public readonly matchable: boolean\n public readonly generated: boolean\n public readonly deprecated: boolean\n public readonly description: string | null\n public readonly featured: string[]\n public readonly schemata: string[]\n public readonly extends: string[]\n public readonly caption: string[]\n public readonly required: string[]\n public readonly edge?: IEdgeSpecification\n public readonly isEdge: boolean\n public readonly temporalStart: string[]\n public readonly temporalEnd: string[]\n private properties: Map<string, Property> = new Map()\n\n constructor(model: Model, schemaName: string, config: ISchemaDatum) {\n this.model = model\n this.name = schemaName\n this.label = config.label || this.name;\n this.plural = config.plural || this.label;\n this.schemata = config.schemata\n this.extends = config.extends\n this.featured = config.featured || []\n this.caption = config.caption || []\n this.required = config.required || []\n this.abstract = !!config.abstract\n this.hidden = !!config.hidden\n this.matchable = !!config.matchable\n this.generated = !!config.generated\n this.deprecated = !!config.deprecated\n this.description = config.description || null\n this.isEdge = !!config.edge\n this.edge = config.edge\n this.temporalStart = config.temporalExtent?.start || []\n this.temporalEnd = config.temporalExtent?.end || []\n\n Object.entries(config.properties).forEach(\n ([propertyName, property]) => {\n this.properties.set(propertyName, new Property(this, property))\n }\n )\n }\n\n isThing(): boolean {\n return this.isA(Schema.THING)\n }\n\n isDocument(): boolean {\n return this.isA(Schema.DOCUMENT)\n }\n\n getExtends(): Array<Schema> {\n return this.extends.map(name => this.model.getSchema(name))\n }\n\n getParents(): Array<Schema> {\n const parents = new Map<string, Schema>()\n for (const ext of this.getExtends()) {\n parents.set(ext.name, ext)\n for (const parent of ext.getParents()) {\n parents.set(parent.name, parent)\n }\n }\n return Array.from(parents.values())\n }\n\n getChildren(): Array<Schema> {\n const children = new Array<Schema>()\n for (const schema of this.model.getSchemata()) {\n const parents = schema.getParents().map(s => s.name)\n if (parents.indexOf(this.name) !== -1) {\n children.push(schema)\n }\n }\n return children;\n }\n\n getProperties(qualified = false): Map<string, Property> {\n const properties = new Map<string, Property>()\n this.getExtends().forEach((schema) => {\n schema.getProperties(qualified).forEach((prop, name) => {\n properties.set(name, prop)\n })\n })\n this.properties.forEach((prop, name) => {\n properties.set(qualified ? prop.qname : name, prop)\n })\n return properties\n }\n\n getEditableProperties(): Array<Property> {\n return Array.from(this.getProperties().values())\n .filter(prop => !prop.hidden && !prop.stub)\n }\n\n getFeaturedProperties(): Array<Property> {\n return this.featured.map(name => this.getProperty(name))\n }\n\n getTemporalStartProperties(): Array<Property> {\n const properties: Set<string> = new Set(this.temporalStart);\n\n for (const ext of this.getExtends()) {\n for (const property of ext.getTemporalStartProperties()) {\n properties.add(property.name);\n }\n }\n\n return Array.from(properties).map((name) => this.getProperty(name));\n }\n\n getTemporalEndProperties(): Array<Property> {\n const properties: Set<string> = new Set(this.temporalEnd);\n\n for (const ext of this.getExtends()) {\n for (const property of ext.getTemporalEndProperties()) {\n properties.add(property.name);\n }\n }\n\n return Array.from(properties).map((name) => this.getProperty(name));\n }\n\n hasProperty(prop: string | Property): boolean {\n if (prop instanceof Property) {\n return this.getProperties(true).has(prop.qname)\n }\n return this.getProperties().has(prop)\n }\n\n /**\n * Get the value of a property. If it's not defined, return an\n * empty array. If it's not a valid property, raise an error.\n *\n * @param prop name or Property\n */\n getProperty(prop: string | Property): Property {\n if (prop instanceof Property) {\n return prop\n }\n if (this.hasProperty(prop)) {\n return this.getProperties().get(prop) as Property\n } else {\n throw new Error('Property does not exist: ' + prop)\n }\n }\n\n isA(schema: SchemaSpec): boolean {\n try {\n schema = this.model.getSchema(schema)\n return !!~this.schemata.indexOf(schema.name)\n } catch {\n return false;\n }\n }\n\n isAny(schemata: Array<SchemaSpec>): boolean {\n for (const schema of schemata) {\n if (this.isA(schema)) {\n return true;\n }\n }\n return false;\n }\n\n static isSchema = (item: Schema | undefined): item is Schema => {\n return !!item\n }\n\n toString(): string {\n return this.name\n }\n}\n","\nexport interface IPropertyTypeDatum {\n group?: string\n label?: string\n description?: string\n maxLength?: number\n plural?: string | null\n matchable?: boolean,\n pivot?: boolean,\n values?: { [name: string]: string }\n}\n\n/**\n * A property type, such as a string, email address, phone number,\n * URL or a related entity.\n */\nexport class PropertyType {\n static ENTITY = 'entity';\n\n public name: string\n public group: string | null\n public grouped: boolean\n public label: string\n public plural: string\n public description: string | null\n public maxLength: number\n public matchable: boolean\n public pivot: boolean\n public values: Map<string, string>\n public isEntity: boolean\n\n constructor(name: string, data: IPropertyTypeDatum) {\n this.name = name\n this.label = data.label || name\n this.description = data.description || null\n this.maxLength = data.maxLength || 0\n this.plural = data.plural || this.label\n this.group = data.group || null\n this.grouped = data.group !== undefined\n this.matchable = !!data.matchable\n this.pivot = !!data.pivot\n this.isEntity = name === PropertyType.ENTITY\n this.values = new Map<string, string>()\n\n if (data.values) {\n Object.entries(data.values).forEach(([value, label]) => {\n this.values.set(value, label)\n })\n }\n }\n\n getLabel(value: string | undefined | null): string {\n if (!value) {\n return ''\n }\n return this.values.get(value) || value\n }\n\n toString(): string {\n return this.name\n }\n}","import { v4 as uuidv4 } from 'uuid';\nimport { Entity, IEntityDatum } from './entity';\nimport { Namespace } from './namespace';\nimport { Property } from './property';\nimport { ISchemaDatum, Schema } from './schema';\nimport { IPropertyTypeDatum, PropertyType } from './type';\n\n\nexport interface IModelDatum {\n schemata: { [name: string]: ISchemaDatum }\n types: { [name: string]: IPropertyTypeDatum }\n}\n\nexport class Model {\n public readonly schemata: { [x: string]: Schema | undefined } = {}\n public readonly types: { [x: string]: PropertyType } = {}\n\n constructor(config: IModelDatum) {\n this.types = {}\n Object.entries(config.types).forEach(\n ([typeName, typeData]) => {\n this.types[typeName] = new PropertyType(typeName, typeData)\n }\n )\n\n this.schemata = {}\n Object.entries(config.schemata).forEach(\n ([schemaName, schema]) => {\n this.schemata[schemaName] = new Schema(this, schemaName, schema)\n }\n )\n }\n\n getSchema(schemaName: string | null | undefined | Schema): Schema {\n if (schemaName === null || schemaName === undefined) {\n throw new Error('Invalid schema.')\n }\n if (schemaName instanceof Schema) {\n return schemaName\n }\n const schema = this.schemata[schemaName];\n if (schema === undefined) {\n throw new Error('No such schema: ' + schemaName)\n }\n return schema;\n }\n\n /**\n * Get a list of all schemata.\n */\n getSchemata(): Schema[] {\n return Object.keys(this.schemata)\n .map((name) => this.schemata[name])\n .filter(Schema.isSchema)\n }\n\n /**\n * Get a list of all unique properties.\n */\n getProperties(): Property[] {\n const qnames = new Map<string, Property>()\n this.getSchemata().forEach((schema) => {\n schema.getProperties().forEach((prop) => {\n qnames.set(prop.qname, prop)\n })\n })\n return Array.from(qnames.values())\n }\n\n /**\n * Get a particular property type.\n *\n * @param type name of the type\n */\n getType(type: string | PropertyType): PropertyType {\n if (type instanceof PropertyType) {\n return type;\n }\n return this.types[type]\n }\n\n /**\n * Convert a raw JSON object to an entity proxy.\n *\n * @param raw entity source data\n */\n getEntity(raw: IEntityDatum | Entity): Entity {\n if (raw instanceof Entity) {\n return raw\n } else {\n return new Entity(this, raw)\n }\n }\n\n /**\n * Make a new object with the given schema, and generate a random ID for\n * it.\n *\n * @param schema Schema name or object\n */\n async createEntity(schema: string | Schema, namespace?: Namespace): Promise<Entity> {\n const rawId = uuidv4();\n const id = namespace ? await namespace.sign(rawId) : rawId;\n return this.getEntity({\n id,\n schema: schema,\n properties: {}\n })\n }\n}\n","\nexport class Namespace {\n private separator = '.'\n private namespaceKey: string\n\n constructor(namespaceKey: string) {\n this.namespaceKey = namespaceKey;\n }\n\n parse(id: string): string[] {\n return id.split(this.separator);\n }\n\n async signature(id: string): Promise<string> {\n // Generate an HMAC signature for the given ID using the namespace key, using \n // SHA-1 as the hashing algorithm and returning the result as a hexadecimal string.\n // Use in-browser crypto library for compatibility with browsers.\n if (!this.namespaceKey.length) {\n return id;\n }\n // Convert strings to ArrayBuffers\n const encoder = new TextEncoder();\n const keyData = encoder.encode(this.namespaceKey);\n const data = encoder.encode(id);\n\n // Import the key\n const key = await crypto.subtle.importKey(\n 'raw',\n keyData,\n { name: 'HMAC', hash: 'SHA-1' },\n false,\n ['sign']\n );\n\n // Generate the signature\n const signature = await crypto.subtle.sign('HMAC', key, data);\n\n // Convert to hexadecimal string\n const hashArray = Array.from(new Uint8Array(signature));\n const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\n return hashHex;\n }\n\n async sign(id: string): Promise<string> {\n const entityId = this.parse(id)[0];\n if (!entityId) {\n return id;\n }\n if (!this.namespaceKey.length) {\n return entityId;\n }\n const digest = await this.signature(entityId);\n\n return [entityId, digest].join(this.separator);\n }\n}\n","import icons from './generated/icons.json'\nimport { Schema } from './schema'\n\ninterface IIconStorage {\n [iconName:string]: string[]\n}\n\nexport const IconRegistry = {\n SIZE: 24,\n storage: icons as IIconStorage,\n\n getIcon(iconName: string): string[] {\n return this.storage[iconName];\n },\n\n getSchemaIcon(schema: Schema): string[] {\n const iconName = schema.name.toLowerCase()\n return this.getIcon(iconName) || this.getIcon('info')\n }\n}\n","export * from './entity'\nexport * from './model'\nexport * from './namespace'\nexport * from './property'\nexport * from './schema'\nexport * from './type'\nexport * from './icons'\n\n\nimport defaultModel_ from './defaultModel.json';\nimport { IModelDatum } from './model';\nexport const defaultModel: IModelDatum = defaultModel_;\n"],"names":["uuidv4"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACPK,UAAM,YAAY,GAAgB;;;;;;;;;;;;;;;","x_google_ignoreList":[1,2,3,4,5]}
|
|
1
|
+
{"version":3,"file":"followthemoney.umd.js","sources":["../src/entity.ts","../node_modules/tslib/tslib.es6.js","../src/property.ts","../src/schema.ts","../src/type.ts","../src/model.ts","../src/namespace.ts","../src/icons.ts","../src/followthemoney.ts"],"sourcesContent":["import { Schema } from './schema'\nimport { Model } from './model'\nimport { Property } from './property'\nimport { PropertyType } from './type'\n\nexport type Value = string | Entity\nexport type Values = Array<Value>\nexport type EntityProperties = { [prop: string]: Array<Value | IEntityDatum> }\n\nexport interface IEntityDatum {\n schema: Schema | string\n properties?: EntityProperties\n id: string\n}\n\n/**\n * An entity proxy which provides simplified access to the\n * properties and schema associated with an entity.\n */\nexport class Entity {\n public id: string\n public properties: Map<Property, Values> = new Map()\n public readonly schema: Schema\n\n constructor(model: Model, data: IEntityDatum) {\n this.schema = model.getSchema(data.schema)\n this.id = data.id\n\n if (data.properties) {\n Object.entries(data.properties).forEach(([prop, values]) => {\n values.forEach((value) => {\n this.setProperty(prop, value)\n })\n })\n }\n }\n\n setProperty(prop: string | Property, value: Value | IEntityDatum | undefined | null): Values {\n const property = this.schema.getProperty(prop)\n const values = this.properties.get(property) || []\n if (value === undefined || value === null) {\n return values\n }\n if (typeof (value) === 'string' && value.trim().length === 0) {\n return values\n }\n if (typeof (value) !== 'string') {\n value = this.schema.model.getEntity(value)\n }\n values.push(value)\n this.properties.set(property, values)\n return values\n }\n\n hasProperty(prop: string | Property): boolean {\n try {\n const property = this.schema.getProperty(prop)\n return this.properties.has(property)\n } catch {\n return false\n }\n }\n\n getProperty(prop: string | Property): Values {\n try {\n const property = this.schema.getProperty(prop)\n if (!this.properties.has(property)) {\n return []\n }\n return this.properties.get(property) as Values\n } catch {\n return []\n }\n }\n\n /**\n * The first value of a property only.\n *\n * @param prop A property name or object\n */\n getFirst(prop: string | Property): Value | null {\n for (const value of this.getProperty(prop)) {\n return value\n }\n return null\n }\n\n /**\n * List all properties for which this entity has values set. This\n * does not include unset properties.\n */\n getProperties(): Array<Property> {\n return Array.from(this.properties.keys())\n }\n\n /**\n * Copy the properties from a given entity that match the local\n * schema to this entity.\n */\n copyProperties(entity: Entity): void {\n entity.getProperties().forEach((prop) => {\n if (this.schema.hasProperty(prop)) {\n const localProp = this.schema.getProperty(prop.name)\n if (localProp.qname === prop.qname) {\n entity.getProperty(prop).forEach((value) => {\n this.setProperty(localProp, value)\n })\n }\n }\n })\n }\n\n /**\n * Get the designated label for the given entity.\n */\n getCaption(): string {\n for (const property of this.schema.caption) {\n for (const value of this.getProperty(property)) {\n return value as string\n }\n }\n return this.schema.label\n }\n\n /**\n * Set the designated label as the first caption prop for the given entity.\n */\n setCaption(value: string): void {\n const captionProperties = this.schema.caption\n if (captionProperties && captionProperties.length > 0) {\n this.setProperty(captionProperties[0], value)\n }\n }\n\n /**\n * Get the designated label for the given entity.\n */\n getEdgeCaption(): string {\n const captions = this.schema.edge ? this.schema.edge.caption : []\n for (const property of captions) {\n for (const value of this.getProperty(property)) {\n return value as string\n }\n }\n return this.schema.label\n }\n\n /**\n * Get a date that can be used to represent the start of the entity in a timeline.\n * If there are multiple possible dates, the earliest date is returned.\n */\n getTemporalStart(): { property: Property, value: string } | null {\n const values = []\n const properties = this.schema.getTemporalStartProperties()\n\n for (const property of properties) {\n for (const value of this.getProperty(property)) {\n if (typeof value === 'string') {\n values.push({ property, value })\n }\n }\n }\n\n const sortedValues = values.sort(\n (a, b) => a.value < b.value ? -1 : 1\n )\n\n return sortedValues[0] || null\n }\n\n /** \n * Get a date that can be used to represent the end of the entity in a timeline.\n * If there are multiple possible dates, the earliest date is returned.\n */\n getTemporalEnd(): { property: Property, value: string } | null {\n const values = []\n const properties = this.schema.getTemporalEndProperties()\n\n for (const property of properties) {\n for (const value of this.getProperty(property)) {\n if (typeof value === 'string') {\n values.push({ property, value })\n }\n }\n }\n\n const sortedValues = values.sort(\n (a, b) => b.value < a.value ? -1 : 1\n )\n\n return sortedValues[0] || null\n }\n\n /**\n * Get all the values of a particular type, irrespective of\n * which property it is associated with.\n */\n getTypeValues(type: string | PropertyType, matchableOnly = false): Values {\n const propType = this.schema.model.getType(type)\n const values = new Array<Value>()\n for (const property of this.getProperties()) {\n if (!matchableOnly || property.matchable) {\n if (property.type.toString() === propType.toString()) {\n for (const value of this.getProperty(property)) {\n if (values.indexOf(value) === -1) {\n values.push(value)\n }\n }\n }\n }\n }\n return values\n }\n\n /**\n * Serialise the entity to a plain JSON object, suitable for feeding to the\n * JSON.stringify() call.\n */\n toJSON(): IEntityDatum {\n const properties: EntityProperties = {}\n this.properties.forEach((values, prop) => {\n properties[prop.name] = values.map((value) =>\n Entity.isEntity(value) ? (value as Entity).toJSON() : value\n )\n })\n return {\n id: this.id,\n schema: this.schema.name,\n properties: properties\n }\n }\n\n /**\n * Make a copy of the entity with no shared object identity.\n */\n clone(): Entity {\n return Entity.fromJSON(this.schema.model, this.toJSON())\n }\n\n /**\n * Shortcut helper function.\n *\n * @param model active FollowTheMoney model\n * @param data the raw blob, which must match IEntityDatum\n */\n static fromJSON(model: Model, data: any): Entity { // eslint-disable-line\n return model.getEntity(data)\n }\n\n static isEntity(value: Value): boolean {\n return typeof (value) !== 'string'\n }\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import { Schema } from './schema'\nimport { PropertyType } from './type'\n\nexport interface IPropertyDatum {\n name: string\n qname: string\n label: string\n type: string\n description?: string\n maxLength?: number\n format?: string\n stub?: boolean\n hidden?: boolean\n matchable?: boolean\n deprecated?: boolean\n range?: string | null\n reverse?: string\n}\n\n/**\n * Definition of a property, with relevant metadata for type,\n * labels and other useful criteria.\n */\nexport class Property {\n public readonly schema: Schema\n public readonly name: string\n public readonly qname: string\n public readonly label: string\n public readonly type: PropertyType\n public readonly hidden: boolean\n public readonly matchable: boolean\n public readonly deprecated: boolean\n public readonly description: string | null\n public readonly format: string | null\n public readonly stub: boolean\n public readonly maxLength: number\n public readonly hasReverse: boolean\n public readonly hasRange: boolean\n private readonly range: string | null\n private readonly reverse: string | null\n\n constructor(schema: Schema, property: IPropertyDatum) {\n this.schema = schema\n this.name = property.name\n this.qname = property.qname\n this.label = property.label || property.name\n this.hidden = !!property.hidden\n this.description = property.description || null\n this.format = property.format || null\n this.stub = !!property.stub\n this.maxLength = property.maxLength || 0\n this.matchable = !!property.matchable\n this.deprecated = !!property.deprecated\n this.range = property.range || null\n this.reverse = property.reverse || null\n this.type = schema.model.getType(property.type)\n this.hasRange = this.range !== null\n this.hasReverse = this.range !== null && this.reverse !== null\n }\n\n getRange(): Schema {\n return this.schema.model.getSchema(this.range)\n }\n\n getReverse(): Property {\n if (this.range === null || this.reverse === null) {\n throw new Error(\"This property has no reverse\")\n }\n return this.getRange().getProperty(this.reverse)\n }\n\n static isProperty = (item: Property | undefined): item is Property => {\n return !!item\n }\n\n toString(): string {\n return this.qname\n }\n}\n","import { IPropertyDatum, Property } from './property'\nimport { Model } from './model'\n\ninterface IEdgeSpecification {\n source: string\n target: string\n directed: boolean\n label?: string\n caption: string[]\n required?: string[]\n}\n\ninterface ITemporalExtentSpecification {\n start: string[]\n end: string[]\n}\n\nexport type SchemaSpec = string | null | undefined | Schema;\n\nexport interface ISchemaDatum {\n label: string\n plural: string\n schemata: string[]\n extends: string[]\n abstract?: boolean\n hidden?: boolean\n matchable?: boolean\n generated?: boolean\n deprecated?: boolean\n description?: string\n edge?: IEdgeSpecification\n temporalExtent?: ITemporalExtentSpecification\n featured?: string[]\n caption?: string[]\n required?: string[]\n properties: {\n [x: string]: IPropertyDatum\n }\n}\n\nexport class Schema {\n static readonly THING = 'Thing'\n static readonly DOCUMENT = 'Document'\n\n public readonly model: Model\n public readonly name: string\n public readonly label: string\n public readonly plural: string\n public readonly abstract: boolean\n public readonly hidden: boolean\n public readonly matchable: boolean\n public readonly generated: boolean\n public readonly deprecated: boolean\n public readonly description: string | null\n public readonly featured: string[]\n public readonly schemata: string[]\n public readonly extends: string[]\n public readonly caption: string[]\n public readonly required: string[]\n public readonly edge?: IEdgeSpecification\n public readonly isEdge: boolean\n public readonly temporalStart: string[]\n public readonly temporalEnd: string[]\n private properties: Map<string, Property> = new Map()\n\n constructor(model: Model, schemaName: string, config: ISchemaDatum) {\n this.model = model\n this.name = schemaName\n this.label = config.label || this.name;\n this.plural = config.plural || this.label;\n this.schemata = config.schemata\n this.extends = config.extends\n this.featured = config.featured || []\n this.caption = config.caption || []\n this.required = config.required || []\n this.abstract = !!config.abstract\n this.hidden = !!config.hidden\n this.matchable = !!config.matchable\n this.generated = !!config.generated\n this.deprecated = !!config.deprecated\n this.description = config.description || null\n this.isEdge = !!config.edge\n this.edge = config.edge\n this.temporalStart = config.temporalExtent?.start || []\n this.temporalEnd = config.temporalExtent?.end || []\n\n Object.entries(config.properties).forEach(\n ([propertyName, property]) => {\n this.properties.set(propertyName, new Property(this, property))\n }\n )\n }\n\n isThing(): boolean {\n return this.isA(Schema.THING)\n }\n\n isDocument(): boolean {\n return this.isA(Schema.DOCUMENT)\n }\n\n getExtends(): Array<Schema> {\n return this.extends.map(name => this.model.getSchema(name))\n }\n\n getParents(): Array<Schema> {\n const parents = new Map<string, Schema>()\n for (const ext of this.getExtends()) {\n parents.set(ext.name, ext)\n for (const parent of ext.getParents()) {\n parents.set(parent.name, parent)\n }\n }\n return Array.from(parents.values())\n }\n\n getChildren(): Array<Schema> {\n const children = new Array<Schema>()\n for (const schema of this.model.getSchemata()) {\n const parents = schema.getParents().map(s => s.name)\n if (parents.indexOf(this.name) !== -1) {\n children.push(schema)\n }\n }\n return children;\n }\n\n getProperties(qualified = false): Map<string, Property> {\n const properties = new Map<string, Property>()\n this.getExtends().forEach((schema) => {\n schema.getProperties(qualified).forEach((prop, name) => {\n properties.set(name, prop)\n })\n })\n this.properties.forEach((prop, name) => {\n properties.set(qualified ? prop.qname : name, prop)\n })\n return properties\n }\n\n getEditableProperties(): Array<Property> {\n return Array.from(this.getProperties().values())\n .filter(prop => !prop.hidden && !prop.stub)\n }\n\n getFeaturedProperties(): Array<Property> {\n return this.featured.map(name => this.getProperty(name))\n }\n\n getTemporalStartProperties(): Array<Property> {\n const properties: Set<string> = new Set(this.temporalStart);\n\n for (const ext of this.getExtends()) {\n for (const property of ext.getTemporalStartProperties()) {\n properties.add(property.name);\n }\n }\n\n return Array.from(properties).map((name) => this.getProperty(name));\n }\n\n getTemporalEndProperties(): Array<Property> {\n const properties: Set<string> = new Set(this.temporalEnd);\n\n for (const ext of this.getExtends()) {\n for (const property of ext.getTemporalEndProperties()) {\n properties.add(property.name);\n }\n }\n\n return Array.from(properties).map((name) => this.getProperty(name));\n }\n\n hasProperty(prop: string | Property): boolean {\n if (prop instanceof Property) {\n return this.getProperties(true).has(prop.qname)\n }\n return this.getProperties().has(prop)\n }\n\n /**\n * Get the value of a property. If it's not defined, return an\n * empty array. If it's not a valid property, raise an error.\n *\n * @param prop name or Property\n */\n getProperty(prop: string | Property): Property {\n if (prop instanceof Property) {\n return prop\n }\n if (this.hasProperty(prop)) {\n return this.getProperties().get(prop) as Property\n } else {\n throw new Error('Property does not exist: ' + prop)\n }\n }\n\n isA(schema: SchemaSpec): boolean {\n try {\n schema = this.model.getSchema(schema)\n return !!~this.schemata.indexOf(schema.name)\n } catch {\n return false;\n }\n }\n\n isAny(schemata: Array<SchemaSpec>): boolean {\n for (const schema of schemata) {\n if (this.isA(schema)) {\n return true;\n }\n }\n return false;\n }\n\n static isSchema = (item: Schema | undefined): item is Schema => {\n return !!item\n }\n\n toString(): string {\n return this.name\n }\n}\n","\nexport interface IPropertyTypeDatum {\n group?: string\n label?: string\n description?: string\n maxLength?: number\n plural?: string | null\n matchable?: boolean,\n pivot?: boolean,\n values?: { [name: string]: string }\n}\n\n/**\n * A property type, such as a string, email address, phone number,\n * URL or a related entity.\n */\nexport class PropertyType {\n static ENTITY = 'entity';\n\n public name: string\n public group: string | null\n public grouped: boolean\n public label: string\n public plural: string\n public description: string | null\n public maxLength: number\n public matchable: boolean\n public pivot: boolean\n public values: Map<string, string>\n public isEntity: boolean\n\n constructor(name: string, data: IPropertyTypeDatum) {\n this.name = name\n this.label = data.label || name\n this.description = data.description || null\n this.maxLength = data.maxLength || 0\n this.plural = data.plural || this.label\n this.group = data.group || null\n this.grouped = data.group !== undefined\n this.matchable = !!data.matchable\n this.pivot = !!data.pivot\n this.isEntity = name === PropertyType.ENTITY\n this.values = new Map<string, string>()\n\n if (data.values) {\n Object.entries(data.values).forEach(([value, label]) => {\n this.values.set(value, label)\n })\n }\n }\n\n getLabel(value: string | undefined | null): string {\n if (!value) {\n return ''\n }\n return this.values.get(value) || value\n }\n\n toString(): string {\n return this.name\n }\n}","import { randomUUID as nodeRandomUUID } from 'crypto';\nimport { Entity, IEntityDatum } from './entity';\nimport { Namespace } from './namespace';\nimport { Property } from './property';\nimport { ISchemaDatum, Schema } from './schema';\nimport { IPropertyTypeDatum, PropertyType } from './type';\n\n\nexport interface IModelDatum {\n schemata: { [name: string]: ISchemaDatum }\n types: { [name: string]: IPropertyTypeDatum }\n}\n\nexport class Model {\n public readonly schemata: { [x: string]: Schema | undefined } = {}\n public readonly types: { [x: string]: PropertyType } = {}\n\n constructor(config: IModelDatum) {\n this.types = {}\n Object.entries(config.types).forEach(\n ([typeName, typeData]) => {\n this.types[typeName] = new PropertyType(typeName, typeData)\n }\n )\n\n this.schemata = {}\n Object.entries(config.schemata).forEach(\n ([schemaName, schema]) => {\n this.schemata[schemaName] = new Schema(this, schemaName, schema)\n }\n )\n }\n\n getSchema(schemaName: string | null | undefined | Schema): Schema {\n if (schemaName === null || schemaName === undefined) {\n throw new Error('Invalid schema.')\n }\n if (schemaName instanceof Schema) {\n return schemaName\n }\n const schema = this.schemata[schemaName];\n if (schema === undefined) {\n throw new Error('No such schema: ' + schemaName)\n }\n return schema;\n }\n\n /**\n * Get a list of all schemata.\n */\n getSchemata(): Schema[] {\n return Object.keys(this.schemata)\n .map((name) => this.schemata[name])\n .filter(Schema.isSchema)\n }\n\n /**\n * Get a list of all unique properties.\n */\n getProperties(): Property[] {\n const qnames = new Map<string, Property>()\n this.getSchemata().forEach((schema) => {\n schema.getProperties().forEach((prop) => {\n qnames.set(prop.qname, prop)\n })\n })\n return Array.from(qnames.values())\n }\n\n /**\n * Get a particular property type.\n *\n * @param type name of the type\n */\n getType(type: string | PropertyType): PropertyType {\n if (type instanceof PropertyType) {\n return type;\n }\n return this.types[type]\n }\n\n /**\n * Convert a raw JSON object to an entity proxy.\n *\n * @param raw entity source data\n */\n getEntity(raw: IEntityDatum | Entity): Entity {\n if (raw instanceof Entity) {\n return raw\n } else {\n return new Entity(this, raw)\n }\n }\n\n /**\n * Generate a new random UUID.\n * \n * @returns a new UUID.\n */\n generateRandomId(): string {\n if (typeof crypto !== 'undefined' && crypto.randomUUID) {\n return crypto.randomUUID(); // Browser\n }\n return nodeRandomUUID(); // Node.js\n }\n\n /**\n * Make a new object with the given schema, and generate a random ID for\n * it.\n *\n * @param schema Schema name or object\n */\n async createEntity(schema: string | Schema, namespace?: Namespace): Promise<Entity> {\n const rawId = this.generateRandomId();\n const id = namespace ? await namespace.sign(rawId) : rawId;\n return this.getEntity({\n id,\n schema: schema,\n properties: {}\n })\n }\n}\n","\nexport class Namespace {\n private separator = '.'\n private namespaceKey: string\n\n constructor(namespaceKey: string) {\n this.namespaceKey = namespaceKey;\n }\n\n parse(id: string): string[] {\n return id.split(this.separator);\n }\n\n async signature(id: string): Promise<string> {\n // Generate an HMAC signature for the given ID using the namespace key, using \n // SHA-1 as the hashing algorithm and returning the result as a hexadecimal string.\n // Use in-browser crypto library for compatibility with browsers.\n if (!this.namespaceKey.length) {\n return id;\n }\n // Convert strings to ArrayBuffers\n const encoder = new TextEncoder();\n const keyData = encoder.encode(this.namespaceKey);\n const data = encoder.encode(id);\n\n // Import the key\n const key = await crypto.subtle.importKey(\n 'raw',\n keyData,\n { name: 'HMAC', hash: 'SHA-1' },\n false,\n ['sign']\n );\n\n // Generate the signature\n const signature = await crypto.subtle.sign('HMAC', key, data);\n\n // Convert to hexadecimal string\n const hashArray = Array.from(new Uint8Array(signature));\n const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\n return hashHex;\n }\n\n async sign(id: string): Promise<string> {\n const entityId = this.parse(id)[0];\n if (!entityId) {\n return id;\n }\n if (!this.namespaceKey.length) {\n return entityId;\n }\n const digest = await this.signature(entityId);\n\n return [entityId, digest].join(this.separator);\n }\n}\n","import icons from './generated/icons.json'\nimport { Schema } from './schema'\n\ninterface IIconStorage {\n [iconName:string]: string[]\n}\n\nexport const IconRegistry = {\n SIZE: 24,\n storage: icons as IIconStorage,\n\n getIcon(iconName: string): string[] {\n return this.storage[iconName];\n },\n\n getSchemaIcon(schema: Schema): string[] {\n const iconName = schema.name.toLowerCase()\n return this.getIcon(iconName) || this.getIcon('info')\n }\n}\n","export * from './entity'\nexport * from './model'\nexport * from './namespace'\nexport * from './property'\nexport * from './schema'\nexport * from './type'\nexport * from './icons'\n\n\nimport defaultModel_ from './defaultModel.json';\nimport { IModelDatum } from './model';\nexport const defaultModel: IModelDatum = defaultModel_;\n"],"names":["nodeRandomUUID"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACPK,UAAM,YAAY,GAAgB;;;;;;;;;;;;;;;","x_google_ignoreList":[1]}
|
package/dist/model.d.ts
CHANGED
|
@@ -40,6 +40,12 @@ export declare class Model {
|
|
|
40
40
|
* @param raw entity source data
|
|
41
41
|
*/
|
|
42
42
|
getEntity(raw: IEntityDatum | Entity): Entity;
|
|
43
|
+
/**
|
|
44
|
+
* Generate a new random UUID.
|
|
45
|
+
*
|
|
46
|
+
* @returns a new UUID.
|
|
47
|
+
*/
|
|
48
|
+
generateRandomId(): string;
|
|
43
49
|
/**
|
|
44
50
|
* Make a new object with the given schema, and generate a random ID for
|
|
45
51
|
* it.
|
package/dist/model.js
CHANGED
|
@@ -10,7 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.Model = void 0;
|
|
13
|
-
const
|
|
13
|
+
const crypto_1 = require("crypto");
|
|
14
14
|
const entity_1 = require("./entity");
|
|
15
15
|
const schema_1 = require("./schema");
|
|
16
16
|
const type_1 = require("./type");
|
|
@@ -84,6 +84,17 @@ class Model {
|
|
|
84
84
|
return new entity_1.Entity(this, raw);
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* Generate a new random UUID.
|
|
89
|
+
*
|
|
90
|
+
* @returns a new UUID.
|
|
91
|
+
*/
|
|
92
|
+
generateRandomId() {
|
|
93
|
+
if (typeof crypto !== 'undefined' && crypto.randomUUID) {
|
|
94
|
+
return crypto.randomUUID(); // Browser
|
|
95
|
+
}
|
|
96
|
+
return (0, crypto_1.randomUUID)(); // Node.js
|
|
97
|
+
}
|
|
87
98
|
/**
|
|
88
99
|
* Make a new object with the given schema, and generate a random ID for
|
|
89
100
|
* it.
|
|
@@ -92,7 +103,7 @@ class Model {
|
|
|
92
103
|
*/
|
|
93
104
|
createEntity(schema, namespace) {
|
|
94
105
|
return __awaiter(this, void 0, void 0, function* () {
|
|
95
|
-
const rawId =
|
|
106
|
+
const rawId = this.generateRandomId();
|
|
96
107
|
const id = namespace ? yield namespace.sign(rawId) : rawId;
|
|
97
108
|
return this.getEntity({
|
|
98
109
|
id,
|
package/dist/model.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opensanctions/followthemoney",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.4.0",
|
|
4
4
|
"description": "JavaScript version of the followthemoney data model",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"main": "dist/followthemoney.umd.js",
|
|
7
|
-
"module": "dist/followthemoney.
|
|
7
|
+
"module": "dist/followthemoney.es.js",
|
|
8
8
|
"typings": "dist/followthemoney.d.ts",
|
|
9
9
|
"sideEffects": false,
|
|
10
10
|
"files": [
|
|
@@ -68,12 +68,12 @@
|
|
|
68
68
|
"@rollup/plugin-typescript": "^12.1.4",
|
|
69
69
|
"@types/jest": "^30.0.0",
|
|
70
70
|
"@types/node": "^24.1.0",
|
|
71
|
-
"@types/uuid": "^10.0.0",
|
|
72
71
|
"colors": "^1.4.0",
|
|
73
72
|
"cross-env": "^10.0.0",
|
|
74
73
|
"eslint": "^9.32.0",
|
|
75
74
|
"jest": "^30.0.5",
|
|
76
75
|
"jest-config": "^30.1.3",
|
|
76
|
+
"jest-util": "^30.2.0",
|
|
77
77
|
"lint-staged": "^16.1.2",
|
|
78
78
|
"prettier": "^3.6.2",
|
|
79
79
|
"prompt": "^1.3.0",
|
|
@@ -89,6 +89,5 @@
|
|
|
89
89
|
"typescript-eslint": "^8.38.0"
|
|
90
90
|
},
|
|
91
91
|
"dependencies": {
|
|
92
|
-
"uuid": "~11.1.0"
|
|
93
92
|
}
|
|
94
93
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"followthemoney.es5.js","sources":["../src/entity.ts","../node_modules/tslib/tslib.es6.js","../node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/uuid/dist/esm-browser/native.js","../node_modules/uuid/dist/esm-browser/v4.js","../src/property.ts","../src/schema.ts","../src/type.ts","../src/model.ts","../src/namespace.ts","../src/icons.ts","../src/followthemoney.ts"],"sourcesContent":["import { Schema } from './schema'\nimport { Model } from './model'\nimport { Property } from './property'\nimport { PropertyType } from './type'\n\nexport type Value = string | Entity\nexport type Values = Array<Value>\nexport type EntityProperties = { [prop: string]: Array<Value | IEntityDatum> }\n\nexport interface IEntityDatum {\n schema: Schema | string\n properties?: EntityProperties\n id: string\n}\n\n/**\n * An entity proxy which provides simplified access to the\n * properties and schema associated with an entity.\n */\nexport class Entity {\n public id: string\n public properties: Map<Property, Values> = new Map()\n public readonly schema: Schema\n\n constructor(model: Model, data: IEntityDatum) {\n this.schema = model.getSchema(data.schema)\n this.id = data.id\n\n if (data.properties) {\n Object.entries(data.properties).forEach(([prop, values]) => {\n values.forEach((value) => {\n this.setProperty(prop, value)\n })\n })\n }\n }\n\n setProperty(prop: string | Property, value: Value | IEntityDatum | undefined | null): Values {\n const property = this.schema.getProperty(prop)\n const values = this.properties.get(property) || []\n if (value === undefined || value === null) {\n return values\n }\n if (typeof (value) === 'string' && value.trim().length === 0) {\n return values\n }\n if (typeof (value) !== 'string') {\n value = this.schema.model.getEntity(value)\n }\n values.push(value)\n this.properties.set(property, values)\n return values\n }\n\n hasProperty(prop: string | Property): boolean {\n try {\n const property = this.schema.getProperty(prop)\n return this.properties.has(property)\n } catch {\n return false\n }\n }\n\n getProperty(prop: string | Property): Values {\n try {\n const property = this.schema.getProperty(prop)\n if (!this.properties.has(property)) {\n return []\n }\n return this.properties.get(property) as Values\n } catch {\n return []\n }\n }\n\n /**\n * The first value of a property only.\n *\n * @param prop A property name or object\n */\n getFirst(prop: string | Property): Value | null {\n for (const value of this.getProperty(prop)) {\n return value\n }\n return null\n }\n\n /**\n * List all properties for which this entity has values set. This\n * does not include unset properties.\n */\n getProperties(): Array<Property> {\n return Array.from(this.properties.keys())\n }\n\n /**\n * Copy the properties from a given entity that match the local\n * schema to this entity.\n */\n copyProperties(entity: Entity): void {\n entity.getProperties().forEach((prop) => {\n if (this.schema.hasProperty(prop)) {\n const localProp = this.schema.getProperty(prop.name)\n if (localProp.qname === prop.qname) {\n entity.getProperty(prop).forEach((value) => {\n this.setProperty(localProp, value)\n })\n }\n }\n })\n }\n\n /**\n * Get the designated label for the given entity.\n */\n getCaption(): string {\n for (const property of this.schema.caption) {\n for (const value of this.getProperty(property)) {\n return value as string\n }\n }\n return this.schema.label\n }\n\n /**\n * Set the designated label as the first caption prop for the given entity.\n */\n setCaption(value: string): void {\n const captionProperties = this.schema.caption\n if (captionProperties && captionProperties.length > 0) {\n this.setProperty(captionProperties[0], value)\n }\n }\n\n /**\n * Get the designated label for the given entity.\n */\n getEdgeCaption(): string {\n const captions = this.schema.edge ? this.schema.edge.caption : []\n for (const property of captions) {\n for (const value of this.getProperty(property)) {\n return value as string\n }\n }\n return this.schema.label\n }\n\n /**\n * Get a date that can be used to represent the start of the entity in a timeline.\n * If there are multiple possible dates, the earliest date is returned.\n */\n getTemporalStart(): { property: Property, value: string } | null {\n const values = []\n const properties = this.schema.getTemporalStartProperties()\n\n for (const property of properties) {\n for (const value of this.getProperty(property)) {\n if (typeof value === 'string') {\n values.push({ property, value })\n }\n }\n }\n\n const sortedValues = values.sort(\n (a, b) => a.value < b.value ? -1 : 1\n )\n\n return sortedValues[0] || null\n }\n\n /** \n * Get a date that can be used to represent the end of the entity in a timeline.\n * If there are multiple possible dates, the earliest date is returned.\n */\n getTemporalEnd(): { property: Property, value: string } | null {\n const values = []\n const properties = this.schema.getTemporalEndProperties()\n\n for (const property of properties) {\n for (const value of this.getProperty(property)) {\n if (typeof value === 'string') {\n values.push({ property, value })\n }\n }\n }\n\n const sortedValues = values.sort(\n (a, b) => b.value < a.value ? -1 : 1\n )\n\n return sortedValues[0] || null\n }\n\n /**\n * Get all the values of a particular type, irrespective of\n * which property it is associated with.\n */\n getTypeValues(type: string | PropertyType, matchableOnly = false): Values {\n const propType = this.schema.model.getType(type)\n const values = new Array<Value>()\n for (const property of this.getProperties()) {\n if (!matchableOnly || property.matchable) {\n if (property.type.toString() === propType.toString()) {\n for (const value of this.getProperty(property)) {\n if (values.indexOf(value) === -1) {\n values.push(value)\n }\n }\n }\n }\n }\n return values\n }\n\n /**\n * Serialise the entity to a plain JSON object, suitable for feeding to the\n * JSON.stringify() call.\n */\n toJSON(): IEntityDatum {\n const properties: EntityProperties = {}\n this.properties.forEach((values, prop) => {\n properties[prop.name] = values.map((value) =>\n Entity.isEntity(value) ? (value as Entity).toJSON() : value\n )\n })\n return {\n id: this.id,\n schema: this.schema.name,\n properties: properties\n }\n }\n\n /**\n * Make a copy of the entity with no shared object identity.\n */\n clone(): Entity {\n return Entity.fromJSON(this.schema.model, this.toJSON())\n }\n\n /**\n * Shortcut helper function.\n *\n * @param model active FollowTheMoney model\n * @param data the raw blob, which must match IEntityDatum\n */\n static fromJSON(model: Model, data: any): Entity { // eslint-disable-line\n return model.getEntity(data)\n }\n\n static isEntity(value: Value): boolean {\n return typeof (value) !== 'string'\n }\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n","import { Schema } from './schema'\nimport { PropertyType } from './type'\n\nexport interface IPropertyDatum {\n name: string\n qname: string\n label: string\n type: string\n description?: string\n maxLength?: number\n format?: string\n stub?: boolean\n hidden?: boolean\n matchable?: boolean\n deprecated?: boolean\n range?: string | null\n reverse?: string\n}\n\n/**\n * Definition of a property, with relevant metadata for type,\n * labels and other useful criteria.\n */\nexport class Property {\n public readonly schema: Schema\n public readonly name: string\n public readonly qname: string\n public readonly label: string\n public readonly type: PropertyType\n public readonly hidden: boolean\n public readonly matchable: boolean\n public readonly deprecated: boolean\n public readonly description: string | null\n public readonly format: string | null\n public readonly stub: boolean\n public readonly maxLength: number\n public readonly hasReverse: boolean\n public readonly hasRange: boolean\n private readonly range: string | null\n private readonly reverse: string | null\n\n constructor(schema: Schema, property: IPropertyDatum) {\n this.schema = schema\n this.name = property.name\n this.qname = property.qname\n this.label = property.label || property.name\n this.hidden = !!property.hidden\n this.description = property.description || null\n this.format = property.format || null\n this.stub = !!property.stub\n this.maxLength = property.maxLength || 0\n this.matchable = !!property.matchable\n this.deprecated = !!property.deprecated\n this.range = property.range || null\n this.reverse = property.reverse || null\n this.type = schema.model.getType(property.type)\n this.hasRange = this.range !== null\n this.hasReverse = this.range !== null && this.reverse !== null\n }\n\n getRange(): Schema {\n return this.schema.model.getSchema(this.range)\n }\n\n getReverse(): Property {\n if (this.range === null || this.reverse === null) {\n throw new Error(\"This property has no reverse\")\n }\n return this.getRange().getProperty(this.reverse)\n }\n\n static isProperty = (item: Property | undefined): item is Property => {\n return !!item\n }\n\n toString(): string {\n return this.qname\n }\n}\n","import { IPropertyDatum, Property } from './property'\nimport { Model } from './model'\n\ninterface IEdgeSpecification {\n source: string\n target: string\n directed: boolean\n label?: string\n caption: string[]\n required?: string[]\n}\n\ninterface ITemporalExtentSpecification {\n start: string[]\n end: string[]\n}\n\nexport type SchemaSpec = string | null | undefined | Schema;\n\nexport interface ISchemaDatum {\n label: string\n plural: string\n schemata: string[]\n extends: string[]\n abstract?: boolean\n hidden?: boolean\n matchable?: boolean\n generated?: boolean\n deprecated?: boolean\n description?: string\n edge?: IEdgeSpecification\n temporalExtent?: ITemporalExtentSpecification\n featured?: string[]\n caption?: string[]\n required?: string[]\n properties: {\n [x: string]: IPropertyDatum\n }\n}\n\nexport class Schema {\n static readonly THING = 'Thing'\n static readonly DOCUMENT = 'Document'\n\n public readonly model: Model\n public readonly name: string\n public readonly label: string\n public readonly plural: string\n public readonly abstract: boolean\n public readonly hidden: boolean\n public readonly matchable: boolean\n public readonly generated: boolean\n public readonly deprecated: boolean\n public readonly description: string | null\n public readonly featured: string[]\n public readonly schemata: string[]\n public readonly extends: string[]\n public readonly caption: string[]\n public readonly required: string[]\n public readonly edge?: IEdgeSpecification\n public readonly isEdge: boolean\n public readonly temporalStart: string[]\n public readonly temporalEnd: string[]\n private properties: Map<string, Property> = new Map()\n\n constructor(model: Model, schemaName: string, config: ISchemaDatum) {\n this.model = model\n this.name = schemaName\n this.label = config.label || this.name;\n this.plural = config.plural || this.label;\n this.schemata = config.schemata\n this.extends = config.extends\n this.featured = config.featured || []\n this.caption = config.caption || []\n this.required = config.required || []\n this.abstract = !!config.abstract\n this.hidden = !!config.hidden\n this.matchable = !!config.matchable\n this.generated = !!config.generated\n this.deprecated = !!config.deprecated\n this.description = config.description || null\n this.isEdge = !!config.edge\n this.edge = config.edge\n this.temporalStart = config.temporalExtent?.start || []\n this.temporalEnd = config.temporalExtent?.end || []\n\n Object.entries(config.properties).forEach(\n ([propertyName, property]) => {\n this.properties.set(propertyName, new Property(this, property))\n }\n )\n }\n\n isThing(): boolean {\n return this.isA(Schema.THING)\n }\n\n isDocument(): boolean {\n return this.isA(Schema.DOCUMENT)\n }\n\n getExtends(): Array<Schema> {\n return this.extends.map(name => this.model.getSchema(name))\n }\n\n getParents(): Array<Schema> {\n const parents = new Map<string, Schema>()\n for (const ext of this.getExtends()) {\n parents.set(ext.name, ext)\n for (const parent of ext.getParents()) {\n parents.set(parent.name, parent)\n }\n }\n return Array.from(parents.values())\n }\n\n getChildren(): Array<Schema> {\n const children = new Array<Schema>()\n for (const schema of this.model.getSchemata()) {\n const parents = schema.getParents().map(s => s.name)\n if (parents.indexOf(this.name) !== -1) {\n children.push(schema)\n }\n }\n return children;\n }\n\n getProperties(qualified = false): Map<string, Property> {\n const properties = new Map<string, Property>()\n this.getExtends().forEach((schema) => {\n schema.getProperties(qualified).forEach((prop, name) => {\n properties.set(name, prop)\n })\n })\n this.properties.forEach((prop, name) => {\n properties.set(qualified ? prop.qname : name, prop)\n })\n return properties\n }\n\n getEditableProperties(): Array<Property> {\n return Array.from(this.getProperties().values())\n .filter(prop => !prop.hidden && !prop.stub)\n }\n\n getFeaturedProperties(): Array<Property> {\n return this.featured.map(name => this.getProperty(name))\n }\n\n getTemporalStartProperties(): Array<Property> {\n const properties: Set<string> = new Set(this.temporalStart);\n\n for (const ext of this.getExtends()) {\n for (const property of ext.getTemporalStartProperties()) {\n properties.add(property.name);\n }\n }\n\n return Array.from(properties).map((name) => this.getProperty(name));\n }\n\n getTemporalEndProperties(): Array<Property> {\n const properties: Set<string> = new Set(this.temporalEnd);\n\n for (const ext of this.getExtends()) {\n for (const property of ext.getTemporalEndProperties()) {\n properties.add(property.name);\n }\n }\n\n return Array.from(properties).map((name) => this.getProperty(name));\n }\n\n hasProperty(prop: string | Property): boolean {\n if (prop instanceof Property) {\n return this.getProperties(true).has(prop.qname)\n }\n return this.getProperties().has(prop)\n }\n\n /**\n * Get the value of a property. If it's not defined, return an\n * empty array. If it's not a valid property, raise an error.\n *\n * @param prop name or Property\n */\n getProperty(prop: string | Property): Property {\n if (prop instanceof Property) {\n return prop\n }\n if (this.hasProperty(prop)) {\n return this.getProperties().get(prop) as Property\n } else {\n throw new Error('Property does not exist: ' + prop)\n }\n }\n\n isA(schema: SchemaSpec): boolean {\n try {\n schema = this.model.getSchema(schema)\n return !!~this.schemata.indexOf(schema.name)\n } catch {\n return false;\n }\n }\n\n isAny(schemata: Array<SchemaSpec>): boolean {\n for (const schema of schemata) {\n if (this.isA(schema)) {\n return true;\n }\n }\n return false;\n }\n\n static isSchema = (item: Schema | undefined): item is Schema => {\n return !!item\n }\n\n toString(): string {\n return this.name\n }\n}\n","\nexport interface IPropertyTypeDatum {\n group?: string\n label?: string\n description?: string\n maxLength?: number\n plural?: string | null\n matchable?: boolean,\n pivot?: boolean,\n values?: { [name: string]: string }\n}\n\n/**\n * A property type, such as a string, email address, phone number,\n * URL or a related entity.\n */\nexport class PropertyType {\n static ENTITY = 'entity';\n\n public name: string\n public group: string | null\n public grouped: boolean\n public label: string\n public plural: string\n public description: string | null\n public maxLength: number\n public matchable: boolean\n public pivot: boolean\n public values: Map<string, string>\n public isEntity: boolean\n\n constructor(name: string, data: IPropertyTypeDatum) {\n this.name = name\n this.label = data.label || name\n this.description = data.description || null\n this.maxLength = data.maxLength || 0\n this.plural = data.plural || this.label\n this.group = data.group || null\n this.grouped = data.group !== undefined\n this.matchable = !!data.matchable\n this.pivot = !!data.pivot\n this.isEntity = name === PropertyType.ENTITY\n this.values = new Map<string, string>()\n\n if (data.values) {\n Object.entries(data.values).forEach(([value, label]) => {\n this.values.set(value, label)\n })\n }\n }\n\n getLabel(value: string | undefined | null): string {\n if (!value) {\n return ''\n }\n return this.values.get(value) || value\n }\n\n toString(): string {\n return this.name\n }\n}","import { v4 as uuidv4 } from 'uuid';\nimport { Entity, IEntityDatum } from './entity';\nimport { Namespace } from './namespace';\nimport { Property } from './property';\nimport { ISchemaDatum, Schema } from './schema';\nimport { IPropertyTypeDatum, PropertyType } from './type';\n\n\nexport interface IModelDatum {\n schemata: { [name: string]: ISchemaDatum }\n types: { [name: string]: IPropertyTypeDatum }\n}\n\nexport class Model {\n public readonly schemata: { [x: string]: Schema | undefined } = {}\n public readonly types: { [x: string]: PropertyType } = {}\n\n constructor(config: IModelDatum) {\n this.types = {}\n Object.entries(config.types).forEach(\n ([typeName, typeData]) => {\n this.types[typeName] = new PropertyType(typeName, typeData)\n }\n )\n\n this.schemata = {}\n Object.entries(config.schemata).forEach(\n ([schemaName, schema]) => {\n this.schemata[schemaName] = new Schema(this, schemaName, schema)\n }\n )\n }\n\n getSchema(schemaName: string | null | undefined | Schema): Schema {\n if (schemaName === null || schemaName === undefined) {\n throw new Error('Invalid schema.')\n }\n if (schemaName instanceof Schema) {\n return schemaName\n }\n const schema = this.schemata[schemaName];\n if (schema === undefined) {\n throw new Error('No such schema: ' + schemaName)\n }\n return schema;\n }\n\n /**\n * Get a list of all schemata.\n */\n getSchemata(): Schema[] {\n return Object.keys(this.schemata)\n .map((name) => this.schemata[name])\n .filter(Schema.isSchema)\n }\n\n /**\n * Get a list of all unique properties.\n */\n getProperties(): Property[] {\n const qnames = new Map<string, Property>()\n this.getSchemata().forEach((schema) => {\n schema.getProperties().forEach((prop) => {\n qnames.set(prop.qname, prop)\n })\n })\n return Array.from(qnames.values())\n }\n\n /**\n * Get a particular property type.\n *\n * @param type name of the type\n */\n getType(type: string | PropertyType): PropertyType {\n if (type instanceof PropertyType) {\n return type;\n }\n return this.types[type]\n }\n\n /**\n * Convert a raw JSON object to an entity proxy.\n *\n * @param raw entity source data\n */\n getEntity(raw: IEntityDatum | Entity): Entity {\n if (raw instanceof Entity) {\n return raw\n } else {\n return new Entity(this, raw)\n }\n }\n\n /**\n * Make a new object with the given schema, and generate a random ID for\n * it.\n *\n * @param schema Schema name or object\n */\n async createEntity(schema: string | Schema, namespace?: Namespace): Promise<Entity> {\n const rawId = uuidv4();\n const id = namespace ? await namespace.sign(rawId) : rawId;\n return this.getEntity({\n id,\n schema: schema,\n properties: {}\n })\n }\n}\n","\nexport class Namespace {\n private separator = '.'\n private namespaceKey: string\n\n constructor(namespaceKey: string) {\n this.namespaceKey = namespaceKey;\n }\n\n parse(id: string): string[] {\n return id.split(this.separator);\n }\n\n async signature(id: string): Promise<string> {\n // Generate an HMAC signature for the given ID using the namespace key, using \n // SHA-1 as the hashing algorithm and returning the result as a hexadecimal string.\n // Use in-browser crypto library for compatibility with browsers.\n if (!this.namespaceKey.length) {\n return id;\n }\n // Convert strings to ArrayBuffers\n const encoder = new TextEncoder();\n const keyData = encoder.encode(this.namespaceKey);\n const data = encoder.encode(id);\n\n // Import the key\n const key = await crypto.subtle.importKey(\n 'raw',\n keyData,\n { name: 'HMAC', hash: 'SHA-1' },\n false,\n ['sign']\n );\n\n // Generate the signature\n const signature = await crypto.subtle.sign('HMAC', key, data);\n\n // Convert to hexadecimal string\n const hashArray = Array.from(new Uint8Array(signature));\n const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\n return hashHex;\n }\n\n async sign(id: string): Promise<string> {\n const entityId = this.parse(id)[0];\n if (!entityId) {\n return id;\n }\n if (!this.namespaceKey.length) {\n return entityId;\n }\n const digest = await this.signature(entityId);\n\n return [entityId, digest].join(this.separator);\n }\n}\n","import icons from './generated/icons.json'\nimport { Schema } from './schema'\n\ninterface IIconStorage {\n [iconName:string]: string[]\n}\n\nexport const IconRegistry = {\n SIZE: 24,\n storage: icons as IIconStorage,\n\n getIcon(iconName: string): string[] {\n return this.storage[iconName];\n },\n\n getSchemaIcon(schema: Schema): string[] {\n const iconName = schema.name.toLowerCase()\n return this.getIcon(iconName) || this.getIcon('info')\n }\n}\n","export * from './entity'\nexport * from './model'\nexport * from './namespace'\nexport * from './property'\nexport * from './schema'\nexport * from './type'\nexport * from './icons'\n\n\nimport defaultModel_ from './defaultModel.json';\nimport { IModelDatum } from './model';\nexport const defaultModel: IModelDatum = defaultModel_;\n"],"names":["uuidv4"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACPK,MAAM,YAAY,GAAgB;;;;","x_google_ignoreList":[1,2,3,4,5]}
|