@uql/core 3.4.2 → 3.4.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.
@@ -1 +1 @@
1
- {"version":3,"file":"uql-browser.min.js","sources":["../../src/test/entityMock.ts","../../src/entity/decorator/definition.ts","../../src/test/it.util.ts","../../src/test/spec.util.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\nimport { Entity, Field, Id, ManyToMany, ManyToOne, OneToMany, OneToOne } from '../entity/index.js';\nimport { idKey, type Relation } from '../type/index.js';\nimport { raw } from '../util/index.js';\n\n/**\n * an `abstract` class can (optionally) be used as the base \"template\" for the entities\n * (so common fields' declaration is easily reused).\n */\nexport abstract class BaseEntity {\n /**\n * auto-generated primary-key (when the `onInsert` property is omitted).\n */\n @Id()\n id?: number;\n\n /**\n * foreign-keys are really simple to specify with the `reference` property.\n */\n @Field({ reference: () => Company })\n companyId?: number;\n\n /**\n * The `Relation` wrapper type can be used in ESM projects for the relations to\n * avoid circular dependency issues.\n */\n @ManyToOne({ entity: () => Company })\n company?: Relation<Company>;\n\n @Field({ reference: () => User })\n creatorId?: number;\n\n @ManyToOne({ entity: () => User })\n creator?: Relation<User>;\n\n /**\n * 'onInsert' property can be used to specify a custom mechanism for\n * obtaining the value of a field when inserting:\n */\n @Field({ onInsert: Date.now })\n createdAt?: number;\n\n /**\n * 'onUpdate' property can be used to specify a custom mechanism for\n * obtaining the value of a field when updating:\n */\n @Field({ onUpdate: Date.now })\n updatedAt?: number;\n}\n\nexport type CompanyKindKey = 'public' | 'private';\n\nexport type CompanyKind = { [k in CompanyKindKey]?: 0 | 1 };\n\n/**\n * `Company` will inherit all the fields (including the `Id`) declared in `BaseEntity`.\n */\n@Entity()\nexport class Company extends BaseEntity {\n @Field()\n name?: string;\n\n @Field()\n description?: string;\n\n @Field({ type: 'jsonb' })\n kind?: CompanyKind;\n}\n\n/**\n * and entity can specify the table name.\n */\n@Entity({ name: 'user_profile' })\nexport class Profile extends BaseEntity {\n /**\n * an entity can specify its own ID Field and still inherit the others\n * columns/relations from its parent entity.\n */\n @Id()\n pk?: number;\n\n @Field({ name: 'image' })\n picture?: string;\n\n @OneToOne({ entity: () => User })\n declare creator?: Relation<User>;\n}\n\n@Entity()\nexport class User extends BaseEntity {\n @Field()\n name?: string;\n\n @Field({ updatable: false })\n email?: string;\n\n @Field({ eager: false })\n password?: string;\n\n /**\n * `mappedBy` property can be a callback or a string (callback is useful for auto-refactoring).\n */\n @OneToOne({ entity: () => Profile, mappedBy: (profile) => profile.creator, cascade: true })\n profile?: Profile;\n\n @OneToMany({ entity: () => User, mappedBy: 'creator' })\n users?: User[];\n}\n\n@Entity()\nexport class UserWithNonUpdatableId {\n @Id({ updatable: false })\n id: number;\n\n @Field()\n name: string;\n}\n\n@Entity()\nexport class LedgerAccount extends BaseEntity {\n @Field()\n name?: string;\n\n @Field()\n description?: string;\n\n @Field({ reference: () => LedgerAccount })\n parentLedgerId?: number;\n\n @ManyToOne()\n parentLedger?: LedgerAccount;\n}\n\n@Entity()\nexport class TaxCategory extends BaseEntity {\n /**\n * `idKey` symbol can be used to specify the name of the identifier property,\n * so the type of the identifier can always be type-safe\n * (the identifiers named as `id` or `_id` are auto-inferred).\n */\n [idKey]?: 'pk';\n\n /**\n * an entity can override the ID Field and still inherit the others\n * columns/relations from its parent entity.\n * 'onInsert' property can be used to specify a custom mechanism for\n * auto-generating the primary-key's value when inserting.\n */\n @Id({ onInsert: randomUUID })\n pk?: string;\n\n @Field()\n name?: string;\n\n @Field()\n description?: string;\n}\n\n@Entity()\nexport class Tax extends BaseEntity {\n @Field()\n name?: string;\n\n @Field()\n percentage?: number;\n\n @Field({ reference: () => TaxCategory })\n categoryId?: string;\n\n @ManyToOne()\n category?: TaxCategory;\n\n @Field()\n description?: string;\n}\n\n/**\n * `softDelete` will make the entity \"soft deletable\".\n */\n@Entity({ softDelete: true })\nexport class MeasureUnitCategory extends BaseEntity {\n @Field()\n name?: string;\n\n @OneToMany({ entity: () => MeasureUnit, mappedBy: (measureUnit) => measureUnit.categoryId })\n measureUnits?: MeasureUnit[];\n\n /**\n * `onDelete` callback allows to specify which field will be used when deleting/querying this entity.\n */\n @Field({ onDelete: Date.now })\n deletedAt?: number;\n}\n\n@Entity({ softDelete: true })\nexport class MeasureUnit extends BaseEntity {\n @Field()\n name?: string;\n\n @Field({ reference: () => MeasureUnitCategory })\n categoryId?: number;\n\n @ManyToOne({ cascade: 'persist' })\n category?: MeasureUnitCategory;\n\n @Field({ onDelete: Date.now })\n deletedAt?: number;\n}\n\n@Entity()\nexport class Storehouse extends BaseEntity {\n @Field()\n name?: string;\n\n @Field()\n address?: string;\n\n @Field()\n description?: string;\n}\n\n@Entity()\nexport class Item extends BaseEntity {\n @Field()\n name?: string;\n\n @Field()\n description?: string;\n\n @Field()\n code?: string;\n\n @Field({ reference: () => LedgerAccount })\n buyLedgerAccountId?: number;\n\n @ManyToOne()\n buyLedgerAccount?: LedgerAccount;\n\n @Field({ reference: () => LedgerAccount })\n saleLedgerAccountId?: number;\n\n @ManyToOne()\n saleLedgerAccount?: LedgerAccount;\n\n @Field({ reference: () => Tax })\n taxId?: number;\n\n @ManyToOne()\n tax?: Tax;\n\n @Field({ reference: () => MeasureUnit })\n measureUnitId?: number;\n\n @ManyToOne()\n measureUnit?: MeasureUnit;\n\n @Field()\n salePrice?: number;\n\n @Field()\n inventoryable?: boolean;\n\n @ManyToMany({ entity: () => Tag, through: () => ItemTag, cascade: true })\n tags?: Tag[];\n\n @Field({\n /**\n * `virtual` property allows defining the value for a non-persistent field,\n * such value might be a scalar or a (`raw`) function. Virtual-fields can\n * be used in `$select` and `$where` as a common field whose value is\n * replaced is replaced at runtime.\n */\n virtual: raw(({ ctx, escapedPrefix, dialect }) => {\n ctx.append('(');\n dialect.count(\n ctx,\n ItemTag,\n {\n $where: {\n itemId: raw(({ ctx }) => {\n ctx.append(escapedPrefix + dialect.escapeId('id'));\n }),\n },\n },\n { autoPrefix: true },\n );\n ctx.append(')');\n }),\n })\n tagsCount?: number;\n}\n\n@Entity()\nexport class Tag extends BaseEntity {\n @Field()\n name?: string;\n\n @ManyToMany({ entity: () => Item, mappedBy: (item) => item.tags })\n items?: Item[];\n\n @Field({\n virtual: raw(({ ctx, escapedPrefix, dialect }) => {\n ctx.append('(');\n dialect.count(\n ctx,\n ItemTag,\n {\n $where: {\n tagId: raw(({ ctx }) => {\n ctx.append(escapedPrefix + dialect.escapeId('id'));\n }),\n },\n },\n { autoPrefix: true },\n );\n ctx.append(')');\n }),\n })\n itemsCount?: number;\n}\n\n@Entity()\nexport class ItemTag {\n @Id()\n id?: number;\n\n @Field({ reference: () => Item })\n itemId?: number;\n\n @Field({ reference: () => Tag })\n tagId?: number;\n}\n\n@Entity()\nexport class InventoryAdjustment extends BaseEntity {\n @OneToMany({\n entity: () => ItemAdjustment,\n mappedBy: (rel) => rel.inventoryAdjustment,\n cascade: true,\n })\n itemAdjustments?: ItemAdjustment[];\n\n @Field()\n date?: Date;\n\n @Field()\n description?: string;\n}\n\n@Entity()\nexport class ItemAdjustment extends BaseEntity {\n @Field({ reference: () => Item })\n itemId?: number;\n\n @ManyToOne()\n item?: Item;\n\n @Field()\n number?: number;\n\n @Field()\n buyPrice?: number;\n\n @Field({ reference: () => Storehouse })\n storehouseId?: number;\n\n @ManyToOne()\n storehouse?: Storehouse;\n\n @Field({ reference: () => InventoryAdjustment })\n inventoryAdjustmentId?: number;\n\n @ManyToOne()\n inventoryAdjustment?: InventoryAdjustment;\n}\n","import 'reflect-metadata';\nimport type {\n EntityMeta,\n EntityOptions,\n FieldKey,\n FieldOptions,\n IdKey,\n Key,\n RelationKey,\n RelationKeyMap,\n RelationOptions,\n Type,\n} from '../../type/index.js';\nimport { getKeys, hasKeys, lowerFirst, upperFirst } from '../../util/index.js';\n\nconst holder = globalThis;\nconst metaKey = '@uql/core/entity/decorator';\nconst metas: Map<Type<unknown>, EntityMeta<any>> = holder[metaKey] ?? new Map();\nholder[metaKey] = metas;\n\nexport function defineField<E>(entity: Type<E>, key: string, opts: FieldOptions = {}): EntityMeta<E> {\n const meta = ensureMeta(entity);\n if (!opts.type) {\n const type = inferType(entity, key);\n opts = { ...opts, type };\n }\n meta.fields[key] = { ...meta.fields[key], ...{ name: key, ...opts } };\n return meta;\n}\n\nexport function defineId<E>(entity: Type<E>, key: string, opts: FieldOptions): EntityMeta<E> {\n const meta = ensureMeta(entity);\n const id = getIdKey(meta);\n if (id) {\n console.info(`Overriding ID property for '${entity.name}' from '${id}' to '${key}'`);\n delete meta.fields[id];\n }\n return defineField(entity, key, { ...opts, isId: true });\n}\n\nexport function defineRelation<E>(entity: Type<E>, key: string, opts: RelationOptions<E>): EntityMeta<E> {\n if (!opts.entity) {\n const inferredType = inferEntityType(entity, key);\n opts.entity = () => inferredType;\n }\n const meta = ensureMeta(entity);\n meta.relations[key] = { ...meta.relations[key], ...opts };\n return meta;\n}\n\nexport function defineEntity<E>(entity: Type<E>, opts: EntityOptions = {}): EntityMeta<E> {\n const meta = ensureMeta(entity);\n\n if (!hasKeys(meta.fields)) {\n throw TypeError(`'${entity.name}' must have fields`);\n }\n\n const onDeleteKeys = getKeys(meta.fields).filter((key) => meta.fields[key].onDelete) as FieldKey<E>[];\n\n if (onDeleteKeys.length > 1) {\n throw TypeError(`'${entity.name}' must have one field with 'onDelete' as maximum`);\n }\n\n if (opts.softDelete) {\n if (!onDeleteKeys.length) {\n throw TypeError(`'${entity.name}' must have one field with 'onDelete' to enable 'softDelete'`);\n }\n meta.softDelete = onDeleteKeys[0];\n }\n\n meta.name = opts.name ?? entity.name;\n let proto: FunctionConstructor = Object.getPrototypeOf(entity.prototype);\n\n while (proto.constructor !== Object) {\n const parentMeta = ensureMeta(proto.constructor as Type<E>);\n extendMeta(meta, parentMeta);\n proto = Object.getPrototypeOf(proto);\n }\n\n const id = getIdKey(meta);\n if (!id) {\n throw TypeError(`'${entity.name}' must have one field decorated with @Id`);\n }\n meta.id = id;\n\n return meta;\n}\n\nexport function getEntities(): Type<unknown>[] {\n return [...metas.entries()].reduce((acc, [key, val]) => {\n if (val.id) {\n acc.push(key);\n }\n return acc;\n }, []);\n}\n\nfunction ensureMeta<E>(entity: Type<E>): EntityMeta<E> {\n let meta = metas.get(entity);\n if (meta) {\n return meta;\n }\n meta = { entity, fields: {}, relations: {} };\n metas.set(entity, meta);\n return meta;\n}\n\nexport function getMeta<E>(entity: Type<E>): EntityMeta<E> {\n const meta = metas.get(entity);\n if (!meta) {\n throw TypeError(`'${entity.name}' is not an entity`);\n }\n if (meta.processed) {\n return meta;\n }\n meta.processed = true;\n return fillRelations(meta);\n}\n\nfunction fillRelations<E>(meta: EntityMeta<E>): EntityMeta<E> {\n for (const relKey in meta.relations) {\n const relOpts = meta.relations[relKey as RelationKey<E>];\n\n if (relOpts.references) {\n // references were manually specified\n continue;\n }\n\n if (relOpts.mappedBy) {\n fillInverseSideRelations(relOpts);\n continue;\n }\n\n const relEntity = relOpts.entity();\n const relMeta = ensureMeta(relEntity);\n\n if (relOpts.cardinality === 'mm') {\n const idName = meta.fields[meta.id].name;\n const relIdName = relMeta.fields[relMeta.id].name;\n const source = lowerFirst(meta.name) + upperFirst(idName);\n const target = lowerFirst(relMeta.name) + upperFirst(relIdName);\n relOpts.references = [\n { local: source, foreign: meta.id },\n { local: target, foreign: relMeta.id },\n ];\n } else {\n relOpts.references = [{ local: `${relKey}Id`, foreign: relMeta.id }];\n }\n\n if (relOpts.through) {\n fillThroughRelations(relOpts.through());\n }\n }\n\n return meta;\n}\n\nfunction fillInverseSideRelations<E>(relOpts: RelationOptions<E>): void {\n const relEntity = relOpts.entity();\n const relMeta = getMeta(relEntity);\n relOpts.mappedBy = getMappedByRelationKey(relOpts);\n\n if (relMeta.fields[relOpts.mappedBy as FieldKey<E>]) {\n relOpts.references = [{ local: relMeta.id, foreign: relOpts.mappedBy }];\n return;\n }\n\n const mappedByRelation = relMeta.relations[relOpts.mappedBy as RelationKey<E>];\n\n if (relOpts.cardinality === 'm1' || relOpts.cardinality === 'mm') {\n relOpts.references = mappedByRelation.references.slice().reverse();\n relOpts.through = mappedByRelation.through;\n return;\n }\n\n relOpts.references = mappedByRelation.references.map(({ local, foreign }) => ({\n local: foreign,\n foreign: local,\n }));\n}\n\nfunction fillThroughRelations<E>(entity: Type<E>): void {\n const meta = ensureMeta(entity);\n meta.relations = getKeys(meta.fields).reduce((relations, key) => {\n const { reference } = meta.fields[key as FieldKey<E>];\n if (reference) {\n const relEntity = reference();\n const relMeta = ensureMeta(relEntity);\n const relKey = key.slice(0, -relMeta.id.length);\n const relOpts: RelationOptions = {\n entity: reference,\n cardinality: 'm1',\n references: [{ local: key, foreign: relMeta.id }],\n };\n relations[relKey] = relOpts;\n }\n return relations;\n }, {});\n}\n\nfunction getMappedByRelationKey<E>(relOpts: RelationOptions<E>): Key<E> {\n if (typeof relOpts.mappedBy === 'function') {\n const relEntity = relOpts.entity();\n const relMeta = ensureMeta(relEntity);\n const keyMap = getRelationKeyMap(relMeta);\n return relOpts.mappedBy(keyMap);\n }\n return relOpts.mappedBy;\n}\n\nfunction getRelationKeyMap<E>(meta: EntityMeta<E>): RelationKeyMap<E> {\n return getKeys(meta.fields)\n .concat(getKeys(meta.relations))\n .reduce(\n (acc, key) => {\n acc[key] = key;\n return acc;\n },\n {} as RelationKeyMap<E>,\n );\n}\n\nfunction getIdKey<E>(meta: EntityMeta<E>): IdKey<E> {\n const id = getKeys(meta.fields).find((key) => meta.fields[key]?.isId);\n return id as IdKey<E>;\n}\n\nfunction extendMeta<E>(target: EntityMeta<E>, source: EntityMeta<E>): void {\n const sourceFields = { ...source.fields };\n const targetId = getIdKey(target);\n if (targetId) {\n const sourceId = getIdKey(source);\n if (sourceId) {\n delete sourceFields[sourceId];\n }\n }\n target.fields = { ...sourceFields, ...target.fields };\n target.relations = { ...source.relations, ...target.relations };\n}\n\nfunction inferType<E>(entity: Type<E>, key: string): any {\n return Reflect.getMetadata('design:type', entity.prototype, key);\n}\n\nfunction inferEntityType<E>(entity: Type<E>, key: string): Type<any> {\n const inferredType = inferType(entity, key);\n const isValidType = isValidEntityType(inferredType);\n if (!isValidType) {\n throw TypeError(`'${entity.name}.${key}' type was auto-inferred with invalid type '${inferredType?.name}'`);\n }\n return inferredType;\n}\n\nexport function isValidEntityType(type: unknown): type is Type<unknown> {\n return (\n typeof type === 'function' &&\n type !== Boolean &&\n type !== String &&\n type !== Number &&\n type !== BigInt &&\n type !== Date &&\n type !== Symbol\n );\n}\n","import { getEntities, getMeta } from '../entity/decorator/index.js';\nimport type { AbstractSqlQuerier } from '../querier/index.js';\nimport type { Type } from '../type/index.js';\nimport { getKeys } from '../util/index.js';\n\nexport async function createTables(querier: AbstractSqlQuerier, primaryKeyType: string) {\n const entities = getEntities();\n await Promise.all(\n entities.map((entity) => {\n const sql = getDdlForTable(entity, querier, primaryKeyType);\n return querier.run(sql);\n }),\n );\n}\n\nexport async function dropTables(querier: AbstractSqlQuerier) {\n const entities = getEntities();\n await Promise.all(\n entities.map((entity) => {\n const meta = getMeta(entity);\n const sql = `DROP TABLE IF EXISTS ${querier.dialect.escapeId(meta.name)}`;\n return querier.run(sql);\n }),\n );\n}\n\nexport async function clearTables(querier: AbstractSqlQuerier) {\n const entities = getEntities();\n await Promise.all(\n entities.map((entity) => {\n const ctx = querier.dialect.createContext();\n querier.dialect.delete(ctx, entity, {});\n return querier.run(ctx.sql, ctx.values);\n }),\n );\n}\n\nfunction getDdlForTable<E>(entity: Type<E>, querier: AbstractSqlQuerier, primaryKeyType: string) {\n const meta = getMeta(entity);\n\n let sql = `CREATE TABLE ${querier.dialect.escapeId(meta.name)} (\\n\\t`;\n\n const insertableIdType = 'VARCHAR(36)';\n const defaultType = 'VARCHAR(255)';\n\n const columns = getKeys(meta.fields).map((key) => {\n const field = meta.fields[key];\n let propSql = querier.dialect.escapeId(field.name) + ' ';\n if (field.isId) {\n propSql += field.onInsert ? `${insertableIdType} PRIMARY KEY` : primaryKeyType;\n } else {\n if (field.type === Number) {\n propSql += 'BIGINT';\n } else if (field.type === Date) {\n propSql += 'TIMESTAMP';\n } else {\n propSql += defaultType;\n }\n }\n return propSql;\n });\n\n sql += columns.join(',\\n\\t');\n sql += `\\n);`;\n\n // log('sql', sql);\n\n return sql;\n}\n","import { afterAll, afterEach, beforeAll, beforeEach, describe, it } from 'bun:test';\n\nexport function createSpec<T extends Spec>(spec: T) {\n const proto: FunctionConstructor = Object.getPrototypeOf(spec);\n let describeFn: typeof describe;\n const specName = proto.constructor.name;\n\n if (specName.startsWith('fff')) {\n describeFn = describe.only;\n } else if (specName.startsWith('xxx')) {\n describeFn = describe.skip;\n } else {\n describeFn = describe;\n }\n\n describeFn(specName, () => createTestCases(spec));\n}\n\nfunction createTestCases(spec: object) {\n let proto: FunctionConstructor = Object.getPrototypeOf(spec);\n\n const processedMethodsMap: { [k: string]: true } = {};\n\n while (proto.constructor !== Object) {\n for (const key of Object.getOwnPropertyNames(proto)) {\n const isProcessed = processedMethodsMap[key];\n processedMethodsMap[key] = true;\n if (isProcessed || key === 'constructor' || typeof spec[key] !== 'function') {\n continue;\n }\n const callback: () => void | Promise<void> = spec[key].bind(spec);\n if (hooks[key]) {\n hooks[key](callback);\n } else if (key.startsWith('should')) {\n it(key, callback);\n } else if (key.startsWith('fffShould')) {\n it.only(key, callback);\n } else if (key.startsWith('xxxShould')) {\n it.skip(key, callback);\n }\n }\n proto = Object.getPrototypeOf(proto);\n }\n}\n\nconst hooks = {\n beforeAll,\n beforeEach,\n afterEach,\n afterAll,\n} as const;\n\ntype SpecHooks = Partial<typeof hooks>;\n\nexport type Spec = SpecHooks & {\n readonly [k: string]: (() => void | Promise<void>) | any;\n};\n"],"names":["id","companyId","company","creatorId","creator","createdAt","updatedAt","BaseEntity","name","description","kind","pk","picture","email","password","profile","users","parentLedgerId","parentLedger","percentage","categoryId","category","measureUnits","deletedAt","address","code","buyLedgerAccountId","buyLedgerAccount","saleLedgerAccountId","saleLedgerAccount","taxId","tax","measureUnitId","measureUnit","salePrice","inventoryable","tags","tagsCount","items","itemsCount","itemId","tagId","itemAdjustments","date","item","number","buyPrice","storehouseId","storehouse","inventoryAdjustmentId","inventoryAdjustment","Id","Field","reference","Company","ManyToOne","entity","User","onInsert","Date","now","onUpdate","Entity","type","Profile","updatable","eager","OneToOne","mappedBy","cascade","OneToMany","UserWithNonUpdatableId","LedgerAccount","randomUUID","TaxCategory","Tax","softDelete","MeasureUnit","onDelete","MeasureUnitCategory","Storehouse","ManyToMany","Tag","through","ItemTag","virtual","raw","ctx","escapedPrefix","dialect","append","count","$where","escapeId","autoPrefix","Item","ItemAdjustment","rel","InventoryAdjustment","holder","globalThis","metaKey","metas","Map","getEntities","entries","reduce","acc","key","val","push","ensureMeta","meta","get","fields","relations","set","getMeta","TypeError","processed","fillRelations","relKey","relOpts","references","fillInverseSideRelations","relEntity","relMeta","cardinality","idName","relIdName","source","lowerFirst","upperFirst","target","local","foreign","fillThroughRelations","getMappedByRelationKey","mappedByRelation","slice","reverse","map","getKeys","length","keyMap","getRelationKeyMap","concat","createTables","querier","primaryKeyType","entities","Promise","all","sql","getDdlForTable","run","dropTables","clearTables","createContext","delete","values","insertableIdType","defaultType","columns","field","propSql","isId","Number","join","createSpec","spec","proto","Object","getPrototypeOf","describeFn","specName","startsWith","describe","only","skip","createTestCases","processedMethodsMap","getOwnPropertyNames","isProcessed","callback","bind","hooks","it","beforeAll","beforeEach","afterEach","afterAll"],"mappings":";;;;;;;;AAUE,IAAA,IAAA,EAAA,KAAA,EAAA,KAAA,EAAA,KAAA,EAAA,KAAA,EAAA,KAAA,EAAA,KAAA;;AAEC,MACD,QACAA;;AAIC,MACD,eACAC;;;AAKC,MACD,aACAC,EAEA,eACAC,EAEA,aACAC;;;AAKC,MACD,eACAC;;;MAOAC,oCAW2BC,WAAAA,EAAAA,KAAAA,EAAAA,KAAAA,EAAAA,MAAAA,EAE3BC,YAEA,iBACAC,EAEA,UACAC,EAAAA,MAAAA,EAAAA,WAAAA,EAO2BH,YAAAA,EAAAA,MAAAA,EAAAA,MAAAA;;;MAM3BI,QAAAA,EAGAC,aAAAA,EAAAA,MAAAA,EAAAA,WAAAA,EAOwBL,YAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EACxB,WACAC,EAGAK,WAAAA,EAGAC,cAAAA;;AAIC,MACD,aACAC,EAGAC,WAAAA,EAAAA,MAAAA,EAAAA,WAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAMAhB,WAEA,WACAQ,EAAAA,MAAAA,EAAAA,WAAAA,EAIiCD,YAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAEjCC,aAEA,kBACAC,EAEA,oBACAQ,EAGAC,yCAI+BX,YAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA;;;;;MAe/BI,WAEA,WACAH,EAEA,kBACAC,EAAAA,MAAAA,EAAAA,WAAAA,EAIuBF,YAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EACvB,WACAC,EAGAW,kBAEA,gBACAC,EAEA,cACAC,EAGAZ,yCAOuCF,YAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAEvCC,WAAAA,EAGAc,kBAAAA;;AAIC,MACD,eACAC,EAAAA,MAAAA,EAAAA,WAAAA,EAI+BhB,YAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAC/B,WACAC,EAGAY,mBAEA,eACAC,EAEA,gBACAE,EAAAA,MAAAA,EAAAA,WAAAA,EAI8BhB,sCAC9B,WACAC,EAEA,aACAgB,EAGAf,0CAIwBF,YAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAExBC,WAAAA,EAGAC,oBAEA,UACAgB,EAEA,wBACAC,EAGAC,wBAEA,yBACAC,EAEA,uBACAC,EAEA,WACAC,EAGAC,WAEA,mBACAC,EAEA,iBACAC,EAGAC,eAAAA,EAGAC,qBAEA,UACAC,EAEA,eAwBAC,EAAAA,MAAAA,EAAAA,YAAAA,EAIuB9B,aAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EACvB,YACAC,EAGA8B,WAAAA,EAoBAC,gEAKA,SACAvC,EAEA,YACAwC,EAGAC,mCAIuClC,aAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAMvCmC,qBAAAA,EAGAC,YAEA,kBACAlC,EAAAA,MAAAA,EAAAA,YAAAA,EAIkCF,+EAClC,aACAiC,EAEA,UACAI,EAGAC,YAAAA,EAGAC,gBAEA,kBACAC,EAEA,gBACAC,EAGAC,6BAEA,yBACAC;AAxWCC,IAAAA,GAAAA,EAAAA,EAAAA,EAAAA,KAAAA,GAMAC,KAAAA,CAAM;AAAEC,IAAAA,SAAAA,EAAW,IAAMC;AAAQ,CAAA,CAAA,EAAA,KAAA,GAOjCC,SAAAA,CAAU;AAAEC,IAAAA,MAAAA,EAAQ,IAAMF;AAAQ,CAAA,CAAA,EAAA,KAAA,GAGlCF,KAAAA,CAAM;AAAEC,IAAAA,SAAAA,EAAW,IAAMI;AAAK,CAAA,CAAA,EAAA,KAAA,GAG9BF,SAAAA,CAAU;AAAEC,IAAAA,MAAAA,EAAQ,IAAMC;AAAK,CAAA,CAAA,EAAA,KAAA,GAO/BL,KAAAA,CAAM;AAAEM,IAAAA,QAAAA,EAAUC,KAAKC;AAAI,CAAA,CAAA,EAAA,KAAA,GAO3BR,KAAAA,CAAM;AAAES,IAAAA,QAAAA,EAAUF,KAAKC;AAAI,CAAA,CAAA;AAzC9B;;;AAGC,IACM,MAAerD,UAAAA,CAAAA;;AAKpBP,QAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,QAAAA,EAMAC,eAAAA,EAOAC,aAAAA,EAGAC,eAAAA,EAGAC,aAAAA,EAOAC,eAAAA,EAOAC,eAAAA,CAAAA,EAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,EAAAA;;;;AAjCAN,gBAAAA;;;;;AAMAC,gBAAAA;;;;;AAOAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAOAC,gBAAAA;;;;;AAOAC,gBAAAA;;;;;aAjCAN,EAAAA,GAAAA,QAAAA,CAAAA,IAAAA,CAAAA;aAMAC,SAAAA,GAAAA,eAAAA,CAAAA,IAAAA,CAAAA;aAOAC,OAAAA,GAAAA,aAAAA,CAAAA,IAAAA,CAAAA;aAGAC,SAAAA,GAAAA,eAAAA,CAAAA,IAAAA,CAAAA;aAGAC,OAAAA,GAAAA,aAAAA,CAAAA,IAAAA,CAAAA;aAOAC,SAAAA,GAAAA,eAAAA,CAAAA,IAAAA,CAAAA;aAOAC,SAAAA,GAAAA,eAAAA,CAAAA,IAAAA,CAAAA;;AACF;;QASCwD,MAAAA,EAAAA,EAAAA,KAAAA,GAEEV,KAAAA,EAAAA,EAAAA,KAAAA,GAGAA,kBAGAA,KAAAA,CAAM;IAAEW,IAAAA,EAAM;AAAQ,CAAA,CAAA;AAPlB,MAAMT,iBAAgB/C,WAAAA,GAAAA,UAAAA,EAAAA;;AAE3BC,QAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,UAAAA,EAGAC,iBAAAA,EAGAC,UAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,QAAAA,EAAAA,UAAAA,CAAAA,EAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,EAAAA;;;;AANAF,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;AAR2BH,SAAAA,EAAAA,WAAAA,CAAAA;;;;;;AAAtB,QAAA,KAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,CAELC,IAAAA,GAAAA,UAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,WAAAA,GAAAA,iBAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,IAAAA,GAAAA,UAAAA,CAAAA,IAAAA,CAAAA;;AACF;;SAKCoD,MAAAA,CAAO;IAAEtD,IAAAA,EAAM;AAAe,CAAA,CAAA,EAAA,MAAA,GAM5B2C,eAGAC,KAAAA,CAAM;IAAE5C,IAAAA,EAAM;AAAQ,CAAA,CAAA;AARlB,MAAMwD,iBAAgBzD,YAAAA,GAAAA,UAAAA,EAAAA;;eAM3BI,QAAAA,EAGAC,aAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,QAAAA,EAAAA,WAAAA,CAAAA,EAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,EAAAA;;;;AAHAD,gBAAAA;;;;;AAGAC,gBAAAA;;;;AAT2BL,SAAAA,EAAAA,YAAAA,CAAAA;;;;;;QAAtB,KAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,CAMLI,EAAAA,GAAAA,qBAGAC,OAAAA,GAAAA,aAAAA,CAAAA,IAAAA,CAAAA;;AAIF;;AAECkD,MAAAA,GAAAA,MAAAA,EAAAA,EAAAA,MAAAA,GAEEV,kBAGAA,KAAAA,CAAM;IAAEa,SAAAA,EAAW;AAAM,CAAA,CAAA,EAAA,MAAA,GAGzBb,KAAAA,CAAM;IAAEc,KAAAA,EAAO;AAAM,CAAA,CAAA,EAAA,MAAA,GAMrBC,QAAAA,CAAS;AAAEX,IAAAA,MAAAA,EAAQ,IAAMQ,QAAAA;IAASI,QAAAA,EAAU,CAACrD,OAAAA,GAAYA,OAAAA,CAAQX,OAAO;IAAEiE,OAAAA,EAAS;AAAK,CAAA,CAAA,EAAA,MAAA,GAGxFC,SAAAA,CAAU;AAAEd,IAAAA,MAAAA,EAAQ,IAAMC,KAAAA;IAAMW,QAAAA,EAAU;AAAU,CAAA,CAAA;AAhBhD,MAAMX,cAAalD,YAAAA,GAAAA,UAAAA,EAAAA;;eAExBC,WAAAA,EAGAK,WAAAA,EAGAC,gBAMAC,aAAAA,EAGAC,WAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,KAAAA,EAAAA,WAAAA,CAAAA,EAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,EAAAA;;;;AAfAR,gBAAAA;;;;;AAGAK,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAMAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;AAjBwBT,SAAAA,EAAAA,YAAAA,CAAAA;;;;;;QAAnB,KAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,CAELC,IAAAA,GAAAA,wBAGAK,KAAAA,GAAAA,WAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,WAAAA,cAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAMAC,OAAAA,GAAAA,0BAGAC,KAAAA,GAAAA,WAAAA,CAAAA,IAAAA,CAAAA;;AACF;;AAEC8C,MAAAA,GAAAA,MAAAA,EAAAA,EAAAA,MAAAA,GAEEX,EAAAA,CAAG;IAAEc,SAAAA,EAAW;AAAM,CAAA,CAAA,EAAA,MAAA,GAGtBb,KAAAA,EAAAA;AAJI,MAAMmB,sBAAAA,CAAAA;;eAEXvE,SAAAA,EAGAQ,WAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,uBAAAA,EAAAA,WAAAA,CAAAA,EAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,EAAAA;;;;AAHAR,gBAAAA;;;;;AAGAQ,gBAAAA;;;;;;;;;;aAHAR,EAAAA,GAAAA,SAAAA,CAAAA,IAAAA,CAAAA;aAGAQ,IAAAA,GAAAA,WAAAA,CAAAA,IAAAA,CAAAA;;AACF;;SAECsD,MAAAA,EAAAA,EAAAA,MAAAA,GAEEV,KAAAA,EAAAA,EAAAA,MAAAA,GAGAA,kBAGAA,KAAAA,CAAM;AAAEC,IAAAA,SAAAA,EAAW,IAAMmB;AAAc,CAAA,CAAA,EAAA,MAAA,GAGvCjB,SAAAA,EAAAA;AAVI,MAAMiB,uBAAsBjE,YAAAA,GAAAA,UAAAA,EAAAA;;AAEjCC,QAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,WAAAA,EAGAC,oBAGAQ,oBAAAA,EAGAC,kBAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,cAAAA,EAAAA,WAAAA,CAAAA,EAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,EAAAA;;;;AATAV,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAQ,gBAAAA;;;;;AAGAC,gBAAAA;;;;AAXiCX,SAAAA,EAAAA,YAAAA,CAAAA;;;;;;AAA5B,QAAA,KAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,CAELC,OAAAA,WAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,WAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAQ,cAAAA,GAAAA,iCAGAC,YAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,CAAAA;;AACF;;AAEC4C,MAAAA,GAAAA,MAAAA,EAAAA,EAAAA,MAAAA,GAeEX,EAAAA,CAAG;IAAEO,QAAAA,EAAUe;AAAW,CAAA,CAAA,EAAA,MAAA,GAG1BrB,KAAAA,EAAAA,EAAAA,MAAAA,GAGAA,KAAAA,EAAAA;AApBI,MAAMsB,qBAAoBnE,YAAAA,GAAAA,UAAAA,EAAAA;;AAe/BI,QAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,SAAAA,EAGAH,WAAAA,EAGAC,kBAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,YAAAA,EAAAA,WAAAA,CAAAA,EAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,EAAAA;;;;AANAE,gBAAAA;;;;;AAGAH,gBAAAA;;;;;AAGAC,gBAAAA;;;;AArB+BF,SAAAA,EAAAA,YAAAA,CAAAA;;;;;;AAA1B,QAAA,KAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,CAeLI,EAAAA,GAAAA,SAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAH,IAAAA,GAAAA,WAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,WAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,CAAAA;;AACF;;SAECqD,MAAAA,EAAAA,EAAAA,MAAAA,GAEEV,KAAAA,EAAAA,EAAAA,MAAAA,GAGAA,kBAGAA,KAAAA,CAAM;AAAEC,IAAAA,SAAAA,EAAW,IAAMqB;AAAY,CAAA,CAAA,EAAA,MAAA,GAGrCnB,SAAAA,EAAAA,EAAAA,MAAAA,GAGAH,KAAAA,EAAAA;AAbI,MAAMuB,aAAYpE,YAAAA,GAAAA,UAAAA,EAAAA;;eAEvBC,WAAAA,EAGAW,gBAAAA,EAGAC,kBAGAC,cAAAA,EAGAZ,kBAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,IAAAA,EAAAA,WAAAA,CAAAA,EAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,EAAAA;;;;AAZAD,gBAAAA;;;;;AAGAW,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAZ,gBAAAA;;;;AAduBF,SAAAA,EAAAA,YAAAA,CAAAA;;;;;;QAAlB,KAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,CAELC,IAAAA,GAAAA,wBAGAW,UAAAA,GAAAA,gBAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,aAAAA,gBAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,QAAAA,GAAAA,2BAGAZ,WAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,CAAAA;;AACF;;SAKCqD,MAAAA,CAAO;IAAEc,UAAAA,EAAY;AAAK,CAAA,CAAA,EAAA,MAAA,GAExBxB,kBAGAkB,SAAAA,CAAU;AAAEd,IAAAA,MAAAA,EAAQ,IAAMqB,YAAAA;IAAaT,QAAAA,EAAU,CAACnC,WAAAA,GAAgBA,WAAAA,CAAYb;AAAW,CAAA,CAAA,EAAA,MAAA,GAMzFgC,KAAAA,CAAM;AAAE0B,IAAAA,QAAAA,EAAUnB,KAAKC;AAAI,CAAA,CAAA;AAVvB,MAAMmB,6BAA4BxE,YAAAA,GAAAA,UAAAA,EAAAA;;AAEvCC,QAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,WAAAA,EAGAc,kBAAAA,EAMAC,eAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,oBAAAA,EAAAA,WAAAA,CAAAA,EAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,EAAAA;;;;AATAf,gBAAAA;;;;;AAGAc,gBAAAA;;;;;AAMAC,gBAAAA;;;;AAXuChB,SAAAA,EAAAA,YAAAA,CAAAA;;;;;;AAAlC,QAAA,KAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,CAELC,IAAAA,GAAAA,WAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAc,YAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAMAC,SAAAA,GAAAA,eAAAA,CAAAA,IAAAA,CAAAA;;AACF;;SAECuC,MAAAA,CAAO;IAAEc,UAAAA,EAAY;AAAK,CAAA,CAAA,EAAA,MAAA,GAExBxB,kBAGAA,KAAAA,CAAM;AAAEC,IAAAA,SAAAA,EAAW,IAAM0B;AAAoB,CAAA,CAAA,EAAA,MAAA,GAG7CxB,SAAAA,CAAU;IAAEc,OAAAA,EAAS;AAAU,CAAA,CAAA,EAAA,MAAA,GAG/BjB,KAAAA,CAAM;AAAE0B,IAAAA,QAAAA,EAAUnB,KAAKC;AAAI,CAAA,CAAA;AAVvB,MAAMiB,qBAAoBtE,YAAAA,GAAAA,UAAAA,EAAAA;;AAE/BC,QAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,WAAAA,EAGAY,mBAGAC,eAAAA,EAGAE,gBAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,YAAAA,EAAAA,WAAAA,CAAAA,EAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,EAAAA;;;;AATAf,gBAAAA;;;;;AAGAY,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAE,gBAAAA;;;;AAX+BhB,SAAAA,EAAAA,YAAAA,CAAAA;;;;;;AAA1B,QAAA,KAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,CAELC,OAAAA,WAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAY,UAAAA,GAAAA,iBAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,QAAAA,GAAAA,4BAGAE,SAAAA,GAAAA,gBAAAA,CAAAA,IAAAA,CAAAA;;AACF;;AAECuC,MAAAA,GAAAA,MAAAA,EAAAA,EAAAA,MAAAA,GAEEV,kBAGAA,KAAAA,EAAAA,EAAAA,MAAAA,GAGAA,KAAAA,EAAAA;AAPI,MAAM4B,oBAAmBzE,YAAAA,GAAAA,UAAAA,EAAAA;;AAE9BC,QAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,WAAAA,EAGAgB,aAAAA,EAGAf,kBAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,WAAAA,EAAAA,WAAAA,CAAAA,EAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,EAAAA;;;;AANAD,gBAAAA;;;;;AAGAgB,gBAAAA;;;;;AAGAf,gBAAAA;;;;AAR8BF,SAAAA,EAAAA,YAAAA,CAAAA;;;;;;AAAzB,QAAA,KAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,CAELC,IAAAA,GAAAA,WAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAgB,OAAAA,GAAAA,aAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAf,WAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,CAAAA;;AACF;;SAECqD,MAAAA,EAAAA,EAAAA,MAAAA,GAEEV,KAAAA,EAAAA,EAAAA,MAAAA,GAGAA,KAAAA,EAAAA,EAAAA,MAAAA,GAGAA,KAAAA,EAAAA,EAAAA,MAAAA,GAGAA,KAAAA,CAAM;AAAEC,IAAAA,SAAAA,EAAW,IAAMmB;AAAc,CAAA,CAAA,EAAA,MAAA,GAGvCjB,sBAGAH,KAAAA,CAAM;AAAEC,IAAAA,SAAAA,EAAW,IAAMmB;AAAc,CAAA,CAAA,EAAA,MAAA,GAGvCjB,sBAGAH,KAAAA,CAAM;AAAEC,IAAAA,SAAAA,EAAW,IAAMsB;AAAI,CAAA,CAAA,EAAA,MAAA,GAG7BpB,sBAGAH,KAAAA,CAAM;AAAEC,IAAAA,SAAAA,EAAW,IAAMwB;AAAY,CAAA,CAAA,EAAA,MAAA,GAGrCtB,SAAAA,EAAAA,EAAAA,MAAAA,GAGAH,KAAAA,EAAAA,EAAAA,MAAAA,GAGAA,KAAAA,EAAAA,EAAAA,MAAAA,GAGA6B,UAAAA,CAAW;AAAEzB,IAAAA,MAAAA,EAAQ,IAAM0B,IAAAA;AAAKC,IAAAA,OAAAA,EAAS,IAAMC,QAAAA;IAASf,OAAAA,EAAS;AAAK,CAAA,CAAA,EAAA,MAAA,GAGtEjB,KAAAA,CAAM;AACL;;;;;QAMAiC,OAAAA,EAASC,IAAI,CAAC,EAAEC,GAAG,EAAEC,aAAa,EAAEC,OAAO,EAAE,GAAA;AAC3CF,QAAAA,GAAAA,CAAIG,MAAM,CAAC,GAAA,CAAA;QACXD,OAAAA,CAAQE,KAAK,CACXJ,GAAAA,EACAH,QAAAA,EACA;YACEQ,MAAAA,EAAQ;AACNpD,gBAAAA,MAAAA,EAAQ8C,GAAAA,CAAI,CAAC,EAAEC,GAAG,EAAE,GAAA;AAClBA,oBAAAA,GAAAA,CAAIG,MAAM,CAACF,aAAAA,GAAgBC,OAAAA,CAAQI,QAAQ,CAAC,IAAA,CAAA,CAAA;AAC9C,gBAAA,CAAA;AACF;SACF,EACA;YAAEC,UAAAA,EAAY;AAAK,SAAA,CAAA;AAErBP,QAAAA,GAAAA,CAAIG,MAAM,CAAC,GAAA,CAAA;AACb,IAAA,CAAA;AACF,CAAA,CAAA;AAlEK,MAAMK,cAAaxF,YAAAA,GAAAA,UAAAA,EAAAA;;AAExBC,QAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,WAAAA,EAGAC,kBAAAA,EAGAgB,UAAAA,EAGAC,wBAAAA,EAGAC,sBAAAA,EAGAC,yBAAAA,EAGAC,uBAAAA,EAGAC,WAAAA,EAGAC,SAAAA,EAGAC,mBAAAA,EAGAC,iBAAAA,EAGAC,eAAAA,EAGAC,mBAAAA,EAGAC,UAAAA,EA0BAC,eAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,KAAAA,EAAAA,YAAAA,CAAAA,EAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,EAAAA;;;;AAjEA7B,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAgB,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AA0BAC,gBAAAA;;;;AAnEwB9B,SAAAA,EAAAA,YAAAA,CAAAA;;;;;;AAAnB,QAAA,KAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,CAELC,IAAAA,GAAAA,WAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,WAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAgB,IAAAA,GAAAA,UAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,kBAAAA,GAAAA,wBAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,gBAAAA,GAAAA,sBAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,mBAAAA,GAAAA,yBAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,iBAAAA,GAAAA,uBAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,KAAAA,GAAAA,WAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,GAAAA,GAAAA,SAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,aAAAA,GAAAA,mBAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,WAAAA,GAAAA,iBAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,SAAAA,GAAAA,eAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,aAAAA,GAAAA,mBAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,IAAAA,GAAAA,UAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CA0BAC,SAAAA,GAAAA,eAAAA,CAAAA,IAAAA,CAAAA;;AACF;;AAECyB,MAAAA,GAAAA,MAAAA,EAAAA,EAAAA,MAAAA,GAEEV,kBAGA6B,UAAAA,CAAW;AAAEzB,IAAAA,MAAAA,EAAQ,IAAMuC,KAAAA;IAAM3B,QAAAA,EAAU,CAACxB,IAAAA,GAASA,IAAAA,CAAKR;AAAK,CAAA,CAAA,EAAA,MAAA,GAG/DgB,KAAAA,CAAM;IACLiC,OAAAA,EAASC,GAAAA,CAAI,CAAC,EAAEC,GAAG,EAAEC,aAAa,EAAEC,OAAO,EAAE,GAAA;AAC3CF,QAAAA,GAAAA,CAAIG,MAAM,CAAC,GAAA,CAAA;QACXD,OAAAA,CAAQE,KAAK,CACXJ,GAAAA,EACAH,QAAAA,EACA;YACEQ,MAAAA,EAAQ;AACNnD,gBAAAA,KAAAA,EAAO6C,GAAAA,CAAI,CAAC,EAAEC,GAAG,EAAE,GAAA;AACjBA,oBAAAA,GAAAA,CAAIG,MAAM,CAACF,aAAAA,GAAgBC,OAAAA,CAAQI,QAAQ,CAAC,IAAA,CAAA,CAAA;AAC9C,gBAAA,CAAA;AACF;SACF,EACA;YAAEC,UAAAA,EAAY;AAAK,SAAA,CAAA;AAErBP,QAAAA,GAAAA,CAAIG,MAAM,CAAC,GAAA,CAAA;AACb,IAAA,CAAA;AACF,CAAA,CAAA;AAxBK,MAAMR,aAAY3E,aAAAA,GAAAA,UAAAA,EAAAA;;AAEvBC,QAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,YAAAA,EAGA8B,WAAAA,EAoBAC,gBAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,IAAAA,EAAAA,YAAAA,CAAAA,EAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,EAAAA;;;;AAvBA/B,gBAAAA;;;;;AAGA8B,gBAAAA;;;;;AAoBAC,gBAAAA;;;;AAzBuBhC,SAAAA,EAAAA,aAAAA,CAAAA;;;;;;AAAlB,QAAA,KAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,CAELC,IAAAA,GAAAA,YAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGA8B,KAAAA,GAAAA,WAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAoBAC,UAAAA,GAAAA,gBAAAA,CAAAA,IAAAA,CAAAA;;AACF;;AAECuB,MAAAA,GAAAA,MAAAA,EAAAA,EAAAA,MAAAA,GAEEX,eAGAC,KAAAA,CAAM;AAAEC,IAAAA,SAAAA,EAAW,IAAM0C;AAAK,CAAA,CAAA,EAAA,MAAA,GAG9B3C,KAAAA,CAAM;AAAEC,IAAAA,SAAAA,EAAW,IAAM6B;AAAI,CAAA,CAAA;AAPzB,MAAME,OAAAA,CAAAA;;AAEXpF,QAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,SAAAA,EAGAwC,YAAAA,EAGAC,WAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,QAAAA,EAAAA,YAAAA,CAAAA,EAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,EAAAA;;;;AANAzC,gBAAAA;;;;;AAGAwC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;;;;;;aANAzC,EAAAA,GAAAA,SAAAA,CAAAA,IAAAA,CAAAA;aAGAwC,MAAAA,GAAAA,YAAAA,CAAAA,IAAAA,CAAAA;aAGAC,KAAAA,GAAAA,WAAAA,CAAAA,IAAAA,CAAAA;;AACF;;AAECqB,MAAAA,GAAAA,MAAAA,EAAAA,EAAAA,MAAAA,GAEEQ,SAAAA,CAAU;AACTd,IAAAA,MAAAA,EAAQ,IAAMwC,eAAAA;IACd5B,QAAAA,EAAU,CAAC6B,GAAAA,GAAQA,GAAAA,CAAI/C,mBAAmB;IAC1CmB,OAAAA,EAAS;AACX,CAAA,CAAA,EAAA,MAAA,GAGCjB,KAAAA,EAAAA,EAAAA,MAAAA,GAGAA,KAAAA,EAAAA;AAXI,MAAM8C,6BAA4B3F,aAAAA,GAAAA,UAAAA,EAAAA;;AAMvCmC,QAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,qBAAAA,EAGAC,UAAAA,EAGAlC,kBAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,oBAAAA,EAAAA,YAAAA,CAAAA,EAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,EAAAA;;;;AANAiC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAlC,gBAAAA;;;;AAZuCF,SAAAA,EAAAA,aAAAA,CAAAA;;;;;;AAAlC,QAAA,KAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,CAMLmC,eAAAA,GAAAA,qBAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,IAAAA,GAAAA,UAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAlC,WAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,CAAAA;;AACF;;AAECqD,MAAAA,GAAAA,MAAAA,EAAAA,EAAAA,MAAAA,GAEEV,KAAAA,CAAM;AAAEC,IAAAA,SAAAA,EAAW,IAAM0C;AAAK,CAAA,CAAA,EAAA,MAAA,GAG9BxC,SAAAA,EAAAA,EAAAA,MAAAA,GAGAH,KAAAA,EAAAA,EAAAA,MAAAA,GAGAA,KAAAA,EAAAA,EAAAA,MAAAA,GAGAA,KAAAA,CAAM;AAAEC,IAAAA,SAAAA,EAAW,IAAM2B;AAAW,CAAA,CAAA,EAAA,MAAA,GAGpCzB,sBAGAH,KAAAA,CAAM;AAAEC,IAAAA,SAAAA,EAAW,IAAM6C;AAAoB,CAAA,CAAA,EAAA,MAAA,GAG7C3C,SAAAA,EAAAA;AAtBI,MAAMyC,wBAAuBzF,aAAAA,GAAAA,UAAAA,EAAAA;;AAElCiC,QAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,aAAAA,EAGAI,UAAAA,EAGAC,YAAAA,EAGAC,cAAAA,EAGAC,kBAAAA,EAGAC,kBAGAC,2BAAAA,EAGAC,yBAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,eAAAA,EAAAA,YAAAA,CAAAA,EAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,EAAAA;;;;AArBAV,gBAAAA;;;;;AAGAI,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;AAvBkC3C,SAAAA,EAAAA,aAAAA,CAAAA;;;;;;AAA7B,QAAA,KAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,CAELiC,MAAAA,GAAAA,aAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAI,IAAAA,GAAAA,UAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,SAAAA,YAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,QAAAA,GAAAA,cAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,YAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,UAAAA,GAAAA,gBAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,qBAAAA,GAAAA,wCAGAC,mBAAAA,GAAAA,yBAAAA,CAAAA,IAAAA,CAAAA;;AACF;;ACvWA,MAAMiD,MAAAA,GAASC,UAAAA;AACf,MAAMC,OAAAA,GAAU,4BAAA;AAChB,MAAMC,KAAAA,GAA6CH,MAAM,CAACE,OAAAA,CAAQ,IAAI,IAAIE,GAAAA,EAAAA;AAC1EJ,MAAM,CAACE,QAAQ,GAAGC,KAAAA;AAsEX,SAASE,WAAAA,GAAAA;IACd,OAAO;AAAIF,QAAAA,GAAAA,KAAAA,CAAMG,OAAO;AAAG,KAAA,CAACC,MAAM,CAAC,CAACC,GAAAA,EAAK,CAACC,KAAKC,GAAAA,CAAI,GAAA;QACjD,IAAIA,GAAAA,CAAI7G,EAAE,EAAE;AACV2G,YAAAA,GAAAA,CAAIG,IAAI,CAACF,GAAAA,CAAAA;AACX,QAAA;QACA,OAAOD,GAAAA;AACT,IAAA,CAAA,EAAG,EAAE,CAAA;AACP;AAEA,SAASI,WAAcvD,MAAe,EAAA;IACpC,IAAIwD,IAAAA,GAAOV,KAAAA,CAAMW,GAAG,CAACzD,MAAAA,CAAAA;AACrB,IAAA,IAAIwD,IAAAA,EAAM;QACR,OAAOA,IAAAA;AACT,IAAA;IACAA,IAAAA,GAAO;AAAExD,QAAAA,MAAAA;AAAQ0D,QAAAA,MAAAA,EAAQ,EAAC;AAAGC,QAAAA,SAAAA,EAAW;AAAG,KAAA;IAC3Cb,KAAAA,CAAMc,GAAG,CAAC5D,MAAAA,EAAQwD,IAAAA,CAAAA;IAClB,OAAOA,IAAAA;AACT;AAEO,SAASK,QAAW7D,MAAe,EAAA;IACxC,MAAMwD,IAAAA,GAAOV,KAAAA,CAAMW,GAAG,CAACzD,MAAAA,CAAAA;AACvB,IAAA,IAAI,CAACwD,IAAAA,EAAM;QACT,MAAMM,SAAAA,CAAU,CAAC,CAAC,EAAE9D,OAAOhD,IAAI,CAAC,kBAAkB,CAAC,CAAA;AACrD,IAAA;IACA,IAAIwG,IAAAA,CAAKO,SAAS,EAAE;QAClB,OAAOP,IAAAA;AACT,IAAA;AACAA,IAAAA,IAAAA,CAAKO,SAAS,GAAG,IAAA;AACjB,IAAA,OAAOC,aAAAA,CAAcR,IAAAA,CAAAA;AACvB;AAEA,SAASQ,cAAiBR,IAAmB,EAAA;AAC3C,IAAA,IAAK,MAAMS,MAAAA,IAAUT,IAAAA,CAAKG,SAAS,CAAE;AACnC,QAAA,MAAMO,OAAAA,GAAUV,IAAAA,CAAKG,SAAS,CAACM,MAAAA,CAAyB;QAExD,IAAIC,OAAAA,CAAQC,UAAU,EAAE;AAEtB,YAAA;AACF,QAAA;QAEA,IAAID,OAAAA,CAAQtD,QAAQ,EAAE;YACpBwD,wBAAAA,CAAyBF,OAAAA,CAAAA;AACzB,YAAA;AACF,QAAA;QAEA,MAAMG,SAAAA,GAAYH,QAAQlE,MAAM,EAAA;AAChC,QAAA,MAAMsE,UAAUf,UAAAA,CAAWc,SAAAA,CAAAA;QAE3B,IAAIH,OAAAA,CAAQK,WAAW,KAAK,IAAA,EAAM;YAChC,MAAMC,MAAAA,GAAShB,KAAKE,MAAM,CAACF,KAAKhH,EAAE,CAAC,CAACQ,IAAI;YACxC,MAAMyH,SAAAA,GAAYH,QAAQZ,MAAM,CAACY,QAAQ9H,EAAE,CAAC,CAACQ,IAAI;AACjD,YAAA,MAAM0H,MAAAA,GAASC,UAAAA,CAAWnB,IAAAA,CAAKxG,IAAI,IAAI4H,UAAAA,CAAWJ,MAAAA,CAAAA;AAClD,YAAA,MAAMK,MAAAA,GAASF,UAAAA,CAAWL,OAAAA,CAAQtH,IAAI,IAAI4H,UAAAA,CAAWH,SAAAA,CAAAA;AACrDP,YAAAA,OAAAA,CAAQC,UAAU,GAAG;AACnB,gBAAA;oBAAEW,KAAAA,EAAOJ,MAAAA;AAAQK,oBAAAA,OAAAA,EAASvB,KAAKhH;AAAG,iBAAA;AAClC,gBAAA;oBAAEsI,KAAAA,EAAOD,MAAAA;AAAQE,oBAAAA,OAAAA,EAAST,QAAQ9H;AAAG;AACtC,aAAA;QACH,CAAA,MAAO;AACL0H,YAAAA,OAAAA,CAAQC,UAAU,GAAG;AAAC,gBAAA;oBAAEW,KAAAA,EAAO,CAAA,EAAGb,MAAAA,CAAO,EAAE,CAAC;AAAEc,oBAAAA,OAAAA,EAAST,QAAQ9H;AAAG;AAAE,aAAA;AACtE,QAAA;QAEA,IAAI0H,OAAAA,CAAQvC,OAAO,EAAE;AACnBqD,YAAAA,oBAAAA,CAAqBd,QAAQvC,OAAO,EAAA,CAAA;AACtC,QAAA;AACF,IAAA;IAEA,OAAO6B,IAAAA;AACT;AAEA,SAASY,yBAA4BF,OAA2B,EAAA;IAC9D,MAAMG,SAAAA,GAAYH,QAAQlE,MAAM,EAAA;AAChC,IAAA,MAAMsE,UAAUT,OAAAA,CAAQQ,SAAAA,CAAAA;IACxBH,OAAAA,CAAQtD,QAAQ,GAAGqE,sBAAAA,CAAuBf,OAAAA,CAAAA;AAE1C,IAAA,IAAII,QAAQZ,MAAM,CAACQ,OAAAA,CAAQtD,QAAQ,CAAgB,EAAE;AACnDsD,QAAAA,OAAAA,CAAQC,UAAU,GAAG;AAAC,YAAA;AAAEW,gBAAAA,KAAAA,EAAOR,QAAQ9H,EAAE;AAAEuI,gBAAAA,OAAAA,EAASb,QAAQtD;AAAS;AAAE,SAAA;AACvE,QAAA;AACF,IAAA;AAEA,IAAA,MAAMsE,mBAAmBZ,OAAAA,CAAQX,SAAS,CAACO,OAAAA,CAAQtD,QAAQ,CAAmB;AAE9E,IAAA,IAAIsD,QAAQK,WAAW,KAAK,QAAQL,OAAAA,CAAQK,WAAW,KAAK,IAAA,EAAM;AAChEL,QAAAA,OAAAA,CAAQC,UAAU,GAAGe,gBAAAA,CAAiBf,UAAU,CAACgB,KAAK,GAAGC,OAAO,EAAA;QAChElB,OAAAA,CAAQvC,OAAO,GAAGuD,gBAAAA,CAAiBvD,OAAO;AAC1C,QAAA;AACF,IAAA;AAEAuC,IAAAA,OAAAA,CAAQC,UAAU,GAAGe,gBAAAA,CAAiBf,UAAU,CAACkB,GAAG,CAAC,CAAC,EAAEP,KAAK,EAAEC,OAAO,EAAE,IAAM;YAC5ED,KAAAA,EAAOC,OAAAA;YACPA,OAAAA,EAASD;SACX,CAAA,CAAA;AACF;AAEA,SAASE,qBAAwBhF,MAAe,EAAA;AAC9C,IAAA,MAAMwD,OAAOD,UAAAA,CAAWvD,MAAAA,CAAAA;IACxBwD,IAAAA,CAAKG,SAAS,GAAG2B,OAAAA,CAAQ9B,IAAAA,CAAKE,MAAM,CAAA,CAAER,MAAM,CAAC,CAACS,SAAAA,EAAWP,GAAAA,GAAAA;AACvD,QAAA,MAAM,EAAEvD,SAAS,EAAE,GAAG2D,IAAAA,CAAKE,MAAM,CAACN,GAAAA,CAAmB;AACrD,QAAA,IAAIvD,SAAAA,EAAW;AACb,YAAA,MAAMwE,SAAAA,GAAYxE,SAAAA,EAAAA;AAClB,YAAA,MAAMyE,UAAUf,UAAAA,CAAWc,SAAAA,CAAAA;YAC3B,MAAMJ,MAAAA,GAASb,IAAI+B,KAAK,CAAC,GAAG,CAACb,OAAAA,CAAQ9H,EAAE,CAAC+I,MAAM,CAAA;AAC9C,YAAA,MAAMrB,OAAAA,GAA2B;gBAC/BlE,MAAAA,EAAQH,SAAAA;gBACR0E,WAAAA,EAAa,IAAA;gBACbJ,UAAAA,EAAY;AAAC,oBAAA;wBAAEW,KAAAA,EAAO1B,GAAAA;AAAK2B,wBAAAA,OAAAA,EAAST,QAAQ9H;AAAG;AAAE;AACnD,aAAA;YACAmH,SAAS,CAACM,OAAO,GAAGC,OAAAA;AACtB,QAAA;QACA,OAAOP,SAAAA;AACT,IAAA,CAAA,EAAG,EAAC,CAAA;AACN;AAEA,SAASsB,uBAA0Bf,OAA2B,EAAA;AAC5D,IAAA,IAAI,OAAOA,OAAAA,CAAQtD,QAAQ,KAAK,UAAA,EAAY;QAC1C,MAAMyD,SAAAA,GAAYH,QAAQlE,MAAM,EAAA;AAChC,QAAA,MAAMsE,UAAUf,UAAAA,CAAWc,SAAAA,CAAAA;AAC3B,QAAA,MAAMmB,SAASC,iBAAAA,CAAkBnB,OAAAA,CAAAA;QACjC,OAAOJ,OAAAA,CAAQtD,QAAQ,CAAC4E,MAAAA,CAAAA;AAC1B,IAAA;AACA,IAAA,OAAOtB,QAAQtD,QAAQ;AACzB;AAEA,SAAS6E,kBAAqBjC,IAAmB,EAAA;AAC/C,IAAA,OAAO8B,OAAAA,CAAQ9B,IAAAA,CAAKE,MAAM,CAAA,CACvBgC,MAAM,CAACJ,OAAAA,CAAQ9B,IAAAA,CAAKG,SAAS,CAAA,CAAA,CAC7BT,MAAM,CACL,CAACC,GAAAA,EAAKC,GAAAA,GAAAA;QACJD,GAAG,CAACC,IAAI,GAAGA,GAAAA;QACX,OAAOD,GAAAA;AACT,IAAA,CAAA,EACA,EAAC,CAAA;AAEP;;ACvNO,eAAewC,YAAAA,CAAaC,OAA2B,EAAEC,cAAsB,EAAA;AACpF,IAAA,MAAMC,QAAAA,GAAW9C,WAAAA,EAAAA;AACjB,IAAA,MAAM+C,QAAQC,GAAG,CACfF,QAAAA,CAAST,GAAG,CAAC,CAACrF,MAAAA,GAAAA;QACZ,MAAMiG,GAAAA,GAAMC,cAAAA,CAAelG,MAAAA,EAAQ4F,OAAAA,EAASC,cAAAA,CAAAA;QAC5C,OAAOD,OAAAA,CAAQO,GAAG,CAACF,GAAAA,CAAAA;AACrB,IAAA,CAAA,CAAA,CAAA;AAEJ;AAEO,eAAeG,WAAWR,OAA2B,EAAA;AAC1D,IAAA,MAAME,QAAAA,GAAW9C,WAAAA,EAAAA;AACjB,IAAA,MAAM+C,QAAQC,GAAG,CACfF,QAAAA,CAAST,GAAG,CAAC,CAACrF,MAAAA,GAAAA;AACZ,QAAA,MAAMwD,OAAOK,OAAAA,CAAQ7D,MAAAA,CAAAA;QACrB,MAAMiG,GAAAA,GAAM,CAAC,qBAAqB,EAAEL,OAAAA,CAAQ3D,OAAO,CAACI,QAAQ,CAACmB,IAAAA,CAAKxG,IAAI,CAAA,CAAA,CAAG;QACzE,OAAO4I,OAAAA,CAAQO,GAAG,CAACF,GAAAA,CAAAA;AACrB,IAAA,CAAA,CAAA,CAAA;AAEJ;AAEO,eAAeI,YAAYT,OAA2B,EAAA;AAC3D,IAAA,MAAME,QAAAA,GAAW9C,WAAAA,EAAAA;AACjB,IAAA,MAAM+C,QAAQC,GAAG,CACfF,QAAAA,CAAST,GAAG,CAAC,CAACrF,MAAAA,GAAAA;AACZ,QAAA,MAAM+B,GAAAA,GAAM6D,OAAAA,CAAQ3D,OAAO,CAACqE,aAAa,EAAA;AACzCV,QAAAA,OAAAA,CAAQ3D,OAAO,CAACsE,MAAM,CAACxE,GAAAA,EAAK/B,QAAQ,EAAC,CAAA;AACrC,QAAA,OAAO4F,QAAQO,GAAG,CAACpE,IAAIkE,GAAG,EAAElE,IAAIyE,MAAM,CAAA;AACxC,IAAA,CAAA,CAAA,CAAA;AAEJ;AAEA,SAASN,cAAAA,CAAkBlG,MAAe,EAAE4F,OAA2B,EAAEC,cAAsB,EAAA;AAC7F,IAAA,MAAMrC,OAAOK,OAAAA,CAAQ7D,MAAAA,CAAAA;AAErB,IAAA,IAAIiG,GAAAA,GAAM,CAAC,aAAa,EAAEL,OAAAA,CAAQ3D,OAAO,CAACI,QAAQ,CAACmB,IAAAA,CAAKxG,IAAI,CAAA,CAAE,MAAM,CAAC;AAErE,IAAA,MAAMyJ,gBAAAA,GAAmB,aAAA;AACzB,IAAA,MAAMC,WAAAA,GAAc,cAAA;AAEpB,IAAA,MAAMC,UAAUrB,OAAAA,CAAQ9B,IAAAA,CAAKE,MAAM,CAAA,CAAE2B,GAAG,CAAC,CAACjC,GAAAA,GAAAA;AACxC,QAAA,MAAMwD,KAAAA,GAAQpD,IAAAA,CAAKE,MAAM,CAACN,GAAAA,CAAI;QAC9B,IAAIyD,OAAAA,GAAUjB,QAAQ3D,OAAO,CAACI,QAAQ,CAACuE,KAAAA,CAAM5J,IAAI,CAAA,GAAI,GAAA;QACrD,IAAI4J,KAAAA,CAAME,IAAI,EAAE;AACdD,YAAAA,OAAAA,IAAWD,MAAM1G,QAAQ,GAAG,GAAGuG,gBAAAA,CAAiB,YAAY,CAAC,GAAGZ,cAAAA;QAClE,CAAA,MAAO;YACL,IAAIe,KAAAA,CAAMrG,IAAI,KAAKwG,MAAAA,EAAQ;gBACzBF,OAAAA,IAAW,QAAA;AACb,YAAA,CAAA,MAAO,IAAID,KAAAA,CAAMrG,IAAI,KAAKJ,IAAAA,EAAM;gBAC9B0G,OAAAA,IAAW,WAAA;YACb,CAAA,MAAO;gBACLA,OAAAA,IAAWH,WAAAA;AACb,YAAA;AACF,QAAA;QACA,OAAOG,OAAAA;AACT,IAAA,CAAA,CAAA;IAEAZ,GAAAA,IAAOU,OAAAA,CAAQK,IAAI,CAAC,OAAA,CAAA;IACpBf,GAAAA,IAAO,CAAC,IAAI,CAAC;;IAIb,OAAOA,GAAAA;AACT;;AClEO,SAASgB,WAA2BC,IAAO,EAAA;IAChD,MAAMC,KAAAA,GAA6BC,MAAAA,CAAOC,cAAc,CAACH,IAAAA,CAAAA;IACzD,IAAII,UAAAA;AACJ,IAAA,MAAMC,QAAAA,GAAWJ,KAAAA,CAAM,WAAW,CAACnK,IAAI;IAEvC,IAAIuK,QAAAA,CAASC,UAAU,CAAC,KAAA,CAAA,EAAQ;AAC9BF,QAAAA,UAAAA,GAAaG,SAASC,IAAI;AAC5B,IAAA,CAAA,MAAO,IAAIH,QAAAA,CAASC,UAAU,CAAC,KAAA,CAAA,EAAQ;AACrCF,QAAAA,UAAAA,GAAaG,SAASE,IAAI;IAC5B,CAAA,MAAO;QACLL,UAAAA,GAAaG,QAAAA;AACf,IAAA;IAEAH,UAAAA,CAAWC,QAAAA,EAAU,IAAMK,eAAAA,CAAgBV,IAAAA,CAAAA,CAAAA;AAC7C;AAEA,SAASU,gBAAgBV,IAAY,EAAA;IACnC,IAAIC,KAAAA,GAA6BC,MAAAA,CAAOC,cAAc,CAACH,IAAAA,CAAAA;AAEvD,IAAA,MAAMW,sBAA6C,EAAC;IAEpD,MAAOV,KAAAA,CAAM,WAAW,KAAKC,MAAAA,CAAQ;AACnC,QAAA,KAAK,MAAMhE,GAAAA,IAAOgE,MAAAA,CAAOU,mBAAmB,CAACX,KAAAA,CAAAA,CAAQ;YACnD,MAAMY,WAAAA,GAAcF,mBAAmB,CAACzE,GAAAA,CAAI;YAC5CyE,mBAAmB,CAACzE,IAAI,GAAG,IAAA;YAC3B,IAAI2E,WAAAA,IAAe3E,QAAQ,aAAA,IAAiB,OAAO8D,IAAI,CAAC9D,GAAAA,CAAI,KAAK,UAAA,EAAY;AAC3E,gBAAA;AACF,YAAA;AACA,YAAA,MAAM4E,WAAuCd,IAAI,CAAC9D,GAAAA,CAAI,CAAC6E,IAAI,CAACf,IAAAA,CAAAA;YAC5D,IAAIgB,KAAK,CAAC9E,GAAAA,CAAI,EAAE;gBACd8E,KAAK,CAAC9E,IAAI,CAAC4E,QAAAA,CAAAA;AACb,YAAA,CAAA,MAAO,IAAI5E,GAAAA,CAAIoE,UAAU,CAAC,QAAA,CAAA,EAAW;AACnCW,gBAAAA,EAAAA,CAAG/E,GAAAA,EAAK4E,QAAAA,CAAAA;AACV,YAAA,CAAA,MAAO,IAAI5E,GAAAA,CAAIoE,UAAU,CAAC,WAAA,CAAA,EAAc;gBACtCW,EAAAA,CAAGT,IAAI,CAACtE,GAAAA,EAAK4E,QAAAA,CAAAA;AACf,YAAA,CAAA,MAAO,IAAI5E,GAAAA,CAAIoE,UAAU,CAAC,WAAA,CAAA,EAAc;gBACtCW,EAAAA,CAAGR,IAAI,CAACvE,GAAAA,EAAK4E,QAAAA,CAAAA;AACf,YAAA;AACF,QAAA;QACAb,KAAAA,GAAQC,MAAAA,CAAOC,cAAc,CAACF,KAAAA,CAAAA;AAChC,IAAA;AACF;AAEA,MAAMe,KAAAA,GAAQ;AACZE,IAAAA,SAAAA;AACAC,IAAAA,UAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"uql-browser.min.js","sources":["../../src/test/entityMock.ts","../../src/entity/decorator/definition.ts","../../src/test/it.util.ts","../../src/test/spec.util.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\nimport { Entity, Field, Id, ManyToMany, ManyToOne, OneToMany, OneToOne } from '../entity/index.js';\nimport { idKey, type Relation } from '../type/index.js';\nimport { raw } from '../util/index.js';\n\n/**\n * an `abstract` class can (optionally) be used as the base \"template\" for the entities\n * (so common fields' declaration is easily reused).\n */\nexport abstract class BaseEntity {\n /**\n * auto-generated primary-key (when the `onInsert` property is omitted).\n */\n @Id()\n id?: number;\n\n /**\n * foreign-keys are really simple to specify with the `reference` property.\n */\n @Field({ reference: () => Company })\n companyId?: number;\n\n /**\n * The `Relation` wrapper type can be used in ESM projects for the relations to\n * avoid circular dependency issues.\n */\n @ManyToOne({ entity: () => Company })\n company?: Relation<Company>;\n\n @Field({ reference: () => User })\n creatorId?: number;\n\n @ManyToOne({ entity: () => User })\n creator?: Relation<User>;\n\n /**\n * 'onInsert' property can be used to specify a custom mechanism for\n * obtaining the value of a field when inserting:\n */\n @Field({ onInsert: Date.now })\n createdAt?: number;\n\n /**\n * 'onUpdate' property can be used to specify a custom mechanism for\n * obtaining the value of a field when updating:\n */\n @Field({ onUpdate: Date.now })\n updatedAt?: number;\n}\n\nexport type CompanyKindKey = 'public' | 'private';\n\nexport type CompanyKind = { [k in CompanyKindKey]?: 0 | 1 };\n\n/**\n * `Company` will inherit all the fields (including the `Id`) declared in `BaseEntity`.\n */\n@Entity()\nexport class Company extends BaseEntity {\n @Field()\n name?: string;\n\n @Field()\n description?: string;\n\n @Field({ type: 'jsonb' })\n kind?: CompanyKind;\n}\n\n/**\n * and entity can specify the table name.\n */\n@Entity({ name: 'user_profile' })\nexport class Profile extends BaseEntity {\n /**\n * an entity can specify its own ID Field and still inherit the others\n * columns/relations from its parent entity.\n */\n @Id()\n pk?: number;\n\n @Field({ name: 'image' })\n picture?: string;\n\n @OneToOne({ entity: () => User })\n declare creator?: Relation<User>;\n}\n\n@Entity()\nexport class User extends BaseEntity {\n @Field()\n name?: string;\n\n @Field({ updatable: false })\n email?: string;\n\n @Field({ eager: false })\n password?: string;\n\n /**\n * `mappedBy` property can be a callback or a string (callback is useful for auto-refactoring).\n */\n @OneToOne({ entity: () => Profile, mappedBy: (profile) => profile.creator, cascade: true })\n profile?: Profile;\n\n @OneToMany({ entity: () => User, mappedBy: 'creator' })\n users?: User[];\n}\n\n@Entity()\nexport class UserWithNonUpdatableId {\n @Id({ updatable: false })\n id: number;\n\n @Field()\n name: string;\n}\n\n@Entity()\nexport class LedgerAccount extends BaseEntity {\n @Field()\n name?: string;\n\n @Field()\n description?: string;\n\n @Field({ reference: () => LedgerAccount })\n parentLedgerId?: number;\n\n @ManyToOne()\n parentLedger?: LedgerAccount;\n}\n\n@Entity()\nexport class TaxCategory extends BaseEntity {\n /**\n * `idKey` symbol can be used to specify the name of the identifier property,\n * so the type of the identifier can always be type-safe\n * (the identifiers named as `id` or `_id` are auto-inferred).\n */\n [idKey]?: 'pk';\n\n /**\n * an entity can override the ID Field and still inherit the others\n * columns/relations from its parent entity.\n * 'onInsert' property can be used to specify a custom mechanism for\n * auto-generating the primary-key's value when inserting.\n */\n @Id({ onInsert: randomUUID })\n pk?: string;\n\n @Field()\n name?: string;\n\n @Field()\n description?: string;\n}\n\n@Entity()\nexport class Tax extends BaseEntity {\n @Field()\n name?: string;\n\n @Field()\n percentage?: number;\n\n @Field({ reference: () => TaxCategory })\n categoryId?: string;\n\n @ManyToOne()\n category?: TaxCategory;\n\n @Field()\n description?: string;\n}\n\n/**\n * `softDelete` will make the entity \"soft deletable\".\n */\n@Entity({ softDelete: true })\nexport class MeasureUnitCategory extends BaseEntity {\n @Field()\n name?: string;\n\n @OneToMany({ entity: () => MeasureUnit, mappedBy: (measureUnit) => measureUnit.categoryId })\n measureUnits?: MeasureUnit[];\n\n /**\n * `onDelete` callback allows to specify which field will be used when deleting/querying this entity.\n */\n @Field({ onDelete: Date.now })\n deletedAt?: number;\n}\n\n@Entity({ softDelete: true })\nexport class MeasureUnit extends BaseEntity {\n @Field()\n name?: string;\n\n @Field({ reference: () => MeasureUnitCategory })\n categoryId?: number;\n\n @ManyToOne({ cascade: 'persist' })\n category?: MeasureUnitCategory;\n\n @Field({ onDelete: Date.now })\n deletedAt?: number;\n}\n\n@Entity()\nexport class Storehouse extends BaseEntity {\n @Field()\n name?: string;\n\n @Field()\n address?: string;\n\n @Field()\n description?: string;\n}\n\n@Entity()\nexport class Item extends BaseEntity {\n @Field()\n name?: string;\n\n @Field()\n description?: string;\n\n @Field()\n code?: string;\n\n @Field({ reference: () => LedgerAccount })\n buyLedgerAccountId?: number;\n\n @ManyToOne()\n buyLedgerAccount?: LedgerAccount;\n\n @Field({ reference: () => LedgerAccount })\n saleLedgerAccountId?: number;\n\n @ManyToOne()\n saleLedgerAccount?: LedgerAccount;\n\n @Field({ reference: () => Tax })\n taxId?: number;\n\n @ManyToOne()\n tax?: Tax;\n\n @Field({ reference: () => MeasureUnit })\n measureUnitId?: number;\n\n @ManyToOne()\n measureUnit?: MeasureUnit;\n\n @Field()\n salePrice?: number;\n\n @Field()\n inventoryable?: boolean;\n\n @ManyToMany({ entity: () => Tag, through: () => ItemTag, cascade: true })\n tags?: Tag[];\n\n @Field({\n /**\n * `virtual` property allows defining the value for a non-persistent field,\n * such value might be a scalar or a (`raw`) function. Virtual-fields can\n * be used in `$select` and `$where` as a common field whose value is\n * replaced is replaced at runtime.\n */\n virtual: raw(({ ctx, escapedPrefix, dialect }) => {\n ctx.append('(');\n dialect.count(\n ctx,\n ItemTag,\n {\n $where: {\n itemId: raw(({ ctx }) => {\n ctx.append(escapedPrefix + dialect.escapeId('id'));\n }),\n },\n },\n { autoPrefix: true },\n );\n ctx.append(')');\n }),\n })\n tagsCount?: number;\n}\n\n@Entity()\nexport class Tag extends BaseEntity {\n @Field()\n name?: string;\n\n @ManyToMany({ entity: () => Item, mappedBy: (item) => item.tags })\n items?: Item[];\n\n @Field({\n virtual: raw(({ ctx, escapedPrefix, dialect }) => {\n ctx.append('(');\n dialect.count(\n ctx,\n ItemTag,\n {\n $where: {\n tagId: raw(({ ctx }) => {\n ctx.append(escapedPrefix + dialect.escapeId('id'));\n }),\n },\n },\n { autoPrefix: true },\n );\n ctx.append(')');\n }),\n })\n itemsCount?: number;\n}\n\n@Entity()\nexport class ItemTag {\n @Id()\n id?: number;\n\n @Field({ reference: () => Item })\n itemId?: number;\n\n @Field({ reference: () => Tag })\n tagId?: number;\n}\n\n@Entity()\nexport class InventoryAdjustment extends BaseEntity {\n @OneToMany({\n entity: () => ItemAdjustment,\n mappedBy: (rel) => rel.inventoryAdjustment,\n cascade: true,\n })\n itemAdjustments?: ItemAdjustment[];\n\n @Field()\n date?: Date;\n\n @Field()\n description?: string;\n}\n\n@Entity()\nexport class ItemAdjustment extends BaseEntity {\n @Field({ reference: () => Item })\n itemId?: number;\n\n @ManyToOne()\n item?: Item;\n\n @Field()\n number?: number;\n\n @Field()\n buyPrice?: number;\n\n @Field({ reference: () => Storehouse })\n storehouseId?: number;\n\n @ManyToOne()\n storehouse?: Storehouse;\n\n @Field({ reference: () => InventoryAdjustment })\n inventoryAdjustmentId?: number;\n\n @ManyToOne()\n inventoryAdjustment?: InventoryAdjustment;\n}\n","import 'reflect-metadata';\nimport type {\n EntityMeta,\n EntityOptions,\n FieldKey,\n FieldOptions,\n IdKey,\n Key,\n RelationKey,\n RelationKeyMap,\n RelationOptions,\n Type,\n} from '../../type/index.js';\nimport { getKeys, hasKeys, lowerFirst, upperFirst } from '../../util/index.js';\n\nconst holder = globalThis;\nconst metaKey = '@uql/core/entity/decorator';\nconst metas: Map<Type<unknown>, EntityMeta<any>> = holder[metaKey] ?? new Map();\nholder[metaKey] = metas;\n\nexport function defineField<E>(entity: Type<E>, key: string, opts: FieldOptions = {}): EntityMeta<E> {\n const meta = ensureMeta(entity);\n if (!opts.type) {\n const type = inferType(entity, key);\n opts = { ...opts, type };\n }\n meta.fields[key] = { ...meta.fields[key], ...{ name: key, ...opts } };\n return meta;\n}\n\nexport function defineId<E>(entity: Type<E>, key: string, opts: FieldOptions): EntityMeta<E> {\n const meta = ensureMeta(entity);\n const id = getIdKey(meta);\n if (id) {\n console.info(`Overriding ID property for '${entity.name}' from '${id}' to '${key}'`);\n delete meta.fields[id];\n }\n return defineField(entity, key, { ...opts, isId: true });\n}\n\nexport function defineRelation<E>(entity: Type<E>, key: string, opts: RelationOptions<E>): EntityMeta<E> {\n if (!opts.entity) {\n const inferredType = inferEntityType(entity, key);\n opts.entity = () => inferredType;\n }\n const meta = ensureMeta(entity);\n meta.relations[key] = { ...meta.relations[key], ...opts };\n return meta;\n}\n\nexport function defineEntity<E>(entity: Type<E>, opts: EntityOptions = {}): EntityMeta<E> {\n const meta = ensureMeta(entity);\n\n if (!hasKeys(meta.fields)) {\n throw TypeError(`'${entity.name}' must have fields`);\n }\n\n const onDeleteKeys = getKeys(meta.fields).filter((key) => meta.fields[key].onDelete) as FieldKey<E>[];\n\n if (onDeleteKeys.length > 1) {\n throw TypeError(`'${entity.name}' must have one field with 'onDelete' as maximum`);\n }\n\n if (opts.softDelete) {\n if (!onDeleteKeys.length) {\n throw TypeError(`'${entity.name}' must have one field with 'onDelete' to enable 'softDelete'`);\n }\n meta.softDelete = onDeleteKeys[0];\n }\n\n meta.name = opts.name ?? entity.name;\n let proto: FunctionConstructor = Object.getPrototypeOf(entity.prototype);\n\n while (proto.constructor !== Object) {\n const parentMeta = ensureMeta(proto.constructor as Type<E>);\n extendMeta(meta, parentMeta);\n proto = Object.getPrototypeOf(proto);\n }\n\n const id = getIdKey(meta);\n if (!id) {\n throw TypeError(`'${entity.name}' must have one field decorated with @Id`);\n }\n meta.id = id;\n\n return meta;\n}\n\nexport function getEntities(): Type<unknown>[] {\n return [...metas.entries()].reduce((acc, [key, val]) => {\n if (val.id) {\n acc.push(key);\n }\n return acc;\n }, []);\n}\n\nfunction ensureMeta<E>(entity: Type<E>): EntityMeta<E> {\n let meta = metas.get(entity);\n if (meta) {\n return meta;\n }\n meta = { entity, fields: {}, relations: {} };\n metas.set(entity, meta);\n return meta;\n}\n\nexport function getMeta<E>(entity: Type<E>): EntityMeta<E> {\n const meta = metas.get(entity);\n if (!meta) {\n throw TypeError(`'${entity.name}' is not an entity`);\n }\n if (meta.processed) {\n return meta;\n }\n meta.processed = true;\n return fillRelations(meta);\n}\n\nfunction fillRelations<E>(meta: EntityMeta<E>): EntityMeta<E> {\n for (const relKey in meta.relations) {\n const relOpts = meta.relations[relKey as RelationKey<E>];\n\n if (relOpts.references) {\n // references were manually specified\n continue;\n }\n\n if (relOpts.mappedBy) {\n fillInverseSideRelations(relOpts);\n continue;\n }\n\n const relEntity = relOpts.entity();\n const relMeta = ensureMeta(relEntity);\n\n if (relOpts.cardinality === 'mm') {\n const idName = meta.fields[meta.id].name;\n const relIdName = relMeta.fields[relMeta.id].name;\n const source = lowerFirst(meta.name) + upperFirst(idName);\n const target = lowerFirst(relMeta.name) + upperFirst(relIdName);\n relOpts.references = [\n { local: source, foreign: meta.id },\n { local: target, foreign: relMeta.id },\n ];\n } else {\n relOpts.references = [{ local: `${relKey}Id`, foreign: relMeta.id }];\n }\n\n if (relOpts.through) {\n fillThroughRelations(relOpts.through());\n }\n }\n\n return meta;\n}\n\nfunction fillInverseSideRelations<E>(relOpts: RelationOptions<E>): void {\n const relEntity = relOpts.entity();\n const relMeta = getMeta(relEntity);\n relOpts.mappedBy = getMappedByRelationKey(relOpts);\n\n if (relMeta.fields[relOpts.mappedBy as FieldKey<E>]) {\n relOpts.references = [{ local: relMeta.id, foreign: relOpts.mappedBy }];\n return;\n }\n\n const mappedByRelation = relMeta.relations[relOpts.mappedBy as RelationKey<E>];\n\n if (relOpts.cardinality === 'm1' || relOpts.cardinality === 'mm') {\n relOpts.references = mappedByRelation.references.slice().reverse();\n relOpts.through = mappedByRelation.through;\n return;\n }\n\n relOpts.references = mappedByRelation.references.map(({ local, foreign }) => ({\n local: foreign,\n foreign: local,\n }));\n}\n\nfunction fillThroughRelations<E>(entity: Type<E>): void {\n const meta = ensureMeta(entity);\n meta.relations = getKeys(meta.fields).reduce((relations, key) => {\n const { reference } = meta.fields[key as FieldKey<E>];\n if (reference) {\n const relEntity = reference();\n const relMeta = ensureMeta(relEntity);\n const relKey = key.slice(0, -relMeta.id.length);\n const relOpts: RelationOptions = {\n entity: reference,\n cardinality: 'm1',\n references: [{ local: key, foreign: relMeta.id }],\n };\n relations[relKey] = relOpts;\n }\n return relations;\n }, {});\n}\n\nfunction getMappedByRelationKey<E>(relOpts: RelationOptions<E>): Key<E> {\n if (typeof relOpts.mappedBy === 'function') {\n const relEntity = relOpts.entity();\n const relMeta = ensureMeta(relEntity);\n const keyMap = getRelationKeyMap(relMeta);\n return relOpts.mappedBy(keyMap);\n }\n return relOpts.mappedBy;\n}\n\nfunction getRelationKeyMap<E>(meta: EntityMeta<E>): RelationKeyMap<E> {\n return getKeys(meta.fields)\n .concat(getKeys(meta.relations))\n .reduce(\n (acc, key) => {\n acc[key] = key;\n return acc;\n },\n {} as RelationKeyMap<E>,\n );\n}\n\nfunction getIdKey<E>(meta: EntityMeta<E>): IdKey<E> {\n const id = getKeys(meta.fields).find((key) => meta.fields[key]?.isId);\n return id as IdKey<E>;\n}\n\nfunction extendMeta<E>(target: EntityMeta<E>, source: EntityMeta<E>): void {\n const sourceFields = { ...source.fields };\n const targetId = getIdKey(target);\n if (targetId) {\n const sourceId = getIdKey(source);\n if (sourceId) {\n delete sourceFields[sourceId];\n }\n }\n target.fields = { ...sourceFields, ...target.fields };\n target.relations = { ...source.relations, ...target.relations };\n}\n\nfunction inferType<E>(entity: Type<E>, key: string): any {\n return Reflect.getMetadata('design:type', entity.prototype, key);\n}\n\nfunction inferEntityType<E>(entity: Type<E>, key: string): Type<any> {\n const inferredType = inferType(entity, key);\n const isValidType = isValidEntityType(inferredType);\n if (!isValidType) {\n throw TypeError(`'${entity.name}.${key}' type was auto-inferred with invalid type '${inferredType?.name}'`);\n }\n return inferredType;\n}\n\nexport function isValidEntityType(type: unknown): type is Type<unknown> {\n return (\n typeof type === 'function' &&\n type !== Boolean &&\n type !== String &&\n type !== Number &&\n type !== BigInt &&\n type !== Date &&\n type !== Symbol\n );\n}\n","import { getEntities, getMeta } from '../entity/decorator/index.js';\nimport type { AbstractSqlQuerier } from '../querier/index.js';\nimport type { Type } from '../type/index.js';\nimport { getKeys } from '../util/index.js';\n\nexport async function createTables(querier: AbstractSqlQuerier, primaryKeyType: string) {\n const entities = getEntities();\n await Promise.all(\n entities.map((entity) => {\n const sql = getDdlForTable(entity, querier, primaryKeyType);\n return querier.run(sql);\n }),\n );\n}\n\nexport async function dropTables(querier: AbstractSqlQuerier) {\n const entities = getEntities();\n await Promise.all(\n entities.map((entity) => {\n const meta = getMeta(entity);\n const sql = `DROP TABLE IF EXISTS ${querier.dialect.escapeId(meta.name)}`;\n return querier.run(sql);\n }),\n );\n}\n\nexport async function clearTables(querier: AbstractSqlQuerier) {\n const entities = getEntities();\n await Promise.all(\n entities.map((entity) => {\n const ctx = querier.dialect.createContext();\n querier.dialect.delete(ctx, entity, {});\n return querier.run(ctx.sql, ctx.values);\n }),\n );\n}\n\nfunction getDdlForTable<E>(entity: Type<E>, querier: AbstractSqlQuerier, primaryKeyType: string) {\n const meta = getMeta(entity);\n\n let sql = `CREATE TABLE ${querier.dialect.escapeId(meta.name)} (\\n\\t`;\n\n const insertableIdType = 'VARCHAR(36)';\n const defaultType = 'VARCHAR(255)';\n\n const columns = getKeys(meta.fields).map((key) => {\n const field = meta.fields[key];\n let propSql = querier.dialect.escapeId(field.name) + ' ';\n if (field.isId) {\n propSql += field.onInsert ? `${insertableIdType} PRIMARY KEY` : primaryKeyType;\n } else {\n if (field.type === Number) {\n propSql += 'BIGINT';\n } else if (field.type === Date) {\n propSql += 'TIMESTAMP';\n } else {\n propSql += defaultType;\n }\n }\n return propSql;\n });\n\n sql += columns.join(',\\n\\t');\n sql += `\\n);`;\n\n // log('sql', sql);\n\n return sql;\n}\n","import { afterAll, afterEach, beforeAll, beforeEach, describe, it } from 'bun:test';\n\nexport function createSpec<T extends Spec>(spec: T) {\n const proto: FunctionConstructor = Object.getPrototypeOf(spec);\n let describeFn: typeof describe;\n const specName = proto.constructor.name;\n\n if (specName.startsWith('fff')) {\n describeFn = describe.only;\n } else if (specName.startsWith('xxx')) {\n describeFn = describe.skip;\n } else {\n describeFn = describe;\n }\n\n describeFn(specName, () => createTestCases(spec));\n}\n\nfunction createTestCases(spec: object) {\n let proto: FunctionConstructor = Object.getPrototypeOf(spec);\n\n const processedMethodsMap: { [k: string]: true } = {};\n\n while (proto.constructor !== Object) {\n for (const key of Object.getOwnPropertyNames(proto)) {\n const isProcessed = processedMethodsMap[key];\n processedMethodsMap[key] = true;\n if (isProcessed || key === 'constructor' || typeof spec[key] !== 'function') {\n continue;\n }\n const callback: () => void | Promise<void> = spec[key].bind(spec);\n if (hooks[key]) {\n hooks[key](callback);\n } else if (key.startsWith('should')) {\n it(key, callback);\n } else if (key.startsWith('fffShould')) {\n it.only(key, callback);\n } else if (key.startsWith('xxxShould')) {\n it.skip(key, callback);\n }\n }\n proto = Object.getPrototypeOf(proto);\n }\n}\n\nconst hooks = {\n beforeAll,\n beforeEach,\n afterEach,\n afterAll,\n} as const;\n\ntype SpecHooks = Partial<typeof hooks>;\n\nexport type Spec = SpecHooks & {\n readonly [k: string]: (() => void | Promise<void>) | any;\n};\n"],"names":["id","companyId","company","creatorId","creator","createdAt","updatedAt","BaseEntity","name","description","kind","pk","picture","email","password","profile","users","parentLedgerId","parentLedger","percentage","categoryId","category","measureUnits","deletedAt","address","code","buyLedgerAccountId","buyLedgerAccount","saleLedgerAccountId","saleLedgerAccount","taxId","tax","measureUnitId","measureUnit","salePrice","inventoryable","tags","tagsCount","items","itemsCount","itemId","tagId","itemAdjustments","date","item","number","buyPrice","storehouseId","storehouse","inventoryAdjustmentId","inventoryAdjustment","Id","Field","reference","Company","ManyToOne","entity","User","onInsert","Date","now","onUpdate","Entity","type","Profile","updatable","eager","OneToOne","mappedBy","cascade","OneToMany","UserWithNonUpdatableId","LedgerAccount","randomUUID","TaxCategory","Tax","softDelete","MeasureUnit","onDelete","MeasureUnitCategory","Storehouse","ManyToMany","Tag","through","ItemTag","virtual","raw","ctx","escapedPrefix","dialect","append","count","$where","escapeId","autoPrefix","Item","ItemAdjustment","rel","InventoryAdjustment","holder","globalThis","metaKey","metas","Map","getEntities","entries","reduce","acc","key","val","push","ensureMeta","meta","get","fields","relations","set","getMeta","TypeError","processed","fillRelations","relKey","relOpts","references","fillInverseSideRelations","relEntity","relMeta","cardinality","idName","relIdName","source","lowerFirst","upperFirst","target","local","foreign","fillThroughRelations","getMappedByRelationKey","mappedByRelation","slice","reverse","map","getKeys","length","keyMap","getRelationKeyMap","concat","createTables","querier","primaryKeyType","entities","Promise","all","sql","getDdlForTable","run","dropTables","clearTables","createContext","delete","values","insertableIdType","defaultType","columns","field","propSql","isId","Number","join","createSpec","spec","proto","Object","getPrototypeOf","describeFn","specName","startsWith","describe","only","skip","createTestCases","processedMethodsMap","getOwnPropertyNames","isProcessed","callback","bind","hooks","it","beforeAll","beforeEach","afterEach","afterAll"],"mappings":";;;;;;;;AAUE,IAAA,IAAA,EAAA,KAAA,EAAA,KAAA,EAAA,KAAA,EAAA,KAAA,EAAA,KAAA,EAAA,KAAA;;AAEC,MACD,QACAA;;AAIC,MACD,eACAC;;;AAKC,MACD,aACAC,EAEA,eACAC,EAEA,aACAC;;;AAKC,MACD,eACAC;;;MAOAC,oCAW2BC,WAAAA,EAAAA,KAAAA,EAAAA,KAAAA,EAAAA,MAAAA,EAE3BC,YAEA,iBACAC,EAEA,UACAC,EAAAA,MAAAA,EAAAA,WAAAA,EAO2BH,YAAAA,EAAAA,MAAAA,EAAAA,MAAAA;;;MAM3BI,QAAAA,EAGAC,aAAAA,EAAAA,MAAAA,EAAAA,WAAAA,EAOwBL,YAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EACxB,WACAC,EAGAK,WAAAA,EAGAC,cAAAA;;AAIC,MACD,aACAC,EAGAC,WAAAA,EAAAA,MAAAA,EAAAA,WAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAMAhB,WAEA,WACAQ,EAAAA,MAAAA,EAAAA,WAAAA,EAIiCD,YAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAEjCC,aAEA,kBACAC,EAEA,oBACAQ,EAGAC,yCAI+BX,YAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA;;;;;MAe/BI,WAEA,WACAH,EAEA,kBACAC,EAAAA,MAAAA,EAAAA,WAAAA,EAIuBF,YAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EACvB,WACAC,EAGAW,kBAEA,gBACAC,EAEA,cACAC,EAGAZ,yCAOuCF,YAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAEvCC,WAAAA,EAGAc,kBAAAA;;AAIC,MACD,eACAC,EAAAA,MAAAA,EAAAA,WAAAA,EAI+BhB,YAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAC/B,WACAC,EAGAY,mBAEA,eACAC,EAEA,gBACAE,EAAAA,MAAAA,EAAAA,WAAAA,EAI8BhB,sCAC9B,WACAC,EAEA,aACAgB,EAGAf,0CAIwBF,YAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAExBC,WAAAA,EAGAC,oBAEA,UACAgB,EAEA,wBACAC,EAGAC,wBAEA,yBACAC,EAEA,uBACAC,EAEA,WACAC,EAGAC,WAEA,mBACAC,EAEA,iBACAC,EAGAC,eAAAA,EAGAC,qBAEA,UACAC,EAEA,eAwBAC,EAAAA,MAAAA,EAAAA,YAAAA,EAIuB9B,aAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EACvB,YACAC,EAGA8B,WAAAA,EAoBAC,gEAKA,SACAvC,EAEA,YACAwC,EAGAC,mCAIuClC,aAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAAAA,MAAAA,EAMvCmC,qBAAAA,EAGAC,YAEA,kBACAlC,EAAAA,MAAAA,EAAAA,YAAAA,EAIkCF,+EAClC,aACAiC,EAEA,UACAI,EAGAC,YAAAA,EAGAC,gBAEA,kBACAC,EAEA,gBACAC,EAGAC,6BAEA,yBACAC;AAxWCC,IAAAA,GAAAA,EAAAA,EAAAA,EAAAA,KAAAA,GAMAC,KAAAA,CAAM;AAAEC,IAAAA,SAAAA,EAAW,IAAMC;AAAQ,CAAA,CAAA,EAAA,KAAA,GAOjCC,SAAAA,CAAU;AAAEC,IAAAA,MAAAA,EAAQ,IAAMF;AAAQ,CAAA,CAAA,EAAA,KAAA,GAGlCF,KAAAA,CAAM;AAAEC,IAAAA,SAAAA,EAAW,IAAMI;AAAK,CAAA,CAAA,EAAA,KAAA,GAG9BF,SAAAA,CAAU;AAAEC,IAAAA,MAAAA,EAAQ,IAAMC;AAAK,CAAA,CAAA,EAAA,KAAA,GAO/BL,KAAAA,CAAM;AAAEM,IAAAA,QAAAA,EAAUC,KAAKC;AAAI,CAAA,CAAA,EAAA,KAAA,GAO3BR,KAAAA,CAAM;AAAES,IAAAA,QAAAA,EAAUF,KAAKC;AAAI,CAAA,CAAA;AAzC9B;;;AAGC,IACM,MAAerD,UAAAA,CAAAA;;AAKpBP,QAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,QAAAA,EAMAC,eAAAA,EAOAC,aAAAA,EAGAC,eAAAA,EAGAC,aAAAA,EAOAC,eAAAA,EAOAC,eAAAA,CAAAA,EAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,EAAAA;;;;AAjCAN,gBAAAA;;;;;AAMAC,gBAAAA;;;;;AAOAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAOAC,gBAAAA;;;;;AAOAC,gBAAAA;;;;;aAjCAN,EAAAA,GAAAA,QAAAA,CAAAA,IAAAA,CAAAA;aAMAC,SAAAA,GAAAA,eAAAA,CAAAA,IAAAA,CAAAA;aAOAC,OAAAA,GAAAA,aAAAA,CAAAA,IAAAA,CAAAA;aAGAC,SAAAA,GAAAA,eAAAA,CAAAA,IAAAA,CAAAA;aAGAC,OAAAA,GAAAA,aAAAA,CAAAA,IAAAA,CAAAA;aAOAC,SAAAA,GAAAA,eAAAA,CAAAA,IAAAA,CAAAA;aAOAC,SAAAA,GAAAA,eAAAA,CAAAA,IAAAA,CAAAA;;AACF;;QASCwD,MAAAA,EAAAA,EAAAA,KAAAA,GAEEV,KAAAA,EAAAA,EAAAA,KAAAA,GAGAA,kBAGAA,KAAAA,CAAM;IAAEW,IAAAA,EAAM;AAAQ,CAAA,CAAA;AAPlB,MAAMT,iBAAgB/C,WAAAA,GAAAA,UAAAA,EAAAA;;AAE3BC,QAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,UAAAA,EAGAC,iBAAAA,EAGAC,UAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,QAAAA,EAAAA,UAAAA,CAAAA,EAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,EAAAA;;;;AANAF,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;AAR2BH,SAAAA,EAAAA,WAAAA,CAAAA;;;;;;AAAtB,QAAA,KAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,CAELC,IAAAA,GAAAA,UAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,WAAAA,GAAAA,iBAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,IAAAA,GAAAA,UAAAA,CAAAA,IAAAA,CAAAA;;AACF;;SAKCoD,MAAAA,CAAO;IAAEtD,IAAAA,EAAM;AAAe,CAAA,CAAA,EAAA,MAAA,GAM5B2C,eAGAC,KAAAA,CAAM;IAAE5C,IAAAA,EAAM;AAAQ,CAAA,CAAA;AARlB,MAAMwD,iBAAgBzD,YAAAA,GAAAA,UAAAA,EAAAA;;eAM3BI,QAAAA,EAGAC,aAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,QAAAA,EAAAA,WAAAA,CAAAA,EAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,EAAAA;;;;AAHAD,gBAAAA;;;;;AAGAC,gBAAAA;;;;AAT2BL,SAAAA,EAAAA,YAAAA,CAAAA;;;;;;QAAtB,KAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,CAMLI,EAAAA,GAAAA,qBAGAC,OAAAA,GAAAA,aAAAA,CAAAA,IAAAA,CAAAA;;AAIF;;AAECkD,MAAAA,GAAAA,MAAAA,EAAAA,EAAAA,MAAAA,GAEEV,kBAGAA,KAAAA,CAAM;IAAEa,SAAAA,EAAW;AAAM,CAAA,CAAA,EAAA,MAAA,GAGzBb,KAAAA,CAAM;IAAEc,KAAAA,EAAO;AAAM,CAAA,CAAA,EAAA,MAAA,GAMrBC,QAAAA,CAAS;AAAEX,IAAAA,MAAAA,EAAQ,IAAMQ,QAAAA;IAASI,QAAAA,EAAU,CAACrD,OAAAA,GAAYA,OAAAA,CAAQX,OAAO;IAAEiE,OAAAA,EAAS;AAAK,CAAA,CAAA,EAAA,MAAA,GAGxFC,SAAAA,CAAU;AAAEd,IAAAA,MAAAA,EAAQ,IAAMC,KAAAA;IAAMW,QAAAA,EAAU;AAAU,CAAA,CAAA;AAhBhD,MAAMX,cAAalD,YAAAA,GAAAA,UAAAA,EAAAA;;eAExBC,WAAAA,EAGAK,WAAAA,EAGAC,gBAMAC,aAAAA,EAGAC,WAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,KAAAA,EAAAA,WAAAA,CAAAA,EAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,EAAAA;;;;AAfAR,gBAAAA;;;;;AAGAK,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAMAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;AAjBwBT,SAAAA,EAAAA,YAAAA,CAAAA;;;;;;QAAnB,KAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,CAELC,IAAAA,GAAAA,wBAGAK,KAAAA,GAAAA,WAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,WAAAA,cAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAMAC,OAAAA,GAAAA,0BAGAC,KAAAA,GAAAA,WAAAA,CAAAA,IAAAA,CAAAA;;AACF;;AAEC8C,MAAAA,GAAAA,MAAAA,EAAAA,EAAAA,MAAAA,GAEEX,EAAAA,CAAG;IAAEc,SAAAA,EAAW;AAAM,CAAA,CAAA,EAAA,MAAA,GAGtBb,KAAAA,EAAAA;AAJI,MAAMmB,sBAAAA,CAAAA;;eAEXvE,SAAAA,EAGAQ,WAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,uBAAAA,EAAAA,WAAAA,CAAAA,EAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,EAAAA;;;;AAHAR,gBAAAA;;;;;AAGAQ,gBAAAA;;;;;;;;;;aAHAR,EAAAA,GAAAA,SAAAA,CAAAA,IAAAA,CAAAA;aAGAQ,IAAAA,GAAAA,WAAAA,CAAAA,IAAAA,CAAAA;;AACF;;SAECsD,MAAAA,EAAAA,EAAAA,MAAAA,GAEEV,KAAAA,EAAAA,EAAAA,MAAAA,GAGAA,kBAGAA,KAAAA,CAAM;AAAEC,IAAAA,SAAAA,EAAW,IAAMmB;AAAc,CAAA,CAAA,EAAA,MAAA,GAGvCjB,SAAAA,EAAAA;AAVI,MAAMiB,uBAAsBjE,YAAAA,GAAAA,UAAAA,EAAAA;;AAEjCC,QAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,WAAAA,EAGAC,oBAGAQ,oBAAAA,EAGAC,kBAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,cAAAA,EAAAA,WAAAA,CAAAA,EAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,EAAAA;;;;AATAV,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAQ,gBAAAA;;;;;AAGAC,gBAAAA;;;;AAXiCX,SAAAA,EAAAA,YAAAA,CAAAA;;;;;;AAA5B,QAAA,KAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,CAELC,OAAAA,WAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,WAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAQ,cAAAA,GAAAA,iCAGAC,YAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,CAAAA;;AACF;;AAEC4C,MAAAA,GAAAA,MAAAA,EAAAA,EAAAA,MAAAA,GAeEX,EAAAA,CAAG;IAAEO,QAAAA,EAAUe;AAAW,CAAA,CAAA,EAAA,MAAA,GAG1BrB,KAAAA,EAAAA,EAAAA,MAAAA,GAGAA,KAAAA,EAAAA;AApBI,MAAMsB,qBAAoBnE,YAAAA,GAAAA,UAAAA,EAAAA;;AAe/BI,QAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,SAAAA,EAGAH,WAAAA,EAGAC,kBAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,YAAAA,EAAAA,WAAAA,CAAAA,EAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,EAAAA;;;;AANAE,gBAAAA;;;;;AAGAH,gBAAAA;;;;;AAGAC,gBAAAA;;;;AArB+BF,SAAAA,EAAAA,YAAAA,CAAAA;;;;;;AAA1B,QAAA,KAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,CAeLI,EAAAA,GAAAA,SAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAH,IAAAA,GAAAA,WAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,WAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,CAAAA;;AACF;;SAECqD,MAAAA,EAAAA,EAAAA,MAAAA,GAEEV,KAAAA,EAAAA,EAAAA,MAAAA,GAGAA,kBAGAA,KAAAA,CAAM;AAAEC,IAAAA,SAAAA,EAAW,IAAMqB;AAAY,CAAA,CAAA,EAAA,MAAA,GAGrCnB,SAAAA,EAAAA,EAAAA,MAAAA,GAGAH,KAAAA,EAAAA;AAbI,MAAMuB,aAAYpE,YAAAA,GAAAA,UAAAA,EAAAA;;eAEvBC,WAAAA,EAGAW,gBAAAA,EAGAC,kBAGAC,cAAAA,EAGAZ,kBAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,IAAAA,EAAAA,WAAAA,CAAAA,EAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,EAAAA;;;;AAZAD,gBAAAA;;;;;AAGAW,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAZ,gBAAAA;;;;AAduBF,SAAAA,EAAAA,YAAAA,CAAAA;;;;;;QAAlB,KAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,CAELC,IAAAA,GAAAA,wBAGAW,UAAAA,GAAAA,gBAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,aAAAA,gBAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,QAAAA,GAAAA,2BAGAZ,WAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,CAAAA;;AACF;;SAKCqD,MAAAA,CAAO;IAAEc,UAAAA,EAAY;AAAK,CAAA,CAAA,EAAA,MAAA,GAExBxB,kBAGAkB,SAAAA,CAAU;AAAEd,IAAAA,MAAAA,EAAQ,IAAMqB,YAAAA;IAAaT,QAAAA,EAAU,CAACnC,WAAAA,GAAgBA,WAAAA,CAAYb;AAAW,CAAA,CAAA,EAAA,MAAA,GAMzFgC,KAAAA,CAAM;AAAE0B,IAAAA,QAAAA,EAAUnB,KAAKC;AAAI,CAAA,CAAA;AAVvB,MAAMmB,6BAA4BxE,YAAAA,GAAAA,UAAAA,EAAAA;;AAEvCC,QAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,WAAAA,EAGAc,kBAAAA,EAMAC,eAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,oBAAAA,EAAAA,WAAAA,CAAAA,EAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,EAAAA;;;;AATAf,gBAAAA;;;;;AAGAc,gBAAAA;;;;;AAMAC,gBAAAA;;;;AAXuChB,SAAAA,EAAAA,YAAAA,CAAAA;;;;;;AAAlC,QAAA,KAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,CAELC,IAAAA,GAAAA,WAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAc,YAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAMAC,SAAAA,GAAAA,eAAAA,CAAAA,IAAAA,CAAAA;;AACF;;SAECuC,MAAAA,CAAO;IAAEc,UAAAA,EAAY;AAAK,CAAA,CAAA,EAAA,MAAA,GAExBxB,kBAGAA,KAAAA,CAAM;AAAEC,IAAAA,SAAAA,EAAW,IAAM0B;AAAoB,CAAA,CAAA,EAAA,MAAA,GAG7CxB,SAAAA,CAAU;IAAEc,OAAAA,EAAS;AAAU,CAAA,CAAA,EAAA,MAAA,GAG/BjB,KAAAA,CAAM;AAAE0B,IAAAA,QAAAA,EAAUnB,KAAKC;AAAI,CAAA,CAAA;AAVvB,MAAMiB,qBAAoBtE,YAAAA,GAAAA,UAAAA,EAAAA;;AAE/BC,QAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,WAAAA,EAGAY,mBAGAC,eAAAA,EAGAE,gBAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,YAAAA,EAAAA,WAAAA,CAAAA,EAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,EAAAA;;;;AATAf,gBAAAA;;;;;AAGAY,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAE,gBAAAA;;;;AAX+BhB,SAAAA,EAAAA,YAAAA,CAAAA;;;;;;AAA1B,QAAA,KAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,CAELC,OAAAA,WAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAY,UAAAA,GAAAA,iBAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,QAAAA,GAAAA,4BAGAE,SAAAA,GAAAA,gBAAAA,CAAAA,IAAAA,CAAAA;;AACF;;AAECuC,MAAAA,GAAAA,MAAAA,EAAAA,EAAAA,MAAAA,GAEEV,kBAGAA,KAAAA,EAAAA,EAAAA,MAAAA,GAGAA,KAAAA,EAAAA;AAPI,MAAM4B,oBAAmBzE,YAAAA,GAAAA,UAAAA,EAAAA;;AAE9BC,QAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,WAAAA,EAGAgB,aAAAA,EAGAf,kBAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,WAAAA,EAAAA,WAAAA,CAAAA,EAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,EAAAA;;;;AANAD,gBAAAA;;;;;AAGAgB,gBAAAA;;;;;AAGAf,gBAAAA;;;;AAR8BF,SAAAA,EAAAA,YAAAA,CAAAA;;;;;;AAAzB,QAAA,KAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,CAELC,IAAAA,GAAAA,WAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAgB,OAAAA,GAAAA,aAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAf,WAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,CAAAA;;AACF;;SAECqD,MAAAA,EAAAA,EAAAA,MAAAA,GAEEV,KAAAA,EAAAA,EAAAA,MAAAA,GAGAA,KAAAA,EAAAA,EAAAA,MAAAA,GAGAA,KAAAA,EAAAA,EAAAA,MAAAA,GAGAA,KAAAA,CAAM;AAAEC,IAAAA,SAAAA,EAAW,IAAMmB;AAAc,CAAA,CAAA,EAAA,MAAA,GAGvCjB,sBAGAH,KAAAA,CAAM;AAAEC,IAAAA,SAAAA,EAAW,IAAMmB;AAAc,CAAA,CAAA,EAAA,MAAA,GAGvCjB,sBAGAH,KAAAA,CAAM;AAAEC,IAAAA,SAAAA,EAAW,IAAMsB;AAAI,CAAA,CAAA,EAAA,MAAA,GAG7BpB,sBAGAH,KAAAA,CAAM;AAAEC,IAAAA,SAAAA,EAAW,IAAMwB;AAAY,CAAA,CAAA,EAAA,MAAA,GAGrCtB,SAAAA,EAAAA,EAAAA,MAAAA,GAGAH,KAAAA,EAAAA,EAAAA,MAAAA,GAGAA,KAAAA,EAAAA,EAAAA,MAAAA,GAGA6B,UAAAA,CAAW;AAAEzB,IAAAA,MAAAA,EAAQ,IAAM0B,IAAAA;AAAKC,IAAAA,OAAAA,EAAS,IAAMC,QAAAA;IAASf,OAAAA,EAAS;AAAK,CAAA,CAAA,EAAA,MAAA,GAGtEjB,KAAAA,CAAM;AACL;;;;;QAMAiC,OAAAA,EAASC,IAAI,CAAC,EAAEC,GAAG,EAAEC,aAAa,EAAEC,OAAO,EAAE,GAAA;AAC3CF,QAAAA,GAAAA,CAAIG,MAAM,CAAC,GAAA,CAAA;QACXD,OAAAA,CAAQE,KAAK,CACXJ,GAAAA,EACAH,QAAAA,EACA;YACEQ,MAAAA,EAAQ;AACNpD,gBAAAA,MAAAA,EAAQ8C,GAAAA,CAAI,CAAC,EAAEC,GAAG,EAAE,GAAA;AAClBA,oBAAAA,GAAAA,CAAIG,MAAM,CAACF,aAAAA,GAAgBC,OAAAA,CAAQI,QAAQ,CAAC,IAAA,CAAA,CAAA;AAC9C,gBAAA,CAAA;AACF;SACF,EACA;YAAEC,UAAAA,EAAY;AAAK,SAAA,CAAA;AAErBP,QAAAA,GAAAA,CAAIG,MAAM,CAAC,GAAA,CAAA;AACb,IAAA,CAAA;AACF,CAAA,CAAA;AAlEK,MAAMK,cAAaxF,YAAAA,GAAAA,UAAAA,EAAAA;;AAExBC,QAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,WAAAA,EAGAC,kBAAAA,EAGAgB,UAAAA,EAGAC,wBAAAA,EAGAC,sBAAAA,EAGAC,yBAAAA,EAGAC,uBAAAA,EAGAC,WAAAA,EAGAC,SAAAA,EAGAC,mBAAAA,EAGAC,iBAAAA,EAGAC,eAAAA,EAGAC,mBAAAA,EAGAC,UAAAA,EA0BAC,eAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,KAAAA,EAAAA,YAAAA,CAAAA,EAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,EAAAA;;;;AAjEA7B,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAgB,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AA0BAC,gBAAAA;;;;AAnEwB9B,SAAAA,EAAAA,YAAAA,CAAAA;;;;;;AAAnB,QAAA,KAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,CAELC,IAAAA,GAAAA,WAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,WAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAgB,IAAAA,GAAAA,UAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,kBAAAA,GAAAA,wBAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,gBAAAA,GAAAA,sBAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,mBAAAA,GAAAA,yBAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,iBAAAA,GAAAA,uBAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,KAAAA,GAAAA,WAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,GAAAA,GAAAA,SAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,aAAAA,GAAAA,mBAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,WAAAA,GAAAA,iBAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,SAAAA,GAAAA,eAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,aAAAA,GAAAA,mBAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,IAAAA,GAAAA,UAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CA0BAC,SAAAA,GAAAA,eAAAA,CAAAA,IAAAA,CAAAA;;AACF;;AAECyB,MAAAA,GAAAA,MAAAA,EAAAA,EAAAA,MAAAA,GAEEV,kBAGA6B,UAAAA,CAAW;AAAEzB,IAAAA,MAAAA,EAAQ,IAAMuC,KAAAA;IAAM3B,QAAAA,EAAU,CAACxB,IAAAA,GAASA,IAAAA,CAAKR;AAAK,CAAA,CAAA,EAAA,MAAA,GAG/DgB,KAAAA,CAAM;IACLiC,OAAAA,EAASC,GAAAA,CAAI,CAAC,EAAEC,GAAG,EAAEC,aAAa,EAAEC,OAAO,EAAE,GAAA;AAC3CF,QAAAA,GAAAA,CAAIG,MAAM,CAAC,GAAA,CAAA;QACXD,OAAAA,CAAQE,KAAK,CACXJ,GAAAA,EACAH,QAAAA,EACA;YACEQ,MAAAA,EAAQ;AACNnD,gBAAAA,KAAAA,EAAO6C,GAAAA,CAAI,CAAC,EAAEC,GAAG,EAAE,GAAA;AACjBA,oBAAAA,GAAAA,CAAIG,MAAM,CAACF,aAAAA,GAAgBC,OAAAA,CAAQI,QAAQ,CAAC,IAAA,CAAA,CAAA;AAC9C,gBAAA,CAAA;AACF;SACF,EACA;YAAEC,UAAAA,EAAY;AAAK,SAAA,CAAA;AAErBP,QAAAA,GAAAA,CAAIG,MAAM,CAAC,GAAA,CAAA;AACb,IAAA,CAAA;AACF,CAAA,CAAA;AAxBK,MAAMR,aAAY3E,aAAAA,GAAAA,UAAAA,EAAAA;;AAEvBC,QAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,YAAAA,EAGA8B,WAAAA,EAoBAC,gBAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,IAAAA,EAAAA,YAAAA,CAAAA,EAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,EAAAA;;;;AAvBA/B,gBAAAA;;;;;AAGA8B,gBAAAA;;;;;AAoBAC,gBAAAA;;;;AAzBuBhC,SAAAA,EAAAA,aAAAA,CAAAA;;;;;;AAAlB,QAAA,KAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,CAELC,IAAAA,GAAAA,YAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGA8B,KAAAA,GAAAA,WAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAoBAC,UAAAA,GAAAA,gBAAAA,CAAAA,IAAAA,CAAAA;;AACF;;AAECuB,MAAAA,GAAAA,MAAAA,EAAAA,EAAAA,MAAAA,GAEEX,eAGAC,KAAAA,CAAM;AAAEC,IAAAA,SAAAA,EAAW,IAAM0C;AAAK,CAAA,CAAA,EAAA,MAAA,GAG9B3C,KAAAA,CAAM;AAAEC,IAAAA,SAAAA,EAAW,IAAM6B;AAAI,CAAA,CAAA;AAPzB,MAAME,OAAAA,CAAAA;;AAEXpF,QAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,SAAAA,EAGAwC,YAAAA,EAGAC,WAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,QAAAA,EAAAA,YAAAA,CAAAA,EAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,EAAAA;;;;AANAzC,gBAAAA;;;;;AAGAwC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;;;;;;aANAzC,EAAAA,GAAAA,SAAAA,CAAAA,IAAAA,CAAAA;aAGAwC,MAAAA,GAAAA,YAAAA,CAAAA,IAAAA,CAAAA;aAGAC,KAAAA,GAAAA,WAAAA,CAAAA,IAAAA,CAAAA;;AACF;;AAECqB,MAAAA,GAAAA,MAAAA,EAAAA,EAAAA,MAAAA,GAEEQ,SAAAA,CAAU;AACTd,IAAAA,MAAAA,EAAQ,IAAMwC,eAAAA;IACd5B,QAAAA,EAAU,CAAC6B,GAAAA,GAAQA,GAAAA,CAAI/C,mBAAmB;IAC1CmB,OAAAA,EAAS;AACX,CAAA,CAAA,EAAA,MAAA,GAGCjB,KAAAA,EAAAA,EAAAA,MAAAA,GAGAA,KAAAA,EAAAA;AAXI,MAAM8C,6BAA4B3F,aAAAA,GAAAA,UAAAA,EAAAA;;AAMvCmC,QAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,qBAAAA,EAGAC,UAAAA,EAGAlC,kBAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,oBAAAA,EAAAA,YAAAA,CAAAA,EAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,EAAAA;;;;AANAiC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAlC,gBAAAA;;;;AAZuCF,SAAAA,EAAAA,aAAAA,CAAAA;;;;;;AAAlC,QAAA,KAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,CAMLmC,eAAAA,GAAAA,qBAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,IAAAA,GAAAA,UAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAlC,WAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,CAAAA;;AACF;;AAECqD,MAAAA,GAAAA,MAAAA,EAAAA,EAAAA,MAAAA,GAEEV,KAAAA,CAAM;AAAEC,IAAAA,SAAAA,EAAW,IAAM0C;AAAK,CAAA,CAAA,EAAA,MAAA,GAG9BxC,SAAAA,EAAAA,EAAAA,MAAAA,GAGAH,KAAAA,EAAAA,EAAAA,MAAAA,GAGAA,KAAAA,EAAAA,EAAAA,MAAAA,GAGAA,KAAAA,CAAM;AAAEC,IAAAA,SAAAA,EAAW,IAAM2B;AAAW,CAAA,CAAA,EAAA,MAAA,GAGpCzB,sBAGAH,KAAAA,CAAM;AAAEC,IAAAA,SAAAA,EAAW,IAAM6C;AAAoB,CAAA,CAAA,EAAA,MAAA,GAG7C3C,SAAAA,EAAAA;AAtBI,MAAMyC,wBAAuBzF,aAAAA,GAAAA,UAAAA,EAAAA;;AAElCiC,QAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,aAAAA,EAGAI,UAAAA,EAGAC,YAAAA,EAGAC,cAAAA,EAGAC,kBAAAA,EAGAC,kBAGAC,2BAAAA,EAGAC,yBAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,eAAAA,EAAAA,YAAAA,CAAAA,EAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,EAAAA;;;;AArBAV,gBAAAA;;;;;AAGAI,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;;AAGAC,gBAAAA;;;;AAvBkC3C,SAAAA,EAAAA,aAAAA,CAAAA;;;;;;AAA7B,QAAA,KAAA,CAAA,GAAA,IAAA,CAAA,EAAA,IAAA,CAELiC,MAAAA,GAAAA,aAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAI,IAAAA,GAAAA,UAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,SAAAA,YAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,QAAAA,GAAAA,cAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,YAAAA,GAAAA,kBAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,UAAAA,GAAAA,gBAAAA,CAAAA,IAAAA,CAAAA,EAAAA,IAAAA,CAGAC,qBAAAA,GAAAA,wCAGAC,mBAAAA,GAAAA,yBAAAA,CAAAA,IAAAA,CAAAA;;AACF;;ACvWA,MAAMiD,MAAAA,GAASC,UAAAA;AACf,MAAMC,OAAAA,GAAU,4BAAA;AAChB,MAAMC,KAAAA,GAA6CH,MAAM,CAACE,OAAAA,CAAQ,IAAI,IAAIE,GAAAA,EAAAA;AAC1EJ,MAAM,CAACE,QAAQ,GAAGC,KAAAA;AAsEX,SAASE,WAAAA,GAAAA;IACd,OAAO;AAAIF,QAAAA,GAAAA,KAAAA,CAAMG,OAAO;AAAG,KAAA,CAACC,MAAM,CAAC,CAACC,GAAAA,EAAK,CAACC,KAAKC,GAAAA,CAAI,GAAA;QACjD,IAAIA,GAAAA,CAAI7G,EAAE,EAAE;AACV2G,YAAAA,GAAAA,CAAIG,IAAI,CAACF,GAAAA,CAAAA;AACX,QAAA;QACA,OAAOD,GAAAA;AACT,IAAA,CAAA,EAAG,EAAE,CAAA;AACP;AAEA,SAASI,WAAcvD,MAAe,EAAA;IACpC,IAAIwD,IAAAA,GAAOV,KAAAA,CAAMW,GAAG,CAACzD,MAAAA,CAAAA;AACrB,IAAA,IAAIwD,IAAAA,EAAM;QACR,OAAOA,IAAAA;AACT,IAAA;IACAA,IAAAA,GAAO;AAAExD,QAAAA,MAAAA;AAAQ0D,QAAAA,MAAAA,EAAQ,EAAC;AAAGC,QAAAA,SAAAA,EAAW;AAAG,KAAA;IAC3Cb,KAAAA,CAAMc,GAAG,CAAC5D,MAAAA,EAAQwD,IAAAA,CAAAA;IAClB,OAAOA,IAAAA;AACT;AAEO,SAASK,QAAW7D,MAAe,EAAA;IACxC,MAAMwD,IAAAA,GAAOV,KAAAA,CAAMW,GAAG,CAACzD,MAAAA,CAAAA;AACvB,IAAA,IAAI,CAACwD,IAAAA,EAAM;QACT,MAAMM,SAAAA,CAAU,CAAC,CAAC,EAAE9D,OAAOhD,IAAI,CAAC,kBAAkB,CAAC,CAAA;AACrD,IAAA;IACA,IAAIwG,IAAAA,CAAKO,SAAS,EAAE;QAClB,OAAOP,IAAAA;AACT,IAAA;AACAA,IAAAA,IAAAA,CAAKO,SAAS,GAAG,IAAA;AACjB,IAAA,OAAOC,aAAAA,CAAcR,IAAAA,CAAAA;AACvB;AAEA,SAASQ,cAAiBR,IAAmB,EAAA;AAC3C,IAAA,IAAK,MAAMS,MAAAA,IAAUT,IAAAA,CAAKG,SAAS,CAAE;AACnC,QAAA,MAAMO,OAAAA,GAAUV,IAAAA,CAAKG,SAAS,CAACM,MAAAA,CAAyB;QAExD,IAAIC,OAAAA,CAAQC,UAAU,EAAE;AAEtB,YAAA;AACF,QAAA;QAEA,IAAID,OAAAA,CAAQtD,QAAQ,EAAE;YACpBwD,wBAAAA,CAAyBF,OAAAA,CAAAA;AACzB,YAAA;AACF,QAAA;QAEA,MAAMG,SAAAA,GAAYH,QAAQlE,MAAM,EAAA;AAChC,QAAA,MAAMsE,UAAUf,UAAAA,CAAWc,SAAAA,CAAAA;QAE3B,IAAIH,OAAAA,CAAQK,WAAW,KAAK,IAAA,EAAM;YAChC,MAAMC,MAAAA,GAAShB,KAAKE,MAAM,CAACF,KAAKhH,EAAE,CAAC,CAACQ,IAAI;YACxC,MAAMyH,SAAAA,GAAYH,QAAQZ,MAAM,CAACY,QAAQ9H,EAAE,CAAC,CAACQ,IAAI;AACjD,YAAA,MAAM0H,MAAAA,GAASC,UAAAA,CAAWnB,IAAAA,CAAKxG,IAAI,IAAI4H,UAAAA,CAAWJ,MAAAA,CAAAA;AAClD,YAAA,MAAMK,MAAAA,GAASF,UAAAA,CAAWL,OAAAA,CAAQtH,IAAI,IAAI4H,UAAAA,CAAWH,SAAAA,CAAAA;AACrDP,YAAAA,OAAAA,CAAQC,UAAU,GAAG;AACnB,gBAAA;oBAAEW,KAAAA,EAAOJ,MAAAA;AAAQK,oBAAAA,OAAAA,EAASvB,KAAKhH;AAAG,iBAAA;AAClC,gBAAA;oBAAEsI,KAAAA,EAAOD,MAAAA;AAAQE,oBAAAA,OAAAA,EAAST,QAAQ9H;AAAG;AACtC,aAAA;QACH,CAAA,MAAO;AACL0H,YAAAA,OAAAA,CAAQC,UAAU,GAAG;AAAC,gBAAA;oBAAEW,KAAAA,EAAO,CAAA,EAAGb,MAAAA,CAAO,EAAE,CAAC;AAAEc,oBAAAA,OAAAA,EAAST,QAAQ9H;AAAG;AAAE,aAAA;AACtE,QAAA;QAEA,IAAI0H,OAAAA,CAAQvC,OAAO,EAAE;AACnBqD,YAAAA,oBAAAA,CAAqBd,QAAQvC,OAAO,EAAA,CAAA;AACtC,QAAA;AACF,IAAA;IAEA,OAAO6B,IAAAA;AACT;AAEA,SAASY,yBAA4BF,OAA2B,EAAA;IAC9D,MAAMG,SAAAA,GAAYH,QAAQlE,MAAM,EAAA;AAChC,IAAA,MAAMsE,UAAUT,OAAAA,CAAQQ,SAAAA,CAAAA;IACxBH,OAAAA,CAAQtD,QAAQ,GAAGqE,sBAAAA,CAAuBf,OAAAA,CAAAA;AAE1C,IAAA,IAAII,QAAQZ,MAAM,CAACQ,OAAAA,CAAQtD,QAAQ,CAAgB,EAAE;AACnDsD,QAAAA,OAAAA,CAAQC,UAAU,GAAG;AAAC,YAAA;AAAEW,gBAAAA,KAAAA,EAAOR,QAAQ9H,EAAE;AAAEuI,gBAAAA,OAAAA,EAASb,QAAQtD;AAAS;AAAE,SAAA;AACvE,QAAA;AACF,IAAA;AAEA,IAAA,MAAMsE,mBAAmBZ,OAAAA,CAAQX,SAAS,CAACO,OAAAA,CAAQtD,QAAQ,CAAmB;AAE9E,IAAA,IAAIsD,QAAQK,WAAW,KAAK,QAAQL,OAAAA,CAAQK,WAAW,KAAK,IAAA,EAAM;AAChEL,QAAAA,OAAAA,CAAQC,UAAU,GAAGe,gBAAAA,CAAiBf,UAAU,CAACgB,KAAK,GAAGC,OAAO,EAAA;QAChElB,OAAAA,CAAQvC,OAAO,GAAGuD,gBAAAA,CAAiBvD,OAAO;AAC1C,QAAA;AACF,IAAA;AAEAuC,IAAAA,OAAAA,CAAQC,UAAU,GAAGe,gBAAAA,CAAiBf,UAAU,CAACkB,GAAG,CAAC,CAAC,EAAEP,KAAK,EAAEC,OAAO,EAAE,IAAM;YAC5ED,KAAAA,EAAOC,OAAAA;YACPA,OAAAA,EAASD;SACX,CAAA,CAAA;AACF;AAEA,SAASE,qBAAwBhF,MAAe,EAAA;AAC9C,IAAA,MAAMwD,OAAOD,UAAAA,CAAWvD,MAAAA,CAAAA;IACxBwD,IAAAA,CAAKG,SAAS,GAAG2B,OAAAA,CAAQ9B,IAAAA,CAAKE,MAAM,CAAA,CAAER,MAAM,CAAC,CAACS,SAAAA,EAAWP,GAAAA,GAAAA;AACvD,QAAA,MAAM,EAAEvD,SAAS,EAAE,GAAG2D,IAAAA,CAAKE,MAAM,CAACN,GAAAA,CAAmB;AACrD,QAAA,IAAIvD,SAAAA,EAAW;AACb,YAAA,MAAMwE,SAAAA,GAAYxE,SAAAA,EAAAA;AAClB,YAAA,MAAMyE,UAAUf,UAAAA,CAAWc,SAAAA,CAAAA;YAC3B,MAAMJ,MAAAA,GAASb,IAAI+B,KAAK,CAAC,GAAG,CAACb,OAAAA,CAAQ9H,EAAE,CAAC+I,MAAM,CAAA;AAC9C,YAAA,MAAMrB,OAAAA,GAA2B;gBAC/BlE,MAAAA,EAAQH,SAAAA;gBACR0E,WAAAA,EAAa,IAAA;gBACbJ,UAAAA,EAAY;AAAC,oBAAA;wBAAEW,KAAAA,EAAO1B,GAAAA;AAAK2B,wBAAAA,OAAAA,EAAST,QAAQ9H;AAAG;AAAE;AACnD,aAAA;YACAmH,SAAS,CAACM,OAAO,GAAGC,OAAAA;AACtB,QAAA;QACA,OAAOP,SAAAA;AACT,IAAA,CAAA,EAAG,EAAC,CAAA;AACN;AAEA,SAASsB,uBAA0Bf,OAA2B,EAAA;AAC5D,IAAA,IAAI,OAAOA,OAAAA,CAAQtD,QAAQ,KAAK,UAAA,EAAY;QAC1C,MAAMyD,SAAAA,GAAYH,QAAQlE,MAAM,EAAA;AAChC,QAAA,MAAMsE,UAAUf,UAAAA,CAAWc,SAAAA,CAAAA;AAC3B,QAAA,MAAMmB,SAASC,iBAAAA,CAAkBnB,OAAAA,CAAAA;QACjC,OAAOJ,OAAAA,CAAQtD,QAAQ,CAAC4E,MAAAA,CAAAA;AAC1B,IAAA;AACA,IAAA,OAAOtB,QAAQtD,QAAQ;AACzB;AAEA,SAAS6E,kBAAqBjC,IAAmB,EAAA;AAC/C,IAAA,OAAO8B,OAAAA,CAAQ9B,IAAAA,CAAKE,MAAM,CAAA,CACvBgC,MAAM,CAACJ,OAAAA,CAAQ9B,IAAAA,CAAKG,SAAS,CAAA,CAAA,CAC7BT,MAAM,CACL,CAACC,GAAAA,EAAKC,GAAAA,GAAAA;QACJD,GAAG,CAACC,IAAI,GAAGA,GAAAA;QACX,OAAOD,GAAAA;AACT,IAAA,CAAA,EACA,EAAC,CAAA;AAEP;;ACvNO,eAAewC,YAAAA,CAAaC,OAA2B,EAAEC,cAAsB,EAAA;AACpF,IAAA,MAAMC,QAAAA,GAAW9C,WAAAA,EAAAA;AACjB,IAAA,MAAM+C,QAAQC,GAAG,CACfF,QAAAA,CAAST,GAAG,CAAC,CAACrF,MAAAA,GAAAA;QACZ,MAAMiG,GAAAA,GAAMC,cAAAA,CAAelG,MAAAA,EAAQ4F,OAAAA,EAASC,cAAAA,CAAAA;QAC5C,OAAOD,OAAAA,CAAQO,GAAG,CAACF,GAAAA,CAAAA;AACrB,IAAA,CAAA,CAAA,CAAA;AAEJ;AAEO,eAAeG,WAAWR,OAA2B,EAAA;AAC1D,IAAA,MAAME,QAAAA,GAAW9C,WAAAA,EAAAA;AACjB,IAAA,MAAM+C,QAAQC,GAAG,CACfF,QAAAA,CAAST,GAAG,CAAC,CAACrF,MAAAA,GAAAA;AACZ,QAAA,MAAMwD,OAAOK,OAAAA,CAAQ7D,MAAAA,CAAAA;QACrB,MAAMiG,GAAAA,GAAM,CAAC,qBAAqB,EAAEL,OAAAA,CAAQ3D,OAAO,CAACI,QAAQ,CAACmB,IAAAA,CAAKxG,IAAI,CAAA,CAAA,CAAG;QACzE,OAAO4I,OAAAA,CAAQO,GAAG,CAACF,GAAAA,CAAAA;AACrB,IAAA,CAAA,CAAA,CAAA;AAEJ;AAEO,eAAeI,YAAYT,OAA2B,EAAA;AAC3D,IAAA,MAAME,QAAAA,GAAW9C,WAAAA,EAAAA;AACjB,IAAA,MAAM+C,QAAQC,GAAG,CACfF,QAAAA,CAAST,GAAG,CAAC,CAACrF,MAAAA,GAAAA;AACZ,QAAA,MAAM+B,GAAAA,GAAM6D,OAAAA,CAAQ3D,OAAO,CAACqE,aAAa,EAAA;AACzCV,QAAAA,OAAAA,CAAQ3D,OAAO,CAACsE,MAAM,CAACxE,GAAAA,EAAK/B,QAAQ,EAAC,CAAA;AACrC,QAAA,OAAO4F,QAAQO,GAAG,CAACpE,IAAIkE,GAAG,EAAElE,IAAIyE,MAAM,CAAA;AACxC,IAAA,CAAA,CAAA,CAAA;AAEJ;AAEA,SAASN,cAAAA,CAAkBlG,MAAe,EAAE4F,OAA2B,EAAEC,cAAsB,EAAA;AAC7F,IAAA,MAAMrC,OAAOK,OAAAA,CAAQ7D,MAAAA,CAAAA;AAErB,IAAA,IAAIiG,GAAAA,GAAM,CAAC,aAAa,EAAEL,OAAAA,CAAQ3D,OAAO,CAACI,QAAQ,CAACmB,IAAAA,CAAKxG,IAAI,CAAA,CAAE,MAAM,CAAC;AAErE,IAAA,MAAMyJ,gBAAAA,GAAmB,aAAA;AACzB,IAAA,MAAMC,WAAAA,GAAc,cAAA;AAEpB,IAAA,MAAMC,UAAUrB,OAAAA,CAAQ9B,IAAAA,CAAKE,MAAM,CAAA,CAAE2B,GAAG,CAAC,CAACjC,GAAAA,GAAAA;AACxC,QAAA,MAAMwD,KAAAA,GAAQpD,IAAAA,CAAKE,MAAM,CAACN,GAAAA,CAAI;QAC9B,IAAIyD,OAAAA,GAAUjB,QAAQ3D,OAAO,CAACI,QAAQ,CAACuE,KAAAA,CAAM5J,IAAI,CAAA,GAAI,GAAA;QACrD,IAAI4J,KAAAA,CAAME,IAAI,EAAE;AACdD,YAAAA,OAAAA,IAAWD,MAAM1G,QAAQ,GAAG,GAAGuG,gBAAAA,CAAiB,YAAY,CAAC,GAAGZ,cAAAA;QAClE,CAAA,MAAO;YACL,IAAIe,KAAAA,CAAMrG,IAAI,KAAKwG,MAAAA,EAAQ;gBACzBF,OAAAA,IAAW,QAAA;AACb,YAAA,CAAA,MAAO,IAAID,KAAAA,CAAMrG,IAAI,KAAKJ,IAAAA,EAAM;gBAC9B0G,OAAAA,IAAW,WAAA;YACb,CAAA,MAAO;gBACLA,OAAAA,IAAWH,WAAAA;AACb,YAAA;AACF,QAAA;QACA,OAAOG,OAAAA;AACT,IAAA,CAAA,CAAA;IAEAZ,GAAAA,IAAOU,OAAAA,CAAQK,IAAI,CAAC,OAAA,CAAA;IACpBf,GAAAA,IAAO,CAAC,IAAI,CAAC;;IAIb,OAAOA,GAAAA;AACT;;AClEO,SAASgB,WAA2BC,IAAO,EAAA;IAChD,MAAMC,KAAAA,GAA6BC,MAAAA,CAAOC,cAAc,CAACH,IAAAA,CAAAA;IACzD,IAAII,UAAAA;AACJ,IAAA,MAAMC,QAAAA,GAAWJ,KAAAA,CAAM,WAAW,CAACnK,IAAI;IAEvC,IAAIuK,QAAAA,CAASC,UAAU,CAAC,KAAA,CAAA,EAAQ;AAC9BF,QAAAA,UAAAA,GAAaG,SAASC,IAAI;AAC5B,IAAA,CAAA,MAAO,IAAIH,QAAAA,CAASC,UAAU,CAAC,KAAA,CAAA,EAAQ;AACrCF,QAAAA,UAAAA,GAAaG,SAASE,IAAI;IAC5B,CAAA,MAAO;QACLL,UAAAA,GAAaG,QAAAA;AACf,IAAA;IAEAH,UAAAA,CAAWC,QAAAA,EAAU,IAAMK,eAAAA,CAAgBV,IAAAA,CAAAA,CAAAA;AAC7C;AAEA,SAASU,gBAAgBV,IAAY,EAAA;IACnC,IAAIC,KAAAA,GAA6BC,MAAAA,CAAOC,cAAc,CAACH,IAAAA,CAAAA;AAEvD,IAAA,MAAMW,sBAA6C,EAAC;IAEpD,MAAOV,KAAAA,CAAM,WAAW,KAAKC,MAAAA,CAAQ;AACnC,QAAA,KAAK,MAAMhE,GAAAA,IAAOgE,MAAAA,CAAOU,mBAAmB,CAACX,KAAAA,CAAAA,CAAQ;YACnD,MAAMY,WAAAA,GAAcF,mBAAmB,CAACzE,GAAAA,CAAI;YAC5CyE,mBAAmB,CAACzE,IAAI,GAAG,IAAA;YAC3B,IAAI2E,WAAAA,IAAe3E,QAAQ,aAAA,IAAiB,OAAO8D,IAAI,CAAC9D,GAAAA,CAAI,KAAK,UAAA,EAAY;AAC3E,gBAAA;AACF,YAAA;AACA,YAAA,MAAM4E,WAAuCd,IAAI,CAAC9D,GAAAA,CAAI,CAAC6E,IAAI,CAACf,IAAAA,CAAAA;YAC5D,IAAIgB,KAAK,CAAC9E,GAAAA,CAAI,EAAE;gBACd8E,KAAK,CAAC9E,IAAI,CAAC4E,QAAAA,CAAAA;AACb,YAAA,CAAA,MAAO,IAAI5E,GAAAA,CAAIoE,UAAU,CAAC,QAAA,CAAA,EAAW;AACnCW,gBAAAA,EAAAA,CAAG/E,GAAAA,EAAK4E,QAAAA,CAAAA;AACV,YAAA,CAAA,MAAO,IAAI5E,GAAAA,CAAIoE,UAAU,CAAC,WAAA,CAAA,EAAc;gBACtCW,EAAAA,CAAGT,IAAI,CAACtE,GAAAA,EAAK4E,QAAAA,CAAAA;AACf,YAAA,CAAA,MAAO,IAAI5E,GAAAA,CAAIoE,UAAU,CAAC,WAAA,CAAA,EAAc;gBACtCW,EAAAA,CAAGR,IAAI,CAACvE,GAAAA,EAAK4E,QAAAA,CAAAA;AACf,YAAA;AACF,QAAA;QACAb,KAAAA,GAAQC,MAAAA,CAAOC,cAAc,CAACF,KAAAA,CAAAA;AAChC,IAAA;AACF;AAEA,MAAMe,KAAAA,GAAQ;AACZE,IAAAA,SAAAA;AACAC,IAAAA,UAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA;AACF,CAAA;;;;"}fo(${this.escapeId(tableName)})`;\n\n const results = await querier.all<{\n cid: number;\n name: string;\n type: string;\n notnull: number;\n dflt_value: string | null;\n pk: number;\n }>(sql);\n\n // Get unique columns from indexes\n const uniqueColumns = await this.getUniqueColumns(querier, tableName);\n\n return results.map((row: any) => ({\n name: row.name,\n type: this.normalizeType(row.type),\n nullable: row.notnull === 0,\n defaultValue: this.parseDefaultValue(row.dflt_value),\n isPrimaryKey: row.pk > 0,\n isAutoIncrement: row.pk > 0 && row.type.toUpperCase() === 'INTEGER',\n isUnique: uniqueColumns.has(row.name),\n length: this.extractLength(row.type),\n precision: undefined,\n scale: undefined,\n comment: undefined, // SQLite doesn't support column comments\n }));\n }\n\n private async getUniqueColumns(querier: SqlQuerier, tableName: string): Promise<Set<string>> {\n const sql = `PRAGMA index_list(${this.escapeId(tableName)})`;\n\n const indexes = await querier.all<{\n seq: number;\n name: string;\n unique: number;\n origin: string;\n partial: number;\n }>(sql);\n\n const uniqueColumns = new Set<string>();\n\n for (const index of indexes) {\n if (index.unique && index.origin === 'u') {\n const indexInfo = await querier.all<{ name: string }>(`PRAGMA index_info(${this.escapeId(index.name)})`);\n // Only single-column unique constraints\n if (indexInfo.length === 1) {\n uniqueColumns.add(indexInfo[0].name);\n }\n }\n }\n\n return uniqueColumns;\n }\n\n private async getIndexes(querier: SqlQuerier, tableName: string): Promise<IndexSchema[]> {\n const sql = `PRAGMA index_list(${this.escapeId(tableName)})`;\n\n const indexes = await querier.all<{\n seq: number;\n name: string;\n unique: number;\n origin: string;\n partial: number;\n }>(sql);\n\n const result: IndexSchema[] = [];\n\n for (const index of indexes) {\n // Skip auto-generated indexes (primary key, unique constraints)\n if (index.origin !== 'c') {\n continue;\n }\n\n const columns = await querier.all<{ name: string }>(`PRAGMA index_info(${this.escapeId(index.name)})`);\n\n result.push({\n name: index.name,\n columns: columns.map((c: any) => c.name),\n unique: Boolean(index.unique),\n });\n }\n\n return result;\n }\n\n private async getForeignKeys(querier: SqlQuerier, tableName: string): Promise<ForeignKeySchema[]> {\n const sql = `PRAGMA foreign_key_list(${this.escapeId(tableName)})`;\n\n const results = await querier.all<{\n id: number;\n seq: number;\n table: string;\n from: string;\n to: string;\n on_update: string;\n on_delete: string;\n match: string;\n }>(sql);\n\n // Group by id to handle composite foreign keys\n const grouped = new Map<number, typeof results>();\n for (const row of results) {\n const existing = grouped.get(row.id) ?? [];\n existing.push(row);\n grouped.set(row.id, existing);\n }\n\n return Array.from(grouped.entries()).map(([id, rows]) => {\n const first = rows[0];\n return {\n name: `fk_${tableName}_${id}`,\n columns: rows.map((r: any) => r.from),\n referencedTable: first.table,\n referencedColumns: rows.map((r: any) => r.to),\n onDelete: this.normalizeReferentialAction(first.on_delete),\n onUpdate: this.normalizeReferentialAction(first.on_update),\n };\n });\n }\n\n private async getPrimaryKey(querier: SqlQuerier, tableName: string): Promise<string[] | undefined> {\n const sql = `PRAGMA table_info(${this.escapeId(tableName)})`;\n\n const results = await querier.all<{\n cid: number;\n name: string;\n type: string;\n notnull: number;\n dflt_value: string | null;\n pk: number;\n }>(sql);\n\n const pkColumns = results.filter((r: any) => r.pk > 0).sort((a: any, b: any) => a.pk - b.pk);\n\n if (pkColumns.length === 0) {\n return undefined;\n }\n\n return pkColumns.map((r: any) => r.name);\n }\n\n private escapeId(identifier: string): string {\n return `\\`${identifier.replace(/`/g, '``')}\\``;\n }\n\n private normalizeType(type: string): string {\n // Extract base type without length/precision\n const match = type.match(/^([A-Za-z]+)/);\n return match ? match[1].toUpperCase() : type.toUpperCase();\n }\n\n private extractLength(type: string): number | undefined {\n const match = type.match(/\\((\\d+)\\)/);\n return match ? Number.parseInt(match[1], 10) : undefined;\n }\n\n private parseDefaultValue(defaultValue: string | null): unknown {\n if (defaultValue === null) {\n return undefined;\n }\n\n // Check for common patterns\n if (defaultValue === 'NULL') {\n return null;\n }\n if (defaultValue === 'CURRENT_TIMESTAMP' || defaultValue === 'CURRENT_DATE' || defaultValue === 'CURRENT_TIME') {\n return defaultValue;\n }\n if (/^'.*'$/.test(defaultValue)) {\n return defaultValue.slice(1, -1);\n }\n if (/^-?\\d+$/.test(defaultValue)) {\n return Number.parseInt(defaultValue, 10);\n }\n if (/^-?\\d+\\.\\d+$/.test(defaultValue)) {\n return Number.parseFloat(defaultValue);\n }\n\n return defaultValue;\n }\n\n private normalizeReferentialAction(action: string): 'CASCADE' | 'SET NULL' | 'RESTRICT' | 'NO ACTION' | undefined {\n switch (action.toUpperCase()) {\n case 'CASCADE':\n return 'CASCADE';\n case 'SET NULL':\n return 'SET NULL';\n case 'RESTRICT':\n return 'RESTRICT';\n case 'NO ACTION':\n return 'NO ACTION';\n default:\n return undefined;\n }\n }\n}\n","import { AbstractDialect } from '../../dialect/index.js';\nimport { getMeta } from '../../entity/index.js';\nimport type { IndexSchema, SchemaDiff, SchemaGenerator, TableSchema, Type } from '../../type/index.js';\n\nexport class MongoSchemaGenerator extends AbstractDialect implements SchemaGenerator {\n generateCreateTable<E>(entity: Type<E>): string {\n const meta = getMeta(entity);\n const collectionName = this.resolveTableName(entity, meta);\n const indexes: IndexSchema[] = [];\n\n for (const key in meta.fields) {\n const field = meta.fields[key];\n if (field.index) {\n const columnName = this.resolveColumnName(key, field);\n const indexName = typeof field.index === 'string' ? field.index : `idx_${collectionName}_${columnName}`;\n indexes.push({\n name: indexName,\n columns: [columnName],\n unique: !!field.unique,\n });\n }\n }\n\n return JSON.stringify({ action: 'createCollection', name: collectionName, indexes });\n }\n\n generateDropTable<E>(entity: Type<E>): string {\n const meta = getMeta(entity);\n const collectionName = this.resolveTableName(entity, meta);\n return JSON.stringify({ action: 'dropCollection', name: collectionName });\n }\n\n generateAlterTable(diff: SchemaDiff): string[] {\n const statements: string[] = [];\n if (diff.indexesToAdd?.length) {\n for (const index of diff.indexesToAdd) {\n statements.push(this.generateCreateIndex(diff.tableName, index));\n }\n }\n return statements;\n }\n\n generateAlterTableDown(diff: SchemaDiff): string[] {\n const statements: string[] = [];\n if (diff.indexesToAdd?.length) {\n for (const index of diff.indexesToAdd) {\n statements.push(this.generateDropIndex(diff.tableName, index.name));\n }\n }\n return statements;\n }\n\n generateCreateIndex(tableName: string, index: IndexSchema): string {\n const key: Record<string, number> = {};\n for (const col of index.columns) {\n key[col] = 1;\n }\n return JSON.stringify({\n action: 'createIndex',\n collection: tableName,\n name: index.name,\n key,\n options: { unique: index.unique, name: index.name },\n });\n }\n\n generateDropIndex(tableName: string, indexName: string): string {\n return JSON.stringify({\n action: 'dropIndex',\n collection: tableName,\n name: indexName,\n });\n }\n\n getSqlType(): string {\n return '';\n }\n\n diffSchema<E>(entity: Type<E>, currentSchema: TableSchema | undefined): SchemaDiff | undefined {\n const meta = getMeta(entity);\n const collectionName = this.resolveTableName(entity, meta);\n\n if (!currentSchema) {\n return { tableName: collectionName, type: 'create' };\n }\n\n const indexesToAdd: IndexSchema[] = [];\n const existingIndexes = new Set(currentSchema.indexes?.map((i: IndexSchema) => i.name) ?? []);\n\n for (const key in meta.fields) {\n const field = meta.fields[key];\n if (field.index) {\n const columnName = this.resolveColumnName(key, field);\n const indexName = typeof field.index === 'string' ? field.index : `idx_${collectionName}_${columnName}`;\n if (!existingIndexes.has(indexName)) {\n indexesToAdd.push({\n name: indexName,\n columns: [columnName],\n unique: !!field.unique,\n });\n }\n }\n }\n\n if (indexesToAdd.length === 0) {\n return undefined;\n }\n\n return {\n tableName: collectionName,\n type: 'alter',\n indexesToAdd,\n };\n }\n}\n","import type { MongoQuerier, QuerierPool, SchemaIntrospector, TableSchema } from '../../type/index.js';\n\nexport class MongoSchemaIntrospector implements SchemaIntrospector {\n constructor(private readonly pool: QuerierPool) {}\n\n async getTableSchema(tableName: string): Promise<TableSchema | undefined> {\n const querier = await this.pool.getQuerier();\n try {\n const { db } = querier as MongoQuerier;\n const collections = await db.listCollections({ name: tableName }).toArray();\n if (collections.length === 0) {\n return undefined;\n }\n\n // MongoDB doesn't have a fixed schema, but we can look at the indexes\n const indexes = await db.collection(tableName).indexes();\n\n return {\n name: tableName,\n columns: [], // We don't have columns in Mongo\n indexes: indexes.map((idx: any) => ({\n name: idx.name,\n columns: Object.keys(idx.key),\n unique: !!idx.unique,\n })),\n };\n } finally {\n await querier.release();\n }\n }\n\n async getTableNames(): Promise<string[]> {\n const querier = await this.pool.getQuerier();\n try {\n const { db } = querier as MongoQuerier;\n const collections = await db.listCollections().toArray();\n return collections.map((c: any) => c.name);\n } finally {\n await querier.release();\n }\n }\n\n async tableExists(tableName: string): Promise<boolean> {\n const names = await this.getTableNames();\n return names.includes(tableName);\n }\n}\n","import type { MigrationStorage, QuerierPool, SqlQuerier } from '../../type/index.js';\nimport { isSqlQuerier } from '../../type/index.js';\n\n/**\n * Migration metadata stored in the database\n */\ninterface MigrationRecord {\n name: string;\n executed_at: Date | number;\n}\n\n/**\n * Stores migration state in a database table.\n * Uses the querier's dialect for escaping and placeholders.\n */\nexport class DatabaseMigrationStorage implements MigrationStorage {\n private readonly tableName: string;\n private storageInitialized = false;\n\n constructor(\n private readonly pool: QuerierPool,\n options: {\n tableName?: string;\n } = {},\n ) {\n this.tableName = options.tableName ?? 'uql_migrations';\n }\n\n async ensureStorage(): Promise<void> {\n if (this.storageInitialized) {\n return;\n }\n\n const querier = await this.pool.getQuerier();\n\n if (!isSqlQuerier(querier)) {\n await querier.release();\n throw new Error('DatabaseMigrationStorage requires a SQL-based querier');\n }\n\n try {\n await this.createTableIfNotExists(querier);\n this.storageInitialized = true;\n } finally {\n await querier.release();\n }\n }\n\n private async createTableIfNotExists(querier: SqlQuerier): Promise<void> {\n const { escapeId } = querier.dialect;\n const sql = `\n CREATE TABLE IF NOT EXISTS ${escapeId(this.tableName)} (\n ${escapeId('name')} VARCHAR(255) PRIMARY KEY,\n ${escapeId('executed_at')} TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n )\n `;\n\n await querier.run(sql);\n }\n\n async executed(): Promise<string[]> {\n await this.ensureStorage();\n\n const querier = await this.pool.getQuerier();\n\n if (!isSqlQuerier(querier)) {\n await querier.release();\n throw new Error('DatabaseMigrationStorage requires a SQL-based querier');\n }\n\n try {\n const { escapeId } = querier.dialect;\n const sql = `SELECT ${escapeId('name')} FROM ${escapeId(this.tableName)} ORDER BY ${escapeId('name')} ASC`;\n const results = await querier.all<MigrationRecord>(sql);\n return results.map((r: any) => r.name);\n } finally {\n await querier.release();\n }\n }\n\n /**\n * Log a migration as executed - uses provided querier (within transaction)\n */\n async logWithQuerier(querier: SqlQuerier, migrationName: string): Promise<void> {\n await this.ensureStorage();\n const { escapeId, placeholder } = querier.dialect;\n const sql = `INSERT INTO ${escapeId(this.tableName)} (${escapeId('name')}) VALUES (${placeholder(1)})`;\n await querier.run(sql, [migrationName]);\n }\n\n /**\n * Unlog a migration - uses provided querier (within transaction)\n */\n async unlogWithQuerier(querier: SqlQuerier, migrationName: string): Promise<void> {\n await this.ensureStorage();\n const { escapeId, placeholder } = querier.dialect;\n const sql = `DELETE FROM ${escapeId(this.tableName)} WHERE ${escapeId('name')} = ${placeholder(1)}`;\n await querier.run(sql, [migrationName]);\n }\n}\n","import { readdir } from 'node:fs/promises';\nimport { basename, extname, join } from 'node:path';\nimport { pathToFileURL } from 'node:url';\nimport { getEntities, getMeta } from '../entity/index.js';\nimport type {\n Dialect,\n Migration,\n MigrationDefinition,\n MigrationResult,\n MigrationStorage,\n MigratorOptions,\n MongoQuerier,\n NamingStrategy,\n Querier,\n QuerierPool,\n SchemaDiff,\n SchemaGenerator,\n SchemaIntrospector,\n Type,\n} from '../type/index.js';\nimport { isSqlQuerier } from '../type/index.js';\nimport {\n MariadbSchemaGenerator,\n MongoSchemaGenerator,\n MysqlSchemaGenerator,\n PostgresSchemaGenerator,\n SqliteSchemaGenerator,\n} from './generator/index.js';\nimport {\n MariadbSchemaIntrospector,\n MongoSchemaIntrospector,\n MysqlSchemaIntrospector,\n PostgresSchemaIntrospector,\n SqliteSchemaIntrospector,\n} from './introspection/index.js';\nimport { DatabaseMigrationStorage } from './storage/databaseStorage.js';\n\n/**\n * Main class for managing database migrations\n */\nexport class Migrator {\n private readonly storage: MigrationStorage;\n private readonly migrationsPath: string;\n private readonly logger: (message: string) => void;\n private readonly entities: Type<unknown>[];\n private readonly dialect: Dialect;\n private schemaGenerator?: SchemaGenerator;\n public schemaIntrospector?: SchemaIntrospector;\n\n constructor(\n private readonly pool: QuerierPool,\n options: MigratorOptions = {},\n ) {\n this.dialect = options.dialect ?? pool.dialect ?? 'postgres';\n this.storage =\n options.storage ??\n new DatabaseMigrationStorage(pool, {\n tableName: options.tableName,\n });\n this.migrationsPath = options.migrationsPath ?? './migrations';\n this.logger = options.logger ?? (() => {});\n this.entities = options.entities ?? [];\n this.schemaIntrospector = this.createIntrospector();\n this.schemaGenerator = options.schemaGenerator ?? this.createGenerator(options.namingStrategy);\n }\n\n /**\n * Set the schema generator for DDL operations\n */\n setSchemaGenerator(generator: SchemaGenerator): void {\n this.schemaGenerator = generator;\n }\n\n private createIntrospector(): SchemaIntrospector | undefined {\n switch (this.dialect) {\n case 'postgres':\n return new PostgresSchemaIntrospector(this.pool);\n case 'mysql':\n return new MysqlSchemaIntrospector(this.pool);\n case 'mariadb':\n return new MariadbSchemaIntrospector(this.pool);\n case 'sqlite':\n return new SqliteSchemaIntrospector(this.pool);\n case 'mongodb':\n return new MongoSchemaIntrospector(this.pool);\n default:\n return undefined;\n }\n }\n\n private createGenerator(namingStrategy?: NamingStrategy): SchemaGenerator | undefined {\n switch (this.dialect) {\n case 'postgres':\n return new PostgresSchemaGenerator(namingStrategy);\n case 'mysql':\n return new MysqlSchemaGenerator(namingStrategy);\n case 'mariadb':\n return new MariadbSchemaGenerator(namingStrategy);\n case 'sqlite':\n return new SqliteSchemaGenerator(namingStrategy);\n case 'mongodb':\n return new MongoSchemaGenerator(namingStrategy);\n default:\n return undefined;\n }\n }\n\n /**\n * Get the SQL dialect\n */\n getDialect(): Dialect {\n return this.dialect;\n }\n\n /**\n * Get all discovered migrations from the migrations directory\n */\n async getMigrations(): Promise<Migration[]> {\n const files = await this.getMigrationFiles();\n const migrations: Migration[] = [];\n\n for (const file of files) {\n const migration = await this.loadMigration(file);\n if (migration) {\n migrations.push(migration);\n }\n }\n\n // Sort by name (which typically includes timestamp)\n return migrations.sort((a: any, b: any) => a.name.localeCompare(b.name));\n }\n\n /**\n * Get list of pending migrations (not yet executed)\n */\n async pending(): Promise<Migration[]> {\n const [migrations, executed] = await Promise.all([this.getMigrations(), this.storage.executed()]);\n\n const executedSet = new Set(executed);\n return migrations.filter((m: any) => !executedSet.has(m.name));\n }\n\n /**\n * Get list of executed migrations\n */\n async executed(): Promise<string[]> {\n return this.storage.executed();\n }\n\n /**\n * Run all pending migrations\n */\n async up(options: { to?: string; step?: number } = {}): Promise<MigrationResult[]> {\n const pendingMigrations = await this.pending();\n const results: MigrationResult[] = [];\n\n let migrationsToRun = pendingMigrations;\n\n if (options.to) {\n const toIndex = migrationsToRun.findIndex((m: any) => m.name === options.to);\n if (toIndex === -1) {\n throw new Error(`Migration '${options.to}' not found`);\n }\n migrationsToRun = migrationsToRun.slice(0, toIndex + 1);\n }\n\n if (options.step !== undefined) {\n migrationsToRun = migrationsToRun.slice(0, options.step);\n }\n\n for (const migration of migrationsToRun) {\n const result = await this.runMigration(migration, 'up');\n results.push(result);\n\n if (!result.success) {\n break; // Stop on first failure\n }\n }\n\n return results;\n }\n\n /**\n * Rollback migrations\n */\n async down(options: { to?: string; step?: number } = {}): Promise<MigrationResult[]> {\n const [migrations, executed] = await Promise.all([this.getMigrations(), this.storage.executed()]);\n\n const executedSet = new Set(executed);\n const executedMigrations = migrations.filter((m: any) => executedSet.has(m.name)).reverse(); // Rollback in reverse order\n\n const results: MigrationResult[] = [];\n let migrationsToRun = executedMigrations;\n\n if (options.to) {\n const toIndex = migrationsToRun.findIndex((m: any) => m.name === options.to);\n if (toIndex === -1) {\n throw new Error(`Migration '${options.to}' not found`);\n }\n migrationsToRun = migrationsToRun.slice(0, toIndex + 1);\n }\n\n if (options.step !== undefined) {\n migrationsToRun = migrationsToRun.slice(0, options.step);\n }\n\n for (const migration of migrationsToRun) {\n const result = await this.runMigration(migration, 'down');\n results.push(result);\n\n if (!result.success) {\n break; // Stop on first failure\n }\n }\n\n return results;\n }\n\n /**\n * Run a single migration within a transaction\n */\n private async runMigration(migration: Migration, direction: 'up' | 'down'): Promise<MigrationResult> {\n const startTime = Date.now();\n const querier = await this.pool.getQuerier();\n\n if (!isSqlQuerier(querier)) {\n await querier.release();\n throw new Error('Migrator requires a SQL-based querier');\n }\n\n try {\n this.logger(`${direction === 'up' ? 'Running' : 'Reverting'} migration: ${migration.name}`);\n\n await querier.beginTransaction();\n\n if (direction === 'up') {\n await migration.up(querier);\n // Log within the same transaction\n await this.storage.logWithQuerier(querier, migration.name);\n } else {\n await migration.down(querier);\n // Unlog within the same transaction\n await this.storage.unlogWithQuerier(querier, migration.name);\n }\n\n await querier.commitTransaction();\n\n const duration = Date.now() - startTime;\n this.logger(`Migration ${migration.name} ${direction === 'up' ? 'applied' : 'reverted'} in ${duration}ms`);\n\n return {\n name: migration.name,\n direction,\n duration,\n success: true,\n };\n } catch (error) {\n await querier.rollbackTransaction();\n\n const duration = Date.now() - startTime;\n this.logger(`Migration ${migration.name} failed: ${(error as Error).message}`);\n\n return {\n name: migration.name,\n direction,\n duration,\n success: false,\n error: error as Error,\n };\n } finally {\n await querier.release();\n }\n }\n\n /**\n * Generate a new migration file\n */\n async generate(name: string): Promise<string> {\n const timestamp = this.getTimestamp();\n const fileName = `${timestamp}_${this.slugify(name)}.ts`;\n const filePath = join(this.migrationsPath, fileName);\n\n const content = this.generateMigrationContent(name);\n\n const { writeFile, mkdir } = await import('node:fs/promises');\n await mkdir(this.migrationsPath, { recursive: true });\n await writeFile(filePath, content, 'utf-8');\n\n this.logger(`Created migration: ${filePath}`);\n return filePath;\n }\n\n /**\n * Generate a migration based on entity schema differences\n */\n async generateFromEntities(name: string): Promise<string> {\n if (!this.schemaGenerator) {\n throw new Error('Schema generator not set. Call setSchemaGenerator() first.');\n }\n\n const diffs = await this.getDiffs();\n const upStatements: string[] = [];\n const downStatements: string[] = [];\n\n for (const diff of diffs) {\n if (diff.type === 'create') {\n const entity = this.findEntityForTable(diff.tableName);\n if (entity) {\n upStatements.push(this.schemaGenerator.generateCreateTable(entity));\n downStatements.push(this.schemaGenerator.generateDropTable(entity));\n }\n } else if (diff.type === 'alter') {\n const alterStatements = this.schemaGenerator.generateAlterTable(diff);\n upStatements.push(...alterStatements);\n\n const alterDownStatements = this.schemaGenerator.generateAlterTableDown(diff);\n downStatements.push(...alterDownStatements);\n }\n }\n\n if (upStatements.length === 0) {\n this.logger('No schema changes detected.');\n return '';\n }\n\n const timestamp = this.getTimestamp();\n const fileName = `${timestamp}_${this.slugify(name)}.ts`;\n const filePath = join(this.migrationsPath, fileName);\n\n const content = this.generateMigrationContentWithStatements(name, upStatements, downStatements.reverse());\n\n const { writeFile, mkdir } = await import('node:fs/promises');\n await mkdir(this.migrationsPath, { recursive: true });\n await writeFile(filePath, content, 'utf-8');\n\n this.logger(`Created migration from entities: ${filePath}`);\n return filePath;\n }\n\n /**\n * Get all schema differences between entities and database\n */\n async getDiffs(): Promise<SchemaDiff[]> {\n if (!this.schemaGenerator || !this.schemaIntrospector) {\n throw new Error('Schema generator and introspector must be set');\n }\n\n const entities = this.entities.length > 0 ? this.entities : getEntities();\n const diffs: SchemaDiff[] = [];\n\n for (const entity of entities) {\n const meta = getMeta(entity);\n const tableName = this.schemaGenerator.resolveTableName(entity, meta);\n const currentSchema = await this.schemaIntrospector.getTableSchema(tableName);\n const diff = this.schemaGenerator.diffSchema(entity, currentSchema);\n if (diff) {\n diffs.push(diff);\n }\n }\n\n return diffs;\n }\n\n private findEntityForTable(tableName: string): Type<unknown> | undefined {\n const entities = this.entities.length > 0 ? this.entities : getEntities();\n for (const entity of entities) {\n const meta = getMeta(entity);\n const name = this.schemaGenerator.resolveTableName(entity, meta);\n if (name === tableName) {\n return entity;\n }\n }\n return undefined;\n }\n\n /**\n * Sync schema directly (for development only - not for production!)\n */\n async sync(options: { force?: boolean } = {}): Promise<void> {\n if (options.force) {\n return this.syncForce();\n }\n return this.autoSync({ safe: true });\n }\n\n /**\n * Drops and recreates all tables (Development only!)\n */\n public async syncForce(): Promise<void> {\n if (!this.schemaGenerator) {\n throw new Error('Schema generator not set. Call setSchemaGenerator() first.');\n }\n\n const entities = this.entities.length > 0 ? this.entities : getEntities();\n const querier = await this.pool.getQuerier();\n\n if (!isSqlQuerier(querier)) {\n await querier.release();\n throw new Error('Migrator requires a SQL-based querier');\n }\n\n try {\n await querier.beginTransaction();\n\n // Drop all tables first (in reverse order for foreign keys)\n for (const entity of [...entities].reverse()) {\n const dropSql = this.schemaGenerator.generateDropTable(entity);\n this.logger(`Executing: ${dropSql}`);\n await querier.run(dropSql);\n }\n\n // Create all tables\n for (const entity of entities) {\n const createSql = this.schemaGenerator.generateCreateTable(entity);\n this.logger(`Executing: ${createSql}`);\n await querier.run(createSql);\n }\n\n await querier.commitTransaction();\n this.logger('Schema sync (force) completed');\n } catch (error) {\n await querier.rollbackTransaction();\n throw error;\n } finally {\n await querier.release();\n }\n }\n\n /**\n * Safely synchronizes the schema by only adding missing tables and columns.\n */\n async autoSync(options: { safe?: boolean; drop?: boolean; logging?: boolean } = {}): Promise<void> {\n if (!this.schemaGenerator || !this.schemaIntrospector) {\n throw new Error('Schema generator and introspector must be set');\n }\n\n const diffs = await this.getDiffs();\n const statements: string[] = [];\n\n for (const diff of diffs) {\n if (diff.type === 'create') {\n const entity = this.findEntityForTable(diff.tableName);\n if (entity) {\n statements.push(this.schemaGenerator.generateCreateTable(entity));\n }\n } else if (diff.type === 'alter') {\n const filteredDiff = this.filterDiff(diff, options);\n const alterStatements = this.schemaGenerator.generateAlterTable(filteredDiff);\n statements.push(...alterStatements);\n }\n }\n\n if (statements.length === 0) {\n if (options.logging) this.logger('Schema is already in sync.');\n return;\n }\n\n await this.executeSyncStatements(statements, options);\n }\n\n private filterDiff(diff: SchemaDiff, options: { safe?: boolean; drop?: boolean }): SchemaDiff {\n const filteredDiff = { ...diff } as { -readonly [K in keyof SchemaDiff]: SchemaDiff[K] };\n if (options.safe !== false) {\n // In safe mode, we only allow additions\n delete filteredDiff.columnsToDrop;\n delete filteredDiff.indexesToDrop;\n delete filteredDiff.foreignKeysToDrop;\n }\n if (!options.drop) {\n delete filteredDiff.columnsToDrop;\n }\n return filteredDiff;\n }\n\n private async executeSyncStatements(statements: string[], options: { logging?: boolean }): Promise<void> {\n const querier = await this.pool.getQuerier();\n try {\n if (this.dialect === 'mongodb') {\n await this.executeMongoSyncStatements(statements, options, querier as MongoQuerier);\n } else {\n await this.executeSqlSyncStatements(statements, options, querier);\n }\n if (options.logging) this.logger('Schema synchronization completed');\n } catch (error) {\n if (this.dialect !== 'mongodb' && isSqlQuerier(querier)) {\n await querier.rollbackTransaction();\n }\n throw error;\n } finally {\n await querier.release();\n }\n }\n\n private async executeMongoSyncStatements(\n statements: string[],\n options: { logging?: boolean },\n querier: MongoQuerier,\n ): Promise<void> {\n const db = querier.db;\n for (const stmt of statements) {\n const cmd = JSON.parse(stmt) as {\n action: string;\n name?: string;\n collection?: string;\n indexes?: { name: string; columns: string[]; unique?: boolean }[];\n key?: Record<string, number>;\n options?: any;\n };\n if (options.logging) this.logger(`Executing MongoDB: ${stmt}`);\n\n const collectionName = cmd.name || cmd.collection;\n if (!collectionName) {\n throw new Error(`MongoDB command missing collection name: ${stmt}`);\n }\n const collection = db.collection(collectionName);\n\n if (cmd.action === 'createCollection') {\n await db.createCollection(cmd.name);\n if (cmd.indexes?.length) {\n for (const idx of cmd.indexes) {\n const key = Object.fromEntries(idx.columns.map((c: string) => [c, 1]));\n await collection.createIndex(key, { unique: idx.unique, name: idx.name });\n }\n }\n } else if (cmd.action === 'dropCollection') {\n await collection.drop();\n } else if (cmd.action === 'createIndex') {\n await collection.createIndex(cmd.key, cmd.options);\n } else if (cmd.action === 'dropIndex') {\n await collection.dropIndex(cmd.name);\n }\n }\n }\n\n private async executeSqlSyncStatements(\n statements: string[],\n options: { logging?: boolean },\n querier: Querier,\n ): Promise<void> {\n if (!isSqlQuerier(querier)) {\n throw new Error('Migrator requires a SQL-based querier for this dialect');\n }\n await querier.beginTransaction();\n for (const sql of statements) {\n if (options.logging) this.logger(`Executing: ${sql}`);\n await querier.run(sql);\n }\n await querier.commitTransaction();\n }\n\n /**\n * Get migration status\n */\n async status(): Promise<{ pending: string[]; executed: string[] }> {\n const [pending, executed] = await Promise.all([this.pending().then((m) => m.map((x) => x.name)), this.executed()]);\n\n return { pending, executed };\n }\n\n /**\n * Get migration files from the migrations directory\n */\n private async getMigrationFiles(): Promise<string[]> {\n try {\n const files = await readdir(this.migrationsPath);\n return files\n .filter((f) => /\\.(ts|js|mjs)$/.test(f))\n .filter((f) => !f.endsWith('.d.ts'))\n .sort();\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === 'ENOENT') {\n return [];\n }\n throw error;\n }\n }\n\n /**\n * Load a migration from a file\n */\n private async loadMigration(fileName: string): Promise<Migration | undefined> {\n const filePath = join(this.migrationsPath, fileName);\n const fileUrl = pathToFileURL(filePath).href;\n\n try {\n const module = await import(fileUrl);\n const migration = module.default ?? module;\n\n if (this.isMigration(migration)) {\n return {\n name: this.getMigrationName(fileName),\n up: migration.up.bind(migration),\n down: migration.down.bind(migration),\n };\n }\n\n this.logger(`Warning: ${fileName} is not a valid migration`);\n return undefined;\n } catch (error) {\n this.logger(`Error loading migration ${fileName}: ${(error as Error).message}`);\n return undefined;\n }\n }\n\n /**\n * Check if an object is a valid migration\n */\n private isMigration(obj: unknown): obj is MigrationDefinition {\n return (\n typeof obj === 'object' &&\n obj !== undefined &&\n obj !== null &&\n typeof (obj as MigrationDefinition).up === 'function' &&\n typeof (obj as MigrationDefinition).down === 'function'\n );\n }\n\n /**\n * Extract migration name from filename\n */\n private getMigrationName(fileName: string): string {\n return basename(fileName, extname(fileName));\n }\n\n /**\n * Generate timestamp string for migration names\n */\n private getTimestamp(): string {\n const now = new Date();\n return [\n now.getFullYear(),\n String(now.getMonth() + 1).padStart(2, '0'),\n String(now.getDate()).padStart(2, '0'),\n String(now.getHours()).padStart(2, '0'),\n String(now.getMinutes()).padStart(2, '0'),\n String(now.getSeconds()).padStart(2, '0'),\n ].join('');\n }\n\n /**\n * Convert a string to a slug for filenames\n */\n private slugify(text: string): string {\n return text\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '_')\n .replace(/^_+|_+$/g, '');\n }\n\n /**\n * Generate migration file content\n */\n private generateMigrationContent(name: string): string {\n return /*ts*/ `import type { SqlQuerier } from '@uql/migrate';\n\n/**\n * Migration: ${name}\n * Created: ${new Date().toISOString()}\n */\nexport default {\n async up(querier: SqlQuerier): Promise<void> {\n // Add your migration logic here\n // Example:\n // await querier.run(\\`\n // CREATE TABLE \"users\" (\n // \"id\" SERIAL PRIMARY KEY,\n // \"name\" VARCHAR(255) NOT NULL,\n // \"email\" VARCHAR(255) UNIQUE NOT NULL,\n // \"createdAt\" TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n // )\n // \\`);\n },\n\n async down(querier: SqlQuerier): Promise<void> {\n // Add your rollback logic here\n // Example:\n // await querier.run(\\`DROP TABLE IF EXISTS \"users\"\\`);\n },\n};\n`;\n }\n\n /**\n * Generate migration file content with SQL statements\n */\n private generateMigrationContentWithStatements(\n name: string,\n upStatements: string[],\n downStatements: string[],\n ): string {\n const upSql = upStatements.map((s) => /*ts*/ ` await querier.run(\\`${s}\\`);`).join('\\n');\n const downSql = downStatements.map((s) => /*ts*/ ` await querier.run(\\`${s}\\`);`).join('\\n');\n\n return /*ts*/ `import type { SqlQuerier } from '@uql/migrate';\n\n/**\n * Migration: ${name}\n * Created: ${new Date().toISOString()}\n * Generated from entity definitions\n */\nexport default {\n async up(querier: SqlQuerier): Promise<void> {\n${upSql}\n },\n\n async down(querier: SqlQuerier): Promise<void> {\n${downSql}\n },\n};\n`;\n }\n}\n\n/**\n * Helper function to define a migration with proper typing\n */\nexport function defineMigration(migration: MigrationDefinition): MigrationDefinition {\n return migration;\n}\n","import { mkdir, readFile, writeFile } from 'node:fs/promises';\nimport { dirname } from 'node:path';\nimport type { MigrationStorage, SqlQuerier } from '../../type/index.js';\n\n/**\n * Stores migration state in a JSON file (useful for development/testing)\n */\nexport class JsonMigrationStorage implements MigrationStorage {\n private readonly filePath: string;\n private cache: string[] | null = null;\n\n constructor(filePath = './migrations/.uql-migrations.json') {\n this.filePath = filePath;\n }\n\n async ensureStorage(): Promise<void> {\n try {\n await this.load();\n } catch {\n // File doesn't exist, create it\n await this.save([]);\n }\n }\n\n async executed(): Promise<string[]> {\n await this.ensureStorage();\n return this.cache ?? [];\n }\n\n async logWithQuerier(_querier: SqlQuerier, migrationName: string): Promise<void> {\n const executed = await this.executed();\n if (!executed.includes(migrationName)) {\n executed.push(migrationName);\n executed.sort();\n await this.save(executed);\n }\n }\n\n async unlogWithQuerier(_querier: SqlQuerier, migrationName: string): Promise<void> {\n const executed = await this.executed();\n const index = executed.indexOf(migrationName);\n if (index !== -1) {\n executed.splice(index, 1);\n await this.save(executed);\n }\n }\n\n private async load(): Promise<void> {\n const content = await readFile(this.filePath, 'utf-8');\n this.cache = JSON.parse(content);\n }\n\n private async save(migrations: string[]): Promise<void> {\n await mkdir(dirname(this.filePath), { recursive: true });\n await writeFile(this.filePath, JSON.stringify(migrations, null, 2), 'utf-8');\n this.cache = migrations;\n }\n}\n"],"names":["AbstractSchemaGenerator","AbstractDialect","namingStrategy","escapeIdChar","escapeId","identifier","escapeSqlId","generateCreateTable","entity","options","meta","getMeta","tableName","resolveTableName","columns","generateColumnDefinitions","constraints","generateTableConstraints","ifNotExists","sql","map","col","join","length","c","getTableOptions","generateDropTable","generateAlterTable","diff","statements","columnsToAdd","column","colDef","generateColumnDefinitionFromSchema","push","columnsToAlter","to","colStatements","generateAlterColumnStatements","columnsToDrop","columnName","indexesToAdd","index","generateCreateIndex","indexesToDrop","indexName","generateDropIndex","generateAlterTableDown","name","unique","fieldKeys","getKeys","fields","key","field","virtual","generateColumnDefinition","fieldKey","resolveColumnName","isId","isPrimaryKey","id","sqlType","autoIncrement","onInsert","serialPrimaryKeyType","getSqlType","type","definition","includes","nullable","defaultValue","undefined","formatDefaultValue","comment","generateColumnComment","precision","scale","isUnique","reference","refEntity","refMeta","refIdField","refTableName","refColumnName","fkName","fieldType","columnType","mapColumnType","Number","String","Boolean","getBooleanType","Date","BigInt","value","replace","toISOString","diffSchema","currentSchema","currentColumns","Map","currentColumn","get","fieldToColumnSchema","desiredColumn","columnsNeedAlteration","from","delete","isAutoIncrement","current","desired","toLowerCase","JSON","stringify","MysqlSchemaGenerator","newDefinition","escapedComment","PostgresSchemaGenerator","escapedTableName","escapedColumnName","generateColumnCommentStatement","SqliteSchemaGenerator","Error","MysqlSchemaIntrospector","pool","getTableSchema","querier","getQuerier","exists","tableExistsInternal","indexes","foreignKeys","primaryKey","Promise","all","getColumns","getIndexes","getForeignKeys","getPrimaryKey","release","getTableNames","results","r","table_name","tableExists","count","isSqlQuerier","row","column_name","data_type","toUpperCase","is_nullable","parseDefaultValue","column_default","column_key","extra","character_maximum_length","numeric_precision","numeric_scale","column_comment","index_name","split","is_unique","constraint_name","referencedTable","referenced_table","referencedColumns","referenced_columns","onDelete","normalizeReferentialAction","delete_rule","onUpdate","update_rule","test","slice","parseInt","parseFloat","action","MariadbSchemaIntrospector","PostgresSchemaIntrospector","normalizeType","udt_name","is_primary_key","dataType","udtName","cleaned","trim","startsWith","endsWith","SqliteSchemaIntrospector","uniqueColumns","getUniqueColumns","notnull","dflt_value","pk","has","extractLength","Set","origin","indexInfo","add","result","grouped","existing","set","Array","entries","rows","first","table","on_delete","on_update","pkColumns","filter","sort","a","b","match","MongoSchemaGenerator","collectionName","collection","existingIndexes","i","MongoSchemaIntrospector","db","collections","listCollections","toArray","idx","Object","keys","names","DatabaseMigrationStorage","storageInitialized","ensureStorage","createTableIfNotExists","dialect","run","executed","logWithQuerier","migrationName","placeholder","unlogWithQuerier","Migrator","storage","migrationsPath","logger","entities","schemaIntrospector","createIntrospector","schemaGenerator","createGenerator","setSchemaGenerator","generator","MariadbSchemaGenerator","getDialect","getMigrations","files","getMigrationFiles","migrations","file","migration","loadMigration","localeCompare","pending","executedSet","m","up","pendingMigrations","migrationsToRun","toIndex","findIndex","step","runMigration","success","down","executedMigrations","reverse","direction","startTime","now","beginTransaction","commitTransaction","duration","error","rollbackTransaction","message","generate","timestamp","getTimestamp","fileName","slugify","filePath","content","generateMigrationContent","writeFile","mkdir","recursive","generateFromEntities","diffs","getDiffs","upStatements","downStatements","findEntityForTable","alterStatements","alterDownStatements","generateMigrationContentWithStatements","getEntities","sync","force","syncForce","autoSync","safe","dropSql","createSql","filteredDiff","filterDiff","logging","executeSyncStatements","foreignKeysToDrop","drop","executeMongoSyncStatements","executeSqlSyncStatements","stmt","cmd","parse","createCollection","fromEntries","createIndex","dropIndex","status","then","x","readdir","f","code","fileUrl","pathToFileURL","href","module","default","isMigration","getMigrationName","bind","obj","basename","extname","getFullYear","getMonth","padStart","getDate","getHours","getMinutes","getSeconds","text","upSql","s","downSql","defineMigration","JsonMigrationStorage","cache","load","save","_querier","indexOf","splice","readFile","dirname"],"mappings":"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"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "homepage": "https://uql.app",
4
4
  "description": "One Language. Frontend to Backend.",
5
5
  "license": "MIT",
6
- "version": "3.4.2",
6
+ "version": "3.4.4",
7
7
  "type": "module",
8
8
  "main": "./dist/index.js",
9
9
  "types": "./dist/index.d.ts",
@@ -146,5 +146,5 @@
146
146
  "publishConfig": {
147
147
  "access": "public"
148
148
  },
149
- "gitHead": "f66b1f989aaf60334d2336848c7b88f543677c37"
149
+ "gitHead": "1fc6e508dafdc307d351ce436aaadccbce41a2a2"
150
150
  }