@zenstackhq/runtime 1.2.1 → 1.3.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 +40 -8
- package/cross/index.d.ts +40 -8
- package/cross/index.js +236 -2
- package/cross/index.js.map +1 -1
- package/cross/index.mjs +223 -2
- package/cross/index.mjs.map +1 -1
- package/enhancements/omit.js +2 -1
- package/enhancements/omit.js.map +1 -1
- package/enhancements/policy/handler.js +2 -3
- package/enhancements/policy/handler.js.map +1 -1
- package/enhancements/policy/index.d.ts +1 -1
- package/enhancements/policy/index.js +13 -3
- package/enhancements/policy/index.js.map +1 -1
- package/enhancements/policy/policy-utils.js +19 -3
- package/enhancements/policy/policy-utils.js.map +1 -1
- package/enhancements/types.d.ts +1 -0
- package/enhancements/utils.d.ts +0 -5
- package/enhancements/utils.js +1 -22
- package/enhancements/utils.js.map +1 -1
- package/package.json +4 -2
- package/enhancements/model-data-visitor.d.ts +0 -16
- package/enhancements/model-data-visitor.js +0 -41
- package/enhancements/model-data-visitor.js.map +0 -1
package/cross/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cross/model-meta.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 { lowerCaseFirst } from 'lower-case-first';\n\n/**\n * Runtime information of a data model or field attribute\n */\nexport type RuntimeAttribute = {\n name: string;\n args: Array<{ name?: string; value: unknown }>;\n};\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 * Mapping from foreign key field names to relation field names\n */\n foreignKeyMapping?: Record<string, string>;\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 * ZModel data model metadata\n */\nexport type ModelMeta = {\n /**\n * Model fields\n */\n fields: Record<string, Record<string, FieldInfo>>;\n\n /**\n * Model unique constraints\n */\n uniqueConstraints: Record<string, Record<string, UniqueConstraint>>;\n\n /**\n * Information for cascading 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.fields[lowerCaseFirst(model)]?.[field];\n}\n\n/**\n * Gets all fields of a model.\n */\nexport function getFields(modelMeta: ModelMeta, model: string) {\n return modelMeta.fields[lowerCaseFirst(model)];\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","/**\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","/* 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 { enumerate, 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, args: 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 context = { parent, field, nestingPath: [...nestingPath] };\n const toplevel = field == undefined;\n\n // visit payload\n switch (action) {\n case 'create':\n context.nestingPath.push({ field, model, where: {}, unique: false });\n for (const item of enumerate(data)) {\n let callbackResult: any;\n if (this.callback.create) {\n callbackResult = await this.callback.create(model, item, context);\n }\n if (callbackResult !== false) {\n const subPayload = typeof callbackResult === 'object' ? callbackResult : item;\n await this.visitSubPayload(model, action, subPayload, context.nestingPath);\n }\n }\n break;\n\n case 'createMany':\n if (data) {\n context.nestingPath.push({ field, model, where: {}, unique: false });\n let callbackResult: any;\n if (this.callback.createMany) {\n callbackResult = await this.callback.createMany(model, data, context);\n }\n if (callbackResult !== false) {\n const subPayload = typeof callbackResult === 'object' ? callbackResult : data.data;\n await this.visitSubPayload(model, action, subPayload, context.nestingPath);\n }\n }\n break;\n\n case 'connectOrCreate':\n context.nestingPath.push({ field, model, where: data.where, unique: false });\n for (const item of enumerate(data)) {\n let callbackResult: any;\n if (this.callback.connectOrCreate) {\n callbackResult = await this.callback.connectOrCreate(model, item, context);\n }\n if (callbackResult !== false) {\n const subPayload = typeof callbackResult === 'object' ? callbackResult : item.create;\n await this.visitSubPayload(model, action, subPayload, context.nestingPath);\n }\n }\n break;\n\n case 'connect':\n if (this.callback.connect) {\n for (const item of enumerate(data)) {\n const newContext = {\n ...context,\n nestingPath: [...context.nestingPath, { field, model, where: item, unique: true }],\n };\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 enumerate(data)) {\n const newContext = {\n ...context,\n nestingPath: [\n ...context.nestingPath,\n { field, model, where: item, unique: typeof item === 'object' },\n ],\n };\n await this.callback.disconnect(model, item, newContext);\n }\n }\n break;\n\n case 'set':\n if (this.callback.set) {\n context.nestingPath.push({ field, model, where: {}, unique: false });\n await this.callback.set(model, data, context);\n }\n break;\n\n case 'update':\n context.nestingPath.push({ field, model, where: data.where, unique: false });\n for (const item of enumerate(data)) {\n let callbackResult: any;\n if (this.callback.update) {\n callbackResult = await this.callback.update(model, item, context);\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, context.nestingPath);\n }\n }\n break;\n\n case 'updateMany':\n context.nestingPath.push({ field, model, where: data.where, unique: false });\n for (const item of enumerate(data)) {\n let callbackResult: any;\n if (this.callback.updateMany) {\n callbackResult = await this.callback.updateMany(model, item, context);\n }\n if (callbackResult !== false) {\n const subPayload = typeof callbackResult === 'object' ? callbackResult : item;\n await this.visitSubPayload(model, action, subPayload, context.nestingPath);\n }\n }\n break;\n\n case 'upsert': {\n context.nestingPath.push({ field, model, where: data.where, unique: false });\n for (const item of enumerate(data)) {\n let callbackResult: any;\n if (this.callback.upsert) {\n callbackResult = await this.callback.upsert(model, item, context);\n }\n if (callbackResult !== false) {\n if (typeof callbackResult === 'object') {\n await this.visitSubPayload(model, action, callbackResult, context.nestingPath);\n } else {\n await this.visitSubPayload(model, action, item.create, context.nestingPath);\n await this.visitSubPayload(model, action, item.update, context.nestingPath);\n }\n }\n }\n break;\n }\n\n case 'delete': {\n if (this.callback.delete) {\n for (const item of enumerate(data)) {\n const newContext = {\n ...context,\n nestingPath: [\n ...context.nestingPath,\n { field, model, where: toplevel ? item.where : item, unique: false },\n ],\n };\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 enumerate(data)) {\n const newContext = {\n ...context,\n nestingPath: [\n ...context.nestingPath,\n { field, model, where: toplevel ? item.where : item, unique: false },\n ],\n };\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","/* 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';\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 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"],"mappings":"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","names":["field","lowerCaseFirst","model","lowerCaseFirst"]}
|
|
1
|
+
{"version":3,"sources":["../../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":["/* 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 name: string;\n args: Array<{ name?: string; value: unknown }>;\n};\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 * Mapping from foreign key field names to relation field names\n */\n foreignKeyMapping?: Record<string, string>;\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 * ZModel data model metadata\n */\nexport type ModelMeta = {\n /**\n * Model fields\n */\n fields: Record<string, Record<string, FieldInfo>>;\n\n /**\n * Model unique constraints\n */\n uniqueConstraints: Record<string, Record<string, UniqueConstraint>>;\n\n /**\n * Information for cascading 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.fields[lowerCaseFirst(model)]?.[field];\n}\n\n/**\n * Gets all fields of a model.\n */\nexport function getFields(modelMeta: ModelMeta, model: string) {\n return modelMeta.fields[lowerCaseFirst(model)];\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { v4 as uuid } from 'uuid';\nimport deepcopy from 'deepcopy';\nimport {\n ModelDataVisitor,\n NestedWriteVisitor,\n enumerate,\n getFields,\n getIdFields,\n type ModelMeta,\n type PrismaWriteActionType,\n} from '.';\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 const r = updateMutate(queryModel, resultData, model, args, modelMeta, logging);\n if (r) {\n resultData = r;\n updated = true;\n }\n },\n\n delete: (model, args) => {\n const r = deleteMutate(queryModel, resultData, model, args, modelMeta, logging);\n if (r) {\n resultData = r;\n updated = true;\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 = Math.max(\n ...[...currentData].map((item) => {\n const idv = parseInt(item[f.name]);\n return isNaN(idv) ? 0 : idv;\n })\n );\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, ...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 ? deepcopy(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 { 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 let fields = modelMeta.fields[lowerCaseFirst(model)];\n if (!fields) {\n if (throwIfNotFound) {\n throw new Error(`Unable to load fields for ${model}`);\n } else {\n fields = {};\n }\n }\n const result = Object.values(fields).filter((f) => f.isId);\n if (result.length === 0 && throwIfNotFound) {\n throw new Error(`model ${model} does not have an id field`);\n }\n return result;\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 { enumerate, 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, args: 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 context = { parent, field, nestingPath: [...nestingPath] };\n const toplevel = field == undefined;\n\n // visit payload\n switch (action) {\n case 'create':\n context.nestingPath.push({ field, model, where: {}, unique: false });\n for (const item of enumerate(data)) {\n let callbackResult: any;\n if (this.callback.create) {\n callbackResult = await this.callback.create(model, item, context);\n }\n if (callbackResult !== false) {\n const subPayload = typeof callbackResult === 'object' ? callbackResult : item;\n await this.visitSubPayload(model, action, subPayload, context.nestingPath);\n }\n }\n break;\n\n case 'createMany':\n if (data) {\n context.nestingPath.push({ field, model, where: {}, unique: false });\n let callbackResult: any;\n if (this.callback.createMany) {\n callbackResult = await this.callback.createMany(model, data, context);\n }\n if (callbackResult !== false) {\n const subPayload = typeof callbackResult === 'object' ? callbackResult : data.data;\n await this.visitSubPayload(model, action, subPayload, context.nestingPath);\n }\n }\n break;\n\n case 'connectOrCreate':\n context.nestingPath.push({ field, model, where: data.where, unique: false });\n for (const item of enumerate(data)) {\n let callbackResult: any;\n if (this.callback.connectOrCreate) {\n callbackResult = await this.callback.connectOrCreate(model, item, context);\n }\n if (callbackResult !== false) {\n const subPayload = typeof callbackResult === 'object' ? callbackResult : item.create;\n await this.visitSubPayload(model, action, subPayload, context.nestingPath);\n }\n }\n break;\n\n case 'connect':\n if (this.callback.connect) {\n for (const item of enumerate(data)) {\n const newContext = {\n ...context,\n nestingPath: [...context.nestingPath, { field, model, where: item, unique: true }],\n };\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 enumerate(data)) {\n const newContext = {\n ...context,\n nestingPath: [\n ...context.nestingPath,\n { field, model, where: item, unique: typeof item === 'object' },\n ],\n };\n await this.callback.disconnect(model, item, newContext);\n }\n }\n break;\n\n case 'set':\n if (this.callback.set) {\n context.nestingPath.push({ field, model, where: {}, unique: false });\n await this.callback.set(model, data, context);\n }\n break;\n\n case 'update':\n context.nestingPath.push({ field, model, where: data.where, unique: false });\n for (const item of enumerate(data)) {\n let callbackResult: any;\n if (this.callback.update) {\n callbackResult = await this.callback.update(model, item, context);\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, context.nestingPath);\n }\n }\n break;\n\n case 'updateMany':\n context.nestingPath.push({ field, model, where: data.where, unique: false });\n for (const item of enumerate(data)) {\n let callbackResult: any;\n if (this.callback.updateMany) {\n callbackResult = await this.callback.updateMany(model, item, context);\n }\n if (callbackResult !== false) {\n const subPayload = typeof callbackResult === 'object' ? callbackResult : item;\n await this.visitSubPayload(model, action, subPayload, context.nestingPath);\n }\n }\n break;\n\n case 'upsert': {\n context.nestingPath.push({ field, model, where: data.where, unique: false });\n for (const item of enumerate(data)) {\n let callbackResult: any;\n if (this.callback.upsert) {\n callbackResult = await this.callback.upsert(model, item, context);\n }\n if (callbackResult !== false) {\n if (typeof callbackResult === 'object') {\n await this.visitSubPayload(model, action, callbackResult, context.nestingPath);\n } else {\n await this.visitSubPayload(model, action, item.create, context.nestingPath);\n await this.visitSubPayload(model, action, item.update, context.nestingPath);\n }\n }\n }\n break;\n }\n\n case 'delete': {\n if (this.callback.delete) {\n for (const item of enumerate(data)) {\n const newContext = {\n ...context,\n nestingPath: [\n ...context.nestingPath,\n { field, model, where: toplevel ? item.where : item, unique: false },\n ],\n };\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 enumerate(data)) {\n const newContext = {\n ...context,\n nestingPath: [\n ...context.nestingPath,\n { field, model, where: toplevel ? item.where : item, unique: false },\n ],\n };\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","/* 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';\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 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"],"mappings":"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","names":["model","data","field","lowerCaseFirst","lowerCaseFirst","model","lowerCaseFirst"]}
|
package/enhancements/omit.js
CHANGED
|
@@ -41,13 +41,14 @@ class OmitHandler extends proxy_1.DefaultPrismaProxyHandler {
|
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
43
|
doPostProcess(entityData, model) {
|
|
44
|
+
var _a;
|
|
44
45
|
return __awaiter(this, void 0, void 0, function* () {
|
|
45
46
|
for (const field of (0, cross_1.getModelFields)(entityData)) {
|
|
46
47
|
const fieldInfo = yield (0, cross_1.resolveField)(this.modelMeta, model, field);
|
|
47
48
|
if (!fieldInfo) {
|
|
48
49
|
continue;
|
|
49
50
|
}
|
|
50
|
-
if (fieldInfo.attributes.find((attr) => attr.name === '@omit')) {
|
|
51
|
+
if ((_a = fieldInfo.attributes) === null || _a === void 0 ? void 0 : _a.find((attr) => attr.name === '@omit')) {
|
|
51
52
|
delete entityData[field];
|
|
52
53
|
}
|
|
53
54
|
else if (fieldInfo.isDataModel) {
|
package/enhancements/omit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"omit.js","sourceRoot":"","sources":["../../src/enhancements/omit.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,uDAAuD;;;;;;;;;;;;AAEvD,oCAAmF;AACnF,sCAAgD;AAEhD,mCAA+D;AAa/D;;GAEG;AACH,SAAgB,QAAQ,CAA0B,MAAgB,EAAE,OAAyB;;IACzF,MAAM,UAAU,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,mCAAI,IAAA,4BAAmB,EAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,CAAC,CAAC;IAChF,OAAO,IAAA,iBAAS,EACZ,MAAM,EACN,UAAU,EACV,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,OAA2B,EAAE,KAAK,EAAE,UAAU,CAAC,EACnF,MAAM,CACT,CAAC;AACN,CAAC;AARD,4BAQC;AAED,MAAM,WAAY,SAAQ,iCAAyB;IAC/C,YAAY,MAAwB,EAAE,KAAa,EAAmB,SAAoB;QACtF,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAD6C,cAAS,GAAT,SAAS,CAAW;IAE1F,CAAC;IAED,gBAAgB;IACA,mBAAmB,CAAI,IAAO;;YAC1C,IAAI,IAAI,EAAE;gBACN,KAAK,MAAM,KAAK,IAAI,IAAA,iBAAS,EAAC,IAAI,CAAC,EAAE;oBACjC,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC/C;aACJ;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;KAAA;IAEa,aAAa,CAAC,UAAe,EAAE,KAAa
|
|
1
|
+
{"version":3,"file":"omit.js","sourceRoot":"","sources":["../../src/enhancements/omit.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,uDAAuD;;;;;;;;;;;;AAEvD,oCAAmF;AACnF,sCAAgD;AAEhD,mCAA+D;AAa/D;;GAEG;AACH,SAAgB,QAAQ,CAA0B,MAAgB,EAAE,OAAyB;;IACzF,MAAM,UAAU,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,mCAAI,IAAA,4BAAmB,EAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,CAAC,CAAC;IAChF,OAAO,IAAA,iBAAS,EACZ,MAAM,EACN,UAAU,EACV,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,OAA2B,EAAE,KAAK,EAAE,UAAU,CAAC,EACnF,MAAM,CACT,CAAC;AACN,CAAC;AARD,4BAQC;AAED,MAAM,WAAY,SAAQ,iCAAyB;IAC/C,YAAY,MAAwB,EAAE,KAAa,EAAmB,SAAoB;QACtF,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAD6C,cAAS,GAAT,SAAS,CAAW;IAE1F,CAAC;IAED,gBAAgB;IACA,mBAAmB,CAAI,IAAO;;YAC1C,IAAI,IAAI,EAAE;gBACN,KAAK,MAAM,KAAK,IAAI,IAAA,iBAAS,EAAC,IAAI,CAAC,EAAE;oBACjC,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC/C;aACJ;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;KAAA;IAEa,aAAa,CAAC,UAAe,EAAE,KAAa;;;YACtD,KAAK,MAAM,KAAK,IAAI,IAAA,sBAAc,EAAC,UAAU,CAAC,EAAE;gBAC5C,MAAM,SAAS,GAAG,MAAM,IAAA,oBAAY,EAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;gBACnE,IAAI,CAAC,SAAS,EAAE;oBACZ,SAAS;iBACZ;gBAED,IAAI,MAAA,SAAS,CAAC,UAAU,0CAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE;oBAC7D,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;iBAC5B;qBAAM,IAAI,SAAS,CAAC,WAAW,EAAE;oBAC9B,UAAU;oBACV,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;iBAC/D;aACJ;;KACJ;CACJ"}
|
|
@@ -27,7 +27,6 @@ const upper_case_first_1 = require("upper-case-first");
|
|
|
27
27
|
const zod_validation_error_1 = require("zod-validation-error");
|
|
28
28
|
const constants_1 = require("../../constants");
|
|
29
29
|
const cross_1 = require("../../cross");
|
|
30
|
-
const model_data_visitor_1 = require("../model-data-visitor");
|
|
31
30
|
const utils_1 = require("../utils");
|
|
32
31
|
const logger_1 = require("./logger");
|
|
33
32
|
const policy_utils_1 = require("./policy-utils");
|
|
@@ -219,7 +218,7 @@ class PolicyProxyHandler {
|
|
|
219
218
|
// record id fields involved in the nesting context
|
|
220
219
|
const idSelections = [];
|
|
221
220
|
const pushIdFields = (model, context) => {
|
|
222
|
-
const idFields = (0,
|
|
221
|
+
const idFields = (0, cross_1.getIdFields)(this.modelMeta, model);
|
|
223
222
|
idSelections.push({
|
|
224
223
|
path: context.nestingPath.map((p) => p.field).filter((f) => !!f),
|
|
225
224
|
ids: idFields.map((f) => f.name),
|
|
@@ -328,7 +327,7 @@ class PolicyProxyHandler {
|
|
|
328
327
|
// post create policy check for the top-level and nested creates
|
|
329
328
|
const postCreateChecks = new Map();
|
|
330
329
|
// visit the create result and collect entities that need to be post-checked
|
|
331
|
-
const modelDataVisitor = new
|
|
330
|
+
const modelDataVisitor = new cross_1.ModelDataVisitor(this.modelMeta);
|
|
332
331
|
modelDataVisitor.visit(model, result, (model, _data, scalarData) => {
|
|
333
332
|
const key = getEntityKey(model, scalarData);
|
|
334
333
|
// only check if entity is created, not connected
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/enhancements/policy/handler.ts"],"names":[],"mappings":";AAAA,uDAAuD;;;;;;;;;;;;;;;;;;;;;;;AAEvD,uDAAkD;AAClD,uDAAkD;AAClD,+DAAoD;AACpD,+CAAoE;AACpE,uCAOqB;AAErB,8DAAyD;AAGzD,oCAAkF;AAClF,qCAAkC;AAClC,iDAA4C;AAC5C,uCAAkD;AAYlD;;GAEG;AACH,MAAa,kBAAkB;IAK3B,YACqB,MAAgB,EAChB,MAAiB,EACjB,SAAoB,EACpB,UAAkC,EACnD,KAAa,EACI,IAAe,EACf,cAAwB;QANxB,WAAM,GAAN,MAAM,CAAU;QAChB,WAAM,GAAN,MAAM,CAAW;QACjB,cAAS,GAAT,SAAS,CAAW;QACpB,eAAU,GAAV,UAAU,CAAwB;QAElC,SAAI,GAAJ,IAAI,CAAW;QACf,mBAAc,GAAd,cAAc,CAAU;QAEzC,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,IAAI,yBAAU,CACvB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,cAAc,CACtB,CAAC;QACF,IAAI,CAAC,KAAK,GAAG,IAAA,iCAAc,EAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,IAAY,WAAW;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,cAAc;IAEd,0FAA0F;IAE1F,UAAU,CAAC,IAAS;QAChB,IAAI,CAAC,IAAI,EAAE;YACP,MAAM,IAAA,mCAA2B,EAAC,IAAI,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC;SAChF;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACb,MAAM,IAAA,mCAA2B,EAAC,IAAI,CAAC,MAAM,EAAE,2CAA2C,CAAC,CAAC;SAC/F;QACD,OAAO,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAC/E,CAAC;IAED,iBAAiB,CAAC,IAAS;QACvB,IAAI,CAAC,IAAI,EAAE;YACP,MAAM,IAAA,mCAA2B,EAAC,IAAI,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC;SAChF;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACb,MAAM,IAAA,mCAA2B,EAAC,IAAI,CAAC,MAAM,EAAE,2CAA2C,CAAC,CAAC;SAC/F;QACD,OAAO,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,GAAG,EAAE;YACtE,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACP,CAAC;IAED,SAAS,CAAC,IAAU;QAChB,OAAO,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAC9E,CAAC;IAED,gBAAgB,CAAC,IAAS;QACtB,OAAO,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,EAAE;YACrE,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACP,CAAC;IAED,QAAQ,CAAC,IAAU;QACf,OAAO,IAAA,+BAAqB,EAAY,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3F,CAAC;IAED,oGAAoG;IAC5F,uBAAuB,CAC3B,IAAS,EACT,UAA0B,EAC1B,WAAoB,EACpB,eAA0B;QAE1B,qFAAqF;QACrF,MAAM,MAAM,GAAG,IAAA,+BAAqB,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC;QAC3F,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC3F,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,MAAM,CAAC,IAAS,EAAE,UAA0B,EAAE,eAA0B;QAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;YAC3D,OAAO,eAAe,EAAE,CAAC;SAC5B;QAED,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAEpD,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,UAAU,MAAM,IAAI,CAAC,KAAK,MAAM,IAAA,oBAAY,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC;SACzF;QAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CACpC,CAAC,KAAU,EAAE,EAAE;gBACX,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBAC3D,OAAO,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC,EACD,CAAC,GAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAC5B,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;IAED,qCAAqC;IAC7B,UAAU,CAAC,MAAW,EAAE,SAAoB,EAAE,WAA0B;QAC5E,OAAO,CAAC,IAAS,EAAE,EAAE;YACjB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAE9B,iDAAiD;YACjD,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YACtD,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO;gBACnC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;gBAC5C,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC;YAC/C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAEnD,MAAM,OAAO,GAAG,IAAA,+BAAqB,EAAC,GAAG,EAAE;gBACvC,uBAAuB;gBACvB,MAAM,WAAW,GAAG,CAAC,OAAiC,EAAE,MAA8B,EAAE,EAAE;oBACtF,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBACjD,IAAI,SAAS,CAAC,OAAO,EAAE;wBACnB,yBAAyB;wBACzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CACvB,CAAC,KAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAC9B,CAAC,GAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAC5B,CAAC;qBACL;yBAAM;wBACH,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CACxB,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EACzB,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CACvB,CAAC;qBACL;gBACL,CAAC,CAAC;gBAEF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBACnC,IAAI,WAAW,EAAE;wBACb,+DAA+D;wBAC/D,6EAA6E;wBAC7E,2DAA2D;wBAC3D,WAAW,CAAC,IAAI,CACZ,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,EAClC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CACvB,CAAC;qBACL;yBAAM;wBACH,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;qBAChC;gBACL,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;gBACpB,wCAAwC;gBACxC,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;aAC7E;YAED,OAAO,OAAO,CAAC;QACnB,CAAC,CAAC;IACN,CAAC;IAED,gDAAgD;IACxC,kBAAkB,CAAC,OAAY,EAAE,KAAa,EAAE,MAAW,EAAE,WAA8B;QAC/F,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,MAAM,EAAE;YACR,KAAK,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACrD,IAAI,SAAS,CAAC,WAAW,EAAE;oBACvB,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;iBACpE;aACJ;SACJ;IACL,CAAC;IAED,YAAY;IAEZ,gBAAgB;IAEV,MAAM,CAAC,IAAS;;YAClB,IAAI,CAAC,IAAI,EAAE;gBACP,MAAM,IAAA,mCAA2B,EAAC,IAAI,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC;aAChF;YACD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBACZ,MAAM,IAAA,mCAA2B,EAAC,IAAI,CAAC,MAAM,EAAE,0CAA0C,CAAC,CAAC;aAC9F;YAED,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAExD,MAAM,QAAQ,GAAG,IAAI,CAAC;YACtB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAE9B,sDAAsD;YACtD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC/E,IAAI,UAAU,KAAK,KAAK,EAAE;gBACtB,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,6BAAiB,CAAC,uBAAuB,CAAC,CAAC;aAC/G;YAED,MAAM,wBAAwB,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;YAE3E,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,CAAO,EAAE,EAAE,EAAE;gBAC1D;gBACI,mGAAmG;gBACnG,UAAU,KAAK,IAAI;oBACnB,0CAA0C;oBAC1C,CAAC,wBAAwB,EAC3B;oBACE,yFAAyF;oBAEzF,6BAA6B;oBAC7B,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;oBAEtD,2DAA2D;oBAC3D,MAAM,UAAU,GAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBAE5F,IAAI,IAAI,CAAC,cAAc,EAAE;wBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,KAAK,KAAK,IAAA,oBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,CAAC;qBACtF;oBACD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;oBAEvD,4BAA4B;oBAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;iBACtE;qBAAM;oBACH,8DAA8D;oBAC9D,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;oBAE9E,4BAA4B;oBAC5B,MAAM,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;oBAEnD,4BAA4B;oBAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;iBAC1E;YACL,CAAC,CAAA,CAAC,CAAC;YAEH,IAAI,KAAK,EAAE;gBACP,MAAM,KAAK,CAAC;aACf;iBAAM;gBACH,OAAO,MAAM,CAAC;aACjB;QACL,CAAC;KAAA;IAED,2BAA2B;IACb,QAAQ,CAAC,KAAa,EAAE,IAAS,EAAE,EAAgC;;YAC7E,mDAAmD;YACnD,MAAM,YAAY,GAAgD,EAAE,CAAC;YACrE,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,OAAkC,EAAE,EAAE;gBACvE,MAAM,QAAQ,GAAG,IAAA,mBAAW,EAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBACpD,YAAY,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;oBAChF,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;iBACnC,CAAC,CAAC;YACP,CAAC,CAAC;YAEF,yDAAyD;YACzD,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,GAAQ,EAAE,EAAE,CAC7C,GAAG,IAAA,iCAAc,EAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;iBACvC,IAAI,EAAE;iBACN,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,GAAG,CAAC,IAAI,MAAA,GAAG,CAAC,CAAC,CAAC,0CAAE,QAAQ,EAAE,EAAE,CAAA,EAAA,CAAC;iBACxC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAErB,gEAAgE;YAChE,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;YAE5C,2BAA2B;YAC3B,MAAM,OAAO,GAAG,IAAI,0BAAkB,CAAC,IAAI,CAAC,SAAS,EAAE;gBACnD,MAAM,EAAE,CAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;oBACnC,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;oBAC5C,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBACjC,CAAC,CAAA;gBAED,UAAU,EAAE,CAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;oBACvC,IAAA,iBAAS,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;oBACpF,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBACjC,CAAC,CAAA;gBAED,eAAe,EAAE,CAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;;oBAC5C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;wBACb,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,+CAA+C,CAAC,CAAC;qBACrF;oBAED,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;oBAEnD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;oBACxE,IAAI,QAAQ,EAAE;wBACV,eAAe;wBACf,IAAI,MAAA,OAAO,CAAC,KAAK,0CAAE,QAAQ,EAAE;4BACzB,MAAM,aAAa,GAAG,IAAA,oBAAY,EAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;4BAClF,IAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,eAAe,EAAE;gCAChC,iDAAiD;gCACjD,0BAA0B;gCAC1B,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;6BAChF;yBACJ;wBAED,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE;4BACxB,iEAAiE;4BACjE,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gCACvC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;6BAC3C;iCAAM;gCACH,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;6BACjE;yBACJ;6BAAM;4BACH,2CAA2C;4BAC3C,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;yBACvC;wBACD,6EAA6E;wBAC7E,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;qBACxD;yBAAM;wBACH,cAAc;wBACd,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;wBAE7B,mDAAmD;wBACnD,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;qBACvC;oBAED,oCAAoC;oBACpC,OAAO,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;oBAEzC,sDAAsD;oBACtD,OAAO,KAAK,CAAC;gBACjB,CAAC,CAAA;gBAED,OAAO,EAAE,CAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;;oBACpC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;wBACrE,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,6CAA6C,CAAC,CAAC;qBACnF;oBAED,IAAI,MAAA,OAAO,CAAC,KAAK,0CAAE,QAAQ,EAAE;wBACzB,MAAM,aAAa,GAAG,IAAA,oBAAY,EAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;wBAClF,IAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,eAAe,EAAE;4BAChC,kBAAkB;4BAClB,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;4BAEvD,iDAAiD;4BACjD,0BAA0B;4BAC1B,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;yBAC1E;qBACJ;gBACL,CAAC,CAAA;aACJ,CAAC,CAAC;YAEH,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YAE3C,iEAAiE;YACjE,IAAI,MAAM,GAAQ,SAAS,CAAC;YAC5B,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzB,MAAM,GAAG,EAAE,CAAC;gBACZ,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE;oBACnC,IAAI,IAAI,GAAG,MAAM,CAAC;oBAClB,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;wBAClB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;4BACf,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;yBACjC;wBACD,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;qBAC9B;oBACD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC5D,CAAC,CAAC,CAAC;aACN;YAED,0BAA0B;YAC1B,MAAM,UAAU,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;YAC/C,IAAI,IAAI,CAAC,cAAc,EAAE;gBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,KAAK,KAAK,IAAA,oBAAY,EAAC,UAAU,CAAC,EAAE,CAAC,CAAC;aACjF;YACD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAElD,gEAAgE;YAChE,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAgC,CAAC;YAEjE,4EAA4E;YAC5E,MAAM,gBAAgB,GAAG,IAAI,qCAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9D,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;gBAC/D,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;gBAC5C,iDAAiD;gBACjD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;oBAC3D,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC;iBACvF;YACL,CAAC,CAAC,CAAC;YAEH,8CAA8C;YAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACxD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;QAC5E,CAAC;KAAA;IAED,kEAAkE;IACpD,wBAAwB,CAAC,IAAS;;YAC5C,IAAI,wBAAwB,GAAG,KAAK,CAAC;YAErC,MAAM,OAAO,GAAG,IAAI,0BAAkB,CAAC,IAAI,CAAC,SAAS,EAAE;gBAC7C,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO;;wBAC/B,IAAI,OAAO,CAAC,KAAK,EAAE;4BACf,wBAAwB,GAAG,IAAI,CAAC;4BAChC,OAAO,KAAK,CAAC;yBAChB;6BAAM;4BACH,OAAO,IAAI,CAAC;yBACf;oBACL,CAAC;iBAAA;gBACK,OAAO;;wBACT,wBAAwB,GAAG,IAAI,CAAC;wBAChC,OAAO,KAAK,CAAC;oBACjB,CAAC;iBAAA;gBACK,eAAe;;wBACjB,wBAAwB,GAAG,IAAI,CAAC;wBAChC,OAAO,KAAK,CAAC;oBACjB,CAAC;iBAAA;gBACK,UAAU;;wBACZ,wBAAwB,GAAG,IAAI,CAAC;wBAChC,OAAO,KAAK,CAAC;oBACjB,CAAC;iBAAA;aACJ,CAAC,CAAC;YAEH,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YAChD,OAAO,wBAAwB,CAAC;QACpC,CAAC;KAAA;IAED,+DAA+D;IACvD,yBAAyB,CAAC,KAAa,EAAE,IAAS;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACxD,IAAI,MAAM,EAAE;YACR,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;gBACtB,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAC3B,KAAK,EACL,QAAQ,EACR,4BAA4B,IAAA,mCAAY,EAAC,WAAW,CAAC,KAAK,CAAC,EAAE,EAC7D,6BAAiB,CAAC,yBAAyB,EAC3C,WAAW,CAAC,KAAK,CACpB,CAAC;aACL;SACJ;IACL,CAAC;IAEK,UAAU,CAAC,IAA6C;;YAC1D,IAAI,CAAC,IAAI,EAAE;gBACP,MAAM,IAAA,mCAA2B,EAAC,IAAI,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC;aAChF;YACD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBACZ,MAAM,IAAA,mCAA2B,EAAC,IAAI,CAAC,MAAM,EAAE,0CAA0C,CAAC,CAAC;aAC9F;YAED,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAExD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAE9B,wEAAwE;YACxE,IAAI,mBAAmB,GAAG,KAAK,CAAC;YAChC,KAAK,MAAM,IAAI,IAAI,IAAA,iBAAS,EAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACrC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAC1E,IAAI,UAAU,KAAK,KAAK,EAAE;oBACtB,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAC3B,IAAI,CAAC,KAAK,EACV,QAAQ,EACR,SAAS,EACT,6BAAiB,CAAC,uBAAuB,CAC5C,CAAC;iBACL;qBAAM,IAAI,UAAU,KAAK,IAAI,EAAE;oBAC5B,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;iBACpD;qBAAM,IAAI,UAAU,KAAK,SAAS,EAAE;oBACjC,oEAAoE;oBACpE,mBAAmB,GAAG,IAAI,CAAC;oBAC3B,MAAM;iBACT;aACJ;YAED,IAAI,CAAC,mBAAmB,EAAE;gBACtB,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aAC5C;iBAAM;gBACH,2DAA2D;gBAC3D,OAAO,IAAI,CAAC,WAAW,CAAC,CAAO,EAAE,EAAE,EAAE;oBACjC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;oBAClF,oBAAoB;oBACpB,MAAM,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;oBACnD,OAAO,MAAM,CAAC;gBAClB,CAAC,CAAA,CAAC,CAAC;aACN;QACL,CAAC;KAAA;IAEa,YAAY,CACtB,KAAa,EACb,IAA6C,EAC7C,EAAgC;;YAEhC,mFAAmF;YACnF,wFAAwF;YAExF,IAAI,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,IAAA,iBAAS,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAO,IAAI,EAAE,EAAE;gBACpC,IAAI,IAAI,CAAC,cAAc,EAAE;oBACrB,oCAAoC;oBACpC,8GAA8G;oBAC9G,sGAAsG;oBAEtG,8FAA8F;oBAC9F,mDAAmD;oBACnD,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;oBACjE,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE;wBACvD,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,EAAE;4BACvD,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iCAAM,GAAG,KAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAG,EAAE,EAAE,CAAC,CAAC;4BAC1F,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;4BAC1E,IAAI,QAAQ,EAAE;gCACV,IAAI,IAAI,CAAC,cAAc,EAAE;oCACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,IAAA,oBAAY,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC;iCACzE;gCACD,OAAO,SAAS,CAAC;6BACpB;yBACJ;qBACJ;iBACJ;gBAED,IAAI,IAAI,CAAC,cAAc,EAAE;oBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,KAAK,KAAK,IAAA,oBAAY,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC;iBAC3E;gBACD,OAAO,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7F,CAAC,CAAA,CAAC,CACL,CAAC;YAEF,gDAAgD;YAChD,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAE/C,OAAO;gBACH,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE;gBACtC,eAAe,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBACzC,KAAK;oBACL,SAAS,EAAE,QAA+B;oBAC1C,YAAY,EAAE,IAAI;iBACrB,CAAC,CAAC;aACN,CAAC;QACN,CAAC;KAAA;IAED,YAAY;IAEZ,yBAAyB;IAEzB,8FAA8F;IAC9F,4BAA4B;IAC5B,EAAE;IACF,+FAA+F;IAC/F,UAAU;IAEJ,MAAM,CAAC,IAAS;;YAClB,IAAI,CAAC,IAAI,EAAE;gBACP,MAAM,IAAA,mCAA2B,EAAC,IAAI,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC;aAChF;YACD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACb,MAAM,IAAA,mCAA2B,EAAC,IAAI,CAAC,MAAM,EAAE,2CAA2C,CAAC,CAAC;aAC/F;YACD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBACZ,MAAM,IAAA,mCAA2B,EAAC,IAAI,CAAC,MAAM,EAAE,0CAA0C,CAAC,CAAC;aAC9F;YAED,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAE9B,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,CAAO,EAAE,EAAE,EAAE;gBAC1D,2DAA2D;gBAC3D,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAElE,mBAAmB;gBACnB,MAAM,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;gBAEnD,4BAA4B;gBAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YACvE,CAAC,CAAA,CAAC,CAAC;YAEH,IAAI,KAAK,EAAE;gBACP,MAAM,KAAK,CAAC;aACf;iBAAM;gBACH,OAAO,MAAM,CAAC;aACjB;QACL,CAAC;KAAA;IAEa,QAAQ,CAAC,IAAS,EAAE,EAAgC;;YAC9D,+BAA+B;YAC/B,MAAM,eAAe,GAA2B,EAAE,CAAC;YAEnD,qCAAqC;YACrC,MAAM,wBAAwB,GAAG,CAAO,KAAa,EAAE,YAAiB,EAAE,EAAE;gBACxE,uEAAuE;gBACvE,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;oBAChF,iCAAiC;oBACjC,IAAI,QAAa,CAAC;oBAClB,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;oBAC3D,IAAI,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC1D,QAAQ,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;qBACzF;oBACD,eAAe,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC;iBACpF;YACL,CAAC,CAAA,CAAC;YAEF,4FAA4F;YAC5F,4CAA4C;YAC5C,4FAA4F;YAC5F,+CAA+C;YAE/C,MAAM,OAAO,GAAG,CAAO,KAAa,EAAE,IAAS,EAAE,OAAkC,EAAE,EAAE;;gBACnF,IAAI,UAAU,GAAG,IAAI,CAAC;gBACtB,IAAI,MAAA,OAAO,CAAC,KAAK,0CAAE,QAAQ,EAAE;oBACzB,gEAAgE;oBAChE,mCAAmC;oBACnC,EAAE;oBACF,kEAAkE;oBAClE,iEAAiE;oBACjE,oBAAoB;oBACpB,wDAAwD;oBACxD,wCAAwC;oBACxC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;oBAEhD,4CAA4C;oBAC5C,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;oBAC3E,IAAI,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;wBACvC,iGAAiG;wBACjG,UAAU,mCACH,UAAU,KACb,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;gCACtB,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;6BACjD,GACJ,CAAC;qBACL;yBAAM;wBACH,iGAAiG;wBACjG,UAAU,mCACH,UAAU,GACV,aAAa,CACnB,CAAC;qBACL;iBACJ;gBAED,yDAAyD;gBACzD,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;gBACzF,eAAe,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;YACpC,CAAC,CAAA,CAAC;YAEF,MAAM,WAAW,GAAG,CAAO,KAAa,EAAE,IAAS,EAAE,OAAkC,EAAE,EAAE;;gBACvF,IAAI,MAAA,OAAO,CAAC,KAAK,0CAAE,QAAQ,EAAE;oBACzB,4CAA4C;oBAC5C,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;oBAC7D,KAAK,MAAM,IAAI,IAAI,IAAA,iBAAS,EAAC,IAAI,CAAC,IAAI,CAAC,EAAE;wBACrC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;qBACtC;iBACJ;gBACD,yDAAyD;gBACzD,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC7E,eAAe,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;YACpC,CAAC,CAAA,CAAC;YAEF,MAAM,kBAAkB,GAAG,CAAO,KAAa,EAAE,IAAS,EAAE,OAAkC,EAAE,EAAE;;gBAC9F,IAAI,MAAA,OAAO,CAAC,KAAK,0CAAE,QAAQ,EAAE;oBACzB,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;oBAC9E,IAAI,aAAa,CAAC,eAAe,EAAE;wBAC/B,yDAAyD;wBACzD,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;wBAEvE,6BAA6B;wBAC7B,MAAM,wBAAwB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;qBAC/C;iBACJ;YACL,CAAC,CAAA,CAAC;YAEF,sBAAsB;YACtB,MAAM,OAAO,GAAG,IAAI,0BAAkB,CAAC,IAAI,CAAC,SAAS,EAAE;gBACnD,MAAM,EAAE,CAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;;oBACnC,qDAAqD;oBACrD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;oBAE5D,mBAAmB;oBACnB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;oBAEhF,oDAAoD;oBACpD,IAAI,eAAe,GAAG,KAAK,CAAC;oBAC5B,MAAM,aAAa,GAAQ,MAAC,IAAY,CAAC,IAAI,mCAAI,IAAI,CAAC;oBACtD,IAAI,aAAa,EAAE;wBACf,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;4BAC1C,MAAM,KAAK,GAAG,IAAA,oBAAY,EAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;4BACvD,IAAI,KAAK,EAAE;gCACP,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;oCACpB,mDAAmD;oCACnD,eAAe,GAAG,IAAI,CAAC;oCACvB,MAAM;iCACT;qCAAM,IAAI,KAAK,CAAC,eAAe,EAAE;oCAC9B,+EAA+E;oCAC/E,eAAe,GAAG,IAAI,CAAC;oCACvB,MAAM;iCACT;6BACJ;yBACJ;qBACJ;oBAED,IAAI,eAAe,EAAE;wBACjB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;wBAE/C,yBAAyB;wBACzB,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;wBAE/E,+CAA+C;wBAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;wBACvC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;4BACrC,MAAM,WAAW,GAAI,IAAY,CAAC,IAAI,CAAC,CAAC,CAAE,IAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,IAAY,CAAC,GAAG,CAAC,CAAC;4BACtF,IACI,OAAO,WAAW,KAAK,QAAQ;gCAC/B,OAAO,WAAW,KAAK,QAAQ;gCAC/B,OAAO,WAAW,KAAK,QAAQ,EACjC;gCACE,GAAG,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC;6BAC1B;yBACJ;wBAED,6BAA6B;wBAC7B,MAAM,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;qBAC9C;gBACL,CAAC,CAAA;gBAED,UAAU,EAAE,CAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;oBACvC,uCAAuC;oBACvC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;oBAEtD,gCAAgC;oBAChC,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;wBAChF,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;wBAC/C,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;wBAC3D,IAAI,cAAc,EAAE;4BAChB,MAAM,mCAAQ,MAAM,GAAK,cAAc,CAAE,CAAC;yBAC7C;wBACD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;wBAC7D,MAAM,eAAe,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;wBACzD,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;wBAE/D,IAAI,IAAI,CAAC,cAAc,EAAE;4BACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,KAAK,MAAM,IAAA,oBAAY,EAAC,eAAe,CAAC,EAAE,CAAC,CAAC;yBACzF;wBACD,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;wBAE7D,eAAe,CAAC,IAAI,CAChB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;4BAC7B,KAAK;4BACL,SAAS,EAAE,YAAmC;4BAC9C,YAAY,EAAE,QAAQ;4BACtB,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;yBAClD,CAAC,CAAC,CACN,CAAC;qBACL;gBACL,CAAC,CAAA;gBAED,MAAM,EAAE,CAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;oBACnC,+CAA+C;oBAC/C,MAAM,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;oBAEpC,oCAAoC;oBACpC,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;oBAE7B,sBAAsB;oBACtB,OAAO,KAAK,CAAC;gBACjB,CAAC,CAAA;gBAED,UAAU,EAAE,CAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;oBACvC,gCAAgC;oBAChC,MAAM,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;oBAExC,oCAAoC;oBACpC,OAAO,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;oBAEjC,sBAAsB;oBACtB,OAAO,KAAK,CAAC;gBACjB,CAAC,CAAA;gBAED,MAAM,EAAE,CAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;oBACnC,qDAAqD;oBACrD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;oBAE5D,8CAA8C;oBAC9C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;oBAC1E,IAAI,QAAQ,EAAE;wBACV,cAAc;wBAEd,yBAAyB;wBACzB,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;wBAE/E,6BAA6B;wBAC7B,MAAM,wBAAwB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;wBAEpD,2BAA2B;wBAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;wBACjE,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;wBAE7B,oCAAoC;wBACpC,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;qBAChC;yBAAM;wBACH,cAAc;wBAEd,+CAA+C;wBAC/C,MAAM,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;wBAE3C,oCAAoC;wBACpC,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;wBAE7B,sBAAsB;wBACtB,OAAO,KAAK,CAAC;qBAChB;gBACL,CAAC,CAAA;gBAED,OAAO,EAAE,CAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,gDAAC,OAAA,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA,GAAA;gBAEjF,eAAe,EAAE,CAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;oBAC5C,wFAAwF;oBACxF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;oBACxE,IAAI,QAAQ,EAAE;wBACV,UAAU;wBACV,MAAM,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;qBACxD;yBAAM;wBACH,SAAS;wBACT,MAAM,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;qBAC9C;gBACL,CAAC,CAAA;gBAED,UAAU,EAAE,CAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,gDAAC,OAAA,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA,GAAA;gBAEpF,GAAG,EAAE,CAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;oBAChC,uCAAuC;oBACvC,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;oBAC7D,MAAM,eAAe,GAAG;wBACpB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC;wBACzC,KAAK,EAAE,aAAa;qBACvB,CAAC;oBACF,IAAI,IAAI,CAAC,cAAc,EAAE;wBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,KAAK,MAAM,IAAA,oBAAY,EAAC,eAAe,CAAC,EAAE,CAAC,CAAC;qBACzF;oBACD,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;oBAE7D,gDAAgD;oBAChD,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;oBAEtF,sCAAsC;oBACtC,MAAM,OAAO,CAAC,GAAG,CAAC,IAAA,iBAAS,EAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC/F,CAAC,CAAA;gBAED,MAAM,EAAE,CAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;oBACnC,qDAAqD;oBACrD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;oBAE5D,mBAAmB;oBACnB,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;oBAE/D,qBAAqB;oBACrB,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;gBACnF,CAAC,CAAA;gBAED,UAAU,EAAE,CAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;oBACvC,sBAAsB;oBACtB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;oBACjE,OAAO,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC5D,CAAC,CAAA;aACJ,CAAC,CAAC;YAEH,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YAEhD,kCAAkC;YAClC,IAAI,IAAI,CAAC,cAAc,EAAE;gBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,KAAK,KAAK,IAAA,oBAAY,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAChF;YACD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;gBACvC,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;aACjD,CAAC,CAAC;YAEH,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;QACvC,CAAC;KAAA;IAEO,cAAc,CAAC,KAAa,EAAE,IAAS;QAC3C,IAAI,CAAC,IAAI,EAAE;YACP,OAAO,KAAK,CAAC;SAChB;QACD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC/B,MAAM,KAAK,GAAG,IAAA,oBAAY,EAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACrD,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,MAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,YAAY,CAAA,EAAE;gBACpC,OAAO,IAAI,CAAC;aACf;SACJ;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAEK,UAAU,CAAC,IAAS;;YACtB,IAAI,CAAC,IAAI,EAAE;gBACP,MAAM,IAAA,mCAA2B,EAAC,IAAI,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC;aAChF;YACD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBACZ,MAAM,IAAA,mCAA2B,EAAC,IAAI,CAAC,MAAM,EAAE,0CAA0C,CAAC,CAAC;aAC9F;YAED,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAExD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAEpE,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBAC1F,6CAA6C;gBAC7C,MAAM,eAAe,GAA2B,EAAE,CAAC;gBACnD,OAAO,IAAI,CAAC,WAAW,CAAC,CAAO,EAAE,EAAE,EAAE;oBACjC,4BAA4B;oBAC5B,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACpD,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAChE,IAAI,cAAc,EAAE;wBAChB,MAAM,mCAAQ,MAAM,GAAK,cAAc,CAAE,CAAC;qBAC7C;oBACD,MAAM,eAAe,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;oBACtD,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;oBAEpE,IAAI,IAAI,CAAC,cAAc,EAAE;wBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,IAAI,CAAC,KAAK,KAAK,IAAA,oBAAY,EAAC,eAAe,CAAC,EAAE,CAAC,CAAC;qBAC7F;oBACD,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;oBAElE,eAAe,CAAC,IAAI,CAChB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;wBAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,SAAS,EAAE,YAAmC;wBAC9C,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC;wBAC3D,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;qBAClD,CAAC,CAAC,CACN,CAAC;oBAEF,0BAA0B;oBAC1B,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oBAErD,wBAAwB;oBACxB,MAAM,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;oBAEnD,OAAO,MAAM,CAAC;gBAClB,CAAC,CAAA,CAAC,CAAC;aACN;iBAAM;gBACH,gCAAgC;gBAChC,IAAI,IAAI,CAAC,cAAc,EAAE;oBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,IAAI,CAAC,KAAK,KAAK,IAAA,oBAAY,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC;iBACpF;gBACD,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aAC5C;QACL,CAAC;KAAA;IAEK,MAAM,CAAC,IAAS;;YAClB,IAAI,CAAC,IAAI,EAAE;gBACP,MAAM,IAAA,mCAA2B,EAAC,IAAI,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC;aAChF;YACD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACb,MAAM,IAAA,mCAA2B,EAAC,IAAI,CAAC,MAAM,EAAE,2CAA2C,CAAC,CAAC;aAC/F;YACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBACd,MAAM,IAAA,mCAA2B,EAAC,IAAI,CAAC,MAAM,EAAE,4CAA4C,CAAC,CAAC;aAChG;YACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBACd,MAAM,IAAA,mCAA2B,EAAC,IAAI,CAAC,MAAM,EAAE,4CAA4C,CAAC,CAAC;aAChG;YAED,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACxD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAExD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAE9B,4FAA4F;YAC5F,uFAAuF;YAEvF,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,CAAO,EAAE,EAAE,EAAE;gBAC1D,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,KAAc,IAAI,EAAb,IAAI,UAAK,IAAI,EAAzC,6BAAkC,CAAO,CAAC;gBAChD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBAE7E,IAAI,QAAQ,EAAE;oBACV,cAAc;oBACd,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,iBAAG,KAAK,EAAE,IAAI,EAAE,MAAM,IAAK,IAAI,GAAI,EAAE,CAAC,CAAC;oBAC9F,MAAM,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;oBACnD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;iBACtE;qBAAM;oBACH,cAAc;oBACd,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,kBAAI,IAAI,EAAE,MAAM,IAAK,IAAI,GAAI,EAAE,CAAC,CAAC;oBACnG,MAAM,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;oBACnD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;iBACtE;YACL,CAAC,CAAA,CAAC,CAAC;YAEH,IAAI,KAAK,EAAE;gBACP,MAAM,KAAK,CAAC;aACf;iBAAM;gBACH,OAAO,MAAM,CAAC;aACjB;QACL,CAAC;KAAA;IAED,YAAY;IAEZ,gBAAgB;IAEhB,4FAA4F;IAC5F,kGAAkG;IAE5F,MAAM,CAAC,IAAS;;YAClB,IAAI,CAAC,IAAI,EAAE;gBACP,MAAM,IAAA,mCAA2B,EAAC,IAAI,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC;aAChF;YACD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACb,MAAM,IAAA,mCAA2B,EAAC,IAAI,CAAC,MAAM,EAAE,2CAA2C,CAAC,CAAC;aAC/F;YAED,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAExD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,CAAO,EAAE,EAAE,EAAE;gBAC1D,+BAA+B;gBAC/B,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBAChF,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;gBACtB,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC;gBAEtB,kBAAkB;gBAClB,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBAElE,sBAAsB;gBACtB,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;gBAElF,4BAA4B;gBAC5B,IAAI,IAAI,CAAC,cAAc,EAAE;oBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,KAAK,MAAM,IAAA,oBAAY,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC;iBACjF;gBACD,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAElC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YACnC,CAAC,CAAA,CAAC,CAAC;YAEH,IAAI,KAAK,EAAE;gBACP,MAAM,KAAK,CAAC;aACf;iBAAM;gBACH,OAAO,MAAM,CAAC;aACjB;QACL,CAAC;KAAA;IAEK,UAAU,CAAC,IAAS;;YACtB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAExD,2BAA2B;YAC3B,IAAI,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,CAAC;YAClB,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAEpE,uBAAuB;YACvB,IAAI,IAAI,CAAC,cAAc,EAAE;gBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,IAAI,CAAC,KAAK,MAAM,IAAA,oBAAY,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACrF;YACD,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC;KAAA;IAED,YAAY;IAEZ,qBAAqB;IAEf,SAAS,CAAC,IAAS;;YACrB,IAAI,CAAC,IAAI,EAAE;gBACP,MAAM,IAAA,mCAA2B,EAAC,IAAI,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC;aAChF;YAED,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAE9B,2BAA2B;YAC3B,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAElE,IAAI,IAAI,CAAC,cAAc,EAAE;gBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,IAAI,CAAC,KAAK,MAAM,IAAA,oBAAY,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACpF;YACD,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;KAAA;IAEK,OAAO,CAAC,IAAS;;YACnB,IAAI,CAAC,IAAI,EAAE;gBACP,MAAM,IAAA,mCAA2B,EAAC,IAAI,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC;aAChF;YAED,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAE9B,2BAA2B;YAC3B,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAElE,IAAI,IAAI,CAAC,cAAc,EAAE;gBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,IAAI,CAAC,KAAK,MAAM,IAAA,oBAAY,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAClF;YACD,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;KAAA;IAEK,KAAK,CAAC,IAAS;;YACjB,2BAA2B;YAC3B,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAElE,IAAI,IAAI,CAAC,cAAc,EAAE;gBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,KAAK,MAAM,IAAA,oBAAY,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAChF;YACD,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;KAAA;IAED,YAAY;IAEZ,kCAAkC;IAE5B,SAAS,CAAC,IAAS;;YACrB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC3E,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;gBAC9B,oBAAoB;gBACpB,IAAI,IAAI,CAAC,cAAc,EAAE;oBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,IAAI,CAAC,KAAK,MAAM,IAAA,oBAAY,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC;iBACpF;gBACD,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aAC3C;YAED,IAAI,CAAC,IAAI,EAAE;gBACP,cAAc;gBACd,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;aACjD;iBAAM;gBACH,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;oBAC1B,MAAM,IAAA,mCAA2B,EAAC,IAAI,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC;iBAChF;gBACD,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;oBAChC,cAAc;oBACd,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;iBACjD;qBAAM;oBACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;iBACjC;aACJ;YAED,mCAAmC;YAEnC,IAAI,IAAI,CAAC,MAAM,EAAE;gBACb,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;aACpE;YAED,IAAI,IAAI,CAAC,MAAM,EAAE;gBACb,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;aACpE;YAED,IAAI,IAAI,CAAC,MAAM,EAAE;gBACb,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;aACtE;YAED,IAAI,IAAI,CAAC,cAAc,EAAE;gBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,IAAI,CAAC,KAAK,MAAM,IAAA,oBAAY,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACpF;YACD,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;KAAA;IAED,YAAY;IAEZ,eAAe;IAEf,IAAY,cAAc;QACtB,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChE,CAAC;IAEO,WAAW,CAAC,MAA0D;QAC1E,IAAI,IAAI,CAAC,MAAM,CAAC,0BAAc,CAAC,EAAE;YAC7B,qCAAqC;YACrC,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC9B;aAAM;YACH,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;SACvD;IACL,CAAC;IAEa,kBAAkB,CAAC,eAAuC,EAAE,EAAgC;;YACtG,MAAM,OAAO,CAAC,GAAG,CACb,eAAe,CAAC,GAAG,CAAC,CAAO,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,gDACvE,OAAA,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA,GAAA,CAC3F,CACJ,CAAC;QACN,CAAC;KAAA;IAEO,WAAW,CAAC,KAAa;QAC7B,OAAO,IAAI,kBAAkB,CACzB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,UAAU,EACf,KAAK,EACL,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,cAAc,CACtB,CAAC;IACN,CAAC;IAEO,eAAe,CAAC,SAAoB;QACxC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,IAAI,IAAA,oBAAY,EAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC7G,IAAI,CAAC,aAAa,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;SACrE;QACD,OAAO,aAAa,CAAC;IACzB,CAAC;CAGJ;AA5pCD,gDA4pCC"}
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/enhancements/policy/handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,10 +8,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
8
8
|
exports.withPolicy = void 0;
|
|
9
9
|
const semver_1 = __importDefault(require("semver"));
|
|
10
10
|
const constants_1 = require("../../constants");
|
|
11
|
+
const cross_1 = require("../../cross");
|
|
11
12
|
const loader_1 = require("../../loader");
|
|
12
13
|
const validation_1 = require("../../validation");
|
|
13
14
|
const proxy_1 = require("../proxy");
|
|
14
|
-
const utils_1 = require("../utils");
|
|
15
15
|
const handler_1 = require("./handler");
|
|
16
16
|
/**
|
|
17
17
|
* Gets an enhanced Prisma client with access policy check.
|
|
@@ -34,11 +34,21 @@ function withPolicy(prisma, context, options) {
|
|
|
34
34
|
const _modelMeta = (_b = options === null || options === void 0 ? void 0 : options.modelMeta) !== null && _b !== void 0 ? _b : (0, loader_1.getDefaultModelMeta)(options === null || options === void 0 ? void 0 : options.loadPath);
|
|
35
35
|
const _zodSchemas = (_c = options === null || options === void 0 ? void 0 : options.zodSchemas) !== null && _c !== void 0 ? _c : (0, loader_1.getDefaultZodSchemas)(options === null || options === void 0 ? void 0 : options.loadPath);
|
|
36
36
|
// validate user context
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
const userContext = context === null || context === void 0 ? void 0 : context.user;
|
|
38
|
+
if (userContext && _modelMeta.authModel) {
|
|
39
|
+
const idFields = (0, cross_1.getIdFields)(_modelMeta, _modelMeta.authModel);
|
|
39
40
|
if (!(0, validation_1.hasAllFields)(context.user, idFields.map((f) => f.name))) {
|
|
40
41
|
throw new Error(`Invalid user context: must have valid ID field ${idFields.map((f) => `"${f.name}"`).join(', ')}`);
|
|
41
42
|
}
|
|
43
|
+
// validate user context for fields used in policy expressions
|
|
44
|
+
const authSelector = _policy.authSelector;
|
|
45
|
+
if (authSelector) {
|
|
46
|
+
Object.keys(authSelector).forEach((f) => {
|
|
47
|
+
if (!(f in userContext)) {
|
|
48
|
+
console.warn(`User context does not have field "${f}" used in policy rules`);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}
|
|
42
52
|
}
|
|
43
53
|
return (0, proxy_1.makeProxy)(prisma, _modelMeta, (_prisma, model) => new handler_1.PolicyProxyHandler(_prisma, _policy, _modelMeta, _zodSchemas, model, context === null || context === void 0 ? void 0 : context.user, options === null || options === void 0 ? void 0 : options.logPrismaQuery), 'policy');
|
|
44
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/enhancements/policy/index.ts"],"names":[],"mappings":";AAAA,uDAAuD;AACvD,uDAAuD;;;;;;AAEvD,oDAA4B;AAC5B,+CAAyD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/enhancements/policy/index.ts"],"names":[],"mappings":";AAAA,uDAAuD;AACvD,uDAAuD;;;;;;AAEvD,oDAA4B;AAC5B,+CAAyD;AACzD,uCAA0D;AAC1D,yCAA2F;AAE3F,iDAAgD;AAChD,oCAAqC;AAErC,uCAA+C;AAkC/C;;;;;;;GAOG;AACH,SAAgB,UAAU,CACtB,MAAgB,EAChB,OAA2B,EAC3B,OAA2B;;IAE3B,IAAI,CAAC,MAAM,EAAE;QACT,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;KAC9C;IAED,MAAM,SAAS,GAAI,MAAc,CAAC,cAAc,CAAC;IACjD,IAAI,SAAS,IAAI,gBAAM,CAAC,EAAE,CAAC,SAAS,EAAE,kCAAsB,CAAC,EAAE;QAC3D,OAAO,CAAC,IAAI,CACR,qCAAqC,kCAAsB,qCAAqC,SAAS,IAAI,CAChH,CAAC;KACL;IAED,MAAM,OAAO,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,mCAAI,IAAA,yBAAgB,EAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,CAAC,CAAC;IACvE,MAAM,UAAU,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,mCAAI,IAAA,4BAAmB,EAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,CAAC,CAAC;IAChF,MAAM,WAAW,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,mCAAI,IAAA,6BAAoB,EAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,CAAC,CAAC;IAEnF,wBAAwB;IACxB,MAAM,WAAW,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC;IAClC,IAAI,WAAW,IAAI,UAAU,CAAC,SAAS,EAAE;QACrC,MAAM,QAAQ,GAAG,IAAA,mBAAW,EAAC,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;QAC/D,IACI,CAAC,IAAA,yBAAY,EACT,OAAO,CAAC,IAAI,EACZ,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAC9B,EACH;YACE,MAAM,IAAI,KAAK,CACX,kDAAkD,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACpG,CAAC;SACL;QAED,8DAA8D;QAC9D,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QAC1C,IAAI,YAAY,EAAE;YACd,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACpC,IAAI,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,EAAE;oBACrB,OAAO,CAAC,IAAI,CAAC,qCAAqC,CAAC,wBAAwB,CAAC,CAAC;iBAChF;YACL,CAAC,CAAC,CAAC;SACN;KACJ;IAED,OAAO,IAAA,iBAAS,EACZ,MAAM,EACN,UAAU,EACV,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CACf,IAAI,4BAAkB,CAClB,OAA2B,EAC3B,OAAO,EACP,UAAU,EACV,WAAW,EACX,KAAK,EACL,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,EACb,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,CAC1B,EACL,QAAQ,CACX,CAAC;AACN,CAAC;AA7DD,gCA6DC"}
|
|
@@ -118,6 +118,10 @@ class PolicyUtil {
|
|
|
118
118
|
}
|
|
119
119
|
const result = {};
|
|
120
120
|
for (const [key, value] of Object.entries(condition)) {
|
|
121
|
+
if (this.isFalse(result)) {
|
|
122
|
+
// already false, no need to continue
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
121
125
|
if (value === null || value === undefined) {
|
|
122
126
|
result[key] = value;
|
|
123
127
|
continue;
|
|
@@ -160,7 +164,18 @@ class PolicyUtil {
|
|
|
160
164
|
break;
|
|
161
165
|
}
|
|
162
166
|
case 'NOT': {
|
|
163
|
-
|
|
167
|
+
const r = this.reduce(value);
|
|
168
|
+
if (this.isFalse(r)) {
|
|
169
|
+
// NOT false => true, thus eliminated (not adding into result)
|
|
170
|
+
}
|
|
171
|
+
else if (this.isTrue(r)) {
|
|
172
|
+
// NOT true => false, eliminate all other keys and set entire condition to false
|
|
173
|
+
Object.keys(result).forEach((k) => delete result[k]);
|
|
174
|
+
result['OR'] = []; // this will cause the outer loop to exit too
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
result[key] = r;
|
|
178
|
+
}
|
|
164
179
|
break;
|
|
165
180
|
}
|
|
166
181
|
default: {
|
|
@@ -216,6 +231,7 @@ class PolicyUtil {
|
|
|
216
231
|
return this.reduce(provider);
|
|
217
232
|
}
|
|
218
233
|
if (!provider) {
|
|
234
|
+
// field access is allowed by default
|
|
219
235
|
return this.makeTrue();
|
|
220
236
|
}
|
|
221
237
|
const r = provider({ user: this.user }, db);
|
|
@@ -898,7 +914,7 @@ class PolicyUtil {
|
|
|
898
914
|
if (fieldInfo.isDataModel) {
|
|
899
915
|
// recurse into nested fields
|
|
900
916
|
const nextArgs = (_b = ((_a = queryArgs === null || queryArgs === void 0 ? void 0 : queryArgs.select) !== null && _a !== void 0 ? _a : queryArgs === null || queryArgs === void 0 ? void 0 : queryArgs.include)) === null || _b === void 0 ? void 0 : _b[field];
|
|
901
|
-
this.doPostProcessForRead(fieldData, fieldInfo.type, entityFullData[field], nextArgs, hasFieldLevelPolicy, path ? path + '.' + field : field);
|
|
917
|
+
this.doPostProcessForRead(fieldData, fieldInfo.type, entityFullData[field], nextArgs, this.hasFieldLevelPolicy(fieldInfo.type), path ? path + '.' + field : field);
|
|
902
918
|
}
|
|
903
919
|
}
|
|
904
920
|
}
|
|
@@ -928,7 +944,7 @@ class PolicyUtil {
|
|
|
928
944
|
* Gets "id" fields for a given model.
|
|
929
945
|
*/
|
|
930
946
|
getIdFields(model) {
|
|
931
|
-
return (0,
|
|
947
|
+
return (0, cross_1.getIdFields)(this.modelMeta, model, true);
|
|
932
948
|
}
|
|
933
949
|
/**
|
|
934
950
|
* Gets id field values from an entity.
|