@zenstackhq/runtime 2.3.3 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/cross/index.d.mts CHANGED
@@ -159,6 +159,10 @@ type ModelMeta = {
159
159
  * Name of model that backs the `auth()` function
160
160
  */
161
161
  authModel?: string;
162
+ /**
163
+ * Optional map from full names to shortened names, used for extra fields/relations generated by ZenStack
164
+ */
165
+ shortNameMap?: Record<string, string>;
162
166
  };
163
167
  /**
164
168
  * Resolves a model field to its metadata. Returns undefined if not found.
package/cross/index.d.ts CHANGED
@@ -159,6 +159,10 @@ type ModelMeta = {
159
159
  * Name of model that backs the `auth()` function
160
160
  */
161
161
  authModel?: string;
162
+ /**
163
+ * Optional map from full names to shortened names, used for extra fields/relations generated by ZenStack
164
+ */
165
+ shortNameMap?: Record<string, string>;
162
166
  };
163
167
  /**
164
168
  * Resolves a model field to its metadata. Returns undefined if not found.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cross/index.ts","../../src/cross/clone.ts","../../src/cross/model-data-visitor.ts","../../src/cross/model-meta.ts","../../src/cross/mutator.ts","../../src/cross/nested-read-visitor.ts","../../src/cross/types.ts","../../src/cross/utils.ts","../../src/cross/nested-write-visitor.ts","../../src/cross/query-analyzer.ts"],"sourcesContent":["export * from './clone';\nexport * from './model-data-visitor';\nexport * from './model-meta';\nexport * from './mutator';\nexport * from './nested-read-visitor';\nexport * from './nested-write-visitor';\nexport * from './query-analyzer';\nexport * from './types';\nexport * from './utils';\n","import { isPlainObject } from 'is-plain-object';\n\n/**\n * Clones the given object. Only arrays and plain objects are cloned. Other values are returned as is.\n */\nexport function clone<T>(value: T): T {\n if (Array.isArray(value)) {\n return value.map((v) => clone(v)) as T;\n }\n\n if (typeof value === 'object') {\n if (!value || !isPlainObject(value)) {\n return value;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result: any = {};\n for (const key of Object.keys(value)) {\n result[key] = clone(value[key as keyof T]);\n }\n return result;\n }\n\n return value;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { resolveField, type ModelMeta } from '.';\n\n/**\n * Callback for @see ModelDataVisitor.\n */\nexport type ModelDataVisitorCallback = (model: string, data: any, scalarData: any) => void;\n\n/**\n * Visitor that traverses data returned by a Prisma query.\n */\nexport class ModelDataVisitor {\n constructor(private modelMeta: ModelMeta) {}\n\n /**\n * Visits the given model data.\n */\n visit(model: string, data: any, callback: ModelDataVisitorCallback) {\n if (!data || typeof data !== 'object') {\n return;\n }\n\n const scalarData: Record<string, unknown> = {};\n const subTasks: Array<{ model: string; data: any }> = [];\n\n for (const [k, v] of Object.entries(data)) {\n const field = resolveField(this.modelMeta, model, k);\n if (field && field.isDataModel) {\n if (field.isArray && Array.isArray(v)) {\n subTasks.push(...v.map((item) => ({ model: field.type, data: item })));\n } else {\n subTasks.push({ model: field.type, data: v });\n }\n } else {\n scalarData[k] = v;\n }\n }\n\n callback(model, data, scalarData);\n subTasks.forEach(({ model, data }) => this.visit(model, data, callback));\n }\n}\n","import { lowerCaseFirst } from 'lower-case-first';\n\n/**\n * Runtime information of a data model or field attribute\n */\nexport type RuntimeAttribute = {\n /**\n * Attribute name\n */\n name: string;\n\n /**\n * Attribute arguments\n */\n args: Array<{ name?: string; value: unknown }>;\n};\n\n/**\n * Function for computing default value for a field\n */\nexport type FieldDefaultValueProvider = (userContext: unknown) => unknown;\n\n/**\n * Runtime information of a data model field\n */\nexport type FieldInfo = {\n /**\n * Field name\n */\n name: string;\n\n /**\n * Field type name\n */\n type: string;\n\n /**\n * If the field is an ID field or part of a multi-field ID\n */\n isId?: boolean;\n\n /**\n * If the field type is a data model (or an optional/array of data model)\n */\n isDataModel?: boolean;\n\n /**\n * If the field is an array\n */\n isArray?: boolean;\n\n /**\n * If the field is optional\n */\n isOptional?: boolean;\n\n /**\n * Attributes on the field\n */\n attributes?: RuntimeAttribute[];\n\n /**\n * If the field is a relation field, the field name of the reverse side of the relation\n */\n backLink?: string;\n\n /**\n * If the field is the owner side of a relation\n */\n isRelationOwner?: boolean;\n\n /**\n * If the field is a foreign key field\n */\n isForeignKey?: boolean;\n\n /**\n * If the field is a foreign key field, the field name of the corresponding relation field.\n * Only available on foreign key fields.\n */\n relationField?: string;\n\n /**\n * Mapping from foreign key field names to relation field names.\n * Only available on relation fields.\n */\n foreignKeyMapping?: Record<string, string>;\n\n /**\n * Model from which the field is inherited\n */\n inheritedFrom?: string;\n\n /**\n * A function that provides a default value for the field\n */\n defaultValueProvider?: FieldDefaultValueProvider;\n\n /**\n * If the field is an auto-increment field\n */\n isAutoIncrement?: boolean;\n};\n\n/**\n * Metadata for a model-level unique constraint\n * e.g.: @@unique([a, b])\n */\nexport type UniqueConstraint = { name: string; fields: string[] };\n\n/**\n * Metadata for a data model\n */\nexport type ModelInfo = {\n /**\n * Model name\n */\n name: string;\n\n /**\n * Base types (not including abstract base models).\n */\n baseTypes?: string[];\n\n /**\n * Fields\n */\n fields: Record<string, FieldInfo>;\n\n /**\n * Unique constraints\n */\n uniqueConstraints?: Record<string, UniqueConstraint>;\n\n /**\n * Attributes on the model\n */\n attributes?: RuntimeAttribute[];\n\n /**\n * Discriminator field name\n */\n discriminator?: string;\n};\n\n/**\n * ZModel data model metadata\n */\nexport type ModelMeta = {\n /**\n * Data models\n */\n models: Record<string, ModelInfo>;\n\n /**\n * Mapping from model name to models that will be deleted because of it due to cascade delete\n */\n deleteCascade?: Record<string, string[]>;\n\n /**\n * Name of model that backs the `auth()` function\n */\n authModel?: string;\n};\n\n/**\n * Resolves a model field to its metadata. Returns undefined if not found.\n */\nexport function resolveField(modelMeta: ModelMeta, model: string, field: string): FieldInfo | undefined {\n return modelMeta.models[lowerCaseFirst(model)]?.fields?.[field];\n}\n\n/**\n * Resolves a model field to its metadata. Throws an error if not found.\n */\nexport function requireField(modelMeta: ModelMeta, model: string, field: string) {\n const f = resolveField(modelMeta, model, field);\n if (!f) {\n throw new Error(`Field ${model}.${field} cannot be resolved`);\n }\n return f;\n}\n\n/**\n * Gets all fields of a model.\n */\nexport function getFields(modelMeta: ModelMeta, model: string) {\n return modelMeta.models[lowerCaseFirst(model)]?.fields;\n}\n\n/**\n * Gets unique constraints of a model.\n */\nexport function getUniqueConstraints(modelMeta: ModelMeta, model: string) {\n return modelMeta.models[lowerCaseFirst(model)]?.uniqueConstraints;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { v4 as uuid } from 'uuid';\nimport {\n ModelDataVisitor,\n NestedWriteVisitor,\n enumerate,\n getFields,\n getIdFields,\n type ModelMeta,\n type PrismaWriteActionType,\n} from '.';\nimport { clone } from './clone';\n\n/**\n * Tries to apply a mutation to a query result.\n *\n * @param queryModel the model of the query\n * @param queryOp the operation of the query\n * @param queryData the result data of the query\n * @param mutationModel the model of the mutation\n * @param mutationOp the operation of the mutation\n * @param mutationArgs the arguments of the mutation\n * @param modelMeta the model metadata\n * @param logging whether to log the mutation application\n * @returns the updated query data if the mutation is applicable, otherwise undefined\n */\nexport async function applyMutation(\n queryModel: string,\n queryOp: string,\n queryData: any,\n mutationModel: string,\n mutationOp: PrismaWriteActionType,\n mutationArgs: any,\n modelMeta: ModelMeta,\n logging: boolean\n) {\n if (['count', 'aggregate', 'groupBy'].includes(queryOp)) {\n // only findXXX results are applicable\n return undefined;\n }\n\n let resultData = queryData;\n let updated = false;\n\n const visitor = new NestedWriteVisitor(modelMeta, {\n create: (model, args) => {\n if (model === queryModel) {\n const r = createMutate(queryModel, queryOp, resultData, args, modelMeta, logging);\n if (r) {\n resultData = r;\n updated = true;\n }\n }\n },\n\n createMany: (model, args) => {\n if (model === queryModel && args?.data) {\n for (const oneArg of enumerate(args.data)) {\n const r = createMutate(queryModel, queryOp, resultData, oneArg, modelMeta, logging);\n if (r) {\n resultData = r;\n updated = true;\n }\n }\n }\n },\n\n update: (model, args) => {\n if (model === queryModel) {\n const r = updateMutate(queryModel, resultData, model, args, modelMeta, logging);\n if (r) {\n resultData = r;\n updated = true;\n }\n }\n },\n\n delete: (model, args) => {\n if (model === queryModel) {\n const r = deleteMutate(queryModel, resultData, model, args, modelMeta, logging);\n if (r) {\n resultData = r;\n updated = true;\n }\n }\n },\n });\n\n await visitor.visit(mutationModel, mutationOp, mutationArgs);\n\n return updated ? resultData : undefined;\n}\n\nfunction createMutate(\n queryModel: string,\n queryOp: string,\n currentData: any,\n newData: any,\n modelMeta: ModelMeta,\n logging: boolean\n) {\n if (!newData) {\n return undefined;\n }\n\n if (queryOp !== 'findMany') {\n return undefined;\n }\n\n const modelFields = getFields(modelMeta, queryModel);\n if (!modelFields) {\n return undefined;\n }\n\n const insert: any = {};\n const newDataFields = Object.keys(newData);\n\n Object.entries(modelFields).forEach(([name, field]) => {\n if (field.isDataModel) {\n // only include scalar fields\n return;\n }\n if (newDataFields.includes(name)) {\n insert[name] = newData[name];\n } else {\n const defaultAttr = field.attributes?.find((attr) => attr.name === '@default');\n if (field.type === 'DateTime') {\n // default value for DateTime field\n if (defaultAttr || field.attributes?.some((attr) => attr.name === '@updatedAt')) {\n insert[name] = new Date();\n }\n } else if (defaultAttr?.args?.[0]?.value !== undefined) {\n // other default value\n insert[name] = defaultAttr.args[0].value;\n }\n }\n });\n\n // add temp id value\n const idFields = getIdFields(modelMeta, queryModel, false);\n idFields.forEach((f) => {\n if (insert[f.name] === undefined) {\n if (f.type === 'Int' || f.type === 'BigInt') {\n const currMax = Array.isArray(currentData)\n ? Math.max(\n ...[...currentData].map((item) => {\n const idv = parseInt(item[f.name]);\n return isNaN(idv) ? 0 : idv;\n })\n )\n : 0;\n insert[f.name] = currMax + 1;\n } else {\n insert[f.name] = uuid();\n }\n }\n });\n\n insert.$optimistic = true;\n\n if (logging) {\n console.log(`Optimistic create for ${queryModel}:`, insert);\n }\n return [insert, ...(Array.isArray(currentData) ? currentData : [])];\n}\n\nfunction updateMutate(\n queryModel: string,\n currentData: any,\n mutateModel: string,\n mutateArgs: any,\n modelMeta: ModelMeta,\n logging: boolean\n) {\n if (!currentData) {\n return undefined;\n }\n\n if (!mutateArgs?.where || !mutateArgs?.data) {\n return undefined;\n }\n\n let updated = false;\n\n for (const item of enumerate(currentData)) {\n const visitor = new ModelDataVisitor(modelMeta);\n visitor.visit(queryModel, item, (model, _data, scalarData) => {\n if (model === mutateModel && idFieldsMatch(model, scalarData, mutateArgs.where, modelMeta)) {\n Object.keys(item).forEach((k) => {\n if (mutateArgs.data[k] !== undefined) {\n item[k] = mutateArgs.data[k];\n }\n });\n item.$optimistic = true;\n updated = true;\n if (logging) {\n console.log(`Optimistic update for ${queryModel}:`, item);\n }\n }\n });\n }\n\n return updated ? clone(currentData) /* ensures new object identity */ : undefined;\n}\n\nfunction deleteMutate(\n queryModel: string,\n currentData: any,\n mutateModel: string,\n mutateArgs: any,\n modelMeta: ModelMeta,\n logging: boolean\n) {\n // TODO: handle mutation of nested reads?\n\n if (!currentData || !mutateArgs) {\n return undefined;\n }\n\n if (queryModel !== mutateModel) {\n return undefined;\n }\n\n let updated = false;\n let result = currentData;\n\n if (Array.isArray(currentData)) {\n for (const item of currentData) {\n if (idFieldsMatch(mutateModel, item, mutateArgs, modelMeta)) {\n result = (result as unknown[]).filter((x) => x !== item);\n updated = true;\n if (logging) {\n console.log(`Optimistic delete for ${queryModel}:`, item);\n }\n }\n }\n } else {\n if (idFieldsMatch(mutateModel, currentData, mutateArgs, modelMeta)) {\n result = null;\n updated = true;\n if (logging) {\n console.log(`Optimistic delete for ${queryModel}:`, currentData);\n }\n }\n }\n\n return updated ? result : undefined;\n}\n\nfunction idFieldsMatch(model: string, x: any, y: any, modelMeta: ModelMeta) {\n if (!x || !y || typeof x !== 'object' || typeof y !== 'object') {\n return false;\n }\n const idFields = getIdFields(modelMeta, model, false);\n if (idFields.length === 0) {\n return false;\n }\n return idFields.every((f) => x[f.name] === y[f.name]);\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { resolveField, type FieldInfo, type ModelMeta } from './model-meta';\n\nexport type NestedReadVisitorCallback = {\n field?: (\n model: string,\n field: FieldInfo | undefined,\n kind: 'include' | 'select' | undefined,\n args: unknown\n ) => void | boolean;\n};\n\n/**\n * Visitor for nested read payload.\n */\nexport class NestedReadVisitor {\n constructor(private readonly modelMeta: ModelMeta, private readonly callback: NestedReadVisitorCallback) {}\n\n doVisit(model: string, field: FieldInfo | undefined, kind: 'include' | 'select' | undefined, args: unknown) {\n if (this.callback.field) {\n const r = this.callback.field(model, field, kind, args);\n if (r === false) {\n return;\n }\n }\n\n if (!args || typeof args !== 'object') {\n return;\n }\n\n let selectInclude: any;\n let nextKind: 'select' | 'include' | undefined;\n if ((args as any).select) {\n selectInclude = (args as any).select;\n nextKind = 'select';\n } else if ((args as any).include) {\n selectInclude = (args as any).include;\n nextKind = 'include';\n }\n\n if (selectInclude && typeof selectInclude === 'object') {\n for (const [k, v] of Object.entries(selectInclude)) {\n if (k === '_count' && typeof v === 'object' && v) {\n // recurse into { _count: { ... } }\n this.doVisit(model, field, kind, v);\n } else {\n const field = resolveField(this.modelMeta, model, k);\n if (field) {\n this.doVisit(field.type, field, nextKind, v);\n }\n }\n }\n }\n }\n\n visit(model: string, args: unknown) {\n this.doVisit(model, undefined, undefined, args);\n }\n}\n","/**\n * Prisma write operation kinds\n */\nexport const PrismaWriteActions = [\n 'create',\n 'createMany',\n 'connectOrCreate',\n 'update',\n 'updateMany',\n 'upsert',\n 'connect',\n 'disconnect',\n 'set',\n 'delete',\n 'deleteMany',\n] as const;\n\n/**\n * Prisma write operation kinds\n */\nexport type PrismaWriteActionType = (typeof PrismaWriteActions)[number];\n\n/**\n * Maybe promise\n */\nexport type MaybePromise<T> = T | Promise<T> | PromiseLike<T>;\n","import { lowerCaseFirst } from 'lower-case-first';\nimport { requireField, type ModelInfo, type ModelMeta } from '.';\n\n/**\n * Gets field names in a data model entity, filtering out internal fields.\n */\nexport function getModelFields(data: object) {\n return data ? Object.keys(data) : [];\n}\n\n/**\n * Array or scalar\n */\nexport type Enumerable<T> = T | Array<T>;\n\n/**\n * Uniformly enumerates an array or scalar.\n */\nexport function enumerate<T>(x: Enumerable<T>) {\n if (x === null || x === undefined) {\n return [];\n } else if (Array.isArray(x)) {\n return x;\n } else {\n return [x];\n }\n}\n\n/**\n * Zip two arrays or scalars.\n */\nexport function zip<T1, T2>(x: Enumerable<T1>, y: Enumerable<T2>): Array<[T1, T2]> {\n if (Array.isArray(x)) {\n if (!Array.isArray(y)) {\n throw new Error('x and y should be both array or both scalar');\n }\n if (x.length !== y.length) {\n throw new Error('x and y should have the same length');\n }\n return x.map((_, i) => [x[i], y[i]] as [T1, T2]);\n } else {\n if (Array.isArray(y)) {\n throw new Error('x and y should be both array or both scalar');\n }\n return [[x, y]];\n }\n}\n\nexport function getIdFields(modelMeta: ModelMeta, model: string, throwIfNotFound = false) {\n const uniqueConstraints = modelMeta.models[lowerCaseFirst(model)]?.uniqueConstraints ?? {};\n\n const entries = Object.values(uniqueConstraints);\n if (entries.length === 0) {\n if (throwIfNotFound) {\n throw new Error(`Model ${model} does not have any id field`);\n }\n return [];\n }\n\n return entries[0].fields.map((f) => requireField(modelMeta, model, f));\n}\n\nexport function getModelInfo<Throw extends boolean = false>(\n modelMeta: ModelMeta,\n model: string,\n throwIfNotFound: Throw = false as Throw\n): Throw extends true ? ModelInfo : ModelInfo | undefined {\n const info = modelMeta.models[lowerCaseFirst(model)];\n if (!info && throwIfNotFound) {\n throw new Error(`Unable to load info for ${model}`);\n }\n return info;\n}\n\nexport function isDelegateModel(modelMeta: ModelMeta, model: string) {\n return !!getModelInfo(modelMeta, model)?.attributes?.some((attr) => attr.name === '@@delegate');\n}\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { FieldInfo, ModelMeta } from './model-meta';\nimport { resolveField } from './model-meta';\nimport { MaybePromise, PrismaWriteActionType, PrismaWriteActions } from './types';\nimport { getModelFields } from './utils';\n\ntype NestingPathItem = { field?: FieldInfo; model: string; where: any; unique: boolean };\n\n/**\n * Context for visiting\n */\nexport type NestedWriteVisitorContext = {\n /**\n * Parent data, can be used to replace fields\n */\n parent: any;\n\n /**\n * Current field, undefined if toplevel\n */\n field?: FieldInfo;\n\n /**\n * A top-down path of all nested update conditions and corresponding field till now\n */\n nestingPath: NestingPathItem[];\n};\n\n/**\n * NestedWriteVisitor's callback actions. A call back function should return true or void to indicate\n * that the visitor should continue traversing its children, or false to stop. It can also return an object\n * to let the visitor traverse it instead of its original children.\n */\nexport type NestedWriterVisitorCallback = {\n create?: (model: string, data: any, context: NestedWriteVisitorContext) => MaybePromise<boolean | object | void>;\n\n createMany?: (\n model: string,\n args: { data: any; skipDuplicates?: boolean },\n context: NestedWriteVisitorContext\n ) => MaybePromise<boolean | object | void>;\n\n connectOrCreate?: (\n model: string,\n args: { where: object; create: any },\n context: NestedWriteVisitorContext\n ) => MaybePromise<boolean | object | void>;\n\n connect?: (\n model: string,\n args: object,\n context: NestedWriteVisitorContext\n ) => MaybePromise<boolean | object | void>;\n\n disconnect?: (\n model: string,\n args: object,\n context: NestedWriteVisitorContext\n ) => MaybePromise<boolean | object | void>;\n\n set?: (model: string, args: object, context: NestedWriteVisitorContext) => MaybePromise<boolean | object | void>;\n\n update?: (model: string, args: object, context: NestedWriteVisitorContext) => MaybePromise<boolean | object | void>;\n\n updateMany?: (\n model: string,\n args: { where?: object; data: any },\n context: NestedWriteVisitorContext\n ) => MaybePromise<boolean | object | void>;\n\n upsert?: (\n model: string,\n args: { where: object; create: any; update: any },\n context: NestedWriteVisitorContext\n ) => MaybePromise<boolean | object | void>;\n\n delete?: (\n model: string,\n args: object | boolean,\n context: NestedWriteVisitorContext\n ) => MaybePromise<boolean | object | void>;\n\n deleteMany?: (\n model: string,\n args: any | object,\n context: NestedWriteVisitorContext\n ) => MaybePromise<boolean | object | void>;\n\n field?: (\n field: FieldInfo,\n action: PrismaWriteActionType,\n data: any,\n context: NestedWriteVisitorContext\n ) => MaybePromise<void>;\n};\n\n/**\n * Recursive visitor for nested write (create/update) payload.\n */\nexport class NestedWriteVisitor {\n constructor(private readonly modelMeta: ModelMeta, private readonly callback: NestedWriterVisitorCallback) {}\n\n private isPrismaWriteAction(value: string): value is PrismaWriteActionType {\n return PrismaWriteActions.includes(value as PrismaWriteActionType);\n }\n\n /**\n * Start visiting\n *\n * @see NestedWriterVisitorCallback\n */\n async visit(model: string, action: PrismaWriteActionType, args: any): Promise<void> {\n if (!args) {\n return;\n }\n\n let topData = args;\n\n switch (action) {\n // create has its data wrapped in 'data' field\n case 'create':\n topData = topData.data;\n break;\n\n case 'delete':\n case 'deleteMany':\n topData = topData.where;\n break;\n }\n\n await this.doVisit(model, action, topData, undefined, undefined, []);\n }\n\n private async doVisit(\n model: string,\n action: PrismaWriteActionType,\n data: any,\n parent: any,\n field: FieldInfo | undefined,\n nestingPath: NestingPathItem[]\n ): Promise<void> {\n if (!data) {\n return;\n }\n\n const toplevel = field == undefined;\n\n const context = { parent, field, nestingPath: [...nestingPath] };\n const pushNewContext = (field: FieldInfo | undefined, model: string, where: any, unique = false) => {\n return { ...context, nestingPath: [...context.nestingPath, { field, model, where, unique }] };\n };\n\n // visit payload\n switch (action) {\n case 'create':\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, {});\n let callbackResult: any;\n if (this.callback.create) {\n callbackResult = await this.callback.create(model, item, newContext);\n }\n if (callbackResult !== false) {\n const subPayload = typeof callbackResult === 'object' ? callbackResult : item;\n await this.visitSubPayload(model, action, subPayload, newContext.nestingPath);\n }\n }\n break;\n\n case 'createMany':\n if (data) {\n const newContext = pushNewContext(field, model, {});\n let callbackResult: any;\n if (this.callback.createMany) {\n callbackResult = await this.callback.createMany(model, data, newContext);\n }\n if (callbackResult !== false) {\n const subPayload = typeof callbackResult === 'object' ? callbackResult : data.data;\n await this.visitSubPayload(model, action, subPayload, newContext.nestingPath);\n }\n }\n break;\n\n case 'connectOrCreate':\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, item.where);\n let callbackResult: any;\n if (this.callback.connectOrCreate) {\n callbackResult = await this.callback.connectOrCreate(model, item, newContext);\n }\n if (callbackResult !== false) {\n const subPayload = typeof callbackResult === 'object' ? callbackResult : item.create;\n await this.visitSubPayload(model, action, subPayload, newContext.nestingPath);\n }\n }\n break;\n\n case 'connect':\n if (this.callback.connect) {\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, item, true);\n await this.callback.connect(model, item, newContext);\n }\n }\n break;\n\n case 'disconnect':\n // disconnect has two forms:\n // if relation is to-many, the payload is a unique filter object\n // if relation is to-one, the payload can only be boolean `true`\n if (this.callback.disconnect) {\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, item, typeof item === 'object');\n await this.callback.disconnect(model, item, newContext);\n }\n }\n break;\n\n case 'set':\n if (this.callback.set) {\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, item, true);\n await this.callback.set(model, item, newContext);\n }\n }\n break;\n\n case 'update':\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, item.where);\n let callbackResult: any;\n if (this.callback.update) {\n callbackResult = await this.callback.update(model, item, newContext);\n }\n if (callbackResult !== false) {\n const subPayload =\n typeof callbackResult === 'object'\n ? callbackResult\n : typeof item.data === 'object'\n ? item.data\n : item;\n await this.visitSubPayload(model, action, subPayload, newContext.nestingPath);\n }\n }\n break;\n\n case 'updateMany':\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, item.where);\n let callbackResult: any;\n if (this.callback.updateMany) {\n callbackResult = await this.callback.updateMany(model, item, newContext);\n }\n if (callbackResult !== false) {\n const subPayload = typeof callbackResult === 'object' ? callbackResult : item;\n await this.visitSubPayload(model, action, subPayload, newContext.nestingPath);\n }\n }\n break;\n\n case 'upsert': {\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, item.where);\n let callbackResult: any;\n if (this.callback.upsert) {\n callbackResult = await this.callback.upsert(model, item, newContext);\n }\n if (callbackResult !== false) {\n if (typeof callbackResult === 'object') {\n await this.visitSubPayload(model, action, callbackResult, newContext.nestingPath);\n } else {\n await this.visitSubPayload(model, action, item.create, newContext.nestingPath);\n await this.visitSubPayload(model, action, item.update, newContext.nestingPath);\n }\n }\n }\n break;\n }\n\n case 'delete': {\n if (this.callback.delete) {\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, toplevel ? item.where : item);\n await this.callback.delete(model, item, newContext);\n }\n }\n break;\n }\n\n case 'deleteMany':\n if (this.callback.deleteMany) {\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, toplevel ? item.where : item);\n await this.callback.deleteMany(model, item, newContext);\n }\n }\n break;\n\n default: {\n throw new Error(`unhandled action type ${action}`);\n }\n }\n }\n\n private async visitSubPayload(\n model: string,\n action: PrismaWriteActionType,\n payload: any,\n nestingPath: NestingPathItem[]\n ) {\n for (const field of getModelFields(payload)) {\n const fieldInfo = resolveField(this.modelMeta, model, field);\n if (!fieldInfo) {\n continue;\n }\n\n if (fieldInfo.isDataModel) {\n if (payload[field]) {\n // recurse into nested payloads\n for (const [subAction, subData] of Object.entries<any>(payload[field])) {\n if (this.isPrismaWriteAction(subAction) && subData) {\n await this.doVisit(fieldInfo.type, subAction, subData, payload[field], fieldInfo, [\n ...nestingPath,\n ]);\n }\n }\n }\n } else {\n // visit plain field\n if (this.callback.field) {\n await this.callback.field(fieldInfo, action, payload[field], {\n parent: payload,\n nestingPath,\n field: fieldInfo,\n });\n }\n }\n }\n }\n\n // enumerate a (possible) array in reverse order, so that the enumeration\n // callback can safely delete the current item\n private *enumerateReverse(data: any) {\n if (Array.isArray(data)) {\n for (let i = data.length - 1; i >= 0; i--) {\n yield data[i];\n }\n } else {\n yield data;\n }\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { lowerCaseFirst } from 'lower-case-first';\nimport type { ModelMeta } from './model-meta';\nimport { NestedReadVisitor } from './nested-read-visitor';\nimport { NestedWriteVisitor } from './nested-write-visitor';\nimport type { PrismaWriteActionType } from './types';\nimport { getModelInfo } from './utils';\n\n/**\n * Gets models read (including nested ones) given a query args.\n * @param model\n * @param targetModels\n * @param modelMeta\n * @param args\n * @returns\n */\nexport function getReadModels(model: string, modelMeta: ModelMeta, args: any) {\n const result = new Set<string>();\n result.add(model);\n const visitor = new NestedReadVisitor(modelMeta, {\n field: (model) => {\n result.add(model);\n return true;\n },\n });\n visitor.visit(model, args);\n return [...result];\n}\n\n/**\n * Gets mutated models (including nested ones) given a mutation args.\n */\nexport async function getMutatedModels(\n model: string,\n operation: PrismaWriteActionType,\n mutationArgs: any,\n modelMeta: ModelMeta\n) {\n const result = new Set<string>();\n result.add(model);\n\n if (mutationArgs) {\n const addModel = (model: string) => void result.add(model);\n\n // add models that are cascaded deleted recursively\n const addCascades = (model: string) => {\n const cascades = new Set<string>();\n const visited = new Set<string>();\n collectDeleteCascades(model, modelMeta, cascades, visited);\n cascades.forEach((m) => addModel(m));\n };\n\n const visitor = new NestedWriteVisitor(modelMeta, {\n create: addModel,\n createMany: addModel,\n connectOrCreate: addModel,\n connect: addModel,\n disconnect: addModel,\n set: addModel,\n update: addModel,\n updateMany: addModel,\n upsert: addModel,\n delete: (model) => {\n addModel(model);\n addCascades(model);\n },\n deleteMany: (model) => {\n addModel(model);\n addCascades(model);\n },\n });\n await visitor.visit(model, operation, mutationArgs);\n }\n\n // include delegate base models recursively\n result.forEach((m) => {\n getBaseRecursively(m, modelMeta, result);\n });\n\n return [...result];\n}\n\nfunction collectDeleteCascades(model: string, modelMeta: ModelMeta, result: Set<string>, visited: Set<string>) {\n if (visited.has(model)) {\n // break circle\n return;\n }\n visited.add(model);\n\n const cascades = modelMeta.deleteCascade?.[lowerCaseFirst(model)];\n\n if (!cascades) {\n return;\n }\n\n cascades.forEach((m) => {\n result.add(m);\n collectDeleteCascades(m, modelMeta, result, visited);\n });\n}\n\nfunction getBaseRecursively(model: string, modelMeta: ModelMeta, result: Set<string>) {\n const bases = getModelInfo(modelMeta, model)?.baseTypes;\n if (bases) {\n bases.forEach((base) => {\n result.add(base);\n getBaseRecursively(base, modelMeta, result);\n });\n }\n}\n"],"mappings":"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","names":["model","data","uuid","field","import_lower_case_first","field","model","import_lower_case_first","model"]}
1
+ {"version":3,"sources":["../../src/cross/index.ts","../../src/cross/clone.ts","../../src/cross/model-data-visitor.ts","../../src/cross/model-meta.ts","../../src/cross/mutator.ts","../../src/cross/nested-read-visitor.ts","../../src/cross/types.ts","../../src/cross/utils.ts","../../src/cross/nested-write-visitor.ts","../../src/cross/query-analyzer.ts"],"sourcesContent":["export * from './clone';\nexport * from './model-data-visitor';\nexport * from './model-meta';\nexport * from './mutator';\nexport * from './nested-read-visitor';\nexport * from './nested-write-visitor';\nexport * from './query-analyzer';\nexport * from './types';\nexport * from './utils';\n","import { isPlainObject } from 'is-plain-object';\n\n/**\n * Clones the given object. Only arrays and plain objects are cloned. Other values are returned as is.\n */\nexport function clone<T>(value: T): T {\n if (Array.isArray(value)) {\n return value.map((v) => clone(v)) as T;\n }\n\n if (typeof value === 'object') {\n if (!value || !isPlainObject(value)) {\n return value;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result: any = {};\n for (const key of Object.keys(value)) {\n result[key] = clone(value[key as keyof T]);\n }\n return result;\n }\n\n return value;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { resolveField, type ModelMeta } from '.';\n\n/**\n * Callback for @see ModelDataVisitor.\n */\nexport type ModelDataVisitorCallback = (model: string, data: any, scalarData: any) => void;\n\n/**\n * Visitor that traverses data returned by a Prisma query.\n */\nexport class ModelDataVisitor {\n constructor(private modelMeta: ModelMeta) {}\n\n /**\n * Visits the given model data.\n */\n visit(model: string, data: any, callback: ModelDataVisitorCallback) {\n if (!data || typeof data !== 'object') {\n return;\n }\n\n const scalarData: Record<string, unknown> = {};\n const subTasks: Array<{ model: string; data: any }> = [];\n\n for (const [k, v] of Object.entries(data)) {\n const field = resolveField(this.modelMeta, model, k);\n if (field && field.isDataModel) {\n if (field.isArray && Array.isArray(v)) {\n subTasks.push(...v.map((item) => ({ model: field.type, data: item })));\n } else {\n subTasks.push({ model: field.type, data: v });\n }\n } else {\n scalarData[k] = v;\n }\n }\n\n callback(model, data, scalarData);\n subTasks.forEach(({ model, data }) => this.visit(model, data, callback));\n }\n}\n","import { lowerCaseFirst } from 'lower-case-first';\n\n/**\n * Runtime information of a data model or field attribute\n */\nexport type RuntimeAttribute = {\n /**\n * Attribute name\n */\n name: string;\n\n /**\n * Attribute arguments\n */\n args: Array<{ name?: string; value: unknown }>;\n};\n\n/**\n * Function for computing default value for a field\n */\nexport type FieldDefaultValueProvider = (userContext: unknown) => unknown;\n\n/**\n * Runtime information of a data model field\n */\nexport type FieldInfo = {\n /**\n * Field name\n */\n name: string;\n\n /**\n * Field type name\n */\n type: string;\n\n /**\n * If the field is an ID field or part of a multi-field ID\n */\n isId?: boolean;\n\n /**\n * If the field type is a data model (or an optional/array of data model)\n */\n isDataModel?: boolean;\n\n /**\n * If the field is an array\n */\n isArray?: boolean;\n\n /**\n * If the field is optional\n */\n isOptional?: boolean;\n\n /**\n * Attributes on the field\n */\n attributes?: RuntimeAttribute[];\n\n /**\n * If the field is a relation field, the field name of the reverse side of the relation\n */\n backLink?: string;\n\n /**\n * If the field is the owner side of a relation\n */\n isRelationOwner?: boolean;\n\n /**\n * If the field is a foreign key field\n */\n isForeignKey?: boolean;\n\n /**\n * If the field is a foreign key field, the field name of the corresponding relation field.\n * Only available on foreign key fields.\n */\n relationField?: string;\n\n /**\n * Mapping from foreign key field names to relation field names.\n * Only available on relation fields.\n */\n foreignKeyMapping?: Record<string, string>;\n\n /**\n * Model from which the field is inherited\n */\n inheritedFrom?: string;\n\n /**\n * A function that provides a default value for the field\n */\n defaultValueProvider?: FieldDefaultValueProvider;\n\n /**\n * If the field is an auto-increment field\n */\n isAutoIncrement?: boolean;\n};\n\n/**\n * Metadata for a model-level unique constraint\n * e.g.: @@unique([a, b])\n */\nexport type UniqueConstraint = { name: string; fields: string[] };\n\n/**\n * Metadata for a data model\n */\nexport type ModelInfo = {\n /**\n * Model name\n */\n name: string;\n\n /**\n * Base types (not including abstract base models).\n */\n baseTypes?: string[];\n\n /**\n * Fields\n */\n fields: Record<string, FieldInfo>;\n\n /**\n * Unique constraints\n */\n uniqueConstraints?: Record<string, UniqueConstraint>;\n\n /**\n * Attributes on the model\n */\n attributes?: RuntimeAttribute[];\n\n /**\n * Discriminator field name\n */\n discriminator?: string;\n};\n\n/**\n * ZModel data model metadata\n */\nexport type ModelMeta = {\n /**\n * Data models\n */\n models: Record<string, ModelInfo>;\n\n /**\n * Mapping from model name to models that will be deleted because of it due to cascade delete\n */\n deleteCascade?: Record<string, string[]>;\n\n /**\n * Name of model that backs the `auth()` function\n */\n authModel?: string;\n\n /**\n * Optional map from full names to shortened names, used for extra fields/relations generated by ZenStack\n */\n shortNameMap?: Record<string, string>;\n};\n\n/**\n * Resolves a model field to its metadata. Returns undefined if not found.\n */\nexport function resolveField(modelMeta: ModelMeta, model: string, field: string): FieldInfo | undefined {\n return modelMeta.models[lowerCaseFirst(model)]?.fields?.[field];\n}\n\n/**\n * Resolves a model field to its metadata. Throws an error if not found.\n */\nexport function requireField(modelMeta: ModelMeta, model: string, field: string) {\n const f = resolveField(modelMeta, model, field);\n if (!f) {\n throw new Error(`Field ${model}.${field} cannot be resolved`);\n }\n return f;\n}\n\n/**\n * Gets all fields of a model.\n */\nexport function getFields(modelMeta: ModelMeta, model: string) {\n return modelMeta.models[lowerCaseFirst(model)]?.fields;\n}\n\n/**\n * Gets unique constraints of a model.\n */\nexport function getUniqueConstraints(modelMeta: ModelMeta, model: string) {\n return modelMeta.models[lowerCaseFirst(model)]?.uniqueConstraints;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { v4 as uuid } from 'uuid';\nimport {\n ModelDataVisitor,\n NestedWriteVisitor,\n enumerate,\n getFields,\n getIdFields,\n type ModelMeta,\n type PrismaWriteActionType,\n} from '.';\nimport { clone } from './clone';\n\n/**\n * Tries to apply a mutation to a query result.\n *\n * @param queryModel the model of the query\n * @param queryOp the operation of the query\n * @param queryData the result data of the query\n * @param mutationModel the model of the mutation\n * @param mutationOp the operation of the mutation\n * @param mutationArgs the arguments of the mutation\n * @param modelMeta the model metadata\n * @param logging whether to log the mutation application\n * @returns the updated query data if the mutation is applicable, otherwise undefined\n */\nexport async function applyMutation(\n queryModel: string,\n queryOp: string,\n queryData: any,\n mutationModel: string,\n mutationOp: PrismaWriteActionType,\n mutationArgs: any,\n modelMeta: ModelMeta,\n logging: boolean\n) {\n if (['count', 'aggregate', 'groupBy'].includes(queryOp)) {\n // only findXXX results are applicable\n return undefined;\n }\n\n let resultData = queryData;\n let updated = false;\n\n const visitor = new NestedWriteVisitor(modelMeta, {\n create: (model, args) => {\n if (model === queryModel) {\n const r = createMutate(queryModel, queryOp, resultData, args, modelMeta, logging);\n if (r) {\n resultData = r;\n updated = true;\n }\n }\n },\n\n createMany: (model, args) => {\n if (model === queryModel && args?.data) {\n for (const oneArg of enumerate(args.data)) {\n const r = createMutate(queryModel, queryOp, resultData, oneArg, modelMeta, logging);\n if (r) {\n resultData = r;\n updated = true;\n }\n }\n }\n },\n\n update: (model, args) => {\n if (model === queryModel) {\n const r = updateMutate(queryModel, resultData, model, args, modelMeta, logging);\n if (r) {\n resultData = r;\n updated = true;\n }\n }\n },\n\n delete: (model, args) => {\n if (model === queryModel) {\n const r = deleteMutate(queryModel, resultData, model, args, modelMeta, logging);\n if (r) {\n resultData = r;\n updated = true;\n }\n }\n },\n });\n\n await visitor.visit(mutationModel, mutationOp, mutationArgs);\n\n return updated ? resultData : undefined;\n}\n\nfunction createMutate(\n queryModel: string,\n queryOp: string,\n currentData: any,\n newData: any,\n modelMeta: ModelMeta,\n logging: boolean\n) {\n if (!newData) {\n return undefined;\n }\n\n if (queryOp !== 'findMany') {\n return undefined;\n }\n\n const modelFields = getFields(modelMeta, queryModel);\n if (!modelFields) {\n return undefined;\n }\n\n const insert: any = {};\n const newDataFields = Object.keys(newData);\n\n Object.entries(modelFields).forEach(([name, field]) => {\n if (field.isDataModel) {\n // only include scalar fields\n return;\n }\n if (newDataFields.includes(name)) {\n insert[name] = newData[name];\n } else {\n const defaultAttr = field.attributes?.find((attr) => attr.name === '@default');\n if (field.type === 'DateTime') {\n // default value for DateTime field\n if (defaultAttr || field.attributes?.some((attr) => attr.name === '@updatedAt')) {\n insert[name] = new Date();\n }\n } else if (defaultAttr?.args?.[0]?.value !== undefined) {\n // other default value\n insert[name] = defaultAttr.args[0].value;\n }\n }\n });\n\n // add temp id value\n const idFields = getIdFields(modelMeta, queryModel, false);\n idFields.forEach((f) => {\n if (insert[f.name] === undefined) {\n if (f.type === 'Int' || f.type === 'BigInt') {\n const currMax = Array.isArray(currentData)\n ? Math.max(\n ...[...currentData].map((item) => {\n const idv = parseInt(item[f.name]);\n return isNaN(idv) ? 0 : idv;\n })\n )\n : 0;\n insert[f.name] = currMax + 1;\n } else {\n insert[f.name] = uuid();\n }\n }\n });\n\n insert.$optimistic = true;\n\n if (logging) {\n console.log(`Optimistic create for ${queryModel}:`, insert);\n }\n return [insert, ...(Array.isArray(currentData) ? currentData : [])];\n}\n\nfunction updateMutate(\n queryModel: string,\n currentData: any,\n mutateModel: string,\n mutateArgs: any,\n modelMeta: ModelMeta,\n logging: boolean\n) {\n if (!currentData) {\n return undefined;\n }\n\n if (!mutateArgs?.where || !mutateArgs?.data) {\n return undefined;\n }\n\n let updated = false;\n\n for (const item of enumerate(currentData)) {\n const visitor = new ModelDataVisitor(modelMeta);\n visitor.visit(queryModel, item, (model, _data, scalarData) => {\n if (model === mutateModel && idFieldsMatch(model, scalarData, mutateArgs.where, modelMeta)) {\n Object.keys(item).forEach((k) => {\n if (mutateArgs.data[k] !== undefined) {\n item[k] = mutateArgs.data[k];\n }\n });\n item.$optimistic = true;\n updated = true;\n if (logging) {\n console.log(`Optimistic update for ${queryModel}:`, item);\n }\n }\n });\n }\n\n return updated ? clone(currentData) /* ensures new object identity */ : undefined;\n}\n\nfunction deleteMutate(\n queryModel: string,\n currentData: any,\n mutateModel: string,\n mutateArgs: any,\n modelMeta: ModelMeta,\n logging: boolean\n) {\n // TODO: handle mutation of nested reads?\n\n if (!currentData || !mutateArgs) {\n return undefined;\n }\n\n if (queryModel !== mutateModel) {\n return undefined;\n }\n\n let updated = false;\n let result = currentData;\n\n if (Array.isArray(currentData)) {\n for (const item of currentData) {\n if (idFieldsMatch(mutateModel, item, mutateArgs, modelMeta)) {\n result = (result as unknown[]).filter((x) => x !== item);\n updated = true;\n if (logging) {\n console.log(`Optimistic delete for ${queryModel}:`, item);\n }\n }\n }\n } else {\n if (idFieldsMatch(mutateModel, currentData, mutateArgs, modelMeta)) {\n result = null;\n updated = true;\n if (logging) {\n console.log(`Optimistic delete for ${queryModel}:`, currentData);\n }\n }\n }\n\n return updated ? result : undefined;\n}\n\nfunction idFieldsMatch(model: string, x: any, y: any, modelMeta: ModelMeta) {\n if (!x || !y || typeof x !== 'object' || typeof y !== 'object') {\n return false;\n }\n const idFields = getIdFields(modelMeta, model, false);\n if (idFields.length === 0) {\n return false;\n }\n return idFields.every((f) => x[f.name] === y[f.name]);\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { resolveField, type FieldInfo, type ModelMeta } from './model-meta';\n\nexport type NestedReadVisitorCallback = {\n field?: (\n model: string,\n field: FieldInfo | undefined,\n kind: 'include' | 'select' | undefined,\n args: unknown\n ) => void | boolean;\n};\n\n/**\n * Visitor for nested read payload.\n */\nexport class NestedReadVisitor {\n constructor(private readonly modelMeta: ModelMeta, private readonly callback: NestedReadVisitorCallback) {}\n\n doVisit(model: string, field: FieldInfo | undefined, kind: 'include' | 'select' | undefined, args: unknown) {\n if (this.callback.field) {\n const r = this.callback.field(model, field, kind, args);\n if (r === false) {\n return;\n }\n }\n\n if (!args || typeof args !== 'object') {\n return;\n }\n\n let selectInclude: any;\n let nextKind: 'select' | 'include' | undefined;\n if ((args as any).select) {\n selectInclude = (args as any).select;\n nextKind = 'select';\n } else if ((args as any).include) {\n selectInclude = (args as any).include;\n nextKind = 'include';\n }\n\n if (selectInclude && typeof selectInclude === 'object') {\n for (const [k, v] of Object.entries(selectInclude)) {\n if (k === '_count' && typeof v === 'object' && v) {\n // recurse into { _count: { ... } }\n this.doVisit(model, field, kind, v);\n } else {\n const field = resolveField(this.modelMeta, model, k);\n if (field) {\n this.doVisit(field.type, field, nextKind, v);\n }\n }\n }\n }\n }\n\n visit(model: string, args: unknown) {\n this.doVisit(model, undefined, undefined, args);\n }\n}\n","/**\n * Prisma write operation kinds\n */\nexport const PrismaWriteActions = [\n 'create',\n 'createMany',\n 'connectOrCreate',\n 'update',\n 'updateMany',\n 'upsert',\n 'connect',\n 'disconnect',\n 'set',\n 'delete',\n 'deleteMany',\n] as const;\n\n/**\n * Prisma write operation kinds\n */\nexport type PrismaWriteActionType = (typeof PrismaWriteActions)[number];\n\n/**\n * Maybe promise\n */\nexport type MaybePromise<T> = T | Promise<T> | PromiseLike<T>;\n","import { lowerCaseFirst } from 'lower-case-first';\nimport { requireField, type ModelInfo, type ModelMeta } from '.';\n\n/**\n * Gets field names in a data model entity, filtering out internal fields.\n */\nexport function getModelFields(data: object) {\n return data ? Object.keys(data) : [];\n}\n\n/**\n * Array or scalar\n */\nexport type Enumerable<T> = T | Array<T>;\n\n/**\n * Uniformly enumerates an array or scalar.\n */\nexport function enumerate<T>(x: Enumerable<T>) {\n if (x === null || x === undefined) {\n return [];\n } else if (Array.isArray(x)) {\n return x;\n } else {\n return [x];\n }\n}\n\n/**\n * Zip two arrays or scalars.\n */\nexport function zip<T1, T2>(x: Enumerable<T1>, y: Enumerable<T2>): Array<[T1, T2]> {\n if (Array.isArray(x)) {\n if (!Array.isArray(y)) {\n throw new Error('x and y should be both array or both scalar');\n }\n if (x.length !== y.length) {\n throw new Error('x and y should have the same length');\n }\n return x.map((_, i) => [x[i], y[i]] as [T1, T2]);\n } else {\n if (Array.isArray(y)) {\n throw new Error('x and y should be both array or both scalar');\n }\n return [[x, y]];\n }\n}\n\nexport function getIdFields(modelMeta: ModelMeta, model: string, throwIfNotFound = false) {\n const uniqueConstraints = modelMeta.models[lowerCaseFirst(model)]?.uniqueConstraints ?? {};\n\n const entries = Object.values(uniqueConstraints);\n if (entries.length === 0) {\n if (throwIfNotFound) {\n throw new Error(`Model ${model} does not have any id field`);\n }\n return [];\n }\n\n return entries[0].fields.map((f) => requireField(modelMeta, model, f));\n}\n\nexport function getModelInfo<Throw extends boolean = false>(\n modelMeta: ModelMeta,\n model: string,\n throwIfNotFound: Throw = false as Throw\n): Throw extends true ? ModelInfo : ModelInfo | undefined {\n const info = modelMeta.models[lowerCaseFirst(model)];\n if (!info && throwIfNotFound) {\n throw new Error(`Unable to load info for ${model}`);\n }\n return info;\n}\n\nexport function isDelegateModel(modelMeta: ModelMeta, model: string) {\n return !!getModelInfo(modelMeta, model)?.attributes?.some((attr) => attr.name === '@@delegate');\n}\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { FieldInfo, ModelMeta } from './model-meta';\nimport { resolveField } from './model-meta';\nimport { MaybePromise, PrismaWriteActionType, PrismaWriteActions } from './types';\nimport { getModelFields } from './utils';\n\ntype NestingPathItem = { field?: FieldInfo; model: string; where: any; unique: boolean };\n\n/**\n * Context for visiting\n */\nexport type NestedWriteVisitorContext = {\n /**\n * Parent data, can be used to replace fields\n */\n parent: any;\n\n /**\n * Current field, undefined if toplevel\n */\n field?: FieldInfo;\n\n /**\n * A top-down path of all nested update conditions and corresponding field till now\n */\n nestingPath: NestingPathItem[];\n};\n\n/**\n * NestedWriteVisitor's callback actions. A call back function should return true or void to indicate\n * that the visitor should continue traversing its children, or false to stop. It can also return an object\n * to let the visitor traverse it instead of its original children.\n */\nexport type NestedWriterVisitorCallback = {\n create?: (model: string, data: any, context: NestedWriteVisitorContext) => MaybePromise<boolean | object | void>;\n\n createMany?: (\n model: string,\n args: { data: any; skipDuplicates?: boolean },\n context: NestedWriteVisitorContext\n ) => MaybePromise<boolean | object | void>;\n\n connectOrCreate?: (\n model: string,\n args: { where: object; create: any },\n context: NestedWriteVisitorContext\n ) => MaybePromise<boolean | object | void>;\n\n connect?: (\n model: string,\n args: object,\n context: NestedWriteVisitorContext\n ) => MaybePromise<boolean | object | void>;\n\n disconnect?: (\n model: string,\n args: object,\n context: NestedWriteVisitorContext\n ) => MaybePromise<boolean | object | void>;\n\n set?: (model: string, args: object, context: NestedWriteVisitorContext) => MaybePromise<boolean | object | void>;\n\n update?: (model: string, args: object, context: NestedWriteVisitorContext) => MaybePromise<boolean | object | void>;\n\n updateMany?: (\n model: string,\n args: { where?: object; data: any },\n context: NestedWriteVisitorContext\n ) => MaybePromise<boolean | object | void>;\n\n upsert?: (\n model: string,\n args: { where: object; create: any; update: any },\n context: NestedWriteVisitorContext\n ) => MaybePromise<boolean | object | void>;\n\n delete?: (\n model: string,\n args: object | boolean,\n context: NestedWriteVisitorContext\n ) => MaybePromise<boolean | object | void>;\n\n deleteMany?: (\n model: string,\n args: any | object,\n context: NestedWriteVisitorContext\n ) => MaybePromise<boolean | object | void>;\n\n field?: (\n field: FieldInfo,\n action: PrismaWriteActionType,\n data: any,\n context: NestedWriteVisitorContext\n ) => MaybePromise<void>;\n};\n\n/**\n * Recursive visitor for nested write (create/update) payload.\n */\nexport class NestedWriteVisitor {\n constructor(private readonly modelMeta: ModelMeta, private readonly callback: NestedWriterVisitorCallback) {}\n\n private isPrismaWriteAction(value: string): value is PrismaWriteActionType {\n return PrismaWriteActions.includes(value as PrismaWriteActionType);\n }\n\n /**\n * Start visiting\n *\n * @see NestedWriterVisitorCallback\n */\n async visit(model: string, action: PrismaWriteActionType, args: any): Promise<void> {\n if (!args) {\n return;\n }\n\n let topData = args;\n\n switch (action) {\n // create has its data wrapped in 'data' field\n case 'create':\n topData = topData.data;\n break;\n\n case 'delete':\n case 'deleteMany':\n topData = topData.where;\n break;\n }\n\n await this.doVisit(model, action, topData, undefined, undefined, []);\n }\n\n private async doVisit(\n model: string,\n action: PrismaWriteActionType,\n data: any,\n parent: any,\n field: FieldInfo | undefined,\n nestingPath: NestingPathItem[]\n ): Promise<void> {\n if (!data) {\n return;\n }\n\n const toplevel = field == undefined;\n\n const context = { parent, field, nestingPath: [...nestingPath] };\n const pushNewContext = (field: FieldInfo | undefined, model: string, where: any, unique = false) => {\n return { ...context, nestingPath: [...context.nestingPath, { field, model, where, unique }] };\n };\n\n // visit payload\n switch (action) {\n case 'create':\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, {});\n let callbackResult: any;\n if (this.callback.create) {\n callbackResult = await this.callback.create(model, item, newContext);\n }\n if (callbackResult !== false) {\n const subPayload = typeof callbackResult === 'object' ? callbackResult : item;\n await this.visitSubPayload(model, action, subPayload, newContext.nestingPath);\n }\n }\n break;\n\n case 'createMany':\n if (data) {\n const newContext = pushNewContext(field, model, {});\n let callbackResult: any;\n if (this.callback.createMany) {\n callbackResult = await this.callback.createMany(model, data, newContext);\n }\n if (callbackResult !== false) {\n const subPayload = typeof callbackResult === 'object' ? callbackResult : data.data;\n await this.visitSubPayload(model, action, subPayload, newContext.nestingPath);\n }\n }\n break;\n\n case 'connectOrCreate':\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, item.where);\n let callbackResult: any;\n if (this.callback.connectOrCreate) {\n callbackResult = await this.callback.connectOrCreate(model, item, newContext);\n }\n if (callbackResult !== false) {\n const subPayload = typeof callbackResult === 'object' ? callbackResult : item.create;\n await this.visitSubPayload(model, action, subPayload, newContext.nestingPath);\n }\n }\n break;\n\n case 'connect':\n if (this.callback.connect) {\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, item, true);\n await this.callback.connect(model, item, newContext);\n }\n }\n break;\n\n case 'disconnect':\n // disconnect has two forms:\n // if relation is to-many, the payload is a unique filter object\n // if relation is to-one, the payload can only be boolean `true`\n if (this.callback.disconnect) {\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, item, typeof item === 'object');\n await this.callback.disconnect(model, item, newContext);\n }\n }\n break;\n\n case 'set':\n if (this.callback.set) {\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, item, true);\n await this.callback.set(model, item, newContext);\n }\n }\n break;\n\n case 'update':\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, item.where);\n let callbackResult: any;\n if (this.callback.update) {\n callbackResult = await this.callback.update(model, item, newContext);\n }\n if (callbackResult !== false) {\n const subPayload =\n typeof callbackResult === 'object'\n ? callbackResult\n : typeof item.data === 'object'\n ? item.data\n : item;\n await this.visitSubPayload(model, action, subPayload, newContext.nestingPath);\n }\n }\n break;\n\n case 'updateMany':\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, item.where);\n let callbackResult: any;\n if (this.callback.updateMany) {\n callbackResult = await this.callback.updateMany(model, item, newContext);\n }\n if (callbackResult !== false) {\n const subPayload = typeof callbackResult === 'object' ? callbackResult : item;\n await this.visitSubPayload(model, action, subPayload, newContext.nestingPath);\n }\n }\n break;\n\n case 'upsert': {\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, item.where);\n let callbackResult: any;\n if (this.callback.upsert) {\n callbackResult = await this.callback.upsert(model, item, newContext);\n }\n if (callbackResult !== false) {\n if (typeof callbackResult === 'object') {\n await this.visitSubPayload(model, action, callbackResult, newContext.nestingPath);\n } else {\n await this.visitSubPayload(model, action, item.create, newContext.nestingPath);\n await this.visitSubPayload(model, action, item.update, newContext.nestingPath);\n }\n }\n }\n break;\n }\n\n case 'delete': {\n if (this.callback.delete) {\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, toplevel ? item.where : item);\n await this.callback.delete(model, item, newContext);\n }\n }\n break;\n }\n\n case 'deleteMany':\n if (this.callback.deleteMany) {\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, toplevel ? item.where : item);\n await this.callback.deleteMany(model, item, newContext);\n }\n }\n break;\n\n default: {\n throw new Error(`unhandled action type ${action}`);\n }\n }\n }\n\n private async visitSubPayload(\n model: string,\n action: PrismaWriteActionType,\n payload: any,\n nestingPath: NestingPathItem[]\n ) {\n for (const field of getModelFields(payload)) {\n const fieldInfo = resolveField(this.modelMeta, model, field);\n if (!fieldInfo) {\n continue;\n }\n\n if (fieldInfo.isDataModel) {\n if (payload[field]) {\n // recurse into nested payloads\n for (const [subAction, subData] of Object.entries<any>(payload[field])) {\n if (this.isPrismaWriteAction(subAction) && subData) {\n await this.doVisit(fieldInfo.type, subAction, subData, payload[field], fieldInfo, [\n ...nestingPath,\n ]);\n }\n }\n }\n } else {\n // visit plain field\n if (this.callback.field) {\n await this.callback.field(fieldInfo, action, payload[field], {\n parent: payload,\n nestingPath,\n field: fieldInfo,\n });\n }\n }\n }\n }\n\n // enumerate a (possible) array in reverse order, so that the enumeration\n // callback can safely delete the current item\n private *enumerateReverse(data: any) {\n if (Array.isArray(data)) {\n for (let i = data.length - 1; i >= 0; i--) {\n yield data[i];\n }\n } else {\n yield data;\n }\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { lowerCaseFirst } from 'lower-case-first';\nimport type { ModelMeta } from './model-meta';\nimport { NestedReadVisitor } from './nested-read-visitor';\nimport { NestedWriteVisitor } from './nested-write-visitor';\nimport type { PrismaWriteActionType } from './types';\nimport { getModelInfo } from './utils';\n\n/**\n * Gets models read (including nested ones) given a query args.\n * @param model\n * @param targetModels\n * @param modelMeta\n * @param args\n * @returns\n */\nexport function getReadModels(model: string, modelMeta: ModelMeta, args: any) {\n const result = new Set<string>();\n result.add(model);\n const visitor = new NestedReadVisitor(modelMeta, {\n field: (model) => {\n result.add(model);\n return true;\n },\n });\n visitor.visit(model, args);\n return [...result];\n}\n\n/**\n * Gets mutated models (including nested ones) given a mutation args.\n */\nexport async function getMutatedModels(\n model: string,\n operation: PrismaWriteActionType,\n mutationArgs: any,\n modelMeta: ModelMeta\n) {\n const result = new Set<string>();\n result.add(model);\n\n if (mutationArgs) {\n const addModel = (model: string) => void result.add(model);\n\n // add models that are cascaded deleted recursively\n const addCascades = (model: string) => {\n const cascades = new Set<string>();\n const visited = new Set<string>();\n collectDeleteCascades(model, modelMeta, cascades, visited);\n cascades.forEach((m) => addModel(m));\n };\n\n const visitor = new NestedWriteVisitor(modelMeta, {\n create: addModel,\n createMany: addModel,\n connectOrCreate: addModel,\n connect: addModel,\n disconnect: addModel,\n set: addModel,\n update: addModel,\n updateMany: addModel,\n upsert: addModel,\n delete: (model) => {\n addModel(model);\n addCascades(model);\n },\n deleteMany: (model) => {\n addModel(model);\n addCascades(model);\n },\n });\n await visitor.visit(model, operation, mutationArgs);\n }\n\n // include delegate base models recursively\n result.forEach((m) => {\n getBaseRecursively(m, modelMeta, result);\n });\n\n return [...result];\n}\n\nfunction collectDeleteCascades(model: string, modelMeta: ModelMeta, result: Set<string>, visited: Set<string>) {\n if (visited.has(model)) {\n // break circle\n return;\n }\n visited.add(model);\n\n const cascades = modelMeta.deleteCascade?.[lowerCaseFirst(model)];\n\n if (!cascades) {\n return;\n }\n\n cascades.forEach((m) => {\n result.add(m);\n collectDeleteCascades(m, modelMeta, result, visited);\n });\n}\n\nfunction getBaseRecursively(model: string, modelMeta: ModelMeta, result: Set<string>) {\n const bases = getModelInfo(modelMeta, model)?.baseTypes;\n if (bases) {\n bases.forEach((base) => {\n result.add(base);\n getBaseRecursively(base, modelMeta, result);\n });\n }\n}\n"],"mappings":"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","names":["model","data","uuid","field","import_lower_case_first","field","model","import_lower_case_first","model"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cross/clone.ts","../../src/cross/model-data-visitor.ts","../../src/cross/model-meta.ts","../../src/cross/mutator.ts","../../src/cross/nested-read-visitor.ts","../../src/cross/types.ts","../../src/cross/utils.ts","../../src/cross/nested-write-visitor.ts","../../src/cross/query-analyzer.ts"],"sourcesContent":["import { isPlainObject } from 'is-plain-object';\n\n/**\n * Clones the given object. Only arrays and plain objects are cloned. Other values are returned as is.\n */\nexport function clone<T>(value: T): T {\n if (Array.isArray(value)) {\n return value.map((v) => clone(v)) as T;\n }\n\n if (typeof value === 'object') {\n if (!value || !isPlainObject(value)) {\n return value;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result: any = {};\n for (const key of Object.keys(value)) {\n result[key] = clone(value[key as keyof T]);\n }\n return result;\n }\n\n return value;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { resolveField, type ModelMeta } from '.';\n\n/**\n * Callback for @see ModelDataVisitor.\n */\nexport type ModelDataVisitorCallback = (model: string, data: any, scalarData: any) => void;\n\n/**\n * Visitor that traverses data returned by a Prisma query.\n */\nexport class ModelDataVisitor {\n constructor(private modelMeta: ModelMeta) {}\n\n /**\n * Visits the given model data.\n */\n visit(model: string, data: any, callback: ModelDataVisitorCallback) {\n if (!data || typeof data !== 'object') {\n return;\n }\n\n const scalarData: Record<string, unknown> = {};\n const subTasks: Array<{ model: string; data: any }> = [];\n\n for (const [k, v] of Object.entries(data)) {\n const field = resolveField(this.modelMeta, model, k);\n if (field && field.isDataModel) {\n if (field.isArray && Array.isArray(v)) {\n subTasks.push(...v.map((item) => ({ model: field.type, data: item })));\n } else {\n subTasks.push({ model: field.type, data: v });\n }\n } else {\n scalarData[k] = v;\n }\n }\n\n callback(model, data, scalarData);\n subTasks.forEach(({ model, data }) => this.visit(model, data, callback));\n }\n}\n","import { lowerCaseFirst } from 'lower-case-first';\n\n/**\n * Runtime information of a data model or field attribute\n */\nexport type RuntimeAttribute = {\n /**\n * Attribute name\n */\n name: string;\n\n /**\n * Attribute arguments\n */\n args: Array<{ name?: string; value: unknown }>;\n};\n\n/**\n * Function for computing default value for a field\n */\nexport type FieldDefaultValueProvider = (userContext: unknown) => unknown;\n\n/**\n * Runtime information of a data model field\n */\nexport type FieldInfo = {\n /**\n * Field name\n */\n name: string;\n\n /**\n * Field type name\n */\n type: string;\n\n /**\n * If the field is an ID field or part of a multi-field ID\n */\n isId?: boolean;\n\n /**\n * If the field type is a data model (or an optional/array of data model)\n */\n isDataModel?: boolean;\n\n /**\n * If the field is an array\n */\n isArray?: boolean;\n\n /**\n * If the field is optional\n */\n isOptional?: boolean;\n\n /**\n * Attributes on the field\n */\n attributes?: RuntimeAttribute[];\n\n /**\n * If the field is a relation field, the field name of the reverse side of the relation\n */\n backLink?: string;\n\n /**\n * If the field is the owner side of a relation\n */\n isRelationOwner?: boolean;\n\n /**\n * If the field is a foreign key field\n */\n isForeignKey?: boolean;\n\n /**\n * If the field is a foreign key field, the field name of the corresponding relation field.\n * Only available on foreign key fields.\n */\n relationField?: string;\n\n /**\n * Mapping from foreign key field names to relation field names.\n * Only available on relation fields.\n */\n foreignKeyMapping?: Record<string, string>;\n\n /**\n * Model from which the field is inherited\n */\n inheritedFrom?: string;\n\n /**\n * A function that provides a default value for the field\n */\n defaultValueProvider?: FieldDefaultValueProvider;\n\n /**\n * If the field is an auto-increment field\n */\n isAutoIncrement?: boolean;\n};\n\n/**\n * Metadata for a model-level unique constraint\n * e.g.: @@unique([a, b])\n */\nexport type UniqueConstraint = { name: string; fields: string[] };\n\n/**\n * Metadata for a data model\n */\nexport type ModelInfo = {\n /**\n * Model name\n */\n name: string;\n\n /**\n * Base types (not including abstract base models).\n */\n baseTypes?: string[];\n\n /**\n * Fields\n */\n fields: Record<string, FieldInfo>;\n\n /**\n * Unique constraints\n */\n uniqueConstraints?: Record<string, UniqueConstraint>;\n\n /**\n * Attributes on the model\n */\n attributes?: RuntimeAttribute[];\n\n /**\n * Discriminator field name\n */\n discriminator?: string;\n};\n\n/**\n * ZModel data model metadata\n */\nexport type ModelMeta = {\n /**\n * Data models\n */\n models: Record<string, ModelInfo>;\n\n /**\n * Mapping from model name to models that will be deleted because of it due to cascade delete\n */\n deleteCascade?: Record<string, string[]>;\n\n /**\n * Name of model that backs the `auth()` function\n */\n authModel?: string;\n};\n\n/**\n * Resolves a model field to its metadata. Returns undefined if not found.\n */\nexport function resolveField(modelMeta: ModelMeta, model: string, field: string): FieldInfo | undefined {\n return modelMeta.models[lowerCaseFirst(model)]?.fields?.[field];\n}\n\n/**\n * Resolves a model field to its metadata. Throws an error if not found.\n */\nexport function requireField(modelMeta: ModelMeta, model: string, field: string) {\n const f = resolveField(modelMeta, model, field);\n if (!f) {\n throw new Error(`Field ${model}.${field} cannot be resolved`);\n }\n return f;\n}\n\n/**\n * Gets all fields of a model.\n */\nexport function getFields(modelMeta: ModelMeta, model: string) {\n return modelMeta.models[lowerCaseFirst(model)]?.fields;\n}\n\n/**\n * Gets unique constraints of a model.\n */\nexport function getUniqueConstraints(modelMeta: ModelMeta, model: string) {\n return modelMeta.models[lowerCaseFirst(model)]?.uniqueConstraints;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { v4 as uuid } from 'uuid';\nimport {\n ModelDataVisitor,\n NestedWriteVisitor,\n enumerate,\n getFields,\n getIdFields,\n type ModelMeta,\n type PrismaWriteActionType,\n} from '.';\nimport { clone } from './clone';\n\n/**\n * Tries to apply a mutation to a query result.\n *\n * @param queryModel the model of the query\n * @param queryOp the operation of the query\n * @param queryData the result data of the query\n * @param mutationModel the model of the mutation\n * @param mutationOp the operation of the mutation\n * @param mutationArgs the arguments of the mutation\n * @param modelMeta the model metadata\n * @param logging whether to log the mutation application\n * @returns the updated query data if the mutation is applicable, otherwise undefined\n */\nexport async function applyMutation(\n queryModel: string,\n queryOp: string,\n queryData: any,\n mutationModel: string,\n mutationOp: PrismaWriteActionType,\n mutationArgs: any,\n modelMeta: ModelMeta,\n logging: boolean\n) {\n if (['count', 'aggregate', 'groupBy'].includes(queryOp)) {\n // only findXXX results are applicable\n return undefined;\n }\n\n let resultData = queryData;\n let updated = false;\n\n const visitor = new NestedWriteVisitor(modelMeta, {\n create: (model, args) => {\n if (model === queryModel) {\n const r = createMutate(queryModel, queryOp, resultData, args, modelMeta, logging);\n if (r) {\n resultData = r;\n updated = true;\n }\n }\n },\n\n createMany: (model, args) => {\n if (model === queryModel && args?.data) {\n for (const oneArg of enumerate(args.data)) {\n const r = createMutate(queryModel, queryOp, resultData, oneArg, modelMeta, logging);\n if (r) {\n resultData = r;\n updated = true;\n }\n }\n }\n },\n\n update: (model, args) => {\n if (model === queryModel) {\n const r = updateMutate(queryModel, resultData, model, args, modelMeta, logging);\n if (r) {\n resultData = r;\n updated = true;\n }\n }\n },\n\n delete: (model, args) => {\n if (model === queryModel) {\n const r = deleteMutate(queryModel, resultData, model, args, modelMeta, logging);\n if (r) {\n resultData = r;\n updated = true;\n }\n }\n },\n });\n\n await visitor.visit(mutationModel, mutationOp, mutationArgs);\n\n return updated ? resultData : undefined;\n}\n\nfunction createMutate(\n queryModel: string,\n queryOp: string,\n currentData: any,\n newData: any,\n modelMeta: ModelMeta,\n logging: boolean\n) {\n if (!newData) {\n return undefined;\n }\n\n if (queryOp !== 'findMany') {\n return undefined;\n }\n\n const modelFields = getFields(modelMeta, queryModel);\n if (!modelFields) {\n return undefined;\n }\n\n const insert: any = {};\n const newDataFields = Object.keys(newData);\n\n Object.entries(modelFields).forEach(([name, field]) => {\n if (field.isDataModel) {\n // only include scalar fields\n return;\n }\n if (newDataFields.includes(name)) {\n insert[name] = newData[name];\n } else {\n const defaultAttr = field.attributes?.find((attr) => attr.name === '@default');\n if (field.type === 'DateTime') {\n // default value for DateTime field\n if (defaultAttr || field.attributes?.some((attr) => attr.name === '@updatedAt')) {\n insert[name] = new Date();\n }\n } else if (defaultAttr?.args?.[0]?.value !== undefined) {\n // other default value\n insert[name] = defaultAttr.args[0].value;\n }\n }\n });\n\n // add temp id value\n const idFields = getIdFields(modelMeta, queryModel, false);\n idFields.forEach((f) => {\n if (insert[f.name] === undefined) {\n if (f.type === 'Int' || f.type === 'BigInt') {\n const currMax = Array.isArray(currentData)\n ? Math.max(\n ...[...currentData].map((item) => {\n const idv = parseInt(item[f.name]);\n return isNaN(idv) ? 0 : idv;\n })\n )\n : 0;\n insert[f.name] = currMax + 1;\n } else {\n insert[f.name] = uuid();\n }\n }\n });\n\n insert.$optimistic = true;\n\n if (logging) {\n console.log(`Optimistic create for ${queryModel}:`, insert);\n }\n return [insert, ...(Array.isArray(currentData) ? currentData : [])];\n}\n\nfunction updateMutate(\n queryModel: string,\n currentData: any,\n mutateModel: string,\n mutateArgs: any,\n modelMeta: ModelMeta,\n logging: boolean\n) {\n if (!currentData) {\n return undefined;\n }\n\n if (!mutateArgs?.where || !mutateArgs?.data) {\n return undefined;\n }\n\n let updated = false;\n\n for (const item of enumerate(currentData)) {\n const visitor = new ModelDataVisitor(modelMeta);\n visitor.visit(queryModel, item, (model, _data, scalarData) => {\n if (model === mutateModel && idFieldsMatch(model, scalarData, mutateArgs.where, modelMeta)) {\n Object.keys(item).forEach((k) => {\n if (mutateArgs.data[k] !== undefined) {\n item[k] = mutateArgs.data[k];\n }\n });\n item.$optimistic = true;\n updated = true;\n if (logging) {\n console.log(`Optimistic update for ${queryModel}:`, item);\n }\n }\n });\n }\n\n return updated ? clone(currentData) /* ensures new object identity */ : undefined;\n}\n\nfunction deleteMutate(\n queryModel: string,\n currentData: any,\n mutateModel: string,\n mutateArgs: any,\n modelMeta: ModelMeta,\n logging: boolean\n) {\n // TODO: handle mutation of nested reads?\n\n if (!currentData || !mutateArgs) {\n return undefined;\n }\n\n if (queryModel !== mutateModel) {\n return undefined;\n }\n\n let updated = false;\n let result = currentData;\n\n if (Array.isArray(currentData)) {\n for (const item of currentData) {\n if (idFieldsMatch(mutateModel, item, mutateArgs, modelMeta)) {\n result = (result as unknown[]).filter((x) => x !== item);\n updated = true;\n if (logging) {\n console.log(`Optimistic delete for ${queryModel}:`, item);\n }\n }\n }\n } else {\n if (idFieldsMatch(mutateModel, currentData, mutateArgs, modelMeta)) {\n result = null;\n updated = true;\n if (logging) {\n console.log(`Optimistic delete for ${queryModel}:`, currentData);\n }\n }\n }\n\n return updated ? result : undefined;\n}\n\nfunction idFieldsMatch(model: string, x: any, y: any, modelMeta: ModelMeta) {\n if (!x || !y || typeof x !== 'object' || typeof y !== 'object') {\n return false;\n }\n const idFields = getIdFields(modelMeta, model, false);\n if (idFields.length === 0) {\n return false;\n }\n return idFields.every((f) => x[f.name] === y[f.name]);\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { resolveField, type FieldInfo, type ModelMeta } from './model-meta';\n\nexport type NestedReadVisitorCallback = {\n field?: (\n model: string,\n field: FieldInfo | undefined,\n kind: 'include' | 'select' | undefined,\n args: unknown\n ) => void | boolean;\n};\n\n/**\n * Visitor for nested read payload.\n */\nexport class NestedReadVisitor {\n constructor(private readonly modelMeta: ModelMeta, private readonly callback: NestedReadVisitorCallback) {}\n\n doVisit(model: string, field: FieldInfo | undefined, kind: 'include' | 'select' | undefined, args: unknown) {\n if (this.callback.field) {\n const r = this.callback.field(model, field, kind, args);\n if (r === false) {\n return;\n }\n }\n\n if (!args || typeof args !== 'object') {\n return;\n }\n\n let selectInclude: any;\n let nextKind: 'select' | 'include' | undefined;\n if ((args as any).select) {\n selectInclude = (args as any).select;\n nextKind = 'select';\n } else if ((args as any).include) {\n selectInclude = (args as any).include;\n nextKind = 'include';\n }\n\n if (selectInclude && typeof selectInclude === 'object') {\n for (const [k, v] of Object.entries(selectInclude)) {\n if (k === '_count' && typeof v === 'object' && v) {\n // recurse into { _count: { ... } }\n this.doVisit(model, field, kind, v);\n } else {\n const field = resolveField(this.modelMeta, model, k);\n if (field) {\n this.doVisit(field.type, field, nextKind, v);\n }\n }\n }\n }\n }\n\n visit(model: string, args: unknown) {\n this.doVisit(model, undefined, undefined, args);\n }\n}\n","/**\n * Prisma write operation kinds\n */\nexport const PrismaWriteActions = [\n 'create',\n 'createMany',\n 'connectOrCreate',\n 'update',\n 'updateMany',\n 'upsert',\n 'connect',\n 'disconnect',\n 'set',\n 'delete',\n 'deleteMany',\n] as const;\n\n/**\n * Prisma write operation kinds\n */\nexport type PrismaWriteActionType = (typeof PrismaWriteActions)[number];\n\n/**\n * Maybe promise\n */\nexport type MaybePromise<T> = T | Promise<T> | PromiseLike<T>;\n","import { lowerCaseFirst } from 'lower-case-first';\nimport { requireField, type ModelInfo, type ModelMeta } from '.';\n\n/**\n * Gets field names in a data model entity, filtering out internal fields.\n */\nexport function getModelFields(data: object) {\n return data ? Object.keys(data) : [];\n}\n\n/**\n * Array or scalar\n */\nexport type Enumerable<T> = T | Array<T>;\n\n/**\n * Uniformly enumerates an array or scalar.\n */\nexport function enumerate<T>(x: Enumerable<T>) {\n if (x === null || x === undefined) {\n return [];\n } else if (Array.isArray(x)) {\n return x;\n } else {\n return [x];\n }\n}\n\n/**\n * Zip two arrays or scalars.\n */\nexport function zip<T1, T2>(x: Enumerable<T1>, y: Enumerable<T2>): Array<[T1, T2]> {\n if (Array.isArray(x)) {\n if (!Array.isArray(y)) {\n throw new Error('x and y should be both array or both scalar');\n }\n if (x.length !== y.length) {\n throw new Error('x and y should have the same length');\n }\n return x.map((_, i) => [x[i], y[i]] as [T1, T2]);\n } else {\n if (Array.isArray(y)) {\n throw new Error('x and y should be both array or both scalar');\n }\n return [[x, y]];\n }\n}\n\nexport function getIdFields(modelMeta: ModelMeta, model: string, throwIfNotFound = false) {\n const uniqueConstraints = modelMeta.models[lowerCaseFirst(model)]?.uniqueConstraints ?? {};\n\n const entries = Object.values(uniqueConstraints);\n if (entries.length === 0) {\n if (throwIfNotFound) {\n throw new Error(`Model ${model} does not have any id field`);\n }\n return [];\n }\n\n return entries[0].fields.map((f) => requireField(modelMeta, model, f));\n}\n\nexport function getModelInfo<Throw extends boolean = false>(\n modelMeta: ModelMeta,\n model: string,\n throwIfNotFound: Throw = false as Throw\n): Throw extends true ? ModelInfo : ModelInfo | undefined {\n const info = modelMeta.models[lowerCaseFirst(model)];\n if (!info && throwIfNotFound) {\n throw new Error(`Unable to load info for ${model}`);\n }\n return info;\n}\n\nexport function isDelegateModel(modelMeta: ModelMeta, model: string) {\n return !!getModelInfo(modelMeta, model)?.attributes?.some((attr) => attr.name === '@@delegate');\n}\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { FieldInfo, ModelMeta } from './model-meta';\nimport { resolveField } from './model-meta';\nimport { MaybePromise, PrismaWriteActionType, PrismaWriteActions } from './types';\nimport { getModelFields } from './utils';\n\ntype NestingPathItem = { field?: FieldInfo; model: string; where: any; unique: boolean };\n\n/**\n * Context for visiting\n */\nexport type NestedWriteVisitorContext = {\n /**\n * Parent data, can be used to replace fields\n */\n parent: any;\n\n /**\n * Current field, undefined if toplevel\n */\n field?: FieldInfo;\n\n /**\n * A top-down path of all nested update conditions and corresponding field till now\n */\n nestingPath: NestingPathItem[];\n};\n\n/**\n * NestedWriteVisitor's callback actions. A call back function should return true or void to indicate\n * that the visitor should continue traversing its children, or false to stop. It can also return an object\n * to let the visitor traverse it instead of its original children.\n */\nexport type NestedWriterVisitorCallback = {\n create?: (model: string, data: any, context: NestedWriteVisitorContext) => MaybePromise<boolean | object | void>;\n\n createMany?: (\n model: string,\n args: { data: any; skipDuplicates?: boolean },\n context: NestedWriteVisitorContext\n ) => MaybePromise<boolean | object | void>;\n\n connectOrCreate?: (\n model: string,\n args: { where: object; create: any },\n context: NestedWriteVisitorContext\n ) => MaybePromise<boolean | object | void>;\n\n connect?: (\n model: string,\n args: object,\n context: NestedWriteVisitorContext\n ) => MaybePromise<boolean | object | void>;\n\n disconnect?: (\n model: string,\n args: object,\n context: NestedWriteVisitorContext\n ) => MaybePromise<boolean | object | void>;\n\n set?: (model: string, args: object, context: NestedWriteVisitorContext) => MaybePromise<boolean | object | void>;\n\n update?: (model: string, args: object, context: NestedWriteVisitorContext) => MaybePromise<boolean | object | void>;\n\n updateMany?: (\n model: string,\n args: { where?: object; data: any },\n context: NestedWriteVisitorContext\n ) => MaybePromise<boolean | object | void>;\n\n upsert?: (\n model: string,\n args: { where: object; create: any; update: any },\n context: NestedWriteVisitorContext\n ) => MaybePromise<boolean | object | void>;\n\n delete?: (\n model: string,\n args: object | boolean,\n context: NestedWriteVisitorContext\n ) => MaybePromise<boolean | object | void>;\n\n deleteMany?: (\n model: string,\n args: any | object,\n context: NestedWriteVisitorContext\n ) => MaybePromise<boolean | object | void>;\n\n field?: (\n field: FieldInfo,\n action: PrismaWriteActionType,\n data: any,\n context: NestedWriteVisitorContext\n ) => MaybePromise<void>;\n};\n\n/**\n * Recursive visitor for nested write (create/update) payload.\n */\nexport class NestedWriteVisitor {\n constructor(private readonly modelMeta: ModelMeta, private readonly callback: NestedWriterVisitorCallback) {}\n\n private isPrismaWriteAction(value: string): value is PrismaWriteActionType {\n return PrismaWriteActions.includes(value as PrismaWriteActionType);\n }\n\n /**\n * Start visiting\n *\n * @see NestedWriterVisitorCallback\n */\n async visit(model: string, action: PrismaWriteActionType, args: any): Promise<void> {\n if (!args) {\n return;\n }\n\n let topData = args;\n\n switch (action) {\n // create has its data wrapped in 'data' field\n case 'create':\n topData = topData.data;\n break;\n\n case 'delete':\n case 'deleteMany':\n topData = topData.where;\n break;\n }\n\n await this.doVisit(model, action, topData, undefined, undefined, []);\n }\n\n private async doVisit(\n model: string,\n action: PrismaWriteActionType,\n data: any,\n parent: any,\n field: FieldInfo | undefined,\n nestingPath: NestingPathItem[]\n ): Promise<void> {\n if (!data) {\n return;\n }\n\n const toplevel = field == undefined;\n\n const context = { parent, field, nestingPath: [...nestingPath] };\n const pushNewContext = (field: FieldInfo | undefined, model: string, where: any, unique = false) => {\n return { ...context, nestingPath: [...context.nestingPath, { field, model, where, unique }] };\n };\n\n // visit payload\n switch (action) {\n case 'create':\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, {});\n let callbackResult: any;\n if (this.callback.create) {\n callbackResult = await this.callback.create(model, item, newContext);\n }\n if (callbackResult !== false) {\n const subPayload = typeof callbackResult === 'object' ? callbackResult : item;\n await this.visitSubPayload(model, action, subPayload, newContext.nestingPath);\n }\n }\n break;\n\n case 'createMany':\n if (data) {\n const newContext = pushNewContext(field, model, {});\n let callbackResult: any;\n if (this.callback.createMany) {\n callbackResult = await this.callback.createMany(model, data, newContext);\n }\n if (callbackResult !== false) {\n const subPayload = typeof callbackResult === 'object' ? callbackResult : data.data;\n await this.visitSubPayload(model, action, subPayload, newContext.nestingPath);\n }\n }\n break;\n\n case 'connectOrCreate':\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, item.where);\n let callbackResult: any;\n if (this.callback.connectOrCreate) {\n callbackResult = await this.callback.connectOrCreate(model, item, newContext);\n }\n if (callbackResult !== false) {\n const subPayload = typeof callbackResult === 'object' ? callbackResult : item.create;\n await this.visitSubPayload(model, action, subPayload, newContext.nestingPath);\n }\n }\n break;\n\n case 'connect':\n if (this.callback.connect) {\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, item, true);\n await this.callback.connect(model, item, newContext);\n }\n }\n break;\n\n case 'disconnect':\n // disconnect has two forms:\n // if relation is to-many, the payload is a unique filter object\n // if relation is to-one, the payload can only be boolean `true`\n if (this.callback.disconnect) {\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, item, typeof item === 'object');\n await this.callback.disconnect(model, item, newContext);\n }\n }\n break;\n\n case 'set':\n if (this.callback.set) {\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, item, true);\n await this.callback.set(model, item, newContext);\n }\n }\n break;\n\n case 'update':\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, item.where);\n let callbackResult: any;\n if (this.callback.update) {\n callbackResult = await this.callback.update(model, item, newContext);\n }\n if (callbackResult !== false) {\n const subPayload =\n typeof callbackResult === 'object'\n ? callbackResult\n : typeof item.data === 'object'\n ? item.data\n : item;\n await this.visitSubPayload(model, action, subPayload, newContext.nestingPath);\n }\n }\n break;\n\n case 'updateMany':\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, item.where);\n let callbackResult: any;\n if (this.callback.updateMany) {\n callbackResult = await this.callback.updateMany(model, item, newContext);\n }\n if (callbackResult !== false) {\n const subPayload = typeof callbackResult === 'object' ? callbackResult : item;\n await this.visitSubPayload(model, action, subPayload, newContext.nestingPath);\n }\n }\n break;\n\n case 'upsert': {\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, item.where);\n let callbackResult: any;\n if (this.callback.upsert) {\n callbackResult = await this.callback.upsert(model, item, newContext);\n }\n if (callbackResult !== false) {\n if (typeof callbackResult === 'object') {\n await this.visitSubPayload(model, action, callbackResult, newContext.nestingPath);\n } else {\n await this.visitSubPayload(model, action, item.create, newContext.nestingPath);\n await this.visitSubPayload(model, action, item.update, newContext.nestingPath);\n }\n }\n }\n break;\n }\n\n case 'delete': {\n if (this.callback.delete) {\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, toplevel ? item.where : item);\n await this.callback.delete(model, item, newContext);\n }\n }\n break;\n }\n\n case 'deleteMany':\n if (this.callback.deleteMany) {\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, toplevel ? item.where : item);\n await this.callback.deleteMany(model, item, newContext);\n }\n }\n break;\n\n default: {\n throw new Error(`unhandled action type ${action}`);\n }\n }\n }\n\n private async visitSubPayload(\n model: string,\n action: PrismaWriteActionType,\n payload: any,\n nestingPath: NestingPathItem[]\n ) {\n for (const field of getModelFields(payload)) {\n const fieldInfo = resolveField(this.modelMeta, model, field);\n if (!fieldInfo) {\n continue;\n }\n\n if (fieldInfo.isDataModel) {\n if (payload[field]) {\n // recurse into nested payloads\n for (const [subAction, subData] of Object.entries<any>(payload[field])) {\n if (this.isPrismaWriteAction(subAction) && subData) {\n await this.doVisit(fieldInfo.type, subAction, subData, payload[field], fieldInfo, [\n ...nestingPath,\n ]);\n }\n }\n }\n } else {\n // visit plain field\n if (this.callback.field) {\n await this.callback.field(fieldInfo, action, payload[field], {\n parent: payload,\n nestingPath,\n field: fieldInfo,\n });\n }\n }\n }\n }\n\n // enumerate a (possible) array in reverse order, so that the enumeration\n // callback can safely delete the current item\n private *enumerateReverse(data: any) {\n if (Array.isArray(data)) {\n for (let i = data.length - 1; i >= 0; i--) {\n yield data[i];\n }\n } else {\n yield data;\n }\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { lowerCaseFirst } from 'lower-case-first';\nimport type { ModelMeta } from './model-meta';\nimport { NestedReadVisitor } from './nested-read-visitor';\nimport { NestedWriteVisitor } from './nested-write-visitor';\nimport type { PrismaWriteActionType } from './types';\nimport { getModelInfo } from './utils';\n\n/**\n * Gets models read (including nested ones) given a query args.\n * @param model\n * @param targetModels\n * @param modelMeta\n * @param args\n * @returns\n */\nexport function getReadModels(model: string, modelMeta: ModelMeta, args: any) {\n const result = new Set<string>();\n result.add(model);\n const visitor = new NestedReadVisitor(modelMeta, {\n field: (model) => {\n result.add(model);\n return true;\n },\n });\n visitor.visit(model, args);\n return [...result];\n}\n\n/**\n * Gets mutated models (including nested ones) given a mutation args.\n */\nexport async function getMutatedModels(\n model: string,\n operation: PrismaWriteActionType,\n mutationArgs: any,\n modelMeta: ModelMeta\n) {\n const result = new Set<string>();\n result.add(model);\n\n if (mutationArgs) {\n const addModel = (model: string) => void result.add(model);\n\n // add models that are cascaded deleted recursively\n const addCascades = (model: string) => {\n const cascades = new Set<string>();\n const visited = new Set<string>();\n collectDeleteCascades(model, modelMeta, cascades, visited);\n cascades.forEach((m) => addModel(m));\n };\n\n const visitor = new NestedWriteVisitor(modelMeta, {\n create: addModel,\n createMany: addModel,\n connectOrCreate: addModel,\n connect: addModel,\n disconnect: addModel,\n set: addModel,\n update: addModel,\n updateMany: addModel,\n upsert: addModel,\n delete: (model) => {\n addModel(model);\n addCascades(model);\n },\n deleteMany: (model) => {\n addModel(model);\n addCascades(model);\n },\n });\n await visitor.visit(model, operation, mutationArgs);\n }\n\n // include delegate base models recursively\n result.forEach((m) => {\n getBaseRecursively(m, modelMeta, result);\n });\n\n return [...result];\n}\n\nfunction collectDeleteCascades(model: string, modelMeta: ModelMeta, result: Set<string>, visited: Set<string>) {\n if (visited.has(model)) {\n // break circle\n return;\n }\n visited.add(model);\n\n const cascades = modelMeta.deleteCascade?.[lowerCaseFirst(model)];\n\n if (!cascades) {\n return;\n }\n\n cascades.forEach((m) => {\n result.add(m);\n collectDeleteCascades(m, modelMeta, result, visited);\n });\n}\n\nfunction getBaseRecursively(model: string, modelMeta: ModelMeta, result: Set<string>) {\n const bases = getModelInfo(modelMeta, model)?.baseTypes;\n if (bases) {\n bases.forEach((base) => {\n result.add(base);\n getBaseRecursively(base, modelMeta, result);\n });\n }\n}\n"],"mappings":"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","names":["model","data","field","lowerCaseFirst","lowerCaseFirst","field","model","lowerCaseFirst","model","lowerCaseFirst"]}
1
+ {"version":3,"sources":["../../src/cross/clone.ts","../../src/cross/model-data-visitor.ts","../../src/cross/model-meta.ts","../../src/cross/mutator.ts","../../src/cross/nested-read-visitor.ts","../../src/cross/types.ts","../../src/cross/utils.ts","../../src/cross/nested-write-visitor.ts","../../src/cross/query-analyzer.ts"],"sourcesContent":["import { isPlainObject } from 'is-plain-object';\n\n/**\n * Clones the given object. Only arrays and plain objects are cloned. Other values are returned as is.\n */\nexport function clone<T>(value: T): T {\n if (Array.isArray(value)) {\n return value.map((v) => clone(v)) as T;\n }\n\n if (typeof value === 'object') {\n if (!value || !isPlainObject(value)) {\n return value;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result: any = {};\n for (const key of Object.keys(value)) {\n result[key] = clone(value[key as keyof T]);\n }\n return result;\n }\n\n return value;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { resolveField, type ModelMeta } from '.';\n\n/**\n * Callback for @see ModelDataVisitor.\n */\nexport type ModelDataVisitorCallback = (model: string, data: any, scalarData: any) => void;\n\n/**\n * Visitor that traverses data returned by a Prisma query.\n */\nexport class ModelDataVisitor {\n constructor(private modelMeta: ModelMeta) {}\n\n /**\n * Visits the given model data.\n */\n visit(model: string, data: any, callback: ModelDataVisitorCallback) {\n if (!data || typeof data !== 'object') {\n return;\n }\n\n const scalarData: Record<string, unknown> = {};\n const subTasks: Array<{ model: string; data: any }> = [];\n\n for (const [k, v] of Object.entries(data)) {\n const field = resolveField(this.modelMeta, model, k);\n if (field && field.isDataModel) {\n if (field.isArray && Array.isArray(v)) {\n subTasks.push(...v.map((item) => ({ model: field.type, data: item })));\n } else {\n subTasks.push({ model: field.type, data: v });\n }\n } else {\n scalarData[k] = v;\n }\n }\n\n callback(model, data, scalarData);\n subTasks.forEach(({ model, data }) => this.visit(model, data, callback));\n }\n}\n","import { lowerCaseFirst } from 'lower-case-first';\n\n/**\n * Runtime information of a data model or field attribute\n */\nexport type RuntimeAttribute = {\n /**\n * Attribute name\n */\n name: string;\n\n /**\n * Attribute arguments\n */\n args: Array<{ name?: string; value: unknown }>;\n};\n\n/**\n * Function for computing default value for a field\n */\nexport type FieldDefaultValueProvider = (userContext: unknown) => unknown;\n\n/**\n * Runtime information of a data model field\n */\nexport type FieldInfo = {\n /**\n * Field name\n */\n name: string;\n\n /**\n * Field type name\n */\n type: string;\n\n /**\n * If the field is an ID field or part of a multi-field ID\n */\n isId?: boolean;\n\n /**\n * If the field type is a data model (or an optional/array of data model)\n */\n isDataModel?: boolean;\n\n /**\n * If the field is an array\n */\n isArray?: boolean;\n\n /**\n * If the field is optional\n */\n isOptional?: boolean;\n\n /**\n * Attributes on the field\n */\n attributes?: RuntimeAttribute[];\n\n /**\n * If the field is a relation field, the field name of the reverse side of the relation\n */\n backLink?: string;\n\n /**\n * If the field is the owner side of a relation\n */\n isRelationOwner?: boolean;\n\n /**\n * If the field is a foreign key field\n */\n isForeignKey?: boolean;\n\n /**\n * If the field is a foreign key field, the field name of the corresponding relation field.\n * Only available on foreign key fields.\n */\n relationField?: string;\n\n /**\n * Mapping from foreign key field names to relation field names.\n * Only available on relation fields.\n */\n foreignKeyMapping?: Record<string, string>;\n\n /**\n * Model from which the field is inherited\n */\n inheritedFrom?: string;\n\n /**\n * A function that provides a default value for the field\n */\n defaultValueProvider?: FieldDefaultValueProvider;\n\n /**\n * If the field is an auto-increment field\n */\n isAutoIncrement?: boolean;\n};\n\n/**\n * Metadata for a model-level unique constraint\n * e.g.: @@unique([a, b])\n */\nexport type UniqueConstraint = { name: string; fields: string[] };\n\n/**\n * Metadata for a data model\n */\nexport type ModelInfo = {\n /**\n * Model name\n */\n name: string;\n\n /**\n * Base types (not including abstract base models).\n */\n baseTypes?: string[];\n\n /**\n * Fields\n */\n fields: Record<string, FieldInfo>;\n\n /**\n * Unique constraints\n */\n uniqueConstraints?: Record<string, UniqueConstraint>;\n\n /**\n * Attributes on the model\n */\n attributes?: RuntimeAttribute[];\n\n /**\n * Discriminator field name\n */\n discriminator?: string;\n};\n\n/**\n * ZModel data model metadata\n */\nexport type ModelMeta = {\n /**\n * Data models\n */\n models: Record<string, ModelInfo>;\n\n /**\n * Mapping from model name to models that will be deleted because of it due to cascade delete\n */\n deleteCascade?: Record<string, string[]>;\n\n /**\n * Name of model that backs the `auth()` function\n */\n authModel?: string;\n\n /**\n * Optional map from full names to shortened names, used for extra fields/relations generated by ZenStack\n */\n shortNameMap?: Record<string, string>;\n};\n\n/**\n * Resolves a model field to its metadata. Returns undefined if not found.\n */\nexport function resolveField(modelMeta: ModelMeta, model: string, field: string): FieldInfo | undefined {\n return modelMeta.models[lowerCaseFirst(model)]?.fields?.[field];\n}\n\n/**\n * Resolves a model field to its metadata. Throws an error if not found.\n */\nexport function requireField(modelMeta: ModelMeta, model: string, field: string) {\n const f = resolveField(modelMeta, model, field);\n if (!f) {\n throw new Error(`Field ${model}.${field} cannot be resolved`);\n }\n return f;\n}\n\n/**\n * Gets all fields of a model.\n */\nexport function getFields(modelMeta: ModelMeta, model: string) {\n return modelMeta.models[lowerCaseFirst(model)]?.fields;\n}\n\n/**\n * Gets unique constraints of a model.\n */\nexport function getUniqueConstraints(modelMeta: ModelMeta, model: string) {\n return modelMeta.models[lowerCaseFirst(model)]?.uniqueConstraints;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { v4 as uuid } from 'uuid';\nimport {\n ModelDataVisitor,\n NestedWriteVisitor,\n enumerate,\n getFields,\n getIdFields,\n type ModelMeta,\n type PrismaWriteActionType,\n} from '.';\nimport { clone } from './clone';\n\n/**\n * Tries to apply a mutation to a query result.\n *\n * @param queryModel the model of the query\n * @param queryOp the operation of the query\n * @param queryData the result data of the query\n * @param mutationModel the model of the mutation\n * @param mutationOp the operation of the mutation\n * @param mutationArgs the arguments of the mutation\n * @param modelMeta the model metadata\n * @param logging whether to log the mutation application\n * @returns the updated query data if the mutation is applicable, otherwise undefined\n */\nexport async function applyMutation(\n queryModel: string,\n queryOp: string,\n queryData: any,\n mutationModel: string,\n mutationOp: PrismaWriteActionType,\n mutationArgs: any,\n modelMeta: ModelMeta,\n logging: boolean\n) {\n if (['count', 'aggregate', 'groupBy'].includes(queryOp)) {\n // only findXXX results are applicable\n return undefined;\n }\n\n let resultData = queryData;\n let updated = false;\n\n const visitor = new NestedWriteVisitor(modelMeta, {\n create: (model, args) => {\n if (model === queryModel) {\n const r = createMutate(queryModel, queryOp, resultData, args, modelMeta, logging);\n if (r) {\n resultData = r;\n updated = true;\n }\n }\n },\n\n createMany: (model, args) => {\n if (model === queryModel && args?.data) {\n for (const oneArg of enumerate(args.data)) {\n const r = createMutate(queryModel, queryOp, resultData, oneArg, modelMeta, logging);\n if (r) {\n resultData = r;\n updated = true;\n }\n }\n }\n },\n\n update: (model, args) => {\n if (model === queryModel) {\n const r = updateMutate(queryModel, resultData, model, args, modelMeta, logging);\n if (r) {\n resultData = r;\n updated = true;\n }\n }\n },\n\n delete: (model, args) => {\n if (model === queryModel) {\n const r = deleteMutate(queryModel, resultData, model, args, modelMeta, logging);\n if (r) {\n resultData = r;\n updated = true;\n }\n }\n },\n });\n\n await visitor.visit(mutationModel, mutationOp, mutationArgs);\n\n return updated ? resultData : undefined;\n}\n\nfunction createMutate(\n queryModel: string,\n queryOp: string,\n currentData: any,\n newData: any,\n modelMeta: ModelMeta,\n logging: boolean\n) {\n if (!newData) {\n return undefined;\n }\n\n if (queryOp !== 'findMany') {\n return undefined;\n }\n\n const modelFields = getFields(modelMeta, queryModel);\n if (!modelFields) {\n return undefined;\n }\n\n const insert: any = {};\n const newDataFields = Object.keys(newData);\n\n Object.entries(modelFields).forEach(([name, field]) => {\n if (field.isDataModel) {\n // only include scalar fields\n return;\n }\n if (newDataFields.includes(name)) {\n insert[name] = newData[name];\n } else {\n const defaultAttr = field.attributes?.find((attr) => attr.name === '@default');\n if (field.type === 'DateTime') {\n // default value for DateTime field\n if (defaultAttr || field.attributes?.some((attr) => attr.name === '@updatedAt')) {\n insert[name] = new Date();\n }\n } else if (defaultAttr?.args?.[0]?.value !== undefined) {\n // other default value\n insert[name] = defaultAttr.args[0].value;\n }\n }\n });\n\n // add temp id value\n const idFields = getIdFields(modelMeta, queryModel, false);\n idFields.forEach((f) => {\n if (insert[f.name] === undefined) {\n if (f.type === 'Int' || f.type === 'BigInt') {\n const currMax = Array.isArray(currentData)\n ? Math.max(\n ...[...currentData].map((item) => {\n const idv = parseInt(item[f.name]);\n return isNaN(idv) ? 0 : idv;\n })\n )\n : 0;\n insert[f.name] = currMax + 1;\n } else {\n insert[f.name] = uuid();\n }\n }\n });\n\n insert.$optimistic = true;\n\n if (logging) {\n console.log(`Optimistic create for ${queryModel}:`, insert);\n }\n return [insert, ...(Array.isArray(currentData) ? currentData : [])];\n}\n\nfunction updateMutate(\n queryModel: string,\n currentData: any,\n mutateModel: string,\n mutateArgs: any,\n modelMeta: ModelMeta,\n logging: boolean\n) {\n if (!currentData) {\n return undefined;\n }\n\n if (!mutateArgs?.where || !mutateArgs?.data) {\n return undefined;\n }\n\n let updated = false;\n\n for (const item of enumerate(currentData)) {\n const visitor = new ModelDataVisitor(modelMeta);\n visitor.visit(queryModel, item, (model, _data, scalarData) => {\n if (model === mutateModel && idFieldsMatch(model, scalarData, mutateArgs.where, modelMeta)) {\n Object.keys(item).forEach((k) => {\n if (mutateArgs.data[k] !== undefined) {\n item[k] = mutateArgs.data[k];\n }\n });\n item.$optimistic = true;\n updated = true;\n if (logging) {\n console.log(`Optimistic update for ${queryModel}:`, item);\n }\n }\n });\n }\n\n return updated ? clone(currentData) /* ensures new object identity */ : undefined;\n}\n\nfunction deleteMutate(\n queryModel: string,\n currentData: any,\n mutateModel: string,\n mutateArgs: any,\n modelMeta: ModelMeta,\n logging: boolean\n) {\n // TODO: handle mutation of nested reads?\n\n if (!currentData || !mutateArgs) {\n return undefined;\n }\n\n if (queryModel !== mutateModel) {\n return undefined;\n }\n\n let updated = false;\n let result = currentData;\n\n if (Array.isArray(currentData)) {\n for (const item of currentData) {\n if (idFieldsMatch(mutateModel, item, mutateArgs, modelMeta)) {\n result = (result as unknown[]).filter((x) => x !== item);\n updated = true;\n if (logging) {\n console.log(`Optimistic delete for ${queryModel}:`, item);\n }\n }\n }\n } else {\n if (idFieldsMatch(mutateModel, currentData, mutateArgs, modelMeta)) {\n result = null;\n updated = true;\n if (logging) {\n console.log(`Optimistic delete for ${queryModel}:`, currentData);\n }\n }\n }\n\n return updated ? result : undefined;\n}\n\nfunction idFieldsMatch(model: string, x: any, y: any, modelMeta: ModelMeta) {\n if (!x || !y || typeof x !== 'object' || typeof y !== 'object') {\n return false;\n }\n const idFields = getIdFields(modelMeta, model, false);\n if (idFields.length === 0) {\n return false;\n }\n return idFields.every((f) => x[f.name] === y[f.name]);\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { resolveField, type FieldInfo, type ModelMeta } from './model-meta';\n\nexport type NestedReadVisitorCallback = {\n field?: (\n model: string,\n field: FieldInfo | undefined,\n kind: 'include' | 'select' | undefined,\n args: unknown\n ) => void | boolean;\n};\n\n/**\n * Visitor for nested read payload.\n */\nexport class NestedReadVisitor {\n constructor(private readonly modelMeta: ModelMeta, private readonly callback: NestedReadVisitorCallback) {}\n\n doVisit(model: string, field: FieldInfo | undefined, kind: 'include' | 'select' | undefined, args: unknown) {\n if (this.callback.field) {\n const r = this.callback.field(model, field, kind, args);\n if (r === false) {\n return;\n }\n }\n\n if (!args || typeof args !== 'object') {\n return;\n }\n\n let selectInclude: any;\n let nextKind: 'select' | 'include' | undefined;\n if ((args as any).select) {\n selectInclude = (args as any).select;\n nextKind = 'select';\n } else if ((args as any).include) {\n selectInclude = (args as any).include;\n nextKind = 'include';\n }\n\n if (selectInclude && typeof selectInclude === 'object') {\n for (const [k, v] of Object.entries(selectInclude)) {\n if (k === '_count' && typeof v === 'object' && v) {\n // recurse into { _count: { ... } }\n this.doVisit(model, field, kind, v);\n } else {\n const field = resolveField(this.modelMeta, model, k);\n if (field) {\n this.doVisit(field.type, field, nextKind, v);\n }\n }\n }\n }\n }\n\n visit(model: string, args: unknown) {\n this.doVisit(model, undefined, undefined, args);\n }\n}\n","/**\n * Prisma write operation kinds\n */\nexport const PrismaWriteActions = [\n 'create',\n 'createMany',\n 'connectOrCreate',\n 'update',\n 'updateMany',\n 'upsert',\n 'connect',\n 'disconnect',\n 'set',\n 'delete',\n 'deleteMany',\n] as const;\n\n/**\n * Prisma write operation kinds\n */\nexport type PrismaWriteActionType = (typeof PrismaWriteActions)[number];\n\n/**\n * Maybe promise\n */\nexport type MaybePromise<T> = T | Promise<T> | PromiseLike<T>;\n","import { lowerCaseFirst } from 'lower-case-first';\nimport { requireField, type ModelInfo, type ModelMeta } from '.';\n\n/**\n * Gets field names in a data model entity, filtering out internal fields.\n */\nexport function getModelFields(data: object) {\n return data ? Object.keys(data) : [];\n}\n\n/**\n * Array or scalar\n */\nexport type Enumerable<T> = T | Array<T>;\n\n/**\n * Uniformly enumerates an array or scalar.\n */\nexport function enumerate<T>(x: Enumerable<T>) {\n if (x === null || x === undefined) {\n return [];\n } else if (Array.isArray(x)) {\n return x;\n } else {\n return [x];\n }\n}\n\n/**\n * Zip two arrays or scalars.\n */\nexport function zip<T1, T2>(x: Enumerable<T1>, y: Enumerable<T2>): Array<[T1, T2]> {\n if (Array.isArray(x)) {\n if (!Array.isArray(y)) {\n throw new Error('x and y should be both array or both scalar');\n }\n if (x.length !== y.length) {\n throw new Error('x and y should have the same length');\n }\n return x.map((_, i) => [x[i], y[i]] as [T1, T2]);\n } else {\n if (Array.isArray(y)) {\n throw new Error('x and y should be both array or both scalar');\n }\n return [[x, y]];\n }\n}\n\nexport function getIdFields(modelMeta: ModelMeta, model: string, throwIfNotFound = false) {\n const uniqueConstraints = modelMeta.models[lowerCaseFirst(model)]?.uniqueConstraints ?? {};\n\n const entries = Object.values(uniqueConstraints);\n if (entries.length === 0) {\n if (throwIfNotFound) {\n throw new Error(`Model ${model} does not have any id field`);\n }\n return [];\n }\n\n return entries[0].fields.map((f) => requireField(modelMeta, model, f));\n}\n\nexport function getModelInfo<Throw extends boolean = false>(\n modelMeta: ModelMeta,\n model: string,\n throwIfNotFound: Throw = false as Throw\n): Throw extends true ? ModelInfo : ModelInfo | undefined {\n const info = modelMeta.models[lowerCaseFirst(model)];\n if (!info && throwIfNotFound) {\n throw new Error(`Unable to load info for ${model}`);\n }\n return info;\n}\n\nexport function isDelegateModel(modelMeta: ModelMeta, model: string) {\n return !!getModelInfo(modelMeta, model)?.attributes?.some((attr) => attr.name === '@@delegate');\n}\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { FieldInfo, ModelMeta } from './model-meta';\nimport { resolveField } from './model-meta';\nimport { MaybePromise, PrismaWriteActionType, PrismaWriteActions } from './types';\nimport { getModelFields } from './utils';\n\ntype NestingPathItem = { field?: FieldInfo; model: string; where: any; unique: boolean };\n\n/**\n * Context for visiting\n */\nexport type NestedWriteVisitorContext = {\n /**\n * Parent data, can be used to replace fields\n */\n parent: any;\n\n /**\n * Current field, undefined if toplevel\n */\n field?: FieldInfo;\n\n /**\n * A top-down path of all nested update conditions and corresponding field till now\n */\n nestingPath: NestingPathItem[];\n};\n\n/**\n * NestedWriteVisitor's callback actions. A call back function should return true or void to indicate\n * that the visitor should continue traversing its children, or false to stop. It can also return an object\n * to let the visitor traverse it instead of its original children.\n */\nexport type NestedWriterVisitorCallback = {\n create?: (model: string, data: any, context: NestedWriteVisitorContext) => MaybePromise<boolean | object | void>;\n\n createMany?: (\n model: string,\n args: { data: any; skipDuplicates?: boolean },\n context: NestedWriteVisitorContext\n ) => MaybePromise<boolean | object | void>;\n\n connectOrCreate?: (\n model: string,\n args: { where: object; create: any },\n context: NestedWriteVisitorContext\n ) => MaybePromise<boolean | object | void>;\n\n connect?: (\n model: string,\n args: object,\n context: NestedWriteVisitorContext\n ) => MaybePromise<boolean | object | void>;\n\n disconnect?: (\n model: string,\n args: object,\n context: NestedWriteVisitorContext\n ) => MaybePromise<boolean | object | void>;\n\n set?: (model: string, args: object, context: NestedWriteVisitorContext) => MaybePromise<boolean | object | void>;\n\n update?: (model: string, args: object, context: NestedWriteVisitorContext) => MaybePromise<boolean | object | void>;\n\n updateMany?: (\n model: string,\n args: { where?: object; data: any },\n context: NestedWriteVisitorContext\n ) => MaybePromise<boolean | object | void>;\n\n upsert?: (\n model: string,\n args: { where: object; create: any; update: any },\n context: NestedWriteVisitorContext\n ) => MaybePromise<boolean | object | void>;\n\n delete?: (\n model: string,\n args: object | boolean,\n context: NestedWriteVisitorContext\n ) => MaybePromise<boolean | object | void>;\n\n deleteMany?: (\n model: string,\n args: any | object,\n context: NestedWriteVisitorContext\n ) => MaybePromise<boolean | object | void>;\n\n field?: (\n field: FieldInfo,\n action: PrismaWriteActionType,\n data: any,\n context: NestedWriteVisitorContext\n ) => MaybePromise<void>;\n};\n\n/**\n * Recursive visitor for nested write (create/update) payload.\n */\nexport class NestedWriteVisitor {\n constructor(private readonly modelMeta: ModelMeta, private readonly callback: NestedWriterVisitorCallback) {}\n\n private isPrismaWriteAction(value: string): value is PrismaWriteActionType {\n return PrismaWriteActions.includes(value as PrismaWriteActionType);\n }\n\n /**\n * Start visiting\n *\n * @see NestedWriterVisitorCallback\n */\n async visit(model: string, action: PrismaWriteActionType, args: any): Promise<void> {\n if (!args) {\n return;\n }\n\n let topData = args;\n\n switch (action) {\n // create has its data wrapped in 'data' field\n case 'create':\n topData = topData.data;\n break;\n\n case 'delete':\n case 'deleteMany':\n topData = topData.where;\n break;\n }\n\n await this.doVisit(model, action, topData, undefined, undefined, []);\n }\n\n private async doVisit(\n model: string,\n action: PrismaWriteActionType,\n data: any,\n parent: any,\n field: FieldInfo | undefined,\n nestingPath: NestingPathItem[]\n ): Promise<void> {\n if (!data) {\n return;\n }\n\n const toplevel = field == undefined;\n\n const context = { parent, field, nestingPath: [...nestingPath] };\n const pushNewContext = (field: FieldInfo | undefined, model: string, where: any, unique = false) => {\n return { ...context, nestingPath: [...context.nestingPath, { field, model, where, unique }] };\n };\n\n // visit payload\n switch (action) {\n case 'create':\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, {});\n let callbackResult: any;\n if (this.callback.create) {\n callbackResult = await this.callback.create(model, item, newContext);\n }\n if (callbackResult !== false) {\n const subPayload = typeof callbackResult === 'object' ? callbackResult : item;\n await this.visitSubPayload(model, action, subPayload, newContext.nestingPath);\n }\n }\n break;\n\n case 'createMany':\n if (data) {\n const newContext = pushNewContext(field, model, {});\n let callbackResult: any;\n if (this.callback.createMany) {\n callbackResult = await this.callback.createMany(model, data, newContext);\n }\n if (callbackResult !== false) {\n const subPayload = typeof callbackResult === 'object' ? callbackResult : data.data;\n await this.visitSubPayload(model, action, subPayload, newContext.nestingPath);\n }\n }\n break;\n\n case 'connectOrCreate':\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, item.where);\n let callbackResult: any;\n if (this.callback.connectOrCreate) {\n callbackResult = await this.callback.connectOrCreate(model, item, newContext);\n }\n if (callbackResult !== false) {\n const subPayload = typeof callbackResult === 'object' ? callbackResult : item.create;\n await this.visitSubPayload(model, action, subPayload, newContext.nestingPath);\n }\n }\n break;\n\n case 'connect':\n if (this.callback.connect) {\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, item, true);\n await this.callback.connect(model, item, newContext);\n }\n }\n break;\n\n case 'disconnect':\n // disconnect has two forms:\n // if relation is to-many, the payload is a unique filter object\n // if relation is to-one, the payload can only be boolean `true`\n if (this.callback.disconnect) {\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, item, typeof item === 'object');\n await this.callback.disconnect(model, item, newContext);\n }\n }\n break;\n\n case 'set':\n if (this.callback.set) {\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, item, true);\n await this.callback.set(model, item, newContext);\n }\n }\n break;\n\n case 'update':\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, item.where);\n let callbackResult: any;\n if (this.callback.update) {\n callbackResult = await this.callback.update(model, item, newContext);\n }\n if (callbackResult !== false) {\n const subPayload =\n typeof callbackResult === 'object'\n ? callbackResult\n : typeof item.data === 'object'\n ? item.data\n : item;\n await this.visitSubPayload(model, action, subPayload, newContext.nestingPath);\n }\n }\n break;\n\n case 'updateMany':\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, item.where);\n let callbackResult: any;\n if (this.callback.updateMany) {\n callbackResult = await this.callback.updateMany(model, item, newContext);\n }\n if (callbackResult !== false) {\n const subPayload = typeof callbackResult === 'object' ? callbackResult : item;\n await this.visitSubPayload(model, action, subPayload, newContext.nestingPath);\n }\n }\n break;\n\n case 'upsert': {\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, item.where);\n let callbackResult: any;\n if (this.callback.upsert) {\n callbackResult = await this.callback.upsert(model, item, newContext);\n }\n if (callbackResult !== false) {\n if (typeof callbackResult === 'object') {\n await this.visitSubPayload(model, action, callbackResult, newContext.nestingPath);\n } else {\n await this.visitSubPayload(model, action, item.create, newContext.nestingPath);\n await this.visitSubPayload(model, action, item.update, newContext.nestingPath);\n }\n }\n }\n break;\n }\n\n case 'delete': {\n if (this.callback.delete) {\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, toplevel ? item.where : item);\n await this.callback.delete(model, item, newContext);\n }\n }\n break;\n }\n\n case 'deleteMany':\n if (this.callback.deleteMany) {\n for (const item of this.enumerateReverse(data)) {\n const newContext = pushNewContext(field, model, toplevel ? item.where : item);\n await this.callback.deleteMany(model, item, newContext);\n }\n }\n break;\n\n default: {\n throw new Error(`unhandled action type ${action}`);\n }\n }\n }\n\n private async visitSubPayload(\n model: string,\n action: PrismaWriteActionType,\n payload: any,\n nestingPath: NestingPathItem[]\n ) {\n for (const field of getModelFields(payload)) {\n const fieldInfo = resolveField(this.modelMeta, model, field);\n if (!fieldInfo) {\n continue;\n }\n\n if (fieldInfo.isDataModel) {\n if (payload[field]) {\n // recurse into nested payloads\n for (const [subAction, subData] of Object.entries<any>(payload[field])) {\n if (this.isPrismaWriteAction(subAction) && subData) {\n await this.doVisit(fieldInfo.type, subAction, subData, payload[field], fieldInfo, [\n ...nestingPath,\n ]);\n }\n }\n }\n } else {\n // visit plain field\n if (this.callback.field) {\n await this.callback.field(fieldInfo, action, payload[field], {\n parent: payload,\n nestingPath,\n field: fieldInfo,\n });\n }\n }\n }\n }\n\n // enumerate a (possible) array in reverse order, so that the enumeration\n // callback can safely delete the current item\n private *enumerateReverse(data: any) {\n if (Array.isArray(data)) {\n for (let i = data.length - 1; i >= 0; i--) {\n yield data[i];\n }\n } else {\n yield data;\n }\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { lowerCaseFirst } from 'lower-case-first';\nimport type { ModelMeta } from './model-meta';\nimport { NestedReadVisitor } from './nested-read-visitor';\nimport { NestedWriteVisitor } from './nested-write-visitor';\nimport type { PrismaWriteActionType } from './types';\nimport { getModelInfo } from './utils';\n\n/**\n * Gets models read (including nested ones) given a query args.\n * @param model\n * @param targetModels\n * @param modelMeta\n * @param args\n * @returns\n */\nexport function getReadModels(model: string, modelMeta: ModelMeta, args: any) {\n const result = new Set<string>();\n result.add(model);\n const visitor = new NestedReadVisitor(modelMeta, {\n field: (model) => {\n result.add(model);\n return true;\n },\n });\n visitor.visit(model, args);\n return [...result];\n}\n\n/**\n * Gets mutated models (including nested ones) given a mutation args.\n */\nexport async function getMutatedModels(\n model: string,\n operation: PrismaWriteActionType,\n mutationArgs: any,\n modelMeta: ModelMeta\n) {\n const result = new Set<string>();\n result.add(model);\n\n if (mutationArgs) {\n const addModel = (model: string) => void result.add(model);\n\n // add models that are cascaded deleted recursively\n const addCascades = (model: string) => {\n const cascades = new Set<string>();\n const visited = new Set<string>();\n collectDeleteCascades(model, modelMeta, cascades, visited);\n cascades.forEach((m) => addModel(m));\n };\n\n const visitor = new NestedWriteVisitor(modelMeta, {\n create: addModel,\n createMany: addModel,\n connectOrCreate: addModel,\n connect: addModel,\n disconnect: addModel,\n set: addModel,\n update: addModel,\n updateMany: addModel,\n upsert: addModel,\n delete: (model) => {\n addModel(model);\n addCascades(model);\n },\n deleteMany: (model) => {\n addModel(model);\n addCascades(model);\n },\n });\n await visitor.visit(model, operation, mutationArgs);\n }\n\n // include delegate base models recursively\n result.forEach((m) => {\n getBaseRecursively(m, modelMeta, result);\n });\n\n return [...result];\n}\n\nfunction collectDeleteCascades(model: string, modelMeta: ModelMeta, result: Set<string>, visited: Set<string>) {\n if (visited.has(model)) {\n // break circle\n return;\n }\n visited.add(model);\n\n const cascades = modelMeta.deleteCascade?.[lowerCaseFirst(model)];\n\n if (!cascades) {\n return;\n }\n\n cascades.forEach((m) => {\n result.add(m);\n collectDeleteCascades(m, modelMeta, result, visited);\n });\n}\n\nfunction getBaseRecursively(model: string, modelMeta: ModelMeta, result: Set<string>) {\n const bases = getModelInfo(modelMeta, model)?.baseTypes;\n if (bases) {\n bases.forEach((base) => {\n result.add(base);\n getBaseRecursively(base, modelMeta, result);\n });\n }\n}\n"],"mappings":"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","names":["model","data","field","lowerCaseFirst","lowerCaseFirst","field","model","lowerCaseFirst","model","lowerCaseFirst"]}
package/enhance.d.ts CHANGED
@@ -1 +1 @@
1
- export { auth, enhance } from '.zenstack/enhance';
1
+ export { auth, enhance, type PrismaClient } from '.zenstack/enhance';
@@ -13,7 +13,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
14
  exports.withDefaultAuth = withDefaultAuth;
15
15
  const cross_1 = require("../cross");
16
- const cross_2 = require("../cross");
17
16
  const proxy_1 = require("./proxy");
18
17
  const utils_1 = require("./utils");
19
18
  /**
@@ -43,7 +42,7 @@ class DefaultAuthHandler extends proxy_1.DefaultPrismaProxyHandler {
43
42
  }
44
43
  preprocessWritePayload(model, action, args) {
45
44
  return __awaiter(this, void 0, void 0, function* () {
46
- const newArgs = (0, cross_2.clone)(args);
45
+ const newArgs = (0, cross_1.clone)(args);
47
46
  const processCreatePayload = (model, data) => {
48
47
  const fields = (0, cross_1.getFields)(this.options.modelMeta, model);
49
48
  for (const fieldInfo of Object.values(fields)) {
@@ -122,7 +121,7 @@ class DefaultAuthHandler extends proxy_1.DefaultPrismaProxyHandler {
122
121
  getDefaultValueFromAuth(fieldInfo) {
123
122
  var _a;
124
123
  if (!this.userContext) {
125
- throw new Error(`Evaluating default value of field \`${fieldInfo.name}\` requires a user context`);
124
+ throw (0, utils_1.prismaClientValidationError)(this.prisma, this.options.prismaModule, `Evaluating default value of field \`${fieldInfo.name}\` requires a user context`);
126
125
  }
127
126
  return (_a = fieldInfo.defaultValueProvider) === null || _a === void 0 ? void 0 : _a.call(fieldInfo, this.userContext);
128
127
  }
@@ -1 +1 @@
1
- {"version":3,"file":"default-auth.js","sourceRoot":"","sources":["../../src/enhancements/default-auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"default-auth.js","sourceRoot":"","sources":["../../src/enhancements/default-auth.ts"],"names":[],"mappings":"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"}
@@ -820,7 +820,11 @@ class DelegateProxyHandler extends proxy_1.DefaultPrismaProxyHandler {
820
820
  : undefined;
821
821
  }
822
822
  makeAuxRelationName(model) {
823
- return `${constants_1.DELEGATE_AUX_RELATION_PREFIX}_${(0, lower_case_first_1.lowerCaseFirst)(model.name)}`;
823
+ var _a;
824
+ const name = `${constants_1.DELEGATE_AUX_RELATION_PREFIX}_${(0, lower_case_first_1.lowerCaseFirst)(model.name)}`;
825
+ // make sure we look up into short name map to see if it's truncated
826
+ const shortName = (_a = this.options.modelMeta.shortNameMap) === null || _a === void 0 ? void 0 : _a[name];
827
+ return shortName !== null && shortName !== void 0 ? shortName : name;
824
828
  }
825
829
  getModelName(model) {
826
830
  const info = (0, cross_1.getModelInfo)(this.options.modelMeta, model, true);
@@ -1 +1 @@
1
- {"version":3,"file":"delegate.js","sourceRoot":"","sources":["../../src/enhancements/delegate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"delegate.js","sourceRoot":"","sources":["../../src/enhancements/delegate.ts"],"names":[],"mappings":"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"}
@@ -29,8 +29,9 @@ export declare class PolicyUtil extends QueryUtils {
29
29
  * Creates a negation of a query condition.
30
30
  */
31
31
  not(condition: object | boolean | undefined): object;
32
- isTrue(condition: object): boolean;
33
- isFalse(condition: object): boolean;
32
+ private singleKey;
33
+ isTrue(condition: object | null | undefined): boolean;
34
+ isFalse(condition: object | null | undefined): boolean;
34
35
  private makeTrue;
35
36
  private makeFalse;
36
37
  private reduce;
@@ -25,6 +25,7 @@ const version_1 = require("../../version");
25
25
  const logger_1 = require("../logger");
26
26
  const query_utils_1 = require("../query-utils");
27
27
  const utils_1 = require("../utils");
28
+ const is_plain_object_1 = require("is-plain-object");
28
29
  /**
29
30
  * Access policy enforcement utilities
30
31
  */
@@ -100,22 +101,53 @@ class PolicyUtil extends query_utils_1.QueryUtils {
100
101
  }
101
102
  // Static True/False conditions
102
103
  // https://www.prisma.io/docs/concepts/components/prisma-client/null-and-undefined#the-effect-of-null-and-undefined-on-conditionals
103
- isTrue(condition) {
104
- if (condition === null || condition === undefined) {
104
+ singleKey(obj, key) {
105
+ if (!obj) {
105
106
  return false;
106
107
  }
107
108
  else {
108
- return ((typeof condition === 'object' && Object.keys(condition).length === 0) ||
109
- ('AND' in condition && Array.isArray(condition.AND) && condition.AND.length === 0));
109
+ return Object.keys(obj).length === 1 && Object.keys(obj)[0] === key;
110
110
  }
111
111
  }
112
+ isTrue(condition) {
113
+ if (condition === null || condition === undefined || !(0, is_plain_object_1.isPlainObject)(condition)) {
114
+ return false;
115
+ }
116
+ // {} is true
117
+ if (Object.keys(condition).length === 0) {
118
+ return true;
119
+ }
120
+ // { OR: TRUE } is true
121
+ if (this.singleKey(condition, 'OR') && typeof condition.OR === 'object' && this.isTrue(condition.OR)) {
122
+ return true;
123
+ }
124
+ // { NOT: FALSE } is true
125
+ if (this.singleKey(condition, 'NOT') && typeof condition.NOT === 'object' && this.isFalse(condition.NOT)) {
126
+ return true;
127
+ }
128
+ // { AND: [] } is true
129
+ if (this.singleKey(condition, 'AND') && Array.isArray(condition.AND) && condition.AND.length === 0) {
130
+ return true;
131
+ }
132
+ return false;
133
+ }
112
134
  isFalse(condition) {
113
- if (condition === null || condition === undefined) {
135
+ if (condition === null || condition === undefined || !(0, is_plain_object_1.isPlainObject)(condition)) {
114
136
  return false;
115
137
  }
116
- else {
117
- return 'OR' in condition && Array.isArray(condition.OR) && condition.OR.length === 0;
138
+ // { AND: FALSE } is false
139
+ if (this.singleKey(condition, 'AND') && typeof condition.AND === 'object' && this.isFalse(condition.AND)) {
140
+ return true;
118
141
  }
142
+ // { NOT: TRUE } is false
143
+ if (this.singleKey(condition, 'NOT') && typeof condition.NOT === 'object' && this.isTrue(condition.NOT)) {
144
+ return true;
145
+ }
146
+ // { OR: [] } is false
147
+ if (this.singleKey(condition, 'OR') && Array.isArray(condition.OR) && condition.OR.length === 0) {
148
+ return true;
149
+ }
150
+ return false;
119
151
  }
120
152
  makeTrue() {
121
153
  return { AND: [] };
@@ -135,10 +167,6 @@ class PolicyUtil extends query_utils_1.QueryUtils {
135
167
  }
136
168
  const result = {};
137
169
  for (const [key, value] of Object.entries(condition)) {
138
- if (this.isFalse(result)) {
139
- // already false, no need to continue
140
- break;
141
- }
142
170
  if (value === null || value === undefined) {
143
171
  result[key] = value;
144
172
  continue;
@@ -149,16 +177,15 @@ class PolicyUtil extends query_utils_1.QueryUtils {
149
177
  .map((c) => this.reduce(c))
150
178
  .filter((c) => c !== undefined && !this.isTrue(c));
151
179
  if (children.length === 0) {
152
- result[key] = []; // true
180
+ // { ..., AND: [] }
181
+ result[key] = [];
153
182
  }
154
183
  else if (children.some((c) => this.isFalse(c))) {
155
- result['OR'] = []; // false
184
+ // { ..., AND: { OR: [] } }
185
+ result[key] = this.makeFalse();
156
186
  }
157
187
  else {
158
- if (!this.isTrue({ AND: result[key] })) {
159
- // use AND only if it's not already true
160
- result[key] = !Array.isArray(value) && children.length === 1 ? children[0] : children;
161
- }
188
+ result[key] = !Array.isArray(value) && children.length === 1 ? children[0] : children;
162
189
  }
163
190
  break;
164
191
  }
@@ -167,54 +194,45 @@ class PolicyUtil extends query_utils_1.QueryUtils {
167
194
  .map((c) => this.reduce(c))
168
195
  .filter((c) => c !== undefined && !this.isFalse(c));
169
196
  if (children.length === 0) {
170
- result[key] = []; // false
197
+ // { ..., OR: [] }
198
+ result[key] = [];
171
199
  }
172
200
  else if (children.some((c) => this.isTrue(c))) {
173
- result['AND'] = []; // true
201
+ // { ..., OR: { AND: [] } }
202
+ result[key] = this.makeTrue();
174
203
  }
175
204
  else {
176
- if (!this.isFalse({ OR: result[key] })) {
177
- // use OR only if it's not already false
178
- result[key] = !Array.isArray(value) && children.length === 1 ? children[0] : children;
179
- }
205
+ result[key] = !Array.isArray(value) && children.length === 1 ? children[0] : children;
180
206
  }
181
207
  break;
182
208
  }
183
209
  case 'NOT': {
184
- const children = (0, cross_1.enumerate)(value)
185
- .map((c) => this.reduce(c))
186
- .filter((c) => c !== undefined && !this.isFalse(c));
187
- if (children.length === 0) {
188
- // all clauses are false, result is a constant true,
189
- // thus eliminated (not adding into result)
190
- }
191
- else if (children.some((c) => this.isTrue(c))) {
192
- // some clauses are true, result is a constant false,
193
- // eliminate all other keys and set entire condition to false
194
- Object.keys(result).forEach((k) => delete result[k]);
195
- result['OR'] = []; // this will cause the outer loop to exit too
196
- }
197
- else {
198
- result[key] = !Array.isArray(value) && children.length === 1 ? children[0] : children;
199
- }
210
+ const children = (0, cross_1.enumerate)(value).map((c) => this.reduce(c));
211
+ result[key] = !Array.isArray(value) && children.length === 1 ? children[0] : children;
200
212
  break;
201
213
  }
202
214
  default: {
203
- const booleanKeys = ['AND', 'OR', 'NOT', 'is', 'isNot', 'none', 'every', 'some'];
204
- if (typeof value === 'object' &&
205
- value &&
206
- // recurse only if the value has at least one boolean key
207
- Object.keys(value).some((k) => booleanKeys.includes(k))) {
208
- result[key] = this.reduce(value);
215
+ if (!(0, is_plain_object_1.isPlainObject)(value)) {
216
+ // don't visit into non-plain object values - could be Date, array, etc.
217
+ result[key] = value;
209
218
  }
210
219
  else {
211
- result[key] = value;
220
+ result[key] = this.reduce(value);
212
221
  }
213
222
  break;
214
223
  }
215
224
  }
216
225
  }
217
- return result;
226
+ // finally normalize constant true/false conditions
227
+ if (this.isTrue(result)) {
228
+ return this.makeTrue();
229
+ }
230
+ else if (this.isFalse(result)) {
231
+ return this.makeFalse();
232
+ }
233
+ else {
234
+ return result;
235
+ }
218
236
  }
219
237
  getModelPolicyDef(model) {
220
238
  if (this.options.kinds && !this.options.kinds.includes('policy')) {
@@ -1 +1 @@
1
- {"version":3,"file":"policy-utils.js","sourceRoot":"","sources":["../../../src/enhancements/policy/policy-utils.ts"],"names":[],"mappings":";AAAA,uDAAuD;;;;;;;;;;;;;;;AAEvD,0DAAkC;AAClC,uDAAkD;AAClD,uDAAkD;AAClD,6BAAuE;AACvE,+DAAoD;AACpD,+CAAqE;AACrE,uCASqB;AASrB,2CAA2C;AAE3C,sCAAmC;AACnC,gDAA4C;AAE5C,oCAAuE;AAEvE;;GAEG;AACH,MAAa,UAAW,SAAQ,wBAAU;IAQtC,YACqB,EAAoB,EACrC,OAAmC,EACnC,OAA4B,EACX,iBAAiB,KAAK;QAEvC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QALF,OAAE,GAAF,EAAE,CAAkB;QAGpB,mBAAc,GAAd,cAAc,CAAQ;QA0L3C,YAAY;QAEZ,oBAAoB;QAEH,2BAAsB,GAAmB;YACtD,UAAU,EAAE;gBACR,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;gBACrB,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE;gBAC3C,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;gBACvB,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;gBACvB,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;aAC9B;SACJ,CAAC;QAlME,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC;QAE1B,CAAC;YACG,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,YAAY,EAAE,IAAI,CAAC,YAAY;SAClC,GAAG,OAAO,CAAC,CAAC;IACjB,CAAC;IAED,2BAA2B;IAE3B;;OAEG;IACH,GAAG,CAAC,GAAG,UAA4C;QAC/C,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;QAC3D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC;aAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1C,CAAC;IACL,CAAC;IAED;;OAEG;IACH,EAAE,CAAC,GAAG,UAA4C;QAC9C,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;QAC3D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5B,CAAC;aAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,SAAuC;QACvC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC;aAAM,IAAI,OAAO,SAAS,KAAK,SAAS,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;QAC3C,CAAC;IACL,CAAC;IAED,+BAA+B;IAC/B,mIAAmI;IAE5H,MAAM,CAAC,SAAiB;QAC3B,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAChD,OAAO,KAAK,CAAC;QACjB,CAAC;aAAM,CAAC;YACJ,OAAO,CACH,CAAC,OAAO,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;gBACtE,CAAC,KAAK,IAAI,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CACrF,CAAC;QACN,CAAC;IACL,CAAC;IAEM,OAAO,CAAC,SAAiB;QAC5B,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAChD,OAAO,KAAK,CAAC;QACjB,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,IAAI,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;QACzF,CAAC;IACL,CAAC;IAEO,QAAQ;QACZ,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;IACvB,CAAC;IAEO,SAAS;QACb,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtB,CAAC;IAEO,MAAM,CAAC,SAAuC;QAClD,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC;QAED,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5B,CAAC;QAED,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACrB,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,MAAM,MAAM,GAAQ,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAM,SAAS,CAAC,EAAE,CAAC;YACxD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvB,qCAAqC;gBACrC,MAAM;YACV,CAAC;YAED,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBACpB,SAAS;YACb,CAAC;YAED,QAAQ,GAAG,EAAE,CAAC;gBACV,KAAK,KAAK,CAAC,CAAC,CAAC;oBACT,MAAM,QAAQ,GAAG,IAAA,iBAAS,EAAC,KAAK,CAAC;yBAC5B,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;yBAC/B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBACvD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACxB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO;oBAC7B,CAAC;yBAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC/C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ;oBAC/B,CAAC;yBAAM,CAAC;wBACJ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;4BACrC,wCAAwC;4BACxC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;wBAC1F,CAAC;oBACL,CAAC;oBACD,MAAM;gBACV,CAAC;gBAED,KAAK,IAAI,CAAC,CAAC,CAAC;oBACR,MAAM,QAAQ,GAAG,IAAA,iBAAS,EAAC,KAAK,CAAC;yBAC5B,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;yBAC/B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;oBACxD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACxB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ;oBAC9B,CAAC;yBAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC9C,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO;oBAC/B,CAAC;yBAAM,CAAC;wBACJ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;4BACrC,wCAAwC;4BACxC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;wBAC1F,CAAC;oBACL,CAAC;oBACD,MAAM;gBACV,CAAC;gBAED,KAAK,KAAK,CAAC,CAAC,CAAC;oBACT,MAAM,QAAQ,GAAG,IAAA,iBAAS,EAAC,KAAK,CAAC;yBAC5B,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;yBAC/B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;oBACxD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACxB,oDAAoD;wBACpD,2CAA2C;oBAC/C,CAAC;yBAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC9C,qDAAqD;wBACrD,6DAA6D;wBAC7D,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;wBACrD,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,6CAA6C;oBACpE,CAAC;yBAAM,CAAC;wBACJ,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;oBAC1F,CAAC;oBACD,MAAM;gBACV,CAAC;gBAED,OAAO,CAAC,CAAC,CAAC;oBACN,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;oBACjF,IACI,OAAO,KAAK,KAAK,QAAQ;wBACzB,KAAK;wBACL,yDAAyD;wBACzD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EACzD,CAAC;wBACC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACrC,CAAC;yBAAM,CAAC;wBACJ,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;oBACxB,CAAC;oBACD,MAAM;gBACV,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAgBO,iBAAiB,CAAC,KAAa;QACnC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/D,6DAA6D;YAC7D,OAAO,IAAI,CAAC,sBAAsB,CAAC;QACvC,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAA,iCAAc,EAAC,KAAK,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,MAAM,IAAI,CAAC,YAAY,CAAC,mCAAmC,KAAK,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAEO,yBAAyB,CAAC,KAAa,EAAE,SAA8B;;QAC3E,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC1C,OAAO,MAAA,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,mCAAI,IAAI,CAAC;IACnD,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,EAAgB,EAAE,KAAa,EAAE,SAA8B,EAAE,QAAc;QACxF,MAAM,KAAK,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAE/D,iBAAiB;QACjB,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QAED,wBAAwB;QACxB,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,qBAAqB,CAAC,EAAgB,EAAE,KAAa,EAAE,KAAa;;QAChE,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,MAAA,MAAA,MAAA,GAAG,CAAC,UAAU,0CAAE,IAAI,0CAAG,KAAK,CAAC,0CAAE,KAAK,CAAC;QAEnD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,qCAAqC;YACrC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QAED,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,6BAA6B,CAAC,EAAgB,EAAE,KAAa,EAAE,KAAa;;QACxE,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,MAAA,MAAA,MAAA,GAAG,CAAC,UAAU,0CAAE,IAAI,0CAAG,KAAK,CAAC,0CAAE,aAAa,CAAC;QAE3D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,qDAAqD;YACrD,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5B,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QAED,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,uBAAuB,CAAC,EAAgB,EAAE,KAAa,EAAE,KAAa;;QAClE,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,MAAA,MAAA,MAAA,GAAG,CAAC,UAAU,0CAAE,MAAM,0CAAG,KAAK,CAAC,0CAAE,KAAK,CAAC;QAErD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,qCAAqC;YACrC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QAED,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,+BAA+B,CAAC,EAAgB,EAAE,KAAa,EAAE,KAAa;;QAC1E,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,MAAA,MAAA,MAAA,GAAG,CAAC,UAAU,0CAAE,MAAM,0CAAG,KAAK,CAAC,0CAAE,aAAa,CAAC;QAE7D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,qDAAqD;YACrD,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5B,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QAED,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,KAAa,EAAE,SAA8B;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC/D,OAAO,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,KAAa,EAAE,SAA8B;;QAC9D,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;YACjD,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,MAAA,GAAG,CAAC,UAAU,0CAAG,SAAS,CAAC,EAAE,CAAC;YAC9B,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAChD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,SAAS,IAAI,CAAC,CAAC,qBAAqB,KAAK,SAAS,CAChF,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,eAAe,CAAC,KAAa,EAAE,IAAS,EAAE,SAAmB;QACzD,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAE1C,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC;QACrD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,sBAAsB,CAAC,EAAgB,EAAE,IAAS,EAAE,KAAa,EAAE,SAA8B;QAC7F,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAEpD,IAAI,SAAS,KAAK,QAAQ,IAAI,IAAI,EAAE,CAAC;YACjC,kCAAkC;YAClC,MAAM,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACpE,IAAI,gBAAgB,CAAC,eAAe,EAAE,CAAC;gBACnC,WAAW;gBACX,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC9B,OAAO,KAAK,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACJ,IAAI,gBAAgB,CAAC,KAAK,EAAE,CAAC;oBACzB,0BAA0B;oBAC1B,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;gBACpD,CAAC;gBAED,IAAI,gBAAgB,CAAC,aAAa,EAAE,CAAC;oBACjC,oDAAoD;oBACpD,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAC;gBAC3D,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YACvB,yCAAyC;YACzC,MAAM,sBAAsB,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACxE,IAAI,sBAAsB,EAAE,CAAC;gBACzB,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;YACnD,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,+BAA+B;YAC/B,6BAA6B;YAC7B,uCAAuC;YACvC,WAAW,GAAG,IAAI,CAAC,gCAAgC,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACtF,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,kIAAkI;IAClI,2FAA2F;IACnF,gCAAgC,CAAC,EAAgB,EAAE,KAAa,EAAE,OAAY,EAAE,UAAe;QACnG,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/E,OAAO,UAAU,CAAC;QACtB,CAAC;QAED,MAAM,cAAc,GAAa,EAAE,CAAC;QACpC,MAAM,sBAAsB,GAAa,EAAE,CAAC;QAE5C,KAAK,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAM,OAAO,CAAC,EAAE,CAAC;YAC7D,IAAI,CAAC,UAAU,EAAE,CAAC;gBACd,SAAS;YACb,CAAC;YAED,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YAClE,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YAElF,MAAM,SAAS,GAAG,IAAA,oBAAY,EAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YAC7D,IAAI,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,WAAW,EAAE,CAAC;gBACzB,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;oBACpB,IAAI,CAAC,6BAA6B,CAAC,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;gBAClE,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,4BAA4B,CAAC,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;gBACjE,CAAC;YACL,CAAC;QACL,CAAC;QAED,+CAA+C;QAC/C,MAAM,WAAW,GAAW,IAAI,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC;QAExD,qHAAqH;QACrH,MAAM,mBAAmB,GACrB,sBAAsB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,CAAC;QAEjG,sEAAsE;QACtE,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,mBAAmB,CAAC,CAAC;QACrF,OAAO,YAAY,CAAC;IACxB,CAAC;IAEO,6BAA6B,CACjC,EAAgB,EAChB,SAAoB,EACpB,OAAgD;QAEhD,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5D,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,WAAW,GAAG,IAAI,CAAC,gCAAgC,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACnG,6DAA6D;YAC7D,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,WAAW,GAAG,IAAI,CAAC,gCAAgC,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACnG,2DAA2D;YAC3D,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACvD,CAAC;QACD,IACI,OAAO,CAAC,KAAK;YACb,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ;YACjC,4BAA4B;YAC5B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EACvC,CAAC;YACC,MAAM,WAAW,GAAG,IAAI,CAAC,gCAAgC,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAEpG,wEAAwE;YACxE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAChB,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC;YACtB,CAAC;YACD,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YAC5E,OAAO,OAAO,CAAC,KAAK,CAAC;QACzB,CAAC;IACL,CAAC;IAEO,4BAA4B,CAChC,EAAgB,EAChB,SAAoB,EACpB,OAAwD;QAExD,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAE5D,6DAA6D;QAE7D,iCAAiC;QAEjC,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC1D,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;gBACb,MAAM,WAAW,GAAG,IAAI,CAAC,gCAAgC,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;gBACjG,uEAAuE;gBACvE,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;YACnD,CAAC;YAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,MAAM,WAAW,GAAG,IAAI,CAAC,gCAAgC,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBACpG,iFAAiF;gBACjF,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YACzD,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,MAAM,WAAW,GAAG,IAAI,CAAC,gCAAgC,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YAC9F,8EAA8E;YAC9E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAA,aAAK,EAAC,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC;YACvD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3D,OAAO,CAAC,EAAE,GAAG,QAAQ,CAAC;QAC1B,CAAC;IACL,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,EAAgB,EAAE,KAAa,EAAE,IAAS;QACpD,mDAAmD;QACnD,MAAM,QAAQ,GAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QACrE,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;YAC5D,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,+BAA+B;YAC/B,6BAA6B;YAC7B,uCAAuC;YACvC,IAAI,CAAC,gCAAgC,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,QAAQ,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3F,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACd,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YACtD,CAAC;QACL,CAAC;QAED,mFAAmF;QACnF,MAAM,iBAAiB,GAAG,IAAI,CAAC,0BAA0B,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAE3E,yFAAyF;QACzF,0CAA0C;QAC1C,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACd,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC;YACtE,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,YAAY;IAEZ,iBAAiB;IAEjB;;OAEG;IACH,oBAAoB,CAAC,KAAa,EAAE,SAAyB;QACzD,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/D,wEAAwE;YACxE,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC;QAC5D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACX,iJAAiJ,CACpJ,CAAC;QACN,CAAC;QAED,IAAI,OAAO,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,OAAO,CAAC;QACnB,CAAC;QAED,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,SAAS,yBAAyB,KAAK,EAAE,CAAC,CAAC;QAClF,CAAC;QAED,wBAAwB;QACxB,OAAO,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,YAAY;IAEZ;;OAEG;IACH,oBAAoB,CAAC,KAAa;;QAC9B,OAAO,MAAA,MAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAA,iCAAc,EAAC,KAAK,CAAC,CAAC,0CAAE,iBAAiB,mCAAI,EAAE,CAAC;IACjF,CAAC;IAEO,0BAA0B,CAAC,EAAgB,EAAE,KAAa,EAAE,IAAS;;QACzE,MAAM,YAAY,GAAG,MAAA,IAAI,CAAC,MAAM,mCAAI,IAAI,CAAC,OAAO,CAAC;QACjD,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,OAAO,EAAE,CAAC;QACd,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACpC,0DAA0D;YAC1D,IAAI,YAAY,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;gBAC/B,wDAAwD;gBACxD,0DAA0D;gBAC1D,YAAY,CAAC,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;gBACrC,MAAM,WAAW,GAAG,IAAA,iBAAS,EAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBACrD,IAAI,WAAW,EAAE,CAAC;oBACd,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;wBAC/C,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;4BAC7B,uCAAuC;4BACvC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;wBACvC,CAAC;oBACL,CAAC;gBACL,CAAC;YACL,CAAC;YAED,sCAAsC;YACtC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1D,IAAI,OAAO,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACxD,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;gBAC3C,CAAC;gBACD,MAAM,SAAS,GAAG,IAAA,oBAAY,EAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC7D,IAAI,CAAC,SAAS,EAAE,CAAC;oBACb,SAAS;gBACb,CAAC;gBACD,+CAA+C;gBAC/C,IAAI,CAAC,sBAAsB,CAAC,EAAE,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC/F,CAAC;QACL,CAAC;QAED,mEAAmE;QACnE,MAAM,iBAAiB,GAAU,EAAE,CAAC;QAEpC,KAAK,MAAM,KAAK,IAAI,IAAA,sBAAc,EAAC,YAAY,CAAC,EAAE,CAAC;YAC/C,IAAI,YAAY,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;gBAChC,SAAS;YACb,CAAC;YAED,MAAM,SAAS,GAAG,IAAA,oBAAY,EAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YAC7D,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;gBACvC,kCAAkC;gBAClC,SAAS;YACb,CAAC;YAED,IAAI,OAAY,CAAC;YAEjB,IACI,SAAS,CAAC,OAAO;gBACjB,uGAAuG;gBACvG,qDAAqD;gBACrD,SAAS,CAAC,UAAU,EACtB,CAAC;gBACC,IAAI,OAAO,YAAY,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;oBAC1C,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;gBAC7B,CAAC;gBACD,iEAAiE;gBACjE,IAAI,CAAC,sBAAsB,CAAC,EAAE,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAE7E,UAAU;gBACV,MAAM,UAAU,GAAG,IAAI,CAAC,0BAA0B,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC5F,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxB,6CAA6C;oBAC7C,YAAY,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,GAAG,UAAU,CAAC,CAAC;gBACnF,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,uDAAuD;gBACvD,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;gBACnD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBAC/B,QAAQ,GAAG,EAAE,CAAC;gBAClB,CAAC;gBACD,IAAI,CAAC,sBAAsB,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAClE,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC;gBAEzB,UAAU;gBACV,MAAM,UAAU,GAAG,IAAI,CAAC,0BAA0B,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC5F,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxB,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC;gBAC/C,CAAC;YACL,CAAC;YAED,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;YACjD,CAAC;QACL,CAAC;QAED,OAAO,iBAAiB,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACG,oBAAoB,CACtB,KAAa,EACb,YAAiB,EACjB,SAA8B,EAC9B,EAAgB,EAChB,IAAS,EACT,QAAc;;YAEd,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC9D,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;gBACtE,MAAM,IAAI,CAAC,cAAc,CACrB,KAAK,EACL,SAAS,EACT,UAAU,IAAA,oBAAY,EAAC,YAAY,EAAE,KAAK,CAAC,sBAAsB,EACjE,6BAAiB,CAAC,uBAAuB,CAC5C,CAAC;YACN,CAAC;YAED,IAAI,aAAwC,CAAC;YAE7C,IAAI,SAAS,KAAK,QAAQ,IAAI,IAAI,EAAE,CAAC;gBACjC,kCAAkC;gBAClC,MAAM,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBACpE,IAAI,gBAAgB,CAAC,eAAe,EAAE,CAAC;oBACnC,WAAW;oBACX,MAAM,IAAI,CAAC,cAAc,CACrB,KAAK,EACL,QAAQ,EACR,UAAU,IAAA,oBAAY,EAAC,YAAY,EAAE,KAAK,CAAC,0CACvC,gBAAgB,CAAC,eACrB,GAAG,EACH,6BAAiB,CAAC,uBAAuB,CAC5C,CAAC;gBACN,CAAC;gBAED,IAAI,gBAAgB,CAAC,KAAK,EAAE,CAAC;oBACzB,mCAAmC;oBACnC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;gBACpD,CAAC;gBAED,IAAI,gBAAgB,CAAC,aAAa,EAAE,CAAC;oBACjC,2CAA2C;oBAC3C,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAC;gBAC3D,CAAC;gBAED,6BAA6B;gBAC7B,aAAa,GAAG,gBAAgB,CAAC,aAAa,CAAC;YACnD,CAAC;YAED,4DAA4D;YAC5D,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAEnG,sDAAsD;YACtD,MAAM,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACnE,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC;YAEpF,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;gBAClD,0BAA0B;gBAC1B,OAAO;YACX,CAAC;YAED,IAAI,MAAM,GAAG,MAAM;gBACf,CAAC,CAAC,4DAA4D;oBAC5D,SAAS;gBACX,CAAC,CAAC,uBAAuB;oBACvB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAElC,IAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,QAAQ,EAAE,CAAC;gBAC1B,IAAI,CAAC,MAAM,EAAE,CAAC;oBACV,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;gBAClD,CAAC;gBACD,MAAM,mCAAQ,MAAM,GAAK,aAAa,CAAC,QAAQ,CAAE,CAAC;YACtD,CAAC;YAED,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YACzC,mFAAmF;YACnF,IAAI,CAAC,2BAA2B,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAE/C,0BAA0B;YAC1B,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC/B,MAAM,KAAK,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YAEhC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,KAAK,QAAQ,SAAS,qBAAqB,IAAA,oBAAY,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC5G,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAChD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,MAAM,IAAI,CAAC,cAAc,CACrB,KAAK,EACL,SAAS,EACT,UAAU,IAAA,oBAAY,EAAC,YAAY,EAAE,KAAK,CAAC,sBAAsB,EACjE,6BAAiB,CAAC,uBAAuB,CAC5C,CAAC;YACN,CAAC;YAED,IAAI,aAAa,EAAE,CAAC;gBAChB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,KAAK,QAAQ,SAAS,EAAE,CAAC,CAAC;gBACrF,CAAC;gBACD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;oBAC7D,MAAM,IAAI,CAAC,cAAc,CACrB,KAAK,EACL,SAAS,EACT,UAAU,IAAA,oBAAY,EAAC,YAAY,EAAE,KAAK,CAAC,sBAAsB,EACjE,6BAAiB,CAAC,uBAAuB,CAC5C,CAAC;gBACN,CAAC;YACL,CAAC;YAED,IAAI,MAAM,EAAE,CAAC;gBACT,+CAA+C;gBAC/C,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;oBAC3D,MAAM,IAAI,CAAC,cAAc,CACrB,KAAK,EACL,SAAS,EACT,UAAU,IAAA,oBAAY,EAAC,YAAY,EAAE,KAAK,CAAC,wBAAwB,IAAA,mCAAY,EAAC,GAAG,CAAC,GAAG,EACvF,6BAAiB,CAAC,yBAAyB,EAC3C,GAAG,CACN,CAAC;gBACN,CAAC,CAAC,CAAC;YACP,CAAC;QACL,CAAC;KAAA;IAED,gBAAgB,CAAC,KAAa,EAAE,SAA8B,EAAE,KAAc;;QAC1E,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,KAAK,EAAE,CAAC;YACR,OAAO,MAAA,MAAA,MAAA,GAAG,CAAC,UAAU,0CAAG,SAA8B,CAAC,0CAAG,KAAK,CAAC,0CAAE,aAAa,CAAC;QACpF,CAAC;aAAM,CAAC;YACJ,OAAO,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC;QACnD,CAAC;IACL,CAAC;IAED,sCAAsC,CAAC,KAAa,EAAE,KAAa;;QAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC1C,OAAO,MAAA,MAAA,MAAA,GAAG,CAAC,UAAU,0CAAE,MAAM,0CAAG,KAAK,CAAC,0CAAE,qBAAqB,CAAC;IAClE,CAAC;IAEO,kBAAkB,CAAC,EAAgB,EAAE,KAAa,EAAE,IAAqC;QAC7F,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAA,iBAAS,EAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;QAElE,+BAA+B;QAC/B,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QAErD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,6BAA6B;YAC7B,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,IAAI,CAAC,MAAM,0CAAG,CAAC,CAAC,IAAI,CAAC,MAAK,IAAI,CAAA,EAAA,CAAC,CAAC;QACrE,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACtB,qBAAqB;YACrB,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzF,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,gEAAgE;YAChE,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,6BAA6B,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACxG,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC;IACvC,CAAC;IAEO,oBAAoB,CAAC,EAAgB,EAAE,KAAa,EAAE,IAAS;;QACnE,MAAM,cAAc,GAAG,EAAE,CAAC;QAC1B,MAAM,sBAAsB,GAAG,EAAE,CAAC;QAClC,IAAI,aAAwC,CAAC;QAE7C,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAM,MAAA,IAAI,CAAC,IAAI,mCAAI,IAAI,CAAC,EAAE,CAAC;YAClE,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE,CAAC;gBAC/B,SAAS;YACb,CAAC;YAED,MAAM,SAAS,GAAG,IAAA,oBAAY,EAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YAE7D,IAAI,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,WAAW,EAAE,CAAC;gBACzB,iEAAiE;gBACjE,yCAAyC;gBACzC,IAAI,SAAS,CAAC,eAAe,IAAI,SAAS,CAAC,iBAAiB,EAAE,CAAC;oBAC3D,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAS,SAAS,CAAC,iBAAiB,CAAC,CAAC;oBACvE,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;wBAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;wBAC/D,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;4BAC3B,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC;wBACtD,CAAC;wBAED,kBAAkB;wBAClB,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;wBAEhC,2BAA2B;wBAC3B,MAAM,kBAAkB,GAAG,IAAI,CAAC,+BAA+B,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;wBAC/E,sBAAsB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;oBACpD,CAAC;gBACL,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;gBAClE,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC3B,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC;gBACzD,CAAC;gBAED,kBAAkB;gBAClB,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAEhC,2BAA2B;gBAC3B,MAAM,kBAAkB,GAAG,IAAI,CAAC,+BAA+B,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;gBAClF,sBAAsB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACpD,CAAC;YAED,qDAAqD;YACrD,IAAI,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC5D,MAAM,eAAe,GAAG,IAAI,CAAC,sCAAsC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAClF,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;YAEpE,0CAA0C;YAC1C,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAC7E,CAAC;QAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC;QACtD,MAAM,yBAAyB,GAC3B,sBAAsB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE1F,OAAO;YACH,KAAK,EAAE,iBAAiB;YACxB,aAAa,EAAE,yBAAyB;YACxC,eAAe,EAAE,SAAS;YAC1B,aAAa;SAChB,CAAC;IACN,CAAC;IAEO,oBAAoB,CACxB,IAA+B,EAC/B,KAAgC,EAChC,QAAsB;;QAEtB,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,IAAI,GACN,QAAQ,KAAK,KAAK;YACd,CAAC,CAAC,CAAC,MAAW,EAAE,OAAqB,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;YACnG,CAAC,CAAC,CAAC,MAAW,EAAE,OAAqB,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5G,OAAO;YACH,IAAI;YACJ,QAAQ,EAAE,IAAA,mBAAS,EAAC,MAAA,IAAI,CAAC,QAAQ,mCAAI,EAAE,EAAE,MAAA,KAAK,CAAC,QAAQ,mCAAI,EAAE,CAAC;SACjE,CAAC;IACN,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,EAAgB,EAAE,KAAa,EAAE,SAA8B;QACrE,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QACtD,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;YACtE,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,6BAAiB,CAAC,uBAAuB,CAAC,CAAC;QACtG,CAAC;IACL,CAAC;IAED;;OAEG;IACG,cAAc;6DAAC,EAAgB,EAAE,KAAa,EAAE,YAAiB,EAAE,eAAe,GAAG,KAAK;YAC5F,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YAC5C,IAAI,CAAC,2BAA2B,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;YAEtD,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,KAAK,+BAA+B,IAAA,oBAAY,EAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAC5G,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;gBACvC,KAAK,EAAE,YAAY;gBACnB,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;aACtC,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,IAAI,eAAe,EAAE,CAAC;gBAC/B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;YACD,OAAO,QAAQ,CAAC;QACpB,CAAC;KAAA;IAED;;OAEG;IACG,QAAQ,CACV,EAAgB,EAChB,KAAa,EACb,SAA8B,EAC9B,aAA8C,EAC9C,YAAiB;;YAEjB,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YAC5C,IAAI,CAAC,2BAA2B,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;YAEtD,+CAA+C;YAC/C,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YACzE,MAAM,QAAQ,mCACP,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,KACrC,KAAK,EAAE,YAAY,GACtB,CAAC;YAEF,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAC7B,KAAK,EACL,SAAS,EACT,uCAAuC,EACvC,6BAAiB,CAAC,mBAAmB,CACxC,CAAC;YAEF,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC7D,IAAI,CAAC,YAAY,EAAE,CAAC;gBAChB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;YACxC,CAAC;YAED,mDAAmD;YACnD,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAE5C,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8CAA8C,KAAK,MAAM,IAAA,oBAAY,EAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACxG,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;YACxC,CAAC;YAED,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC;YAC3D,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QACxC,CAAC;KAAA;IAED;;;OAGG;IACH,qBAAqB,CAAC,KAAa,EAAE,IAAS;QAC1C,sFAAsF;QACtF,qFAAqF;QACrF,iEAAiE;;QAEjE,+BAA+B;QAC/B,MAAM,WAAW,GAAG,MAAA,IAAI,CAAC,MAAM,mCAAI,IAAI,CAAC,OAAO,CAAC;QAChD,IAAI,WAAW,EAAE,CAAC;YACd,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;gBACzC,MAAM,KAAK,GAAG,IAAA,oBAAY,EAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;gBACvD,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW,KAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;oBACzC,IAAI,OAAO,WAAW,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;wBACvC,qCAAqC;wBACrC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;oBAC1B,CAAC;oBACD,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC7D,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,6EAA6E;YAC7E,MAAM,eAAe,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;YAC9D,IAAI,eAAe,EAAE,CAAC;gBAClB,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;YAC3E,CAAC;QACL,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC3D,IAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClF,CAAC;IACL,CAAC;IAEO,uBAAuB,CAAC,KAAa,EAAE,IAAS,EAAE,KAAU;QAChE,mEAAmE;QACnE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC,IAAI,CAAC;QACrB,CAAC;QAED,IAAI,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,CAAA,EAAE,CAAC;YACjB,OAAO;QACX,CAAC;QAED,IAAI,MAAW,CAAC,CAAC,mBAAmB;QACpC,IAAI,SAAS,GAAG,KAAK,CAAC,CAAC,qCAAqC;QAE5D,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YACrB,SAAS,GAAG,KAAK,CAAC;QACtB,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;YACtB,SAAS,GAAG,IAAI,CAAC;QACrB,CAAC;aAAM,CAAC;YACJ,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;YAC5D,SAAS,GAAG,KAAK,CAAC;QACtB,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,gBAAgB;YAChB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChD,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;oBACb,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;wBACb,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;oBACrB,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,gDAAgD;QAChD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAM,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YACrD,IAAI,OAAO,CAAC,KAAK,QAAQ,KAAI,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,MAAM,CAAA,EAAE,CAAC;gBACrC,MAAM,KAAK,GAAG,IAAA,oBAAY,EAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;gBACrD,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW,EAAE,CAAC;oBACrB,wBAAwB;oBACxB,IAAI,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;wBAClC,qCAAqC;wBACrC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBACtE,CAAC;yBAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;wBACpB,gCAAgC;wBAChC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;oBAC/B,CAAC;oBACD,UAAU;oBACV,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC3D,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAEO,wBAAwB,CAAC,KAAa;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAQ,EAAE,CAAC;QACvB,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;gBACtC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;oBACjB,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBACrB,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,YAAY;IAEZ,gBAAgB;IAEhB,cAAc,CACV,KAAa,EACb,SAA8B,EAC9B,KAAc,EACd,MAA0B,EAC1B,SAAoB;QAEpB,MAAM,IAAI,GAAQ,EAAE,aAAa,EAAE,IAAA,oBAAU,GAAE,EAAE,IAAI,EAAE,2BAAe,CAAC,kBAAkB,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACtG,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAC9B,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QACpC,CAAC;QAED,OAAO,IAAA,qCAA6B,EAChC,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,YAAY,EACjB,qBAAqB,KAAK,qBAAqB,SAAS,UAAU,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EAC7F,IAAI,CACP,CAAC;IACN,CAAC;IAED,QAAQ,CAAC,KAAa;QAClB,OAAO,IAAA,qCAA6B,EAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,8BAA8B,KAAK,EAAE,EAAE;YACpG,aAAa,EAAE,IAAA,oBAAU,GAAE;YAC3B,IAAI,EAAE,OAAO;SAChB,CAAC,CAAC;IACP,CAAC;IAED,YAAY;IAEZ,cAAc;IAEd;;OAEG;IACH,iBAAiB,CAAC,KAAa;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC1C,OAAO,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,iBAAiB,CAAC;IACvD,CAAC;IAED,iEAAiE;IACzD,yBAAyB,CAAC,KAAa;;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,MAAM,GAAQ,EAAE,CAAC;QACrB,MAAM,UAAU,GAAG,MAAA,GAAG,CAAC,UAAU,0CAAE,IAAI,CAAC;QACxC,IAAI,UAAU,EAAE,CAAC;YACb,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC1C,IAAI,MAAA,GAAG,CAAC,aAAa,0CAAE,QAAQ,EAAE,CAAC;oBAC9B,MAAM,GAAG,IAAA,mBAAS,EAAC,MAAM,EAAE,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAC3D,CAAC;gBACD,IAAI,MAAA,GAAG,CAAC,qBAAqB,0CAAE,QAAQ,EAAE,CAAC;oBACtC,MAAM,GAAG,IAAA,mBAAS,EAAC,MAAM,EAAE,GAAG,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;gBACnE,CAAC;YACL,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/D,CAAC;IAEO,cAAc,CAAC,KAAa,EAAE,KAAa,EAAE,MAAW;;QAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAE1C,mEAAmE;QACnE,MAAM,OAAO,GAAG,MAAA,MAAA,MAAA,GAAG,CAAC,UAAU,0CAAE,IAAI,0CAAG,KAAK,CAAC,0CAAE,aAAa,CAAC;QAC7D,MAAM,eAAe,GAAG,MAAA,MAAA,MAAA,GAAG,CAAC,UAAU,0CAAE,IAAI,0CAAG,KAAK,CAAC,0CAAE,qBAAqB,CAAC;QAC7E,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;QAElF,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC;QAChB,CAAC;aAAM,CAAC;YACJ,OAAO,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7D,CAAC;IACL,CAAC;IAEO,kBAAkB,CAAC,KAAa;;QACpC,OAAO,CAAA,MAAA,MAAA,IAAI,CAAC,MAAM,CAAC,UAAU,0CAAG,IAAA,iCAAc,EAAC,KAAK,CAAC,CAAC,0CAAE,aAAa,MAAK,IAAI,CAAC;IACnF,CAAC;IAEO,mBAAmB,CAAC,KAAa;;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC1C,OAAO,MAAM,CAAC,IAAI,CAAC,MAAA,MAAA,GAAG,CAAC,UAAU,0CAAE,IAAI,mCAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9D,CAAC;IAED;;;;OAIG;IACH,YAAY,CACR,KAAa,EACb,wBAAiC,IAAI,EACrC,OAAwC,SAAS;;QAEjD,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,MAAM,SAAS,GAAG,GAAG,IAAA,iCAAc,EAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAA,iCAAc,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC;QACjG,IAAI,MAAM,GAAG,MAAA,MAAA,IAAI,CAAC,UAAU,0CAAE,MAAM,0CAAG,SAAS,CAA+B,CAAC;QAEhF,IAAI,MAAM,IAAI,qBAAqB,EAAE,CAAC;YAClC,gGAAgG;YAChG,iGAAiG;YACjG,0BAA0B;YAC1B,MAAM,WAAW,GAAG,MAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAA,iCAAc,EAAC,KAAK,CAAC,CAAC,0CAAE,MAAM,CAAC;YACzE,IAAI,WAAW,EAAE,CAAC;gBACd,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;oBACrD,IAAI,MAAA,KAAK,CAAC,UAAU,0CAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,EAAE,CAAC;wBAC9D,yDAAyD;wBACzD,IAAI,aAAa,GAAc,OAAC,CAAC,MAAM,EAAE,CAAC;wBAC1C,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;4BACnB,aAAa,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC;wBAC5C,CAAC;wBACD,MAAM,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,OAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;oBAC/D,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;;;;;;OASG;IACH,iBAAiB,CACb,KAAa,EACb,IAAqC,EACrC,IAAY,EACZ,qBAA8B,EAC9B,OAAkC;QAElC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,qBAAqB,EAAE,IAAI,CAAC,CAAC;QACrE,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,UAAU,KAAK,oCAAoC,IAAI,KAAK,IAAA,mCAAY,EAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAChG,CAAC;YACN,CAAC;YACD,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC3B,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,OAAO,WAAW,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,IAAS,EAAE,KAAa,EAAE,SAAc;QACvD,uFAAuF;QACvF,qFAAqF;QACrF,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;IACxG,CAAC;IAEO,oBAAoB,CACxB,IAAS,EACT,KAAa,EACb,QAAa,EACb,SAAc,EACd,mBAA4B,EAC5B,IAAI,GAAG,EAAE;;QAET,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,YAAY,GAAG,IAAI,CAAC;QACxB,IAAI,gBAAgB,GAAG,QAAQ,CAAC;QAEhC,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC3D,IAAI,aAAa,EAAE,CAAC;YAChB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtB,YAAY,GAAG,EAAE,CAAC;gBAClB,gBAAgB,GAAG,EAAE,CAAC;gBACtB,KAAK,MAAM,CAAC,UAAU,EAAE,cAAc,CAAC,IAAI,IAAA,WAAG,EAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;oBAC7D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;wBACvD,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;4BACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,qBAAqB,KAAK,UAAU,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,wBAAwB,CACxF,CAAC;wBACN,CAAC;oBACL,CAAC;yBAAM,CAAC;wBACJ,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;wBAC9B,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;oBAC1C,CAAC;gBACL,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;oBACjD,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;wBACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,qBAAqB,KAAK,UAAU,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,wBAAwB,CACxF,CAAC;oBACN,CAAC;oBACD,OAAO,IAAI,CAAC;gBAChB,CAAC;YACL,CAAC;QACL,CAAC;QAED,KAAK,MAAM,CAAC,UAAU,EAAE,cAAc,CAAC,IAAI,IAAA,WAAG,EAAC,YAAY,EAAE,gBAAgB,CAAC,EAAE,CAAC;YAC7E,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChD,SAAS;YACb,CAAC;YAED,KAAK,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC1D,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;oBAC1B,SAAS;gBACb,CAAC;gBAED,MAAM,SAAS,GAAG,IAAA,oBAAY,EAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC7D,IAAI,CAAC,SAAS,EAAE,CAAC;oBACb,wBAAwB;oBACxB,SAAS;gBACb,CAAC;gBAED,IAAI,CAAA,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,0CAAG,KAAK,CAAC,MAAK,IAAI,EAAE,CAAC;oBACpC,wCAAwC;oBACxC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;oBACzB,SAAS;gBACb,CAAC;gBAED,IAAI,mBAAmB,EAAE,CAAC;oBACtB,0GAA0G;oBAC1G,2EAA2E;oBAE3E,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;wBACzB,uCAAuC;wBACvC,MAAM,MAAM,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,CAAC;wBACjC,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;4BACjE,yDAAyD;4BACzD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;4BACzB,SAAS;wBACb,CAAC;oBACL,CAAC;yBAAM,CAAC;wBACJ,qDAAqD;wBACrD,MAAM,OAAO,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,CAAC;wBACnC,MAAM,MAAM,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,CAAC;wBACjC,IAAI,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,KAAK,CAAC,CAAA,IAAI,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,KAAK,CAAC,CAAA,EAAE,CAAC;4BACxC,0CAA0C;4BAC1C,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;4BACzB,SAAS;wBACb,CAAC;oBACL,CAAC;oBAED,2BAA2B;oBAC3B,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,EAAE,CAAC;wBACrD,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;4BACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;wBAC7F,CAAC;wBACD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;wBACzB,SAAS;oBACb,CAAC;gBACL,CAAC;gBAED,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;oBACxB,6BAA6B;oBAC7B,MAAM,QAAQ,GAAG,MAAA,CAAC,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,mCAAI,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,CAAC,0CAAG,KAAK,CAAC,CAAC;oBACpE,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAC1C,SAAS,EACT,SAAS,CAAC,IAAI,EACd,cAAc,CAAC,KAAK,CAAC,EACrB,QAAQ,EACR,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,EACxC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CACpC,CAAC;oBACF,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;wBAC7B,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;oBAC7B,CAAC;yBAAM,CAAC;wBACJ,UAAU,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC;oBACrC,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,YAAY,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,MAAW,EAAE,UAAe;QAChC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YACzF,OAAO;QACX,CAAC;QAED,sBAAsB;QACtB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,CAAC,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC;gBACvB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,CAAC;QACL,CAAC;QAED,iBAAiB;QACjB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YACpD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACxB,CAAC;IACL,CAAC;IAED;;OAEG;IACH,IAAI,CAAI,KAAQ,EAAE,GAAG,KAAkB;QACnC,MAAM,CAAC,GAAQ,KAAK,CAAC;QACrB,OAAO,KAAK,CAAC,MAAM,CAAC,UAAU,MAAM,EAAE,IAAI;YACtC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;gBACZ,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;YACD,OAAO,MAAM,CAAC;QAClB,CAAC,EAAE,EAAS,CAAC,CAAC;IAClB,CAAC;IAEO,gBAAgB,CAAC,KAAU,EAAE,KAAU;;QAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO;QACX,CAAC;QAED,iEAAiE;QACjE,iEAAiE;QACjE,oCAAoC;QACpC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;YACZ,iCAAiC;YACjC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3E,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvB,MAAM,QAAQ,GAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;YAE9C,8CAA8C;YAC9C,KAAK,CAAC,GAAG,GAAG,MAAA,QAAQ,CAAC,GAAG,mCAAI,QAAQ,CAAC;QACzC,CAAC;aAAM,CAAC;YACJ,uBAAuB;YACvB,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;IACL,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,KAAa,EAAE,IAAS;QACrC,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACzC,OAAO,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;CAGJ;AAx+CD,gCAw+CC"}
1
+ {"version":3,"file":"policy-utils.js","sourceRoot":"","sources":["../../../src/enhancements/policy/policy-utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@zenstackhq/runtime",
3
3
  "displayName": "ZenStack Runtime Library",
4
- "version": "2.3.3",
4
+ "version": "2.4.0",
5
5
  "description": "Runtime of ZenStack for both client-side and server-side environments.",
6
6
  "repository": {
7
7
  "type": "git",