@opensanctions/followthemoney 3.8.4

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"followthemoney.es5.js","sources":["../src/entity.ts","../src/property.ts","../src/schema.ts","../src/type.ts","../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/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","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 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, ISchemaDatum } from './schema'\nimport { Entity, IEntityDatum } from './entity'\nimport { Property } from './property'\nimport { PropertyType, IPropertyTypeDatum } from './type'\nimport { Namespace } from './namespace';\nimport { v4 as uuidv4 } from 'uuid';\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 createEntity(schema: string | Schema, namespace?: Namespace): Entity {\n const rawId = uuidv4();\n const id = namespace ? namespace.sign(rawId) : rawId;\n return this.getEntity({\n id,\n schema: schema,\n properties: {}\n })\n }\n}\n","import crypto from 'crypto';\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 signature(id: string): string {\n return crypto.createHmac('sha1', this.namespaceKey)\n .update(id)\n .digest('hex');\n }\n\n sign(id: string): 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 = 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","crypto"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNlD,MAAM,YAAY,GAAgB;;;;","x_google_ignoreList":[4,5,6,7]}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.defaultModel = void 0;
21
+ __exportStar(require("./entity"), exports);
22
+ __exportStar(require("./model"), exports);
23
+ __exportStar(require("./namespace"), exports);
24
+ __exportStar(require("./property"), exports);
25
+ __exportStar(require("./schema"), exports);
26
+ __exportStar(require("./type"), exports);
27
+ __exportStar(require("./icons"), exports);
28
+ const defaultModel_json_1 = __importDefault(require("./defaultModel.json"));
29
+ exports.defaultModel = defaultModel_json_1.default;
30
+ //# sourceMappingURL=followthemoney.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"followthemoney.js","sourceRoot":"","sources":["../src/followthemoney.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,2CAAwB;AACxB,0CAAuB;AACvB,8CAA2B;AAC3B,6CAA0B;AAC1B,2CAAwB;AACxB,yCAAsB;AACtB,0CAAuB;AAGvB,4EAAgD;AAEnC,QAAA,YAAY,GAAgB,2BAAa,CAAC"}