@payloadcms/drizzle 4.0.0-canary.35 → 4.0.0-canary.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/migrate.d.ts.map +1 -1
- package/dist/migrate.js +2 -0
- package/dist/migrate.js.map +1 -1
- package/dist/migrateDown.d.ts.map +1 -1
- package/dist/migrateDown.js +1 -0
- package/dist/migrateDown.js.map +1 -1
- package/dist/migrateFresh.d.ts.map +1 -1
- package/dist/migrateFresh.js +1 -0
- package/dist/migrateFresh.js.map +1 -1
- package/dist/migrateRefresh.d.ts.map +1 -1
- package/dist/migrateRefresh.js +2 -0
- package/dist/migrateRefresh.js.map +1 -1
- package/dist/migrateReset.d.ts.map +1 -1
- package/dist/migrateReset.js +2 -0
- package/dist/migrateReset.js.map +1 -1
- package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.d.ts.map +1 -1
- package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.js +8 -4
- package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.js.map +1 -1
- package/dist/sqlite/insert.d.ts.map +1 -1
- package/dist/sqlite/insert.js +4 -1
- package/dist/sqlite/insert.js.map +1 -1
- package/package.json +3 -3
- package/dist/find/buildPolymorphicJoinQuery.spec.js +0 -384
- package/dist/find/buildPolymorphicJoinQuery.spec.js.map +0 -1
- package/dist/find/buildPolymorphicJoinWhere.spec.js +0 -805
- package/dist/find/buildPolymorphicJoinWhere.spec.js.map +0 -1
- package/dist/find/createPolymorphicJoinWherePlan.spec.js +0 -778
- package/dist/find/createPolymorphicJoinWherePlan.spec.js.map +0 -1
- package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.spec.js +0 -91
- package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.spec.js.map +0 -1
- package/dist/postgres/query/postgresUnaccent.spec.js +0 -71
- package/dist/postgres/query/postgresUnaccent.spec.js.map +0 -1
- package/dist/queries/buildOperatorConstraint.spec.js +0 -348
- package/dist/queries/buildOperatorConstraint.spec.js.map +0 -1
- package/dist/queries/validateOperatorHandlers.spec.js +0 -142
- package/dist/queries/validateOperatorHandlers.spec.js.map +0 -1
- package/dist/schema/buildRawSchema.spec.js +0 -290
- package/dist/schema/buildRawSchema.spec.js.map +0 -1
- package/dist/updateOne.spec.js +0 -84
- package/dist/updateOne.spec.js.map +0 -1
- package/dist/upsertRow/conditionalUpdate.spec.js +0 -61
- package/dist/upsertRow/conditionalUpdate.spec.js.map +0 -1
- package/dist/upsertRow/handleUpsertError.spec.js +0 -42
- package/dist/upsertRow/handleUpsertError.spec.js.map +0 -1
- package/dist/utilities/checkTruncatedIdentifiers.spec.js +0 -301
- package/dist/utilities/checkTruncatedIdentifiers.spec.js.map +0 -1
- package/dist/utilities/isValidStringID.spec.js +0 -15
- package/dist/utilities/isValidStringID.spec.js.map +0 -1
- package/dist/utilities/validateIdentifierLength.spec.js +0 -19
- package/dist/utilities/validateIdentifierLength.spec.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/find/buildPolymorphicJoinWhere.spec.ts"],"sourcesContent":["import type { Client } from '@libsql/client'\nimport type { FlattenedField, Where } from 'payload'\n\nimport { createClient } from '@libsql/client'\nimport { like, notLike } from 'drizzle-orm'\nimport { drizzle } from 'drizzle-orm/libsql'\nimport { integer, sqliteTable, text } from 'drizzle-orm/sqlite-core'\nimport { afterAll, describe, expect, it, vi } from 'vitest'\n\nimport type { DrizzleAdapter, DrizzleOperandTransformHandler } from '../types.js'\nimport type { PolymorphicJoinWherePlan } from './createPolymorphicJoinWherePlan.js'\n\nimport { operatorMap } from '../queries/operatorMap.js'\nimport { createJSONQuery } from '../sqlite/createJSONQuery/index.js'\nimport { buildPolymorphicJoinWhere } from './buildPolymorphicJoinWhere.js'\n\nconst articlesTable = sqliteTable('join_articles', {\n id: integer('id').primaryKey(),\n parent: integer('parent_id'),\n score: integer('score'),\n title: text('title'),\n})\n\nconst notesTable = sqliteTable('join_notes', {\n id: integer('id').primaryKey(),\n parent: integer('parent_id'),\n title: text('title'),\n})\n\nconst client: Client = createClient({ url: 'file::memory:' })\nconst db = drizzle(client, { schema: { articlesTable, notesTable } })\nconst textField = { name: 'title', type: 'text' } as FlattenedField\nconst numberField = { name: 'score', type: 'number' } as FlattenedField\nconst hasManySelectField = {\n hasMany: true,\n name: 'tags',\n options: ['available', 'reviewed'],\n type: 'select',\n} as FlattenedField\n\nconst adapter = {\n createJSONQuery,\n drizzle: db,\n idType: 'serial',\n name: 'sqlite',\n operatorHandlers: [],\n operators: {\n ...operatorMap,\n contains: like,\n like,\n not_like: notLike,\n },\n payload: { collections: {} },\n tableNameMap: new Map([\n ['articles_tags', 'join_articles_tags'],\n ['notes_tags', 'join_notes_tags'],\n ]),\n tables: {\n join_articles: articlesTable,\n join_notes: notesTable,\n },\n} as unknown as DrizzleAdapter\n\nconst scalarPlan = ({\n collections = ['articles'],\n columnPath,\n field = textField,\n schemaPath = columnPath,\n}: {\n collections?: string[]\n columnPath: string\n field?: FlattenedField\n schemaPath?: string\n}): PolymorphicJoinWherePlan =>\n new Map([\n [\n schemaPath,\n {\n columnPath,\n fieldsByCollection: new Map(\n collections.map((collection) => [\n collection,\n { field, isUUID: false, type: 'scalar' as const },\n ]),\n ),\n schemaPath,\n type: 'scalar',\n },\n ],\n ])\n\nconst hasManySelectPlan = (\n collections = ['articles'],\n schemaPath = 'tags',\n): PolymorphicJoinWherePlan =>\n new Map([\n [\n schemaPath,\n {\n columnPath: schemaPath.replaceAll('.', '_'),\n fieldsByCollection: new Map(\n collections.map((collection) => [\n collection,\n { field: hasManySelectField, type: 'hasManySelect' as const },\n ]),\n ),\n schemaPath,\n type: 'hasManySelect',\n },\n ],\n ])\n\nconst renderWhere = ({\n collection = 'articles',\n table = articlesTable,\n where,\n wherePlan,\n}: {\n collection?: string\n table?: typeof articlesTable | typeof notesTable\n where: Where\n wherePlan: PolymorphicJoinWherePlan\n}) => {\n const condition = buildPolymorphicJoinWhere({\n adapter,\n collection,\n table,\n where,\n wherePlan,\n })\n\n return db.select({ id: table.id }).from(table).where(condition).toSQL()\n}\n\nafterAll(() => client.close())\n\ndescribe('buildPolymorphicJoinWhere', () => {\n it('builds scalar comparisons and preserves nested AND and OR groups', () => {\n const wherePlan = scalarPlan({ columnPath: 'title', collections: ['articles', 'notes'] })\n const query = renderWhere({\n where: {\n AND: [\n { title: { equals: 'available' } },\n { OR: [{ title: { equals: 'reviewed' } }, { title: { equals: 'published' } }] },\n ],\n },\n wherePlan,\n })\n\n expect(query.sql).toContain('where (\"join_articles\".\"title\" = ? and')\n expect(query.sql).toContain('or')\n expect(query.params).toEqual(['available', 'reviewed', 'published'])\n })\n\n it('treats a numeric like comparison as equality', () => {\n const query = renderWhere({\n where: { score: { like: '5' } },\n wherePlan: scalarPlan({ columnPath: 'score', field: numberField }),\n })\n\n expect(query.sql).toContain('\"join_articles\".\"score\" = ?')\n expect(query.params).toEqual([5])\n })\n\n it('uses SQL NULL for a scalar field that is absent from the current collection', () => {\n const query = renderWhere({\n collection: 'notes',\n table: notesTable,\n where: { score: { exists: false } },\n wherePlan: scalarPlan({ columnPath: 'score', collections: ['articles'], field: numberField }),\n })\n\n expect(query.sql).toContain('where null is null')\n expect(query.params).toEqual([])\n })\n\n it.each([\n ['exists', { exists: 'false' }, 'where null is null', []],\n ['in', { in: '1,2' }, 'where null in (?, ?)', [1, 2]],\n ] as const)(\n 'normalizes a REST %s value when a scalar field is absent from the current collection',\n (_operator, constraint, expectedSQL, expectedParams) => {\n const query = renderWhere({\n collection: 'notes',\n table: notesTable,\n where: { score: constraint } as unknown as Where,\n wherePlan: scalarPlan({\n columnPath: 'score',\n collections: ['articles'],\n field: numberField,\n }),\n })\n\n expect(query.sql).toContain(expectedSQL)\n expect(query.params).toEqual(expectedParams)\n },\n )\n\n it('keeps contains wildcard handling when a scalar field is absent', () => {\n const query = renderWhere({\n collection: 'notes',\n table: notesTable,\n where: { score: { contains: '5' } },\n wherePlan: scalarPlan({ columnPath: 'score', collections: ['articles'], field: numberField }),\n })\n\n expect(query.sql).toContain('where null like ?')\n expect(query.params).toEqual(['%5%'])\n })\n\n it('compares relationTo with the current collection slug', () => {\n const wherePlan: PolymorphicJoinWherePlan = new Map([\n [\n 'relationTo',\n {\n columnPath: 'relationTo',\n fieldsByCollection: new Map(),\n schemaPath: 'relationTo',\n type: 'scalar',\n },\n ],\n ])\n const query = renderWhere({\n collection: 'notes',\n table: notesTable,\n where: { relationTo: { equals: 'notes' } },\n wherePlan,\n })\n\n expect(query.sql).toContain('where ? = ?')\n expect(query.params).toEqual(['notes', 'notes'])\n })\n\n it.each([\n ['exists', { exists: 'false' }, 'where ? is null', ['notes']],\n ['in', { in: 'articles,notes' }, 'where ? in (?, ?)', ['notes', 'articles', 'notes']],\n ] as const)(\n 'normalizes a REST %s value for relationTo',\n (_operator, constraint, expectedSQL, expectedParams) => {\n const wherePlan: PolymorphicJoinWherePlan = new Map([\n [\n 'relationTo',\n {\n columnPath: 'relationTo',\n fieldsByCollection: new Map(),\n schemaPath: 'relationTo',\n type: 'scalar',\n },\n ],\n ])\n const query = renderWhere({\n collection: 'notes',\n table: notesTable,\n where: { relationTo: constraint } as unknown as Where,\n wherePlan,\n })\n\n expect(query.sql).toContain(expectedSQL)\n expect(query.params).toEqual(expectedParams)\n },\n )\n\n it.each([\n ['equals null', { title: { equals: null } }, '\"join_articles\".\"title\" is null', []],\n ['not_equals null', { title: { not_equals: null } }, '\"join_articles\".\"title\" is not null', []],\n [\n 'not_equals a value',\n { title: { not_equals: 'restricted' } },\n '\"join_articles\".\"title\" is null or \"join_articles\".\"title\" <> ?',\n ['restricted'],\n ],\n [\n 'in values including null',\n { title: { in: ['available', null] } },\n '\"join_articles\".\"title\" is null or \"join_articles\".\"title\" in (?)',\n ['available'],\n ],\n ] as const)('keeps null semantics for %s', (_description, where, expectedSQL, expectedParams) => {\n const query = renderWhere({\n where: where as unknown as Where,\n wherePlan: scalarPlan({ columnPath: 'title' }),\n })\n\n expect(query.sql).toContain(expectedSQL)\n expect(query.params).toEqual(expectedParams)\n })\n\n it('requires every word in a scalar like comparison', () => {\n const query = renderWhere({\n where: { title: { like: 'available child' } },\n wherePlan: scalarPlan({ columnPath: 'title' }),\n })\n\n expect(query.sql).toContain('\"join_articles\".\"title\" like ? and')\n expect(query.params).toEqual(['%available%', '%child%'])\n })\n\n it('applies configured operator handlers to scalar comparisons', () => {\n const transformOperands = vi.fn(({ column, value }) => ({\n column,\n value: `handled-${String(value)}`,\n }))\n const handler: DrizzleOperandTransformHandler = {\n name: 'prefix-value',\n operators: ['equals'],\n transformOperands,\n }\n const adapterWithHandler = {\n ...adapter,\n operatorHandlers: [handler],\n } as DrizzleAdapter\n const condition = buildPolymorphicJoinWhere({\n adapter: adapterWithHandler,\n collection: 'articles',\n table: articlesTable,\n where: { title: { equals: 'available' } },\n wherePlan: scalarPlan({ columnPath: 'title' }),\n })\n const query = db.select({ id: articlesTable.id }).from(articlesTable).where(condition).toSQL()\n\n expect(transformOperands).toHaveBeenCalledWith(\n expect.objectContaining({ path: 'title', resolvedOperator: 'equals', storage: 'column' }),\n )\n expect(query.params).toEqual(['handled-available'])\n })\n\n it('queries a has-many select through its value table', () => {\n const query = renderWhere({\n where: { tags: { contains: 'available' } },\n wherePlan: hasManySelectPlan(),\n })\n\n expect(query.sql).toContain('json_group_array(join_articles_tags.value)')\n expect(query.sql).toContain(\"value = 'available'\")\n })\n\n it.each([\n [\n 'a REST exists value',\n { exists: 'false' },\n ['NOT EXISTS (SELECT 1 FROM json_each(', 'AS tags_alias_0)'],\n ],\n [\n 'a comma-delimited REST in value',\n { in: 'available,reviewed' },\n [\"tags_alias_0.value = 'available'\", ' OR ', \"tags_alias_0.value = 'reviewed'\"],\n ],\n ] as const)('normalizes %s for has-many selects', (_description, constraint, fragments) => {\n const query = renderWhere({\n where: { tags: constraint } as unknown as Where,\n wherePlan: hasManySelectPlan(),\n })\n\n for (const fragment of fragments) {\n expect(query.sql).toContain(fragment)\n }\n })\n\n it.each([\n ['without a schema', undefined],\n ['with a schema', 'content'],\n ] as const)(\n 'rejects a missing has-many select value table mapping %s',\n (_description, schemaName) => {\n const adapterWithoutValueTable = {\n ...adapter,\n schemaName,\n tableNameMap: new Map(),\n } as unknown as DrizzleAdapter\n\n expect(() =>\n buildPolymorphicJoinWhere({\n adapter: adapterWithoutValueTable,\n collection: 'articles',\n table: articlesTable,\n where: { tags: { equals: 'available' } },\n wherePlan: hasManySelectPlan(),\n }),\n ).toThrow('Polymorphic join collection \"articles\" has no value table for \"tags\"')\n },\n )\n\n it('uses an empty JSON array when a has-many select is absent from this collection', () => {\n const query = renderWhere({\n collection: 'notes',\n table: notesTable,\n where: { tags: { exists: false } },\n wherePlan: hasManySelectPlan(['articles']),\n })\n\n expect(query.sql).toContain(\"json_each('[]')\")\n expect(query.sql).not.toContain('join_notes_tags')\n })\n\n it('builds a false condition for an empty has-many in comparison', () => {\n const query = renderWhere({\n where: { tags: { in: [] } },\n wherePlan: hasManySelectPlan(),\n })\n\n expect(query.sql).toContain('where false')\n })\n\n it('builds a false condition for an empty scalar in comparison', () => {\n const query = renderWhere({\n where: { title: { in: [] } },\n wherePlan: scalarPlan({ columnPath: 'title' }),\n })\n\n expect(query.sql).toContain('where false')\n })\n\n it.each([\n [\n 'a scalar in value that cannot be normalized',\n { title: { in: true } },\n scalarPlan({ columnPath: 'title' }),\n ],\n [\n 'an undefined scalar in value',\n { title: { in: undefined } },\n scalarPlan({ columnPath: 'title' }),\n ],\n [\n 'a has-many select in value that cannot be normalized',\n { tags: { in: true } },\n hasManySelectPlan(),\n ],\n ] as const)('rejects %s', (_description, where, wherePlan) => {\n expect(() =>\n renderWhere({\n where: where as unknown as Where,\n wherePlan,\n }),\n ).toThrow(Object.keys(where)[0] === 'tags' ? 'tags.in' : 'title.in')\n })\n\n it.each(['AND', 'OR'] as const)(\n 'rejects a value that cannot be normalized inside an %s group',\n (booleanOperator) => {\n expect(() =>\n renderWhere({\n where: {\n [booleanOperator]: [{ title: { in: true } }, { title: { equals: 'available' } }],\n } as unknown as Where,\n wherePlan: scalarPlan({ columnPath: 'title' }),\n }),\n ).toThrow('title.in')\n },\n )\n\n it.each([\n ['equals', { equals: 'available' }, [\"tags_alias_0.value = 'available'\"]],\n ['exists', { exists: true }, ['EXISTS (SELECT 1 FROM json_each(', 'AS tags_alias_0)']],\n [\n 'in',\n { in: ['available', 'reviewed'] },\n [\"tags_alias_0.value = 'available'\", ' OR ', \"tags_alias_0.value = 'reviewed'\"],\n ],\n ['like', { like: 'avail' }, [\"tags_alias_0.value like '%avail%'\"]],\n ] as const)(\n 'supports the %s operator for has-many selects',\n (_operator, constraint, expectedSQLFragments) => {\n const query = renderWhere({\n where: { tags: constraint } as unknown as Where,\n wherePlan: hasManySelectPlan(),\n })\n\n expect(query.sql).toContain('join_articles_tags')\n for (const expectedSQLFragment of expectedSQLFragments) {\n expect(query.sql).toContain(expectedSQLFragment)\n }\n expect(query.params).toEqual([])\n },\n )\n\n it('accepts a string $raw constraint', () => {\n const query = renderWhere({\n where: { title: { $raw: 'length(title) > 3' } } as unknown as Where,\n wherePlan: scalarPlan({ columnPath: 'title' }),\n })\n\n expect(query.sql).toContain('where length(title) > 3')\n })\n\n it.each([\n [\n 'an invalid path plan',\n { title: { equals: 'available' } },\n new Map([\n [\n 'title',\n {\n columnPath: 'title',\n fieldsByCollection: new Map(),\n schemaPath: 'title',\n type: 'invalid' as const,\n },\n ],\n ]),\n 'title.equals',\n ],\n ['a missing path plan', { title: { equals: 'available' } }, new Map(), 'title'],\n [\n 'an unsupported has-many operator',\n { tags: { not_equals: 'available' } },\n hasManySelectPlan(),\n 'tags.not_equals',\n ],\n [\n 'an unknown scalar operator',\n { title: { near: 'available' } },\n scalarPlan({ columnPath: 'title' }),\n 'title.near',\n ],\n [\n 'a non-string $raw value',\n { title: { $raw: 1 } },\n scalarPlan({ columnPath: 'title' }),\n 'title.$raw',\n ],\n ] as const)('rejects %s', (_description, where, wherePlan, errorPath) => {\n expect(() =>\n buildPolymorphicJoinWhere({\n adapter,\n collection: 'articles',\n table: articlesTable,\n where: where as unknown as Where,\n wherePlan: wherePlan as PolymorphicJoinWherePlan,\n }),\n ).toThrow(errorPath)\n })\n\n it('returns no condition for empty boolean groups', () => {\n expect(\n buildPolymorphicJoinWhere({\n adapter,\n collection: 'articles',\n table: articlesTable,\n where: { AND: [], OR: [] },\n wherePlan: new Map(),\n }),\n ).toBeUndefined()\n })\n\n it.each(['AND', 'OR'] as const)('rejects a malformed %s group', (operator) => {\n expect(() =>\n buildPolymorphicJoinWhere({\n adapter,\n collection: 'articles',\n table: articlesTable,\n where: { [operator]: 'not-an-array' } as unknown as Where,\n wherePlan: new Map(),\n }),\n ).toThrow(operator)\n })\n})\n"],"names":["createClient","like","notLike","drizzle","integer","sqliteTable","text","afterAll","describe","expect","it","vi","operatorMap","createJSONQuery","buildPolymorphicJoinWhere","articlesTable","id","primaryKey","parent","score","title","notesTable","client","url","db","schema","textField","name","type","numberField","hasManySelectField","hasMany","options","adapter","idType","operatorHandlers","operators","contains","not_like","payload","collections","tableNameMap","Map","tables","join_articles","join_notes","scalarPlan","columnPath","field","schemaPath","fieldsByCollection","map","collection","isUUID","hasManySelectPlan","replaceAll","renderWhere","table","where","wherePlan","condition","select","from","toSQL","close","query","AND","equals","OR","sql","toContain","params","toEqual","exists","each","in","_operator","constraint","expectedSQL","expectedParams","relationTo","not_equals","_description","transformOperands","fn","column","value","String","handler","adapterWithHandler","toHaveBeenCalledWith","objectContaining","path","resolvedOperator","storage","tags","fragments","fragment","undefined","schemaName","adapterWithoutValueTable","toThrow","not","Object","keys","booleanOperator","expectedSQLFragments","expectedSQLFragment","$raw","near","errorPath","toBeUndefined","operator"],"mappings":"AAGA,SAASA,YAAY,QAAQ,iBAAgB;AAC7C,SAASC,IAAI,EAAEC,OAAO,QAAQ,cAAa;AAC3C,SAASC,OAAO,QAAQ,qBAAoB;AAC5C,SAASC,OAAO,EAAEC,WAAW,EAAEC,IAAI,QAAQ,0BAAyB;AACpE,SAASC,QAAQ,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,EAAEC,EAAE,QAAQ,SAAQ;AAK3D,SAASC,WAAW,QAAQ,4BAA2B;AACvD,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,yBAAyB,QAAQ,iCAAgC;AAE1E,MAAMC,gBAAgBV,YAAY,iBAAiB;IACjDW,IAAIZ,QAAQ,MAAMa,UAAU;IAC5BC,QAAQd,QAAQ;IAChBe,OAAOf,QAAQ;IACfgB,OAAOd,KAAK;AACd;AAEA,MAAMe,aAAahB,YAAY,cAAc;IAC3CW,IAAIZ,QAAQ,MAAMa,UAAU;IAC5BC,QAAQd,QAAQ;IAChBgB,OAAOd,KAAK;AACd;AAEA,MAAMgB,SAAiBtB,aAAa;IAAEuB,KAAK;AAAgB;AAC3D,MAAMC,KAAKrB,QAAQmB,QAAQ;IAAEG,QAAQ;QAAEV;QAAeM;IAAW;AAAE;AACnE,MAAMK,YAAY;IAAEC,MAAM;IAASC,MAAM;AAAO;AAChD,MAAMC,cAAc;IAAEF,MAAM;IAASC,MAAM;AAAS;AACpD,MAAME,qBAAqB;IACzBC,SAAS;IACTJ,MAAM;IACNK,SAAS;QAAC;QAAa;KAAW;IAClCJ,MAAM;AACR;AAEA,MAAMK,UAAU;IACdpB;IACAV,SAASqB;IACTU,QAAQ;IACRP,MAAM;IACNQ,kBAAkB,EAAE;IACpBC,WAAW;QACT,GAAGxB,WAAW;QACdyB,UAAUpC;QACVA;QACAqC,UAAUpC;IACZ;IACAqC,SAAS;QAAEC,aAAa,CAAC;IAAE;IAC3BC,cAAc,IAAIC,IAAI;QACpB;YAAC;YAAiB;SAAqB;QACvC;YAAC;YAAc;SAAkB;KAClC;IACDC,QAAQ;QACNC,eAAe7B;QACf8B,YAAYxB;IACd;AACF;AAEA,MAAMyB,aAAa,CAAC,EAClBN,cAAc;IAAC;CAAW,EAC1BO,UAAU,EACVC,QAAQtB,SAAS,EACjBuB,aAAaF,UAAU,EAMxB,GACC,IAAIL,IAAI;QACN;YACEO;YACA;gBACEF;gBACAG,oBAAoB,IAAIR,IACtBF,YAAYW,GAAG,CAAC,CAACC,aAAe;wBAC9BA;wBACA;4BAAEJ;4BAAOK,QAAQ;4BAAOzB,MAAM;wBAAkB;qBACjD;gBAEHqB;gBACArB,MAAM;YACR;SACD;KACF;AAEH,MAAM0B,oBAAoB,CACxBd,cAAc;IAAC;CAAW,EAC1BS,aAAa,MAAM,GAEnB,IAAIP,IAAI;QACN;YACEO;YACA;gBACEF,YAAYE,WAAWM,UAAU,CAAC,KAAK;gBACvCL,oBAAoB,IAAIR,IACtBF,YAAYW,GAAG,CAAC,CAACC,aAAe;wBAC9BA;wBACA;4BAAEJ,OAAOlB;4BAAoBF,MAAM;wBAAyB;qBAC7D;gBAEHqB;gBACArB,MAAM;YACR;SACD;KACF;AAEH,MAAM4B,cAAc,CAAC,EACnBJ,aAAa,UAAU,EACvBK,QAAQ1C,aAAa,EACrB2C,KAAK,EACLC,SAAS,EAMV;IACC,MAAMC,YAAY9C,0BAA0B;QAC1CmB;QACAmB;QACAK;QACAC;QACAC;IACF;IAEA,OAAOnC,GAAGqC,MAAM,CAAC;QAAE7C,IAAIyC,MAAMzC,EAAE;IAAC,GAAG8C,IAAI,CAACL,OAAOC,KAAK,CAACE,WAAWG,KAAK;AACvE;AAEAxD,SAAS,IAAMe,OAAO0C,KAAK;AAE3BxD,SAAS,6BAA6B;IACpCE,GAAG,oEAAoE;QACrE,MAAMiD,YAAYb,WAAW;YAAEC,YAAY;YAASP,aAAa;gBAAC;gBAAY;aAAQ;QAAC;QACvF,MAAMyB,QAAQT,YAAY;YACxBE,OAAO;gBACLQ,KAAK;oBACH;wBAAE9C,OAAO;4BAAE+C,QAAQ;wBAAY;oBAAE;oBACjC;wBAAEC,IAAI;4BAAC;gCAAEhD,OAAO;oCAAE+C,QAAQ;gCAAW;4BAAE;4BAAG;gCAAE/C,OAAO;oCAAE+C,QAAQ;gCAAY;4BAAE;yBAAE;oBAAC;iBAC/E;YACH;YACAR;QACF;QAEAlD,OAAOwD,MAAMI,GAAG,EAAEC,SAAS,CAAC;QAC5B7D,OAAOwD,MAAMI,GAAG,EAAEC,SAAS,CAAC;QAC5B7D,OAAOwD,MAAMM,MAAM,EAAEC,OAAO,CAAC;YAAC;YAAa;YAAY;SAAY;IACrE;IAEA9D,GAAG,gDAAgD;QACjD,MAAMuD,QAAQT,YAAY;YACxBE,OAAO;gBAAEvC,OAAO;oBAAElB,MAAM;gBAAI;YAAE;YAC9B0D,WAAWb,WAAW;gBAAEC,YAAY;gBAASC,OAAOnB;YAAY;QAClE;QAEApB,OAAOwD,MAAMI,GAAG,EAAEC,SAAS,CAAC;QAC5B7D,OAAOwD,MAAMM,MAAM,EAAEC,OAAO,CAAC;YAAC;SAAE;IAClC;IAEA9D,GAAG,+EAA+E;QAChF,MAAMuD,QAAQT,YAAY;YACxBJ,YAAY;YACZK,OAAOpC;YACPqC,OAAO;gBAAEvC,OAAO;oBAAEsD,QAAQ;gBAAM;YAAE;YAClCd,WAAWb,WAAW;gBAAEC,YAAY;gBAASP,aAAa;oBAAC;iBAAW;gBAAEQ,OAAOnB;YAAY;QAC7F;QAEApB,OAAOwD,MAAMI,GAAG,EAAEC,SAAS,CAAC;QAC5B7D,OAAOwD,MAAMM,MAAM,EAAEC,OAAO,CAAC,EAAE;IACjC;IAEA9D,GAAGgE,IAAI,CAAC;QACN;YAAC;YAAU;gBAAED,QAAQ;YAAQ;YAAG;YAAsB,EAAE;SAAC;QACzD;YAAC;YAAM;gBAAEE,IAAI;YAAM;YAAG;YAAwB;gBAAC;gBAAG;aAAE;SAAC;KACtD,EACC,wFACA,CAACC,WAAWC,YAAYC,aAAaC;QACnC,MAAMd,QAAQT,YAAY;YACxBJ,YAAY;YACZK,OAAOpC;YACPqC,OAAO;gBAAEvC,OAAO0D;YAAW;YAC3BlB,WAAWb,WAAW;gBACpBC,YAAY;gBACZP,aAAa;oBAAC;iBAAW;gBACzBQ,OAAOnB;YACT;QACF;QAEApB,OAAOwD,MAAMI,GAAG,EAAEC,SAAS,CAACQ;QAC5BrE,OAAOwD,MAAMM,MAAM,EAAEC,OAAO,CAACO;IAC/B;IAGFrE,GAAG,kEAAkE;QACnE,MAAMuD,QAAQT,YAAY;YACxBJ,YAAY;YACZK,OAAOpC;YACPqC,OAAO;gBAAEvC,OAAO;oBAAEkB,UAAU;gBAAI;YAAE;YAClCsB,WAAWb,WAAW;gBAAEC,YAAY;gBAASP,aAAa;oBAAC;iBAAW;gBAAEQ,OAAOnB;YAAY;QAC7F;QAEApB,OAAOwD,MAAMI,GAAG,EAAEC,SAAS,CAAC;QAC5B7D,OAAOwD,MAAMM,MAAM,EAAEC,OAAO,CAAC;YAAC;SAAM;IACtC;IAEA9D,GAAG,wDAAwD;QACzD,MAAMiD,YAAsC,IAAIjB,IAAI;YAClD;gBACE;gBACA;oBACEK,YAAY;oBACZG,oBAAoB,IAAIR;oBACxBO,YAAY;oBACZrB,MAAM;gBACR;aACD;SACF;QACD,MAAMqC,QAAQT,YAAY;YACxBJ,YAAY;YACZK,OAAOpC;YACPqC,OAAO;gBAAEsB,YAAY;oBAAEb,QAAQ;gBAAQ;YAAE;YACzCR;QACF;QAEAlD,OAAOwD,MAAMI,GAAG,EAAEC,SAAS,CAAC;QAC5B7D,OAAOwD,MAAMM,MAAM,EAAEC,OAAO,CAAC;YAAC;YAAS;SAAQ;IACjD;IAEA9D,GAAGgE,IAAI,CAAC;QACN;YAAC;YAAU;gBAAED,QAAQ;YAAQ;YAAG;YAAmB;gBAAC;aAAQ;SAAC;QAC7D;YAAC;YAAM;gBAAEE,IAAI;YAAiB;YAAG;YAAqB;gBAAC;gBAAS;gBAAY;aAAQ;SAAC;KACtF,EACC,6CACA,CAACC,WAAWC,YAAYC,aAAaC;QACnC,MAAMpB,YAAsC,IAAIjB,IAAI;YAClD;gBACE;gBACA;oBACEK,YAAY;oBACZG,oBAAoB,IAAIR;oBACxBO,YAAY;oBACZrB,MAAM;gBACR;aACD;SACF;QACD,MAAMqC,QAAQT,YAAY;YACxBJ,YAAY;YACZK,OAAOpC;YACPqC,OAAO;gBAAEsB,YAAYH;YAAW;YAChClB;QACF;QAEAlD,OAAOwD,MAAMI,GAAG,EAAEC,SAAS,CAACQ;QAC5BrE,OAAOwD,MAAMM,MAAM,EAAEC,OAAO,CAACO;IAC/B;IAGFrE,GAAGgE,IAAI,CAAC;QACN;YAAC;YAAe;gBAAEtD,OAAO;oBAAE+C,QAAQ;gBAAK;YAAE;YAAG;YAAmC,EAAE;SAAC;QACnF;YAAC;YAAmB;gBAAE/C,OAAO;oBAAE6D,YAAY;gBAAK;YAAE;YAAG;YAAuC,EAAE;SAAC;QAC/F;YACE;YACA;gBAAE7D,OAAO;oBAAE6D,YAAY;gBAAa;YAAE;YACtC;YACA;gBAAC;aAAa;SACf;QACD;YACE;YACA;gBAAE7D,OAAO;oBAAEuD,IAAI;wBAAC;wBAAa;qBAAK;gBAAC;YAAE;YACrC;YACA;gBAAC;aAAY;SACd;KACF,EAAW,+BAA+B,CAACO,cAAcxB,OAAOoB,aAAaC;QAC5E,MAAMd,QAAQT,YAAY;YACxBE,OAAOA;YACPC,WAAWb,WAAW;gBAAEC,YAAY;YAAQ;QAC9C;QAEAtC,OAAOwD,MAAMI,GAAG,EAAEC,SAAS,CAACQ;QAC5BrE,OAAOwD,MAAMM,MAAM,EAAEC,OAAO,CAACO;IAC/B;IAEArE,GAAG,mDAAmD;QACpD,MAAMuD,QAAQT,YAAY;YACxBE,OAAO;gBAAEtC,OAAO;oBAAEnB,MAAM;gBAAkB;YAAE;YAC5C0D,WAAWb,WAAW;gBAAEC,YAAY;YAAQ;QAC9C;QAEAtC,OAAOwD,MAAMI,GAAG,EAAEC,SAAS,CAAC;QAC5B7D,OAAOwD,MAAMM,MAAM,EAAEC,OAAO,CAAC;YAAC;YAAe;SAAU;IACzD;IAEA9D,GAAG,8DAA8D;QAC/D,MAAMyE,oBAAoBxE,GAAGyE,EAAE,CAAC,CAAC,EAAEC,MAAM,EAAEC,KAAK,EAAE,GAAM,CAAA;gBACtDD;gBACAC,OAAO,CAAC,QAAQ,EAAEC,OAAOD,QAAQ;YACnC,CAAA;QACA,MAAME,UAA0C;YAC9C7D,MAAM;YACNS,WAAW;gBAAC;aAAS;YACrB+C;QACF;QACA,MAAMM,qBAAqB;YACzB,GAAGxD,OAAO;YACVE,kBAAkB;gBAACqD;aAAQ;QAC7B;QACA,MAAM5B,YAAY9C,0BAA0B;YAC1CmB,SAASwD;YACTrC,YAAY;YACZK,OAAO1C;YACP2C,OAAO;gBAAEtC,OAAO;oBAAE+C,QAAQ;gBAAY;YAAE;YACxCR,WAAWb,WAAW;gBAAEC,YAAY;YAAQ;QAC9C;QACA,MAAMkB,QAAQzC,GAAGqC,MAAM,CAAC;YAAE7C,IAAID,cAAcC,EAAE;QAAC,GAAG8C,IAAI,CAAC/C,eAAe2C,KAAK,CAACE,WAAWG,KAAK;QAE5FtD,OAAO0E,mBAAmBO,oBAAoB,CAC5CjF,OAAOkF,gBAAgB,CAAC;YAAEC,MAAM;YAASC,kBAAkB;YAAUC,SAAS;QAAS;QAEzFrF,OAAOwD,MAAMM,MAAM,EAAEC,OAAO,CAAC;YAAC;SAAoB;IACpD;IAEA9D,GAAG,qDAAqD;QACtD,MAAMuD,QAAQT,YAAY;YACxBE,OAAO;gBAAEqC,MAAM;oBAAE1D,UAAU;gBAAY;YAAE;YACzCsB,WAAWL;QACb;QAEA7C,OAAOwD,MAAMI,GAAG,EAAEC,SAAS,CAAC;QAC5B7D,OAAOwD,MAAMI,GAAG,EAAEC,SAAS,CAAC;IAC9B;IAEA5D,GAAGgE,IAAI,CAAC;QACN;YACE;YACA;gBAAED,QAAQ;YAAQ;YAClB;gBAAC;gBAAwC;aAAmB;SAC7D;QACD;YACE;YACA;gBAAEE,IAAI;YAAqB;YAC3B;gBAAC;gBAAoC;gBAAQ;aAAkC;SAChF;KACF,EAAW,sCAAsC,CAACO,cAAcL,YAAYmB;QAC3E,MAAM/B,QAAQT,YAAY;YACxBE,OAAO;gBAAEqC,MAAMlB;YAAW;YAC1BlB,WAAWL;QACb;QAEA,KAAK,MAAM2C,YAAYD,UAAW;YAChCvF,OAAOwD,MAAMI,GAAG,EAAEC,SAAS,CAAC2B;QAC9B;IACF;IAEAvF,GAAGgE,IAAI,CAAC;QACN;YAAC;YAAoBwB;SAAU;QAC/B;YAAC;YAAiB;SAAU;KAC7B,EACC,4DACA,CAAChB,cAAciB;QACb,MAAMC,2BAA2B;YAC/B,GAAGnE,OAAO;YACVkE;YACA1D,cAAc,IAAIC;QACpB;QAEAjC,OAAO,IACLK,0BAA0B;gBACxBmB,SAASmE;gBACThD,YAAY;gBACZK,OAAO1C;gBACP2C,OAAO;oBAAEqC,MAAM;wBAAE5B,QAAQ;oBAAY;gBAAE;gBACvCR,WAAWL;YACb,IACA+C,OAAO,CAAC;IACZ;IAGF3F,GAAG,kFAAkF;QACnF,MAAMuD,QAAQT,YAAY;YACxBJ,YAAY;YACZK,OAAOpC;YACPqC,OAAO;gBAAEqC,MAAM;oBAAEtB,QAAQ;gBAAM;YAAE;YACjCd,WAAWL,kBAAkB;gBAAC;aAAW;QAC3C;QAEA7C,OAAOwD,MAAMI,GAAG,EAAEC,SAAS,CAAC;QAC5B7D,OAAOwD,MAAMI,GAAG,EAAEiC,GAAG,CAAChC,SAAS,CAAC;IAClC;IAEA5D,GAAG,gEAAgE;QACjE,MAAMuD,QAAQT,YAAY;YACxBE,OAAO;gBAAEqC,MAAM;oBAAEpB,IAAI,EAAE;gBAAC;YAAE;YAC1BhB,WAAWL;QACb;QAEA7C,OAAOwD,MAAMI,GAAG,EAAEC,SAAS,CAAC;IAC9B;IAEA5D,GAAG,8DAA8D;QAC/D,MAAMuD,QAAQT,YAAY;YACxBE,OAAO;gBAAEtC,OAAO;oBAAEuD,IAAI,EAAE;gBAAC;YAAE;YAC3BhB,WAAWb,WAAW;gBAAEC,YAAY;YAAQ;QAC9C;QAEAtC,OAAOwD,MAAMI,GAAG,EAAEC,SAAS,CAAC;IAC9B;IAEA5D,GAAGgE,IAAI,CAAC;QACN;YACE;YACA;gBAAEtD,OAAO;oBAAEuD,IAAI;gBAAK;YAAE;YACtB7B,WAAW;gBAAEC,YAAY;YAAQ;SAClC;QACD;YACE;YACA;gBAAE3B,OAAO;oBAAEuD,IAAIuB;gBAAU;YAAE;YAC3BpD,WAAW;gBAAEC,YAAY;YAAQ;SAClC;QACD;YACE;YACA;gBAAEgD,MAAM;oBAAEpB,IAAI;gBAAK;YAAE;YACrBrB;SACD;KACF,EAAW,cAAc,CAAC4B,cAAcxB,OAAOC;QAC9ClD,OAAO,IACL+C,YAAY;gBACVE,OAAOA;gBACPC;YACF,IACA0C,OAAO,CAACE,OAAOC,IAAI,CAAC9C,MAAM,CAAC,EAAE,KAAK,SAAS,YAAY;IAC3D;IAEAhD,GAAGgE,IAAI,CAAC;QAAC;QAAO;KAAK,EACnB,gEACA,CAAC+B;QACChG,OAAO,IACL+C,YAAY;gBACVE,OAAO;oBACL,CAAC+C,gBAAgB,EAAE;wBAAC;4BAAErF,OAAO;gCAAEuD,IAAI;4BAAK;wBAAE;wBAAG;4BAAEvD,OAAO;gCAAE+C,QAAQ;4BAAY;wBAAE;qBAAE;gBAClF;gBACAR,WAAWb,WAAW;oBAAEC,YAAY;gBAAQ;YAC9C,IACAsD,OAAO,CAAC;IACZ;IAGF3F,GAAGgE,IAAI,CAAC;QACN;YAAC;YAAU;gBAAEP,QAAQ;YAAY;YAAG;gBAAC;aAAmC;SAAC;QACzE;YAAC;YAAU;gBAAEM,QAAQ;YAAK;YAAG;gBAAC;gBAAoC;aAAmB;SAAC;QACtF;YACE;YACA;gBAAEE,IAAI;oBAAC;oBAAa;iBAAW;YAAC;YAChC;gBAAC;gBAAoC;gBAAQ;aAAkC;SAChF;QACD;YAAC;YAAQ;gBAAE1E,MAAM;YAAQ;YAAG;gBAAC;aAAoC;SAAC;KACnE,EACC,iDACA,CAAC2E,WAAWC,YAAY6B;QACtB,MAAMzC,QAAQT,YAAY;YACxBE,OAAO;gBAAEqC,MAAMlB;YAAW;YAC1BlB,WAAWL;QACb;QAEA7C,OAAOwD,MAAMI,GAAG,EAAEC,SAAS,CAAC;QAC5B,KAAK,MAAMqC,uBAAuBD,qBAAsB;YACtDjG,OAAOwD,MAAMI,GAAG,EAAEC,SAAS,CAACqC;QAC9B;QACAlG,OAAOwD,MAAMM,MAAM,EAAEC,OAAO,CAAC,EAAE;IACjC;IAGF9D,GAAG,oCAAoC;QACrC,MAAMuD,QAAQT,YAAY;YACxBE,OAAO;gBAAEtC,OAAO;oBAAEwF,MAAM;gBAAoB;YAAE;YAC9CjD,WAAWb,WAAW;gBAAEC,YAAY;YAAQ;QAC9C;QAEAtC,OAAOwD,MAAMI,GAAG,EAAEC,SAAS,CAAC;IAC9B;IAEA5D,GAAGgE,IAAI,CAAC;QACN;YACE;YACA;gBAAEtD,OAAO;oBAAE+C,QAAQ;gBAAY;YAAE;YACjC,IAAIzB,IAAI;gBACN;oBACE;oBACA;wBACEK,YAAY;wBACZG,oBAAoB,IAAIR;wBACxBO,YAAY;wBACZrB,MAAM;oBACR;iBACD;aACF;YACD;SACD;QACD;YAAC;YAAuB;gBAAER,OAAO;oBAAE+C,QAAQ;gBAAY;YAAE;YAAG,IAAIzB;YAAO;SAAQ;QAC/E;YACE;YACA;gBAAEqD,MAAM;oBAAEd,YAAY;gBAAY;YAAE;YACpC3B;YACA;SACD;QACD;YACE;YACA;gBAAElC,OAAO;oBAAEyF,MAAM;gBAAY;YAAE;YAC/B/D,WAAW;gBAAEC,YAAY;YAAQ;YACjC;SACD;QACD;YACE;YACA;gBAAE3B,OAAO;oBAAEwF,MAAM;gBAAE;YAAE;YACrB9D,WAAW;gBAAEC,YAAY;YAAQ;YACjC;SACD;KACF,EAAW,cAAc,CAACmC,cAAcxB,OAAOC,WAAWmD;QACzDrG,OAAO,IACLK,0BAA0B;gBACxBmB;gBACAmB,YAAY;gBACZK,OAAO1C;gBACP2C,OAAOA;gBACPC,WAAWA;YACb,IACA0C,OAAO,CAACS;IACZ;IAEApG,GAAG,iDAAiD;QAClDD,OACEK,0BAA0B;YACxBmB;YACAmB,YAAY;YACZK,OAAO1C;YACP2C,OAAO;gBAAEQ,KAAK,EAAE;gBAAEE,IAAI,EAAE;YAAC;YACzBT,WAAW,IAAIjB;QACjB,IACAqE,aAAa;IACjB;IAEArG,GAAGgE,IAAI,CAAC;QAAC;QAAO;KAAK,EAAW,gCAAgC,CAACsC;QAC/DvG,OAAO,IACLK,0BAA0B;gBACxBmB;gBACAmB,YAAY;gBACZK,OAAO1C;gBACP2C,OAAO;oBAAE,CAACsD,SAAS,EAAE;gBAAe;gBACpCrD,WAAW,IAAIjB;YACjB,IACA2D,OAAO,CAACW;IACZ;AACF"}
|