zenstack 1.0.0-alpha.23 → 1.0.0-alpha.25
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/README.md +79 -9
- package/cli/cli-error.js +3 -5
- package/cli/cli-error.js.map +1 -1
- package/cli/cli-util.js +123 -105
- package/cli/cli-util.js.map +1 -1
- package/cli/index.js +105 -63
- package/cli/index.js.map +1 -1
- package/cli/plugin-runner.js +130 -127
- package/cli/plugin-runner.js.map +1 -1
- package/language-server/constants.js +5 -13
- package/language-server/constants.js.map +1 -1
- package/language-server/main.js +8 -15
- package/language-server/main.js.map +1 -1
- package/language-server/types.js +3 -1
- package/language-server/types.js.map +1 -1
- package/language-server/utils.js +13 -16
- package/language-server/utils.js.map +1 -1
- package/language-server/validator/attribute-validator.js +3 -7
- package/language-server/validator/attribute-validator.js.map +1 -1
- package/language-server/validator/datamodel-validator.js +293 -347
- package/language-server/validator/datamodel-validator.js.map +1 -1
- package/language-server/validator/datasource-validator.js +61 -71
- package/language-server/validator/datasource-validator.js.map +1 -1
- package/language-server/validator/enum-validator.js +6 -10
- package/language-server/validator/enum-validator.js.map +1 -1
- package/language-server/validator/expression-validator.js +25 -31
- package/language-server/validator/expression-validator.js.map +1 -1
- package/language-server/validator/schema-validator.js +18 -25
- package/language-server/validator/schema-validator.js.map +1 -1
- package/language-server/validator/utils.js +86 -85
- package/language-server/validator/utils.js.map +1 -1
- package/language-server/validator/zmodel-validator.js +55 -58
- package/language-server/validator/zmodel-validator.js.map +1 -1
- package/language-server/zmodel-formatter.js +40 -21
- package/language-server/zmodel-formatter.js.map +1 -1
- package/language-server/zmodel-linker.js +328 -331
- package/language-server/zmodel-linker.js.map +1 -1
- package/language-server/zmodel-module.js +50 -59
- package/language-server/zmodel-module.js.map +1 -1
- package/language-server/zmodel-scope.js +35 -25
- package/language-server/zmodel-scope.js.map +1 -1
- package/language-server/zmodel-workspace-manager.js +30 -18
- package/language-server/zmodel-workspace-manager.js.map +1 -1
- package/package.json +8 -12
- package/plugins/access-policy/expression-writer.js +301 -292
- package/plugins/access-policy/expression-writer.js.map +1 -1
- package/plugins/access-policy/index.js +20 -11
- package/plugins/access-policy/index.js.map +1 -1
- package/plugins/access-policy/policy-guard-generator.js +327 -321
- package/plugins/access-policy/policy-guard-generator.js.map +1 -1
- package/plugins/access-policy/typescript-expression-transformer.js +94 -95
- package/plugins/access-policy/typescript-expression-transformer.js.map +1 -1
- package/plugins/access-policy/utils.js +7 -9
- package/plugins/access-policy/utils.js.map +1 -1
- package/plugins/access-policy/zod-schema-generator.js +143 -159
- package/plugins/access-policy/zod-schema-generator.js.map +1 -1
- package/plugins/model-meta/index.js +97 -102
- package/plugins/model-meta/index.js.map +1 -1
- package/plugins/plugin-utils.js +34 -40
- package/plugins/plugin-utils.js.map +1 -1
- package/plugins/prisma/indent-string.js +4 -8
- package/plugins/prisma/indent-string.js.map +1 -1
- package/plugins/prisma/index.js +20 -11
- package/plugins/prisma/index.js.map +1 -1
- package/plugins/prisma/prisma-builder.js +235 -213
- package/plugins/prisma/prisma-builder.js.map +1 -1
- package/plugins/prisma/schema-generator.js +205 -192
- package/plugins/prisma/schema-generator.js.map +1 -1
- package/plugins/prisma/zmodel-code-generator.js +109 -114
- package/plugins/prisma/zmodel-code-generator.js.map +1 -1
- package/telemetry.js +107 -90
- package/telemetry.js.map +1 -1
- package/types.js +3 -1
- package/types.js.map +1 -1
- package/utils/ast-utils.js +67 -67
- package/utils/ast-utils.js.map +1 -1
- package/utils/exec-utils.js +6 -15
- package/utils/exec-utils.js.map +1 -1
- package/utils/pkg-utils.js +38 -35
- package/utils/pkg-utils.js.map +1 -1
- package/utils/version-utils.js +9 -10
- package/utils/version-utils.js.map +1 -1
- package/global.d.js +0 -1
- package/global.d.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy-guard-generator.js","names":["UNKNOWN_USER_ID","PolicyGenerator","generate","model","options","output","getDefaultOutputFolder","console","error","name","project","Project","sf","createSourceFile","path","join","undefined","overwrite","addImportDeclaration","namedImports","moduleSpecifier","RUNTIME_PACKAGE","isTypeOnly","e","declarations","filter","d","isEnum","models","isDataModel","policyMap","generateQueryGuardForModel","zodGenerator","ZodSchemaGenerator","addVariableStatement","declarationKind","VariableDeclarationKind","Const","initializer","writer","block","write","inlineBlock","map","Object","entries","camelCase","op","func","JSON","stringify","writeLine","addStatements","formatText","save","emit","getPolicyExpressions","kind","operation","attrs","attributes","attr","decl","ref","checkOperation","result","opsValue","getLiteral","args","value","ops","split","s","trim","includes","processUpdatePolicies","expressions","postUpdate","expr","visitPolicyExpression","isBinaryExpr","operator","left","right","isUnaryExpr","operand","hasFutureReference","node","streamAllContents","isInvocationExpr","function","isFromStdlib","sourceFile","policies","analyzePolicies","ALL_OPERATION_KINDS","denies","allows","length","generateQueryGuardFunction","getName","preValueSelect","generatePreValueSelect","addPath","curr","forEach","seg","i","select","visit","isReferenceExpr","target","resolved","isDataModelField","isMemberAccessExpr","isFutureExpr","inner","member","$refText","rule","isExpression","$container","$type","MemberAccessExpr","$resolvedType","push","keys","addFunction","returnType","parameters","type","addBody","hasAuthRef","child","userModel","find","PluginError","userIdField","getIdField","exprWriter","ExpressionWriter","writeDenies","conditionalWrite","writeAllows","GUARD_FIELD_NAME"],"sources":["../../../src/plugins/access-policy/policy-guard-generator.ts"],"sourcesContent":["import {\n DataModel,\n Expression,\n MemberAccessExpr,\n Model,\n isBinaryExpr,\n isDataModel,\n isDataModelField,\n isEnum,\n isExpression,\n isInvocationExpr,\n isMemberAccessExpr,\n isReferenceExpr,\n isUnaryExpr,\n} from '@zenstackhq/language/ast';\nimport { PolicyKind, PolicyOperationKind } from '@zenstackhq/runtime';\nimport { GUARD_FIELD_NAME, PluginError, PluginOptions, getLiteral, resolved } from '@zenstackhq/sdk';\nimport { camelCase } from 'change-case';\nimport { streamAllContents } from 'langium';\nimport path from 'path';\nimport { FunctionDeclaration, Project, SourceFile, VariableDeclarationKind } from 'ts-morph';\nimport { name } from '.';\nimport { isFromStdlib } from '../../language-server/utils';\nimport { analyzePolicies, getIdField } from '../../utils/ast-utils';\nimport { ALL_OPERATION_KINDS, RUNTIME_PACKAGE, getDefaultOutputFolder } from '../plugin-utils';\nimport { ExpressionWriter } from './expression-writer';\nimport { isFutureExpr } from './utils';\nimport { ZodSchemaGenerator } from './zod-schema-generator';\n\nconst UNKNOWN_USER_ID = 'zenstack_unknown_user';\n\n/**\n * Generates source file that contains Prisma query guard objects used for injecting database queries\n */\nexport default class PolicyGenerator {\n async generate(model: Model, options: PluginOptions) {\n const output = options.output ? (options.output as string) : getDefaultOutputFolder();\n if (!output) {\n console.error(`Unable to determine output path, not running plugin ${name}`);\n return;\n }\n\n const project = new Project();\n const sf = project.createSourceFile(path.join(output, 'policy.ts'), undefined, { overwrite: true });\n\n sf.addImportDeclaration({\n namedImports: [{ name: 'QueryContext' }],\n moduleSpecifier: `${RUNTIME_PACKAGE}`,\n isTypeOnly: true,\n });\n\n sf.addImportDeclaration({\n namedImports: [{ name: 'z' }],\n moduleSpecifier: 'zod',\n });\n\n // import enums\n for (const e of model.declarations.filter((d) => isEnum(d))) {\n sf.addImportDeclaration({\n namedImports: [{ name: e.name }],\n moduleSpecifier: '@prisma/client',\n });\n }\n\n const models = model.declarations.filter((d) => isDataModel(d)) as DataModel[];\n\n const policyMap: Record<string, Record<string, string | boolean | object>> = {};\n for (const model of models) {\n policyMap[model.name] = await this.generateQueryGuardForModel(model, sf);\n }\n\n const zodGenerator = new ZodSchemaGenerator();\n\n sf.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const,\n declarations: [\n {\n name: 'policy',\n initializer: (writer) => {\n writer.block(() => {\n writer.write('guard:');\n writer.inlineBlock(() => {\n for (const [model, map] of Object.entries(policyMap)) {\n writer.write(`${camelCase(model)}:`);\n writer.inlineBlock(() => {\n for (const [op, func] of Object.entries(map)) {\n if (typeof func === 'object') {\n writer.write(`${op}: ${JSON.stringify(func)},`);\n } else {\n writer.write(`${op}: ${func},`);\n }\n }\n });\n writer.write(',');\n }\n });\n\n writer.writeLine(',');\n\n writer.write('schema:');\n zodGenerator.generate(writer, models);\n });\n },\n },\n ],\n });\n\n sf.addStatements('export default policy');\n\n sf.formatText();\n await project.save();\n await project.emit();\n }\n\n private getPolicyExpressions(model: DataModel, kind: PolicyKind, operation: PolicyOperationKind) {\n const attrs = model.attributes.filter((attr) => attr.decl.ref?.name === `@@${kind}`);\n\n const checkOperation = operation === 'postUpdate' ? 'update' : operation;\n\n let result = attrs\n .filter((attr) => {\n const opsValue = getLiteral<string>(attr.args[0].value);\n if (!opsValue) {\n return false;\n }\n const ops = opsValue.split(',').map((s) => s.trim());\n return ops.includes(checkOperation) || ops.includes('all');\n })\n .map((attr) => attr.args[1].value);\n\n if (operation === 'update') {\n result = this.processUpdatePolicies(result, false);\n } else if (operation === 'postUpdate') {\n result = this.processUpdatePolicies(result, true);\n }\n\n return result;\n }\n\n private processUpdatePolicies(expressions: Expression[], postUpdate: boolean) {\n return expressions\n .map((expr) => this.visitPolicyExpression(expr, postUpdate))\n .filter((e): e is Expression => !!e);\n }\n\n private visitPolicyExpression(expr: Expression, postUpdate: boolean): Expression | undefined {\n if (isBinaryExpr(expr) && (expr.operator === '&&' || expr.operator === '||')) {\n const left = this.visitPolicyExpression(expr.left, postUpdate);\n const right = this.visitPolicyExpression(expr.right, postUpdate);\n if (!left) return right;\n if (!right) return left;\n return { ...expr, left, right };\n }\n\n if (isUnaryExpr(expr) && expr.operator === '!') {\n const operand = this.visitPolicyExpression(expr.operand, postUpdate);\n if (!operand) return undefined;\n return { ...expr, operand };\n }\n\n if (postUpdate && !this.hasFutureReference(expr)) {\n return undefined;\n } else if (!postUpdate && this.hasFutureReference(expr)) {\n return undefined;\n }\n\n return expr;\n }\n\n private hasFutureReference(expr: Expression) {\n for (const node of streamAllContents(expr)) {\n if (isInvocationExpr(node) && node.function.ref?.name === 'future' && isFromStdlib(node.function.ref)) {\n return true;\n }\n }\n return false;\n }\n\n private async generateQueryGuardForModel(model: DataModel, sourceFile: SourceFile) {\n const result: Record<string, string | boolean | object> = {};\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const policies: any = analyzePolicies(model);\n\n for (const kind of ALL_OPERATION_KINDS) {\n if (policies[kind] === true || policies[kind] === false) {\n result[kind] = policies[kind];\n continue;\n }\n\n const denies = this.getPolicyExpressions(model, 'deny', kind);\n const allows = this.getPolicyExpressions(model, 'allow', kind);\n\n if (kind === 'update' && allows.length === 0) {\n // no allow rule for 'update', policy is constant based on if there's\n // post-update counterpart\n if (this.getPolicyExpressions(model, 'allow', 'postUpdate').length === 0) {\n result[kind] = false;\n continue;\n } else {\n result[kind] = true;\n continue;\n }\n }\n\n if (kind === 'postUpdate' && allows.length === 0 && denies.length === 0) {\n // no rule 'postUpdate', always allow\n result[kind] = true;\n continue;\n }\n\n const func = this.generateQueryGuardFunction(sourceFile, model, kind, allows, denies);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n result[kind] = func.getName()!;\n\n if (kind === 'postUpdate') {\n const preValueSelect = this.generatePreValueSelect(model, allows, denies);\n if (preValueSelect) {\n result['preValueSelect'] = preValueSelect;\n }\n }\n }\n return result;\n }\n\n // generates an object that can be used as the 'select' argument when fetching pre-update\n // entity value\n private generatePreValueSelect(model: DataModel, allows: Expression[], denies: Expression[]): object {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result: any = {};\n const addPath = (path: string[]) => {\n let curr = result;\n path.forEach((seg, i) => {\n if (i === path.length - 1) {\n curr[seg] = true;\n } else {\n if (!curr[seg]) {\n curr[seg] = { select: {} };\n }\n curr = curr[seg].select;\n }\n });\n };\n\n const visit = (node: Expression): string[] | undefined => {\n if (isReferenceExpr(node)) {\n const target = resolved(node.target);\n if (isDataModelField(target)) {\n // a field selection, it's a terminal\n return [target.name];\n }\n } else if (isMemberAccessExpr(node)) {\n if (isFutureExpr(node.operand)) {\n // future().field is not subject to pre-update select\n return undefined;\n }\n\n // build a selection path inside-out for chained member access\n const inner = visit(node.operand);\n if (inner) {\n return [...inner, node.member.$refText];\n }\n }\n return undefined;\n };\n\n for (const rule of [...allows, ...denies]) {\n for (const expr of streamAllContents(rule).filter((node): node is Expression => isExpression(node))) {\n // only care about member access and reference expressions\n if (!isMemberAccessExpr(expr) && !isReferenceExpr(expr)) {\n continue;\n }\n\n if (expr.$container.$type === MemberAccessExpr) {\n // only visit top-level member access\n continue;\n }\n\n const path = visit(expr);\n if (path) {\n if (isDataModel(expr.$resolvedType?.decl)) {\n // member selection ended at a data model field, include its 'id'\n path.push('id');\n }\n addPath(path);\n }\n }\n }\n\n return Object.keys(result).length === 0 ? null : result;\n }\n\n private generateQueryGuardFunction(\n sourceFile: SourceFile,\n model: DataModel,\n kind: PolicyOperationKind,\n allows: Expression[],\n denies: Expression[]\n ): FunctionDeclaration {\n const func = sourceFile\n .addFunction({\n name: model.name + '_' + kind,\n returnType: 'any',\n parameters: [\n {\n name: 'context',\n type: 'QueryContext',\n },\n ],\n })\n .addBody();\n\n // check if any allow or deny rule contains 'auth()' invocation\n let hasAuthRef = false;\n for (const node of [...denies, ...allows]) {\n for (const child of streamAllContents(node)) {\n if (isInvocationExpr(child) && resolved(child.function).name === 'auth') {\n hasAuthRef = true;\n break;\n }\n }\n if (hasAuthRef) {\n break;\n }\n }\n\n if (hasAuthRef) {\n const userModel = model.$container.declarations.find(\n (decl): decl is DataModel => isDataModel(decl) && decl.name === 'User'\n );\n if (!userModel) {\n throw new PluginError('User model not found');\n }\n const userIdField = getIdField(userModel);\n if (!userIdField) {\n throw new PluginError('User model does not have an id field');\n }\n func.addStatements(\n // make sure user id is always available\n `const user = context.user?.${userIdField.name} ? context.user : { ...context.user, ${userIdField.name}: '${UNKNOWN_USER_ID}' };`\n );\n }\n\n // r = <guard object>;\n func.addStatements((writer) => {\n writer.write('return ');\n const exprWriter = new ExpressionWriter(writer, kind === 'postUpdate');\n const writeDenies = () => {\n writer.conditionalWrite(denies.length > 1, '{ AND: [');\n denies.forEach((expr, i) => {\n writer.inlineBlock(() => {\n writer.write('NOT: ');\n exprWriter.write(expr);\n });\n writer.conditionalWrite(i !== denies.length - 1, ',');\n });\n writer.conditionalWrite(denies.length > 1, ']}');\n };\n\n const writeAllows = () => {\n writer.conditionalWrite(allows.length > 1, '{ OR: [');\n allows.forEach((expr, i) => {\n exprWriter.write(expr);\n writer.conditionalWrite(i !== allows.length - 1, ',');\n });\n writer.conditionalWrite(allows.length > 1, ']}');\n };\n\n if (allows.length > 0 && denies.length > 0) {\n writer.write('{ AND: [');\n writeDenies();\n writer.write(',');\n writeAllows();\n writer.write(']}');\n } else if (denies.length > 0) {\n writeDenies();\n } else if (allows.length > 0) {\n writeAllows();\n } else {\n // disallow any operation\n writer.write(`{ ${GUARD_FIELD_NAME}: false }`);\n }\n writer.write(';');\n });\n return func;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"policy-guard-generator.js","sourceRoot":"","sources":["../../../src/plugins/access-policy/policy-guard-generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,kDAckC;AAElC,yCAAqG;AACrG,6CAAwC;AACxC,qCAA4C;AAC5C,gDAAwB;AACxB,uCAA6F;AAC7F,wBAAyB;AACzB,uDAA2D;AAC3D,qDAAoE;AACpE,kDAA+F;AAC/F,2DAAuD;AACvD,mCAAuC;AACvC,iEAA4D;AAE5D,MAAM,eAAe,GAAG,uBAAuB,CAAC;AAEhD;;GAEG;AACH,MAAqB,eAAe;IAC1B,QAAQ,CAAC,KAAY,EAAE,OAAsB;;YAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAE,OAAO,CAAC,MAAiB,CAAC,CAAC,CAAC,IAAA,qCAAsB,GAAE,CAAC;YACtF,IAAI,CAAC,MAAM,EAAE;gBACT,OAAO,CAAC,KAAK,CAAC,uDAAuD,OAAI,EAAE,CAAC,CAAC;gBAC7E,OAAO;aACV;YAED,MAAM,OAAO,GAAG,IAAI,kBAAO,EAAE,CAAC;YAC9B,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAEpG,EAAE,CAAC,oBAAoB,CAAC;gBACpB,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;gBACxC,eAAe,EAAE,GAAG,8BAAe,EAAE;gBACrC,UAAU,EAAE,IAAI;aACnB,CAAC,CAAC;YAEH,EAAE,CAAC,oBAAoB,CAAC;gBACpB,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;gBAC7B,eAAe,EAAE,KAAK;aACzB,CAAC,CAAC;YAEH,eAAe;YACf,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,YAAM,EAAC,CAAC,CAAC,CAAC,EAAE;gBACzD,EAAE,CAAC,oBAAoB,CAAC;oBACpB,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;oBAChC,eAAe,EAAE,gBAAgB;iBACpC,CAAC,CAAC;aACN;YAED,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,iBAAW,EAAC,CAAC,CAAC,CAAgB,CAAC;YAE/E,MAAM,SAAS,GAA8D,EAAE,CAAC;YAChF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;gBACxB,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;aAC5E;YAED,MAAM,YAAY,GAAG,IAAI,yCAAkB,EAAE,CAAC;YAE9C,EAAE,CAAC,oBAAoB,CAAC;gBACpB,eAAe,EAAE,kCAAuB,CAAC,KAAK;gBAC9C,YAAY,EAAE;oBACV;wBACI,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE;4BACpB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;gCACd,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gCACvB,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE;oCACpB,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;wCAClD,MAAM,CAAC,KAAK,CAAC,GAAG,IAAA,uBAAS,EAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wCACrC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE;4CACpB,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gDAC1C,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;oDAC1B,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iDACnD;qDAAM;oDACH,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC;iDACnC;6CACJ;wCACL,CAAC,CAAC,CAAC;wCACH,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;qCACrB;gCACL,CAAC,CAAC,CAAC;gCAEH,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gCAEtB,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gCACxB,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;4BAC1C,CAAC,CAAC,CAAC;wBACP,CAAC;qBACJ;iBACJ;aACJ,CAAC,CAAC;YAEH,EAAE,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC;YAE1C,EAAE,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACzB,CAAC;KAAA;IAEO,oBAAoB,CAAC,KAAgB,EAAE,IAAgB,EAAE,SAA8B;QAC3F,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,IAAI,CAAC,IAAI,CAAC,GAAG,0CAAE,IAAI,MAAK,KAAK,IAAI,EAAE,CAAA,EAAA,CAAC,CAAC;QAErF,MAAM,cAAc,GAAG,SAAS,KAAK,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QAEzE,IAAI,MAAM,GAAG,KAAK;aACb,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YACb,MAAM,QAAQ,GAAG,IAAA,gBAAU,EAAS,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACxD,IAAI,CAAC,QAAQ,EAAE;gBACX,OAAO,KAAK,CAAC;aAChB;YACD,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACrD,OAAO,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC/D,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAEvC,IAAI,SAAS,KAAK,QAAQ,EAAE;YACxB,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;SACtD;aAAM,IAAI,SAAS,KAAK,YAAY,EAAE;YACnC,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;SACrD;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,qBAAqB,CAAC,WAAyB,EAAE,UAAmB;QACxE,OAAO,WAAW;aACb,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;aAC3D,MAAM,CAAC,CAAC,CAAC,EAAmB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAEO,qBAAqB,CAAC,IAAgB,EAAE,UAAmB;QAC/D,IAAI,IAAA,kBAAY,EAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,EAAE;YAC1E,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YACjE,IAAI,CAAC,IAAI;gBAAE,OAAO,KAAK,CAAC;YACxB,IAAI,CAAC,KAAK;gBAAE,OAAO,IAAI,CAAC;YACxB,uCAAY,IAAI,KAAE,IAAI,EAAE,KAAK,IAAG;SACnC;QAED,IAAI,IAAA,iBAAW,EAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE;YAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YACrE,IAAI,CAAC,OAAO;gBAAE,OAAO,SAAS,CAAC;YAC/B,uCAAY,IAAI,KAAE,OAAO,IAAG;SAC/B;QAED,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE;YAC9C,OAAO,SAAS,CAAC;SACpB;aAAM,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE;YACrD,OAAO,SAAS,CAAC;SACpB;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,kBAAkB,CAAC,IAAgB;;QACvC,KAAK,MAAM,IAAI,IAAI,IAAA,2BAAiB,EAAC,IAAI,CAAC,EAAE;YACxC,IAAI,IAAA,sBAAgB,EAAC,IAAI,CAAC,IAAI,CAAA,MAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,0CAAE,IAAI,MAAK,QAAQ,IAAI,IAAA,oBAAY,EAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACnG,OAAO,IAAI,CAAC;aACf;SACJ;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAEa,0BAA0B,CAAC,KAAgB,EAAE,UAAsB;;YAC7E,MAAM,MAAM,GAA8C,EAAE,CAAC;YAE7D,8DAA8D;YAC9D,MAAM,QAAQ,GAAQ,IAAA,2BAAe,EAAC,KAAK,CAAC,CAAC;YAE7C,KAAK,MAAM,IAAI,IAAI,kCAAmB,EAAE;gBACpC,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE;oBACrD,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;oBAC9B,SAAS;iBACZ;gBAED,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;gBAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;gBAE/D,IAAI,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC1C,qEAAqE;oBACrE,0BAA0B;oBAC1B,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;wBACtE,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;wBACrB,SAAS;qBACZ;yBAAM;wBACH,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;wBACpB,SAAS;qBACZ;iBACJ;gBAED,IAAI,IAAI,KAAK,YAAY,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;oBACrE,qCAAqC;oBACrC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;oBACpB,SAAS;iBACZ;gBAED,MAAM,IAAI,GAAG,IAAI,CAAC,0BAA0B,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;gBACtF,oEAAoE;gBACpE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,EAAG,CAAC;gBAE/B,IAAI,IAAI,KAAK,YAAY,EAAE;oBACvB,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;oBAC1E,IAAI,cAAc,EAAE;wBAChB,MAAM,CAAC,gBAAgB,CAAC,GAAG,cAAc,CAAC;qBAC7C;iBACJ;aACJ;YACD,OAAO,MAAM,CAAC;QAClB,CAAC;KAAA;IAED,yFAAyF;IACzF,eAAe;IACP,sBAAsB,CAAC,KAAgB,EAAE,MAAoB,EAAE,MAAoB;;QACvF,8DAA8D;QAC9D,MAAM,MAAM,GAAQ,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,CAAC,IAAc,EAAE,EAAE;YAC/B,IAAI,IAAI,GAAG,MAAM,CAAC;YAClB,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;gBACpB,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;oBACvB,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;iBACpB;qBAAM;oBACH,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;wBACZ,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;qBAC9B;oBACD,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;iBAC3B;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;QAEF,MAAM,KAAK,GAAG,CAAC,IAAgB,EAAwB,EAAE;YACrD,IAAI,IAAA,qBAAe,EAAC,IAAI,CAAC,EAAE;gBACvB,MAAM,MAAM,GAAG,IAAA,cAAQ,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACrC,IAAI,IAAA,sBAAgB,EAAC,MAAM,CAAC,EAAE;oBAC1B,qCAAqC;oBACrC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;iBACxB;aACJ;iBAAM,IAAI,IAAA,wBAAkB,EAAC,IAAI,CAAC,EAAE;gBACjC,IAAI,IAAA,oBAAY,EAAC,IAAI,CAAC,OAAO,CAAC,EAAE;oBAC5B,qDAAqD;oBACrD,OAAO,SAAS,CAAC;iBACpB;gBAED,8DAA8D;gBAC9D,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAClC,IAAI,KAAK,EAAE;oBACP,OAAO,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;iBAC3C;aACJ;YACD,OAAO,SAAS,CAAC;QACrB,CAAC,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE;YACvC,KAAK,MAAM,IAAI,IAAI,IAAA,2BAAiB,EAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAsB,EAAE,CAAC,IAAA,kBAAY,EAAC,IAAI,CAAC,CAAC,EAAE;gBACjG,0DAA0D;gBAC1D,IAAI,CAAC,IAAA,wBAAkB,EAAC,IAAI,CAAC,IAAI,CAAC,IAAA,qBAAe,EAAC,IAAI,CAAC,EAAE;oBACrD,SAAS;iBACZ;gBAED,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,sBAAgB,EAAE;oBAC5C,qCAAqC;oBACrC,SAAS;iBACZ;gBAED,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;gBACzB,IAAI,IAAI,EAAE;oBACN,IAAI,IAAA,iBAAW,EAAC,MAAA,IAAI,CAAC,aAAa,0CAAE,IAAI,CAAC,EAAE;wBACvC,iEAAiE;wBACjE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBACnB;oBACD,OAAO,CAAC,IAAI,CAAC,CAAC;iBACjB;aACJ;SACJ;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IAC5D,CAAC;IAEO,0BAA0B,CAC9B,UAAsB,EACtB,KAAgB,EAChB,IAAyB,EACzB,MAAoB,EACpB,MAAoB;QAEpB,MAAM,IAAI,GAAG,UAAU;aAClB,WAAW,CAAC;YACT,IAAI,EAAE,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI;YAC7B,UAAU,EAAE,KAAK;YACjB,UAAU,EAAE;gBACR;oBACI,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,cAAc;iBACvB;aACJ;SACJ,CAAC;aACD,OAAO,EAAE,CAAC;QAEf,+DAA+D;QAC/D,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE;YACvC,KAAK,MAAM,KAAK,IAAI,IAAA,2BAAiB,EAAC,IAAI,CAAC,EAAE;gBACzC,IAAI,IAAA,sBAAgB,EAAC,KAAK,CAAC,IAAI,IAAA,cAAQ,EAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE;oBACrE,UAAU,GAAG,IAAI,CAAC;oBAClB,MAAM;iBACT;aACJ;YACD,IAAI,UAAU,EAAE;gBACZ,MAAM;aACT;SACJ;QAED,IAAI,UAAU,EAAE;YACZ,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAChD,CAAC,IAAI,EAAqB,EAAE,CAAC,IAAA,iBAAW,EAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,CACzE,CAAC;YACF,IAAI,CAAC,SAAS,EAAE;gBACZ,MAAM,IAAI,iBAAW,CAAC,sBAAsB,CAAC,CAAC;aACjD;YACD,MAAM,WAAW,GAAG,IAAA,sBAAU,EAAC,SAAS,CAAC,CAAC;YAC1C,IAAI,CAAC,WAAW,EAAE;gBACd,MAAM,IAAI,iBAAW,CAAC,sCAAsC,CAAC,CAAC;aACjE;YACD,IAAI,CAAC,aAAa;YACd,wCAAwC;YACxC,8BAA8B,WAAW,CAAC,IAAI,wCAAwC,WAAW,CAAC,IAAI,MAAM,eAAe,MAAM,CACpI,CAAC;SACL;QAED,sBAAsB;QACtB,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE,EAAE;YAC1B,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACxB,MAAM,UAAU,GAAG,IAAI,oCAAgB,CAAC,MAAM,EAAE,IAAI,KAAK,YAAY,CAAC,CAAC;YACvE,MAAM,WAAW,GAAG,GAAG,EAAE;gBACrB,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;gBACvD,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;oBACvB,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE;wBACpB,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;wBACtB,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC3B,CAAC,CAAC,CAAC;oBACH,MAAM,CAAC,gBAAgB,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC1D,CAAC,CAAC,CAAC;gBACH,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;YACrD,CAAC,CAAC;YAEF,MAAM,WAAW,GAAG,GAAG,EAAE;gBACrB,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC;gBACtD,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;oBACvB,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACvB,MAAM,CAAC,gBAAgB,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC1D,CAAC,CAAC,CAAC;gBACH,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;YACrD,CAAC,CAAC;YAEF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBACxC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBACzB,WAAW,EAAE,CAAC;gBACd,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAClB,WAAW,EAAE,CAAC;gBACd,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aACtB;iBAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC1B,WAAW,EAAE,CAAC;aACjB;iBAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC1B,WAAW,EAAE,CAAC;aACjB;iBAAM;gBACH,yBAAyB;gBACzB,MAAM,CAAC,KAAK,CAAC,KAAK,sBAAgB,WAAW,CAAC,CAAC;aAClD;YACD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAhWD,kCAgWC"}
|
|
@@ -1,110 +1,109 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
var _ast = require("@zenstackhq/language/ast");
|
|
8
|
-
var _sdk = require("@zenstackhq/sdk");
|
|
9
|
-
var _utils = require("./utils");
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const ast_1 = require("@zenstackhq/language/ast");
|
|
4
|
+
const sdk_1 = require("@zenstackhq/sdk");
|
|
5
|
+
const utils_1 = require("./utils");
|
|
10
6
|
/**
|
|
11
7
|
* Transforms ZModel expression to plain TypeScript expression.
|
|
12
8
|
*/
|
|
13
9
|
class TypeScriptExpressionTransformer {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
*
|
|
25
|
-
* @param expr
|
|
26
|
-
* @returns
|
|
27
|
-
*/
|
|
28
|
-
transform(expr) {
|
|
29
|
-
switch (expr.$type) {
|
|
30
|
-
case _ast.LiteralExpr:
|
|
31
|
-
return this.literal(expr);
|
|
32
|
-
case _ast.ArrayExpr:
|
|
33
|
-
return this.array(expr);
|
|
34
|
-
case _ast.NullExpr:
|
|
35
|
-
return this.null();
|
|
36
|
-
case _ast.ThisExpr:
|
|
37
|
-
return this.this(expr);
|
|
38
|
-
case _ast.ReferenceExpr:
|
|
39
|
-
return this.reference(expr);
|
|
40
|
-
case _ast.InvocationExpr:
|
|
41
|
-
return this.invocation(expr);
|
|
42
|
-
case _ast.MemberAccessExpr:
|
|
43
|
-
return this.memberAccess(expr);
|
|
44
|
-
default:
|
|
45
|
-
throw new _sdk.PluginError(`Unsupported expression type: ${expr.$type}`);
|
|
10
|
+
/**
|
|
11
|
+
* Constructs a new TypeScriptExpressionTransformer.
|
|
12
|
+
*
|
|
13
|
+
* @param isPostGuard indicates if we're writing for post-update conditions
|
|
14
|
+
*/
|
|
15
|
+
constructor(isPostGuard = false) {
|
|
16
|
+
this.isPostGuard = isPostGuard;
|
|
46
17
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
18
|
+
/**
|
|
19
|
+
*
|
|
20
|
+
* @param expr
|
|
21
|
+
* @returns
|
|
22
|
+
*/
|
|
23
|
+
transform(expr) {
|
|
24
|
+
switch (expr.$type) {
|
|
25
|
+
case ast_1.LiteralExpr:
|
|
26
|
+
return this.literal(expr);
|
|
27
|
+
case ast_1.ArrayExpr:
|
|
28
|
+
return this.array(expr);
|
|
29
|
+
case ast_1.NullExpr:
|
|
30
|
+
return this.null();
|
|
31
|
+
case ast_1.ThisExpr:
|
|
32
|
+
return this.this(expr);
|
|
33
|
+
case ast_1.ReferenceExpr:
|
|
34
|
+
return this.reference(expr);
|
|
35
|
+
case ast_1.InvocationExpr:
|
|
36
|
+
return this.invocation(expr);
|
|
37
|
+
case ast_1.MemberAccessExpr:
|
|
38
|
+
return this.memberAccess(expr);
|
|
39
|
+
default:
|
|
40
|
+
throw new sdk_1.PluginError(`Unsupported expression type: ${expr.$type}`);
|
|
41
|
+
}
|
|
57
42
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
throw new _sdk.PluginError(`future() is only supported in postUpdate rules`);
|
|
63
|
-
}
|
|
64
|
-
return expr.member.ref.name;
|
|
65
|
-
} else {
|
|
66
|
-
return `${this.transform(expr.operand)}?.${expr.member.ref.name}`;
|
|
43
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
44
|
+
this(expr) {
|
|
45
|
+
// "this" is mapped to id comparison
|
|
46
|
+
return 'id';
|
|
67
47
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
48
|
+
memberAccess(expr) {
|
|
49
|
+
if (!expr.member.ref) {
|
|
50
|
+
throw new sdk_1.PluginError(`Unresolved MemberAccessExpr`);
|
|
51
|
+
}
|
|
52
|
+
if ((0, ast_1.isThisExpr)(expr.operand)) {
|
|
53
|
+
return expr.member.ref.name;
|
|
54
|
+
}
|
|
55
|
+
else if ((0, utils_1.isFutureExpr)(expr.operand)) {
|
|
56
|
+
if (!this.isPostGuard) {
|
|
57
|
+
throw new sdk_1.PluginError(`future() is only supported in postUpdate rules`);
|
|
58
|
+
}
|
|
59
|
+
return expr.member.ref.name;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
return `${this.transform(expr.operand)}?.${expr.member.ref.name}`;
|
|
63
|
+
}
|
|
76
64
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
65
|
+
invocation(expr) {
|
|
66
|
+
var _a, _b;
|
|
67
|
+
if (((_a = expr.function.ref) === null || _a === void 0 ? void 0 : _a.name) === 'auth') {
|
|
68
|
+
return 'user';
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
throw new sdk_1.PluginError(`Function invocation is not supported: ${(_b = expr.function.ref) === null || _b === void 0 ? void 0 : _b.name}`);
|
|
72
|
+
}
|
|
81
73
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
74
|
+
reference(expr) {
|
|
75
|
+
if (!expr.target.ref) {
|
|
76
|
+
throw new sdk_1.PluginError(`Unresolved ReferenceExpr`);
|
|
77
|
+
}
|
|
78
|
+
if ((0, ast_1.isEnumField)(expr.target.ref)) {
|
|
79
|
+
return `${expr.target.ref.$container.name}.${expr.target.ref.name}`;
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
if (this.isPostGuard) {
|
|
83
|
+
// if we're processing post-update, any direct field access should be
|
|
84
|
+
// treated as access to context.preValue, which is entity's value before
|
|
85
|
+
// the update
|
|
86
|
+
return `context.preValue?.${expr.target.ref.name}`;
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
return expr.target.ref.name;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
93
92
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
93
|
+
null() {
|
|
94
|
+
return 'null';
|
|
95
|
+
}
|
|
96
|
+
array(expr) {
|
|
97
|
+
return `[${expr.items.map((item) => this.transform(item)).join(', ')}]`;
|
|
98
|
+
}
|
|
99
|
+
literal(expr) {
|
|
100
|
+
if (typeof expr.value === 'string') {
|
|
101
|
+
return `'${expr.value}'`;
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
return expr.value.toString();
|
|
105
|
+
}
|
|
106
106
|
}
|
|
107
|
-
}
|
|
108
107
|
}
|
|
109
108
|
exports.default = TypeScriptExpressionTransformer;
|
|
110
109
|
//# sourceMappingURL=typescript-expression-transformer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typescript-expression-transformer.js","
|
|
1
|
+
{"version":3,"file":"typescript-expression-transformer.js","sourceRoot":"","sources":["../../../src/plugins/access-policy/typescript-expression-transformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
exports.isFutureExpr = isFutureExpr;
|
|
7
|
-
var _ast = require("@zenstackhq/language/ast");
|
|
8
|
-
var _utils = require("../../language-server/utils");
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isFutureExpr = void 0;
|
|
4
|
+
const ast_1 = require("@zenstackhq/language/ast");
|
|
5
|
+
const utils_1 = require("../../language-server/utils");
|
|
9
6
|
/**
|
|
10
7
|
* Returns if the given expression is a "future()" method call.
|
|
11
8
|
*/
|
|
12
9
|
function isFutureExpr(expr) {
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
var _a;
|
|
11
|
+
return !!((0, ast_1.isInvocationExpr)(expr) && ((_a = expr.function.ref) === null || _a === void 0 ? void 0 : _a.name) === 'future' && (0, utils_1.isFromStdlib)(expr.function.ref));
|
|
15
12
|
}
|
|
13
|
+
exports.isFutureExpr = isFutureExpr;
|
|
16
14
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/plugins/access-policy/utils.ts"],"names":[],"mappings":";;;AAAA,kDAAwE;AACxE,uDAA2D;AAE3D;;GAEG;AACH,SAAgB,YAAY,CAAC,IAAgB;;IACzC,OAAO,CAAC,CAAC,CAAC,IAAA,sBAAgB,EAAC,IAAI,CAAC,IAAI,CAAA,MAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,0CAAE,IAAI,MAAK,QAAQ,IAAI,IAAA,oBAAY,EAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACjH,CAAC;AAFD,oCAEC"}
|