zenstack 1.0.0 → 1.0.1
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/LICENSE +1 -1
- package/README.md +194 -1
- package/bin/cli +3 -0
- package/bin/post-install.js +24 -0
- package/cli/actions/generate.d.ts +13 -0
- package/cli/actions/generate.js +71 -0
- package/cli/actions/generate.js.map +1 -0
- package/cli/actions/index.d.ts +3 -0
- package/cli/actions/index.js +20 -0
- package/cli/actions/index.js.map +1 -0
- package/cli/actions/info.d.ts +4 -0
- package/cli/actions/info.js +63 -0
- package/cli/actions/info.js.map +1 -0
- package/cli/actions/init.d.ts +12 -0
- package/cli/actions/init.js +83 -0
- package/cli/actions/init.js.map +1 -0
- package/cli/cli-error.d.ts +5 -0
- package/cli/cli-error.js +10 -0
- package/cli/cli-error.js.map +1 -0
- package/cli/cli-util.d.ts +21 -0
- package/cli/cli-util.js +211 -0
- package/cli/cli-util.js.map +1 -0
- package/cli/config.d.ts +10 -0
- package/cli/config.js +62 -0
- package/cli/config.js.map +1 -0
- package/cli/index.d.ts +7 -0
- package/cli/index.js +128 -0
- package/cli/index.js.map +1 -0
- package/cli/plugin-runner.d.ts +24 -0
- package/cli/plugin-runner.js +229 -0
- package/cli/plugin-runner.js.map +1 -0
- package/constants.d.ts +1 -0
- package/constants.js +6 -0
- package/constants.js.map +1 -0
- package/language-server/constants.d.ts +22 -0
- package/language-server/constants.js +27 -0
- package/language-server/constants.js.map +1 -0
- package/language-server/main.d.ts +1 -0
- package/language-server/main.js +13 -0
- package/language-server/main.js.map +1 -0
- package/language-server/types.d.ts +10 -0
- package/language-server/types.js +3 -0
- package/language-server/types.js.map +1 -0
- package/language-server/utils.d.ts +5 -0
- package/language-server/utils.js +22 -0
- package/language-server/utils.js.map +1 -0
- package/language-server/validator/attribute-application-validator.d.ts +15 -0
- package/language-server/validator/attribute-application-validator.js +246 -0
- package/language-server/validator/attribute-application-validator.js.map +1 -0
- package/language-server/validator/attribute-validator.d.ts +9 -0
- package/language-server/validator/attribute-validator.js +14 -0
- package/language-server/validator/attribute-validator.js.map +1 -0
- package/language-server/validator/datamodel-validator.d.ts +22 -0
- package/language-server/validator/datamodel-validator.js +329 -0
- package/language-server/validator/datamodel-validator.js.map +1 -0
- package/language-server/validator/datasource-validator.d.ts +12 -0
- package/language-server/validator/datasource-validator.js +66 -0
- package/language-server/validator/datasource-validator.js.map +1 -0
- package/language-server/validator/enum-validator.d.ts +11 -0
- package/language-server/validator/enum-validator.js +25 -0
- package/language-server/validator/enum-validator.js.map +1 -0
- package/language-server/validator/expression-validator.d.ts +10 -0
- package/language-server/validator/expression-validator.js +135 -0
- package/language-server/validator/expression-validator.js.map +1 -0
- package/language-server/validator/function-decl-validator.d.ts +9 -0
- package/language-server/validator/function-decl-validator.js +13 -0
- package/language-server/validator/function-decl-validator.js.map +1 -0
- package/language-server/validator/function-invocation-validator.d.ts +11 -0
- package/language-server/validator/function-invocation-validator.js +135 -0
- package/language-server/validator/function-invocation-validator.js.map +1 -0
- package/language-server/validator/schema-validator.d.ts +13 -0
- package/language-server/validator/schema-validator.js +49 -0
- package/language-server/validator/schema-validator.js.map +1 -0
- package/language-server/validator/utils.d.ts +24 -0
- package/language-server/validator/utils.js +154 -0
- package/language-server/validator/utils.js.map +1 -0
- package/language-server/validator/zmodel-validator.d.ts +25 -0
- package/language-server/validator/zmodel-validator.js +83 -0
- package/language-server/validator/zmodel-validator.js.map +1 -0
- package/language-server/zmodel-code-action.d.ts +15 -0
- package/language-server/zmodel-code-action.js +118 -0
- package/language-server/zmodel-code-action.js.map +1 -0
- package/language-server/zmodel-definition.d.ts +7 -0
- package/language-server/zmodel-definition.js +31 -0
- package/language-server/zmodel-definition.js.map +1 -0
- package/language-server/zmodel-formatter.d.ts +9 -0
- package/language-server/zmodel-formatter.js +76 -0
- package/language-server/zmodel-formatter.js.map +1 -0
- package/language-server/zmodel-linker.d.ts +32 -0
- package/language-server/zmodel-linker.js +447 -0
- package/language-server/zmodel-linker.js.map +1 -0
- package/language-server/zmodel-module.d.ts +41 -0
- package/language-server/zmodel-module.js +83 -0
- package/language-server/zmodel-module.js.map +1 -0
- package/language-server/zmodel-scope.d.ts +16 -0
- package/language-server/zmodel-scope.js +100 -0
- package/language-server/zmodel-scope.js.map +1 -0
- package/language-server/zmodel-workspace-manager.d.ts +12 -0
- package/language-server/zmodel-workspace-manager.js +138 -0
- package/language-server/zmodel-workspace-manager.js.map +1 -0
- package/package.json +140 -8
- package/plugins/access-policy/expression-writer.d.ts +46 -0
- package/plugins/access-policy/expression-writer.js +580 -0
- package/plugins/access-policy/expression-writer.js.map +1 -0
- package/plugins/access-policy/index.d.ts +4 -0
- package/plugins/access-policy/index.js +22 -0
- package/plugins/access-policy/index.js.map +1 -0
- package/plugins/access-policy/policy-guard-generator.d.ts +22 -0
- package/plugins/access-policy/policy-guard-generator.js +634 -0
- package/plugins/access-policy/policy-guard-generator.js.map +1 -0
- package/plugins/model-meta/index.d.ts +4 -0
- package/plugins/model-meta/index.js +232 -0
- package/plugins/model-meta/index.js.map +1 -0
- package/plugins/plugin-utils.d.ts +17 -0
- package/plugins/plugin-utils.js +80 -0
- package/plugins/plugin-utils.js.map +1 -0
- package/plugins/prisma/indent-string.d.ts +4 -0
- package/plugins/prisma/indent-string.js +12 -0
- package/plugins/prisma/indent-string.js.map +1 -0
- package/plugins/prisma/index.d.ts +4 -0
- package/plugins/prisma/index.js +22 -0
- package/plugins/prisma/index.js.map +1 -0
- package/plugins/prisma/prisma-builder.d.ts +145 -0
- package/plugins/prisma/prisma-builder.js +358 -0
- package/plugins/prisma/prisma-builder.js.map +1 -0
- package/plugins/prisma/schema-generator.d.ts +29 -0
- package/plugins/prisma/schema-generator.js +336 -0
- package/plugins/prisma/schema-generator.js.map +1 -0
- package/plugins/prisma/zmodel-code-generator.d.ts +30 -0
- package/plugins/prisma/zmodel-code-generator.js +124 -0
- package/plugins/prisma/zmodel-code-generator.js.map +1 -0
- package/plugins/zod/generator.d.ts +4 -0
- package/plugins/zod/generator.js +254 -0
- package/plugins/zod/generator.js.map +1 -0
- package/plugins/zod/index.d.ts +4 -0
- package/plugins/zod/index.js +24 -0
- package/plugins/zod/index.js.map +1 -0
- package/plugins/zod/transformer.d.ts +68 -0
- package/plugins/zod/transformer.js +554 -0
- package/plugins/zod/transformer.js.map +1 -0
- package/plugins/zod/types.d.ts +25 -0
- package/plugins/zod/types.js +3 -0
- package/plugins/zod/types.js.map +1 -0
- package/plugins/zod/utils/removeDir.d.ts +1 -0
- package/plugins/zod/utils/removeDir.js +30 -0
- package/plugins/zod/utils/removeDir.js.map +1 -0
- package/plugins/zod/utils/schema-gen.d.ts +3 -0
- package/plugins/zod/utils/schema-gen.js +188 -0
- package/plugins/zod/utils/schema-gen.js.map +1 -0
- package/res/prism-zmodel.js +20 -0
- package/res/starter.zmodel +51 -0
- package/res/stdlib.zmodel +506 -0
- package/telemetry.d.ts +21 -0
- package/telemetry.js +129 -0
- package/telemetry.js.map +1 -0
- package/utils/ast-utils.d.ts +13 -0
- package/utils/ast-utils.js +136 -0
- package/utils/ast-utils.js.map +1 -0
- package/utils/exec-utils.d.ts +6 -0
- package/utils/exec-utils.js +13 -0
- package/utils/exec-utils.js.map +1 -0
- package/utils/pkg-utils.d.ts +3 -0
- package/utils/pkg-utils.js +64 -0
- package/utils/pkg-utils.js.map +1 -0
- package/utils/typescript-expression-transformer.d.ts +54 -0
- package/utils/typescript-expression-transformer.js +326 -0
- package/utils/typescript-expression-transformer.js.map +1 -0
- package/utils/version-utils.d.ts +1 -0
- package/utils/version-utils.js +20 -0
- package/utils/version-utils.js.map +1 -0
- package/.vscode/extensions.json +0 -7
- package/.vscode/launch.json +0 -49
- package/.vscode/settings.json +0 -4
- package/packages/internal/jest.config.ts +0 -32
- package/packages/internal/package.json +0 -42
- package/packages/internal/src/constants.ts +0 -1
- package/packages/internal/src/handler/data/guard-utils.ts +0 -7
- package/packages/internal/src/handler/data/handler.ts +0 -415
- package/packages/internal/src/handler/data/query-processor.ts +0 -504
- package/packages/internal/src/handler/index.ts +0 -1
- package/packages/internal/src/handler/types.ts +0 -20
- package/packages/internal/src/index.ts +0 -3
- package/packages/internal/src/request-handler.ts +0 -27
- package/packages/internal/src/request.ts +0 -101
- package/packages/internal/src/types.ts +0 -40
- package/packages/internal/tests/query-processor.test.ts +0 -172
- package/packages/internal/tsconfig.json +0 -21
- package/packages/runtime/auth.d.ts +0 -1
- package/packages/runtime/auth.js +0 -3
- package/packages/runtime/hooks.d.ts +0 -10
- package/packages/runtime/hooks.js +0 -3
- package/packages/runtime/index.d.ts +0 -3
- package/packages/runtime/index.js +0 -1
- package/packages/runtime/package-lock.json +0 -512
- package/packages/runtime/package.json +0 -16
- package/packages/runtime/server.d.ts +0 -1
- package/packages/runtime/server.js +0 -3
- package/packages/runtime/types.d.ts +0 -1
- package/packages/runtime/types.js +0 -3
- package/packages/schema/.eslintrc.json +0 -13
- package/packages/schema/.vscodeignore +0 -4
- package/packages/schema/asset/logo-dark.png +0 -0
- package/packages/schema/asset/logo-light.png +0 -0
- package/packages/schema/bin/cli +0 -3
- package/packages/schema/jest.config.ts +0 -32
- package/packages/schema/langium-config.json +0 -14
- package/packages/schema/langium-quickstart.md +0 -41
- package/packages/schema/language-configuration.json +0 -30
- package/packages/schema/package.json +0 -96
- package/packages/schema/src/cli/cli-util.ts +0 -80
- package/packages/schema/src/cli/index.ts +0 -64
- package/packages/schema/src/extension.ts +0 -76
- package/packages/schema/src/generator/constants.ts +0 -5
- package/packages/schema/src/generator/index.ts +0 -92
- package/packages/schema/src/generator/next-auth/index.ts +0 -197
- package/packages/schema/src/generator/package.template.json +0 -9
- package/packages/schema/src/generator/prisma/expression-writer.ts +0 -352
- package/packages/schema/src/generator/prisma/index.ts +0 -32
- package/packages/schema/src/generator/prisma/plain-expression-builder.ts +0 -91
- package/packages/schema/src/generator/prisma/prisma-builder.ts +0 -366
- package/packages/schema/src/generator/prisma/query-gard-generator.ts +0 -208
- package/packages/schema/src/generator/prisma/schema-generator.ts +0 -300
- package/packages/schema/src/generator/react-hooks/index.ts +0 -181
- package/packages/schema/src/generator/service/index.ts +0 -107
- package/packages/schema/src/generator/tsconfig.template.json +0 -17
- package/packages/schema/src/generator/types.ts +0 -17
- package/packages/schema/src/generator/utils.ts +0 -9
- package/packages/schema/src/language-server/generated/ast.ts +0 -603
- package/packages/schema/src/language-server/generated/grammar.ts +0 -2190
- package/packages/schema/src/language-server/generated/module.ts +0 -24
- package/packages/schema/src/language-server/main.ts +0 -12
- package/packages/schema/src/language-server/stdlib.zmodel +0 -22
- package/packages/schema/src/language-server/types.ts +0 -9
- package/packages/schema/src/language-server/zmodel-index.ts +0 -33
- package/packages/schema/src/language-server/zmodel-linker.ts +0 -409
- package/packages/schema/src/language-server/zmodel-module.ts +0 -90
- package/packages/schema/src/language-server/zmodel-scope.ts +0 -21
- package/packages/schema/src/language-server/zmodel-validator.ts +0 -35
- package/packages/schema/src/language-server/zmodel.langium +0 -186
- package/packages/schema/src/utils/exec-utils.ts +0 -5
- package/packages/schema/src/utils/indent-string.ts +0 -6
- package/packages/schema/syntaxes/zmodel.json +0 -57
- package/packages/schema/syntaxes/zmodel.tmLanguage.json +0 -57
- package/packages/schema/tests/generator/expression-writer.test.ts +0 -676
- package/packages/schema/tests/generator/prisma-builder.test.ts +0 -138
- package/packages/schema/tests/schema/parser.test.ts +0 -423
- package/packages/schema/tests/schema/sample-todo.test.ts +0 -14
- package/packages/schema/tests/utils.ts +0 -38
- package/packages/schema/tsconfig.json +0 -23
- package/pnpm-workspace.yaml +0 -3
- package/samples/todo/.env +0 -2
- package/samples/todo/.eslintrc.json +0 -3
- package/samples/todo/.vscode/launch.json +0 -11
- package/samples/todo/README.md +0 -34
- package/samples/todo/components/AuthGuard.tsx +0 -17
- package/samples/todo/components/Avatar.tsx +0 -22
- package/samples/todo/components/BreadCrumb.tsx +0 -44
- package/samples/todo/components/ManageMembers.tsx +0 -134
- package/samples/todo/components/NavBar.tsx +0 -57
- package/samples/todo/components/SpaceMembers.tsx +0 -76
- package/samples/todo/components/Spaces.tsx +0 -28
- package/samples/todo/components/TimeInfo.tsx +0 -17
- package/samples/todo/components/Todo.tsx +0 -72
- package/samples/todo/components/TodoList.tsx +0 -77
- package/samples/todo/lib/context.ts +0 -31
- package/samples/todo/next.config.js +0 -10
- package/samples/todo/package-lock.json +0 -7527
- package/samples/todo/package.json +0 -45
- package/samples/todo/pages/_app.tsx +0 -50
- package/samples/todo/pages/api/auth/[...nextauth].ts +0 -83
- package/samples/todo/pages/api/zenstack/[...path].ts +0 -16
- package/samples/todo/pages/create-space.tsx +0 -114
- package/samples/todo/pages/index.tsx +0 -32
- package/samples/todo/pages/space/[slug]/[listId]/index.tsx +0 -88
- package/samples/todo/pages/space/[slug]/index.tsx +0 -169
- package/samples/todo/postcss.config.js +0 -6
- package/samples/todo/public/avatar.jpg +0 -0
- package/samples/todo/public/favicon.ico +0 -0
- package/samples/todo/public/logo.png +0 -0
- package/samples/todo/public/vercel.svg +0 -4
- package/samples/todo/styles/globals.css +0 -7
- package/samples/todo/tailwind.config.js +0 -11
- package/samples/todo/tsconfig.json +0 -28
- package/samples/todo/types/next-auth.d.ts +0 -14
- package/samples/todo/types/next.d.ts +0 -16
- package/samples/todo/zenstack/migrations/20221014084317_init/migration.sql +0 -153
- package/samples/todo/zenstack/migrations/20221020094651_upate_cli/migration.sql +0 -23
- package/samples/todo/zenstack/migrations/migration_lock.toml +0 -3
- package/samples/todo/zenstack/schema.prisma +0 -126
- package/samples/todo/zenstack/schema.zmodel +0 -161
- package/tests/integration/jest.config.ts +0 -16
- package/tests/integration/package-lock.json +0 -1081
- package/tests/integration/package.json +0 -27
- package/tests/integration/tests/operation-coverate.test.ts +0 -563
- package/tests/integration/tests/operations.zmodel +0 -69
- package/tests/integration/tests/todo-e2e.test.ts +0 -577
- package/tests/integration/tests/todo.zmodel +0 -123
- package/tests/integration/tests/tsconfig.template.json +0 -10
- package/tests/integration/tests/utils.ts +0 -133
- package/tests/integration/tsconfig.json +0 -10
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isCollectionPredicate = exports.getAllDeclarationsFromImports = exports.resolveImport = exports.resolveTransitiveImports = exports.resolveImportUri = exports.getDataModelFieldReference = exports.isAuthInvocation = exports.getIdFields = exports.mergeBaseModel = exports.extractDataModelsWithAllowRules = void 0;
|
|
4
|
+
const ast_1 = require("@zenstackhq/language/ast");
|
|
5
|
+
const sdk_1 = require("@zenstackhq/sdk");
|
|
6
|
+
const langium_1 = require("langium");
|
|
7
|
+
const vscode_uri_1 = require("vscode-uri");
|
|
8
|
+
function extractDataModelsWithAllowRules(model) {
|
|
9
|
+
return model.declarations.filter((d) => (0, ast_1.isDataModel)(d) && d.attributes.some((attr) => { var _a; return ((_a = attr.decl.ref) === null || _a === void 0 ? void 0 : _a.name) === '@@allow'; }));
|
|
10
|
+
}
|
|
11
|
+
exports.extractDataModelsWithAllowRules = extractDataModelsWithAllowRules;
|
|
12
|
+
function mergeBaseModel(model) {
|
|
13
|
+
model.declarations
|
|
14
|
+
.filter((x) => x.$type === 'DataModel')
|
|
15
|
+
.forEach((decl) => {
|
|
16
|
+
const dataModel = decl;
|
|
17
|
+
dataModel.fields = dataModel.superTypes
|
|
18
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
19
|
+
.flatMap((superType) => updateContainer(superType.ref.fields, dataModel))
|
|
20
|
+
.concat(dataModel.fields);
|
|
21
|
+
dataModel.attributes = dataModel.superTypes
|
|
22
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
23
|
+
.flatMap((superType) => updateContainer(superType.ref.attributes, dataModel))
|
|
24
|
+
.concat(dataModel.attributes);
|
|
25
|
+
});
|
|
26
|
+
// remove abstract models
|
|
27
|
+
model.declarations = model.declarations.filter((x) => !(x.$type == 'DataModel' && x.isAbstract));
|
|
28
|
+
}
|
|
29
|
+
exports.mergeBaseModel = mergeBaseModel;
|
|
30
|
+
function updateContainer(nodes, container) {
|
|
31
|
+
return nodes.map((node) => {
|
|
32
|
+
const cloneField = Object.assign({}, node);
|
|
33
|
+
const mutable = cloneField;
|
|
34
|
+
// update container
|
|
35
|
+
mutable.$container = container;
|
|
36
|
+
return mutable;
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
function getIdFields(dataModel) {
|
|
40
|
+
const fieldLevelId = dataModel.$resolvedFields.find((f) => f.attributes.some((attr) => attr.decl.$refText === '@id'));
|
|
41
|
+
if (fieldLevelId) {
|
|
42
|
+
return [fieldLevelId];
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
// get model level @@id attribute
|
|
46
|
+
const modelIdAttr = dataModel.attributes.find((attr) => { var _a, _b; return ((_b = (_a = attr.decl) === null || _a === void 0 ? void 0 : _a.ref) === null || _b === void 0 ? void 0 : _b.name) === '@@id'; });
|
|
47
|
+
if (modelIdAttr) {
|
|
48
|
+
// get fields referenced in the attribute: @@id([field1, field2]])
|
|
49
|
+
if (!(0, ast_1.isArrayExpr)(modelIdAttr.args[0].value)) {
|
|
50
|
+
return [];
|
|
51
|
+
}
|
|
52
|
+
const argValue = modelIdAttr.args[0].value;
|
|
53
|
+
return argValue.items
|
|
54
|
+
.filter((expr) => (0, ast_1.isReferenceExpr)(expr) && !!getDataModelFieldReference(expr))
|
|
55
|
+
.map((expr) => expr.target.ref);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return [];
|
|
59
|
+
}
|
|
60
|
+
exports.getIdFields = getIdFields;
|
|
61
|
+
function isAuthInvocation(node) {
|
|
62
|
+
var _a;
|
|
63
|
+
return (0, ast_1.isInvocationExpr)(node) && ((_a = node.function.ref) === null || _a === void 0 ? void 0 : _a.name) === 'auth' && (0, sdk_1.isFromStdlib)(node.function.ref);
|
|
64
|
+
}
|
|
65
|
+
exports.isAuthInvocation = isAuthInvocation;
|
|
66
|
+
function getDataModelFieldReference(expr) {
|
|
67
|
+
if ((0, ast_1.isReferenceExpr)(expr) && (0, ast_1.isDataModelField)(expr.target.ref)) {
|
|
68
|
+
return expr.target.ref;
|
|
69
|
+
}
|
|
70
|
+
else if ((0, ast_1.isMemberAccessExpr)(expr) && (0, ast_1.isDataModelField)(expr.member.ref)) {
|
|
71
|
+
return expr.member.ref;
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
return undefined;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
exports.getDataModelFieldReference = getDataModelFieldReference;
|
|
78
|
+
function resolveImportUri(imp) {
|
|
79
|
+
if (imp.path === undefined || imp.path.length === 0) {
|
|
80
|
+
return undefined;
|
|
81
|
+
}
|
|
82
|
+
const dirUri = vscode_uri_1.Utils.dirname((0, langium_1.getDocument)(imp).uri);
|
|
83
|
+
let grammarPath = imp.path;
|
|
84
|
+
if (!grammarPath.endsWith('.zmodel')) {
|
|
85
|
+
grammarPath += '.zmodel';
|
|
86
|
+
}
|
|
87
|
+
return vscode_uri_1.Utils.resolvePath(dirUri, grammarPath);
|
|
88
|
+
}
|
|
89
|
+
exports.resolveImportUri = resolveImportUri;
|
|
90
|
+
function resolveTransitiveImports(documents, model) {
|
|
91
|
+
return resolveTransitiveImportsInternal(documents, model);
|
|
92
|
+
}
|
|
93
|
+
exports.resolveTransitiveImports = resolveTransitiveImports;
|
|
94
|
+
function resolveTransitiveImportsInternal(documents, model, initialModel = model, visited = new Set(), models = new Set()) {
|
|
95
|
+
const doc = (0, langium_1.getDocument)(model);
|
|
96
|
+
if (initialModel !== model) {
|
|
97
|
+
models.add(model);
|
|
98
|
+
}
|
|
99
|
+
if (!visited.has(doc.uri)) {
|
|
100
|
+
visited.add(doc.uri);
|
|
101
|
+
for (const imp of model.imports) {
|
|
102
|
+
const importedModel = resolveImport(documents, imp);
|
|
103
|
+
if (importedModel) {
|
|
104
|
+
resolveTransitiveImportsInternal(documents, importedModel, initialModel, visited, models);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return Array.from(models);
|
|
109
|
+
}
|
|
110
|
+
function resolveImport(documents, imp) {
|
|
111
|
+
const resolvedUri = resolveImportUri(imp);
|
|
112
|
+
try {
|
|
113
|
+
if (resolvedUri) {
|
|
114
|
+
const resolvedDocument = documents.getOrCreateDocument(resolvedUri);
|
|
115
|
+
const node = resolvedDocument.parseResult.value;
|
|
116
|
+
if ((0, ast_1.isModel)(node)) {
|
|
117
|
+
return node;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
catch (_a) {
|
|
122
|
+
// NOOP
|
|
123
|
+
}
|
|
124
|
+
return undefined;
|
|
125
|
+
}
|
|
126
|
+
exports.resolveImport = resolveImport;
|
|
127
|
+
function getAllDeclarationsFromImports(documents, model) {
|
|
128
|
+
const imports = resolveTransitiveImports(documents, model);
|
|
129
|
+
return model.declarations.concat(...imports.map((imp) => imp.declarations));
|
|
130
|
+
}
|
|
131
|
+
exports.getAllDeclarationsFromImports = getAllDeclarationsFromImports;
|
|
132
|
+
function isCollectionPredicate(expr) {
|
|
133
|
+
return (0, ast_1.isBinaryExpr)(expr) && ['?', '!', '^'].includes(expr.operator);
|
|
134
|
+
}
|
|
135
|
+
exports.isCollectionPredicate = isCollectionPredicate;
|
|
136
|
+
//# sourceMappingURL=ast-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ast-utils.js","sourceRoot":"","sources":["../../src/utils/ast-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { StdioOptions } from 'child_process';
|
|
3
|
+
/**
|
|
4
|
+
* Utility for executing command synchronously and prints outputs on current console
|
|
5
|
+
*/
|
|
6
|
+
export declare function execSync(cmd: string, stdio?: StdioOptions, env?: Record<string, string>): void;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.execSync = void 0;
|
|
4
|
+
const child_process_1 = require("child_process");
|
|
5
|
+
/**
|
|
6
|
+
* Utility for executing command synchronously and prints outputs on current console
|
|
7
|
+
*/
|
|
8
|
+
function execSync(cmd, stdio = 'inherit', env) {
|
|
9
|
+
const mergedEnv = Object.assign(Object.assign({}, process.env), env);
|
|
10
|
+
(0, child_process_1.execSync)(cmd, { encoding: 'utf-8', stdio, env: mergedEnv });
|
|
11
|
+
}
|
|
12
|
+
exports.execSync = execSync;
|
|
13
|
+
//# sourceMappingURL=exec-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exec-utils.js","sourceRoot":"","sources":["../../src/utils/exec-utils.ts"],"names":[],"mappings":";;;AAAA,iDAAgE;AAEhE;;GAEG;AACH,SAAgB,QAAQ,CAAC,GAAW,EAAE,QAAsB,SAAS,EAAE,GAA4B;IAC/F,MAAM,SAAS,mCAAQ,OAAO,CAAC,GAAG,GAAK,GAAG,CAAE,CAAC;IAC7C,IAAA,wBAAK,EAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;AAC7D,CAAC;AAHD,4BAGC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare type PackageManagers = 'npm' | 'yarn' | 'pnpm';
|
|
2
|
+
export declare function installPackage(pkg: string, dev: boolean, pkgManager?: PackageManagers | undefined, tag?: string, projectPath?: string, exactVersion?: boolean): void;
|
|
3
|
+
export declare function ensurePackage(pkg: string, dev: boolean, pkgManager?: PackageManagers | undefined, tag?: string, projectPath?: string, exactVersion?: boolean): void;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ensurePackage = exports.installPackage = void 0;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const exec_utils_1 = require("./exec-utils");
|
|
10
|
+
function findUp(names, cwd) {
|
|
11
|
+
let dir = cwd;
|
|
12
|
+
// eslint-disable-next-line no-constant-condition
|
|
13
|
+
while (true) {
|
|
14
|
+
const target = names.find((name) => fs_1.default.existsSync(path_1.default.join(dir, name)));
|
|
15
|
+
if (target)
|
|
16
|
+
return target;
|
|
17
|
+
const up = path_1.default.resolve(dir, '..');
|
|
18
|
+
if (up === dir)
|
|
19
|
+
return undefined; // it'll fail anyway
|
|
20
|
+
dir = up;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function getPackageManager(projectPath = '.') {
|
|
24
|
+
const lockFile = findUp(['yarn.lock', 'pnpm-lock.yaml', 'package-lock.json'], projectPath);
|
|
25
|
+
if (!lockFile) {
|
|
26
|
+
// default use npm
|
|
27
|
+
return 'npm';
|
|
28
|
+
}
|
|
29
|
+
switch (path_1.default.basename(lockFile)) {
|
|
30
|
+
case 'yarn.lock':
|
|
31
|
+
return 'yarn';
|
|
32
|
+
case 'pnpm-lock.yaml':
|
|
33
|
+
return 'pnpm';
|
|
34
|
+
default:
|
|
35
|
+
return 'npm';
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function installPackage(pkg, dev, pkgManager = undefined, tag = 'latest', projectPath = '.', exactVersion = true) {
|
|
39
|
+
const manager = pkgManager !== null && pkgManager !== void 0 ? pkgManager : getPackageManager(projectPath);
|
|
40
|
+
console.log(`Installing package "${pkg}@${tag}" with ${manager}`);
|
|
41
|
+
switch (manager) {
|
|
42
|
+
case 'yarn':
|
|
43
|
+
(0, exec_utils_1.execSync)(`yarn --cwd "${projectPath}" add ${exactVersion ? '--exact' : ''} ${pkg}@${tag} ${dev ? ' --dev' : ''}`);
|
|
44
|
+
break;
|
|
45
|
+
case 'pnpm':
|
|
46
|
+
(0, exec_utils_1.execSync)(`pnpm add -C "${projectPath}" ${exactVersion ? '--save-exact' : ''} ${dev ? ' --save-dev' : ''} ${pkg}@${tag}`);
|
|
47
|
+
break;
|
|
48
|
+
default:
|
|
49
|
+
(0, exec_utils_1.execSync)(`npm install --prefix "${projectPath}" ${exactVersion ? '--save-exact' : ''} ${dev ? ' --save-dev' : ''} ${pkg}@${tag}`);
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.installPackage = installPackage;
|
|
54
|
+
function ensurePackage(pkg, dev, pkgManager = undefined, tag = 'latest', projectPath = '.', exactVersion = false) {
|
|
55
|
+
const resolvePath = path_1.default.resolve(projectPath);
|
|
56
|
+
try {
|
|
57
|
+
require.resolve(pkg, { paths: [resolvePath] });
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
installPackage(pkg, dev, pkgManager, tag, resolvePath, exactVersion);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
exports.ensurePackage = ensurePackage;
|
|
64
|
+
//# sourceMappingURL=pkg-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pkg-utils.js","sourceRoot":"","sources":["../../src/utils/pkg-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Expression } from '@zenstackhq/language/ast';
|
|
2
|
+
import { ExpressionContext } from '@zenstackhq/sdk';
|
|
3
|
+
export declare class TypeScriptExpressionTransformerError extends Error {
|
|
4
|
+
constructor(message: string);
|
|
5
|
+
}
|
|
6
|
+
declare type Options = {
|
|
7
|
+
isPostGuard?: boolean;
|
|
8
|
+
fieldReferenceContext?: string;
|
|
9
|
+
context: ExpressionContext;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Transforms ZModel expression to plain TypeScript expression.
|
|
13
|
+
*/
|
|
14
|
+
export declare class TypeScriptExpressionTransformer {
|
|
15
|
+
private readonly options;
|
|
16
|
+
/**
|
|
17
|
+
* Constructs a new TypeScriptExpressionTransformer.
|
|
18
|
+
*
|
|
19
|
+
* @param isPostGuard indicates if we're writing for post-update conditions
|
|
20
|
+
*/
|
|
21
|
+
constructor(options: Options);
|
|
22
|
+
/**
|
|
23
|
+
* Transforms the given expression to a TypeScript expression.
|
|
24
|
+
* @param normalizeUndefined if undefined values should be normalized to null
|
|
25
|
+
* @returns
|
|
26
|
+
*/
|
|
27
|
+
transform(expr: Expression, normalizeUndefined?: boolean): string;
|
|
28
|
+
private this;
|
|
29
|
+
private memberAccess;
|
|
30
|
+
private invocation;
|
|
31
|
+
private _auth;
|
|
32
|
+
private _now;
|
|
33
|
+
private _length;
|
|
34
|
+
private _contains;
|
|
35
|
+
private _startsWith;
|
|
36
|
+
private _endsWith;
|
|
37
|
+
private _regex;
|
|
38
|
+
private _email;
|
|
39
|
+
private _datetime;
|
|
40
|
+
private _url;
|
|
41
|
+
private _has;
|
|
42
|
+
private _hasEvery;
|
|
43
|
+
private _hasSome;
|
|
44
|
+
private _isEmpty;
|
|
45
|
+
private ensureBoolean;
|
|
46
|
+
private reference;
|
|
47
|
+
private null;
|
|
48
|
+
private array;
|
|
49
|
+
private literal;
|
|
50
|
+
private unary;
|
|
51
|
+
private binary;
|
|
52
|
+
private collectionPredicate;
|
|
53
|
+
}
|
|
54
|
+
export {};
|
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.TypeScriptExpressionTransformer = exports.TypeScriptExpressionTransformerError = void 0;
|
|
10
|
+
const ast_1 = require("@zenstackhq/language/ast");
|
|
11
|
+
const sdk_1 = require("@zenstackhq/sdk");
|
|
12
|
+
const ts_pattern_1 = require("ts-pattern");
|
|
13
|
+
const ast_utils_1 = require("./ast-utils");
|
|
14
|
+
class TypeScriptExpressionTransformerError extends Error {
|
|
15
|
+
constructor(message) {
|
|
16
|
+
super(message);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.TypeScriptExpressionTransformerError = TypeScriptExpressionTransformerError;
|
|
20
|
+
// a registry of function handlers marked with @func
|
|
21
|
+
const functionHandlers = new Map();
|
|
22
|
+
// function handler decorator
|
|
23
|
+
function func(name) {
|
|
24
|
+
return function (target, propertyKey, descriptor) {
|
|
25
|
+
if (!functionHandlers.get(name)) {
|
|
26
|
+
functionHandlers.set(name, descriptor);
|
|
27
|
+
}
|
|
28
|
+
return descriptor;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Transforms ZModel expression to plain TypeScript expression.
|
|
33
|
+
*/
|
|
34
|
+
class TypeScriptExpressionTransformer {
|
|
35
|
+
/**
|
|
36
|
+
* Constructs a new TypeScriptExpressionTransformer.
|
|
37
|
+
*
|
|
38
|
+
* @param isPostGuard indicates if we're writing for post-update conditions
|
|
39
|
+
*/
|
|
40
|
+
constructor(options) {
|
|
41
|
+
this.options = options;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Transforms the given expression to a TypeScript expression.
|
|
45
|
+
* @param normalizeUndefined if undefined values should be normalized to null
|
|
46
|
+
* @returns
|
|
47
|
+
*/
|
|
48
|
+
transform(expr, normalizeUndefined = true) {
|
|
49
|
+
switch (expr.$type) {
|
|
50
|
+
case ast_1.StringLiteral:
|
|
51
|
+
case ast_1.NumberLiteral:
|
|
52
|
+
case ast_1.BooleanLiteral:
|
|
53
|
+
return this.literal(expr);
|
|
54
|
+
case ast_1.ArrayExpr:
|
|
55
|
+
return this.array(expr, normalizeUndefined);
|
|
56
|
+
case ast_1.NullExpr:
|
|
57
|
+
return this.null();
|
|
58
|
+
case ast_1.ThisExpr:
|
|
59
|
+
return this.this(expr);
|
|
60
|
+
case ast_1.ReferenceExpr:
|
|
61
|
+
return this.reference(expr);
|
|
62
|
+
case ast_1.InvocationExpr:
|
|
63
|
+
return this.invocation(expr, normalizeUndefined);
|
|
64
|
+
case ast_1.MemberAccessExpr:
|
|
65
|
+
return this.memberAccess(expr, normalizeUndefined);
|
|
66
|
+
case ast_1.UnaryExpr:
|
|
67
|
+
return this.unary(expr, normalizeUndefined);
|
|
68
|
+
case ast_1.BinaryExpr:
|
|
69
|
+
return this.binary(expr, normalizeUndefined);
|
|
70
|
+
default:
|
|
71
|
+
throw new TypeScriptExpressionTransformerError(`Unsupported expression type: ${expr.$type}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
this(_expr) {
|
|
75
|
+
// "this" is mapped to the input argument
|
|
76
|
+
return 'input';
|
|
77
|
+
}
|
|
78
|
+
memberAccess(expr, normalizeUndefined) {
|
|
79
|
+
var _a;
|
|
80
|
+
if (!expr.member.ref) {
|
|
81
|
+
throw new TypeScriptExpressionTransformerError(`Unresolved MemberAccessExpr`);
|
|
82
|
+
}
|
|
83
|
+
if ((0, ast_1.isThisExpr)(expr.operand)) {
|
|
84
|
+
return expr.member.ref.name;
|
|
85
|
+
}
|
|
86
|
+
else if ((0, sdk_1.isFutureExpr)(expr.operand)) {
|
|
87
|
+
if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.isPostGuard) !== true) {
|
|
88
|
+
throw new TypeScriptExpressionTransformerError(`future() is only supported in postUpdate rules`);
|
|
89
|
+
}
|
|
90
|
+
return expr.member.ref.name;
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
if (normalizeUndefined) {
|
|
94
|
+
// normalize field access to null instead of undefined to avoid accidentally use undefined in filter
|
|
95
|
+
return `(${this.transform(expr.operand, normalizeUndefined)}?.${expr.member.ref.name} ?? null)`;
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
return `${this.transform(expr.operand, normalizeUndefined)}?.${expr.member.ref.name}`;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
invocation(expr, normalizeUndefined) {
|
|
103
|
+
if (!expr.function.ref) {
|
|
104
|
+
throw new TypeScriptExpressionTransformerError(`Unresolved InvocationExpr`);
|
|
105
|
+
}
|
|
106
|
+
const funcName = expr.function.ref.name;
|
|
107
|
+
const isStdFunc = (0, sdk_1.isFromStdlib)(expr.function.ref);
|
|
108
|
+
if (!isStdFunc) {
|
|
109
|
+
throw new TypeScriptExpressionTransformerError('User-defined functions are not supported yet');
|
|
110
|
+
}
|
|
111
|
+
const handler = functionHandlers.get(funcName);
|
|
112
|
+
if (!handler) {
|
|
113
|
+
throw new TypeScriptExpressionTransformerError(`Unsupported function: ${funcName}`);
|
|
114
|
+
}
|
|
115
|
+
const args = expr.args.map((arg) => arg.value);
|
|
116
|
+
return handler.value.call(this, args, normalizeUndefined);
|
|
117
|
+
}
|
|
118
|
+
// #region function invocation handlers
|
|
119
|
+
// arguments have been type-checked
|
|
120
|
+
_auth() {
|
|
121
|
+
return 'user';
|
|
122
|
+
}
|
|
123
|
+
_now() {
|
|
124
|
+
return `(new Date())`;
|
|
125
|
+
}
|
|
126
|
+
_length(args) {
|
|
127
|
+
const field = this.transform(args[0], false);
|
|
128
|
+
const min = (0, sdk_1.getLiteral)(args[1]);
|
|
129
|
+
const max = (0, sdk_1.getLiteral)(args[2]);
|
|
130
|
+
let result;
|
|
131
|
+
if (min === undefined) {
|
|
132
|
+
result = `(${field}?.length > 0)`;
|
|
133
|
+
}
|
|
134
|
+
else if (max === undefined) {
|
|
135
|
+
result = `(${field}?.length >= ${min})`;
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
result = `(${field}?.length >= ${min} && ${field}?.length <= ${max})`;
|
|
139
|
+
}
|
|
140
|
+
return this.ensureBoolean(result);
|
|
141
|
+
}
|
|
142
|
+
_contains(args, normalizeUndefined) {
|
|
143
|
+
const field = this.transform(args[0], false);
|
|
144
|
+
const caseInsensitive = (0, sdk_1.getLiteral)(args[2]) === true;
|
|
145
|
+
let result;
|
|
146
|
+
if (caseInsensitive) {
|
|
147
|
+
result = `${field}?.toLowerCase().includes(${this.transform(args[1], normalizeUndefined)}?.toLowerCase())`;
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
result = `${field}?.includes(${this.transform(args[1], normalizeUndefined)})`;
|
|
151
|
+
}
|
|
152
|
+
return this.ensureBoolean(result);
|
|
153
|
+
}
|
|
154
|
+
_startsWith(args, normalizeUndefined) {
|
|
155
|
+
const field = this.transform(args[0], false);
|
|
156
|
+
const result = `${field}?.startsWith(${this.transform(args[1], normalizeUndefined)})`;
|
|
157
|
+
return this.ensureBoolean(result);
|
|
158
|
+
}
|
|
159
|
+
_endsWith(args, normalizeUndefined) {
|
|
160
|
+
const field = this.transform(args[0], false);
|
|
161
|
+
const result = `${field}?.endsWith(${this.transform(args[1], normalizeUndefined)})`;
|
|
162
|
+
return this.ensureBoolean(result);
|
|
163
|
+
}
|
|
164
|
+
_regex(args) {
|
|
165
|
+
const field = this.transform(args[0], false);
|
|
166
|
+
const pattern = (0, sdk_1.getLiteral)(args[1]);
|
|
167
|
+
return `new RegExp(${JSON.stringify(pattern)}).test(${field})`;
|
|
168
|
+
}
|
|
169
|
+
_email(args) {
|
|
170
|
+
const field = this.transform(args[0], false);
|
|
171
|
+
return `z.string().email().safeParse(${field}).success`;
|
|
172
|
+
}
|
|
173
|
+
_datetime(args) {
|
|
174
|
+
const field = this.transform(args[0], false);
|
|
175
|
+
return `z.string().datetime({ offset: true }).safeParse(${field}).success`;
|
|
176
|
+
}
|
|
177
|
+
_url(args) {
|
|
178
|
+
const field = this.transform(args[0], false);
|
|
179
|
+
return `z.string().url().safeParse(${field}).success`;
|
|
180
|
+
}
|
|
181
|
+
_has(args, normalizeUndefined) {
|
|
182
|
+
const field = this.transform(args[0], false);
|
|
183
|
+
const result = `${field}?.includes(${this.transform(args[1], normalizeUndefined)})`;
|
|
184
|
+
return this.ensureBoolean(result);
|
|
185
|
+
}
|
|
186
|
+
_hasEvery(args, normalizeUndefined) {
|
|
187
|
+
const field = this.transform(args[0], false);
|
|
188
|
+
const result = `${this.transform(args[1], normalizeUndefined)}?.every((item) => ${field}?.includes(item))`;
|
|
189
|
+
return this.ensureBoolean(result);
|
|
190
|
+
}
|
|
191
|
+
_hasSome(args, normalizeUndefined) {
|
|
192
|
+
const field = this.transform(args[0], false);
|
|
193
|
+
const result = `${this.transform(args[1], normalizeUndefined)}?.some((item) => ${field}?.includes(item))`;
|
|
194
|
+
return this.ensureBoolean(result);
|
|
195
|
+
}
|
|
196
|
+
_isEmpty(args) {
|
|
197
|
+
const field = this.transform(args[0], false);
|
|
198
|
+
const result = `(!${field} || ${field}?.length === 0)`;
|
|
199
|
+
return this.ensureBoolean(result);
|
|
200
|
+
}
|
|
201
|
+
ensureBoolean(expr) {
|
|
202
|
+
return `(${expr} ?? false)`;
|
|
203
|
+
}
|
|
204
|
+
// #endregion
|
|
205
|
+
reference(expr) {
|
|
206
|
+
var _a, _b;
|
|
207
|
+
if (!expr.target.ref) {
|
|
208
|
+
throw new TypeScriptExpressionTransformerError(`Unresolved ReferenceExpr`);
|
|
209
|
+
}
|
|
210
|
+
if ((0, ast_1.isEnumField)(expr.target.ref)) {
|
|
211
|
+
return `${expr.target.ref.$container.name}.${expr.target.ref.name}`;
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.isPostGuard) {
|
|
215
|
+
// if we're processing post-update, any direct field access should be
|
|
216
|
+
// treated as access to context.preValue, which is entity's value before
|
|
217
|
+
// the update
|
|
218
|
+
return `context.preValue?.${expr.target.ref.name}`;
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
return ((_b = this.options) === null || _b === void 0 ? void 0 : _b.fieldReferenceContext)
|
|
222
|
+
? `${this.options.fieldReferenceContext}?.${expr.target.ref.name}`
|
|
223
|
+
: expr.target.ref.name;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
null() {
|
|
228
|
+
return 'null';
|
|
229
|
+
}
|
|
230
|
+
array(expr, normalizeUndefined) {
|
|
231
|
+
return `[${expr.items.map((item) => this.transform(item, normalizeUndefined)).join(', ')}]`;
|
|
232
|
+
}
|
|
233
|
+
literal(expr) {
|
|
234
|
+
if (expr.$type === ast_1.StringLiteral) {
|
|
235
|
+
return `'${expr.value}'`;
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
return expr.value.toString();
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
unary(expr, normalizeUndefined) {
|
|
242
|
+
return `(${expr.operator} ${this.transform(expr.operand, normalizeUndefined)})`;
|
|
243
|
+
}
|
|
244
|
+
binary(expr, normalizeUndefined) {
|
|
245
|
+
const _default = `(${this.transform(expr.left, normalizeUndefined)} ${expr.operator} ${this.transform(expr.right, normalizeUndefined)})`;
|
|
246
|
+
return (0, ts_pattern_1.match)(expr.operator)
|
|
247
|
+
.with('in', () => `(${this.transform(expr.right, false)}?.includes(${this.transform(expr.left, normalizeUndefined)}) ?? false)`)
|
|
248
|
+
.with(ts_pattern_1.P.union('==', '!='), () => {
|
|
249
|
+
var _a;
|
|
250
|
+
if ((0, ast_1.isThisExpr)(expr.left) || (0, ast_1.isThisExpr)(expr.right)) {
|
|
251
|
+
// map equality comparison with `this` to id comparison
|
|
252
|
+
const _this = (0, ast_1.isThisExpr)(expr.left) ? expr.left : expr.right;
|
|
253
|
+
const model = (_a = _this.$resolvedType) === null || _a === void 0 ? void 0 : _a.decl;
|
|
254
|
+
const idFields = (0, ast_utils_1.getIdFields)(model);
|
|
255
|
+
if (!idFields || idFields.length === 0) {
|
|
256
|
+
throw new TypeScriptExpressionTransformerError(`model "${model.name}" does not have an id field`);
|
|
257
|
+
}
|
|
258
|
+
let result = `allFieldsEqual(${this.transform(expr.left, false)},
|
|
259
|
+
${this.transform(expr.right, false)}, [${idFields.map((f) => "'" + f.name + "'").join(', ')}])`;
|
|
260
|
+
if (expr.operator === '!=') {
|
|
261
|
+
result = `!${result}`;
|
|
262
|
+
}
|
|
263
|
+
return result;
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
return _default;
|
|
267
|
+
}
|
|
268
|
+
})
|
|
269
|
+
.with(ts_pattern_1.P.union('?', '!', '^'), (op) => this.collectionPredicate(expr, op, normalizeUndefined))
|
|
270
|
+
.otherwise(() => _default);
|
|
271
|
+
}
|
|
272
|
+
collectionPredicate(expr, operator, normalizeUndefined) {
|
|
273
|
+
const operand = this.transform(expr.left, normalizeUndefined);
|
|
274
|
+
const innerTransformer = new TypeScriptExpressionTransformer(Object.assign(Object.assign({}, this.options), { fieldReferenceContext: '_item' }));
|
|
275
|
+
const predicate = innerTransformer.transform(expr.right, normalizeUndefined);
|
|
276
|
+
return (0, ts_pattern_1.match)(operator)
|
|
277
|
+
.with('?', () => `!!((${operand})?.some((_item: any) => ${predicate}))`)
|
|
278
|
+
.with('!', () => `!!((${operand})?.every((_item: any) => ${predicate}))`)
|
|
279
|
+
.with('^', () => `!((${operand})?.some((_item: any) => ${predicate}))`)
|
|
280
|
+
.exhaustive();
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
__decorate([
|
|
284
|
+
func('auth')
|
|
285
|
+
], TypeScriptExpressionTransformer.prototype, "_auth", null);
|
|
286
|
+
__decorate([
|
|
287
|
+
func('now')
|
|
288
|
+
], TypeScriptExpressionTransformer.prototype, "_now", null);
|
|
289
|
+
__decorate([
|
|
290
|
+
func('length')
|
|
291
|
+
], TypeScriptExpressionTransformer.prototype, "_length", null);
|
|
292
|
+
__decorate([
|
|
293
|
+
func('contains')
|
|
294
|
+
], TypeScriptExpressionTransformer.prototype, "_contains", null);
|
|
295
|
+
__decorate([
|
|
296
|
+
func('startsWith')
|
|
297
|
+
], TypeScriptExpressionTransformer.prototype, "_startsWith", null);
|
|
298
|
+
__decorate([
|
|
299
|
+
func('endsWith')
|
|
300
|
+
], TypeScriptExpressionTransformer.prototype, "_endsWith", null);
|
|
301
|
+
__decorate([
|
|
302
|
+
func('regex')
|
|
303
|
+
], TypeScriptExpressionTransformer.prototype, "_regex", null);
|
|
304
|
+
__decorate([
|
|
305
|
+
func('email')
|
|
306
|
+
], TypeScriptExpressionTransformer.prototype, "_email", null);
|
|
307
|
+
__decorate([
|
|
308
|
+
func('datetime')
|
|
309
|
+
], TypeScriptExpressionTransformer.prototype, "_datetime", null);
|
|
310
|
+
__decorate([
|
|
311
|
+
func('url')
|
|
312
|
+
], TypeScriptExpressionTransformer.prototype, "_url", null);
|
|
313
|
+
__decorate([
|
|
314
|
+
func('has')
|
|
315
|
+
], TypeScriptExpressionTransformer.prototype, "_has", null);
|
|
316
|
+
__decorate([
|
|
317
|
+
func('hasEvery')
|
|
318
|
+
], TypeScriptExpressionTransformer.prototype, "_hasEvery", null);
|
|
319
|
+
__decorate([
|
|
320
|
+
func('hasSome')
|
|
321
|
+
], TypeScriptExpressionTransformer.prototype, "_hasSome", null);
|
|
322
|
+
__decorate([
|
|
323
|
+
func('isEmpty')
|
|
324
|
+
], TypeScriptExpressionTransformer.prototype, "_isEmpty", null);
|
|
325
|
+
exports.TypeScriptExpressionTransformer = TypeScriptExpressionTransformer;
|
|
326
|
+
//# sourceMappingURL=typescript-expression-transformer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript-expression-transformer.js","sourceRoot":"","sources":["../../src/utils/typescript-expression-transformer.ts"],"names":[],"mappings":";;;;;;;;;AAAA,kDAiBkC;AAClC,yCAA4F;AAC5F,2CAAsC;AACtC,2CAA0C;AAE1C,MAAa,oCAAqC,SAAQ,KAAK;IAC3D,YAAY,OAAe;QACvB,KAAK,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;CACJ;AAJD,oFAIC;AAQD,oDAAoD;AACpD,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA8B,CAAC;AAE/D,6BAA6B;AAC7B,SAAS,IAAI,CAAC,IAAY;IACtB,OAAO,UAAU,MAAe,EAAE,WAAmB,EAAE,UAA8B;QACjF,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC7B,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;SAC1C;QACD,OAAO,UAAU,CAAC;IACtB,CAAC,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAa,+BAA+B;IACxC;;;;OAIG;IACH,YAA6B,OAAgB;QAAhB,YAAO,GAAP,OAAO,CAAS;IAAG,CAAC;IAEjD;;;;OAIG;IACH,SAAS,CAAC,IAAgB,EAAE,kBAAkB,GAAG,IAAI;QACjD,QAAQ,IAAI,CAAC,KAAK,EAAE;YAChB,KAAK,mBAAa,CAAC;YACnB,KAAK,mBAAa,CAAC;YACnB,KAAK,oBAAc;gBACf,OAAO,IAAI,CAAC,OAAO,CAAC,IAAmB,CAAC,CAAC;YAE7C,KAAK,eAAS;gBACV,OAAO,IAAI,CAAC,KAAK,CAAC,IAAiB,EAAE,kBAAkB,CAAC,CAAC;YAE7D,KAAK,cAAQ;gBACT,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;YAEvB,KAAK,cAAQ;gBACT,OAAO,IAAI,CAAC,IAAI,CAAC,IAAgB,CAAC,CAAC;YAEvC,KAAK,mBAAa;gBACd,OAAO,IAAI,CAAC,SAAS,CAAC,IAAqB,CAAC,CAAC;YAEjD,KAAK,oBAAc;gBACf,OAAO,IAAI,CAAC,UAAU,CAAC,IAAsB,EAAE,kBAAkB,CAAC,CAAC;YAEvE,KAAK,sBAAgB;gBACjB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAwB,EAAE,kBAAkB,CAAC,CAAC;YAE3E,KAAK,eAAS;gBACV,OAAO,IAAI,CAAC,KAAK,CAAC,IAAiB,EAAE,kBAAkB,CAAC,CAAC;YAE7D,KAAK,gBAAU;gBACX,OAAO,IAAI,CAAC,MAAM,CAAC,IAAkB,EAAE,kBAAkB,CAAC,CAAC;YAE/D;gBACI,MAAM,IAAI,oCAAoC,CAAC,gCAAgC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;SACpG;IACL,CAAC;IAEO,IAAI,CAAC,KAAe;QACxB,yCAAyC;QACzC,OAAO,OAAO,CAAC;IACnB,CAAC;IAEO,YAAY,CAAC,IAAsB,EAAE,kBAA2B;;QACpE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;YAClB,MAAM,IAAI,oCAAoC,CAAC,6BAA6B,CAAC,CAAC;SACjF;QAED,IAAI,IAAA,gBAAU,EAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;SAC/B;aAAM,IAAI,IAAA,kBAAY,EAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACnC,IAAI,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,WAAW,MAAK,IAAI,EAAE;gBACpC,MAAM,IAAI,oCAAoC,CAAC,gDAAgD,CAAC,CAAC;aACpG;YACD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;SAC/B;aAAM;YACH,IAAI,kBAAkB,EAAE;gBACpB,oGAAoG;gBACpG,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC;aACnG;iBAAM;gBACH,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;aACzF;SACJ;IACL,CAAC;IAEO,UAAU,CAAC,IAAoB,EAAE,kBAA2B;QAChE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;YACpB,MAAM,IAAI,oCAAoC,CAAC,2BAA2B,CAAC,CAAC;SAC/E;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;QACxC,MAAM,SAAS,GAAG,IAAA,kBAAY,EAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAElD,IAAI,CAAC,SAAS,EAAE;YACZ,MAAM,IAAI,oCAAoC,CAAC,8CAA8C,CAAC,CAAC;SAClG;QAED,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,EAAE;YACV,MAAM,IAAI,oCAAoC,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;SACvF;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC/C,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC;IAC9D,CAAC;IAED,uCAAuC;IAEvC,mCAAmC;IAG3B,KAAK;QACT,OAAO,MAAM,CAAC;IAClB,CAAC;IAGO,IAAI;QACR,OAAO,cAAc,CAAC;IAC1B,CAAC;IAGO,OAAO,CAAC,IAAkB;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,IAAA,gBAAU,EAAS,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,IAAA,gBAAU,EAAS,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,IAAI,MAAc,CAAC;QACnB,IAAI,GAAG,KAAK,SAAS,EAAE;YACnB,MAAM,GAAG,IAAI,KAAK,eAAe,CAAC;SACrC;aAAM,IAAI,GAAG,KAAK,SAAS,EAAE;YAC1B,MAAM,GAAG,IAAI,KAAK,eAAe,GAAG,GAAG,CAAC;SAC3C;aAAM;YACH,MAAM,GAAG,IAAI,KAAK,eAAe,GAAG,OAAO,KAAK,eAAe,GAAG,GAAG,CAAC;SACzE;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAGO,SAAS,CAAC,IAAkB,EAAE,kBAA2B;QAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,eAAe,GAAG,IAAA,gBAAU,EAAU,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;QAC9D,IAAI,MAAc,CAAC;QACnB,IAAI,eAAe,EAAE;YACjB,MAAM,GAAG,GAAG,KAAK,4BAA4B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,kBAAkB,CAAC;SAC9G;aAAM;YACH,MAAM,GAAG,GAAG,KAAK,cAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,GAAG,CAAC;SACjF;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAGO,WAAW,CAAC,IAAkB,EAAE,kBAA2B;QAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,GAAG,KAAK,gBAAgB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,GAAG,CAAC;QACtF,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAGO,SAAS,CAAC,IAAkB,EAAE,kBAA2B;QAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,GAAG,KAAK,cAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,GAAG,CAAC;QACpF,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAGO,MAAM,CAAC,IAAkB;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,IAAA,gBAAU,EAAS,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,OAAO,cAAc,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,KAAK,GAAG,CAAC;IACnE,CAAC;IAGO,MAAM,CAAC,IAAkB;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7C,OAAO,gCAAgC,KAAK,WAAW,CAAC;IAC5D,CAAC;IAGO,SAAS,CAAC,IAAkB;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7C,OAAO,mDAAmD,KAAK,WAAW,CAAC;IAC/E,CAAC;IAGO,IAAI,CAAC,IAAkB;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7C,OAAO,8BAA8B,KAAK,WAAW,CAAC;IAC1D,CAAC;IAGO,IAAI,CAAC,IAAkB,EAAE,kBAA2B;QACxD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,GAAG,KAAK,cAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,GAAG,CAAC;QACpF,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAGO,SAAS,CAAC,IAAkB,EAAE,kBAA2B;QAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,qBAAqB,KAAK,mBAAmB,CAAC;QAC3G,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAGO,QAAQ,CAAC,IAAkB,EAAE,kBAA2B;QAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,oBAAoB,KAAK,mBAAmB,CAAC;QAC1G,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAGO,QAAQ,CAAC,IAAkB;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,KAAK,KAAK,OAAO,KAAK,iBAAiB,CAAC;QACvD,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAEO,aAAa,CAAC,IAAY;QAC9B,OAAO,IAAI,IAAI,YAAY,CAAC;IAChC,CAAC;IAED,aAAa;IAEL,SAAS,CAAC,IAAmB;;QACjC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;YAClB,MAAM,IAAI,oCAAoC,CAAC,0BAA0B,CAAC,CAAC;SAC9E;QAED,IAAI,IAAA,iBAAW,EAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YAC9B,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;SACvE;aAAM;YACH,IAAI,MAAA,IAAI,CAAC,OAAO,0CAAE,WAAW,EAAE;gBAC3B,qEAAqE;gBACrE,wEAAwE;gBACxE,aAAa;gBACb,OAAO,qBAAqB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;aACtD;iBAAM;gBACH,OAAO,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,qBAAqB;oBACtC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE;oBAClE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;aAC9B;SACJ;IACL,CAAC;IAEO,IAAI;QACR,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,KAAK,CAAC,IAAe,EAAE,kBAA2B;QACtD,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAChG,CAAC;IAEO,OAAO,CAAC,IAAiB;QAC7B,IAAI,IAAI,CAAC,KAAK,KAAK,mBAAa,EAAE;YAC9B,OAAO,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC;SAC5B;aAAM;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;SAChC;IACL,CAAC;IAEO,KAAK,CAAC,IAAe,EAAE,kBAA2B;QACtD,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,GAAG,CAAC;IACpF,CAAC;IAEO,MAAM,CAAC,IAAgB,EAAE,kBAA2B;QACxD,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CACjG,IAAI,CAAC,KAAK,EACV,kBAAkB,CACrB,GAAG,CAAC;QAEL,OAAO,IAAA,kBAAK,EAAC,IAAI,CAAC,QAAQ,CAAC;aACtB,IAAI,CACD,IAAI,EACJ,GAAG,EAAE,CACD,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,IAAI,CAAC,SAAS,CAC7D,IAAI,CAAC,IAAI,EACT,kBAAkB,CACrB,aAAa,CACrB;aACA,IAAI,CAAC,cAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE;;YAC5B,IAAI,IAAA,gBAAU,EAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAA,gBAAU,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBACjD,uDAAuD;gBACvD,MAAM,KAAK,GAAG,IAAA,gBAAU,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC7D,MAAM,KAAK,GAAG,MAAA,KAAK,CAAC,aAAa,0CAAE,IAAiB,CAAC;gBACrD,MAAM,QAAQ,GAAG,IAAA,uBAAW,EAAC,KAAK,CAAC,CAAC;gBACpC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;oBACpC,MAAM,IAAI,oCAAoC,CAC1C,UAAU,KAAK,CAAC,IAAI,6BAA6B,CACpD,CAAC;iBACL;gBACD,IAAI,MAAM,GAAG,kBAAkB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;kBACjE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC5F,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;oBACxB,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;iBACzB;gBACD,OAAO,MAAM,CAAC;aACjB;iBAAM;gBACH,OAAO,QAAQ,CAAC;aACnB;QACL,CAAC,CAAC;aACD,IAAI,CAAC,cAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,EAAE,EAAE,kBAAkB,CAAC,CAAC;aAC5F,SAAS,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IAEO,mBAAmB,CAAC,IAAgB,EAAE,QAAyB,EAAE,kBAA2B;QAChG,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;QAC9D,MAAM,gBAAgB,GAAG,IAAI,+BAA+B,iCACrD,IAAI,CAAC,OAAO,KACf,qBAAqB,EAAE,OAAO,IAChC,CAAC;QACH,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;QAE7E,OAAO,IAAA,kBAAK,EAAC,QAAQ,CAAC;aACjB,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,OAAO,2BAA2B,SAAS,IAAI,CAAC;aACvE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,OAAO,4BAA4B,SAAS,IAAI,CAAC;aACxE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,OAAO,2BAA2B,SAAS,IAAI,CAAC;aACtE,UAAU,EAAE,CAAC;IACtB,CAAC;CACJ;AA9MG;IADC,IAAI,CAAC,MAAM,CAAC;4DAGZ;AAGD;IADC,IAAI,CAAC,KAAK,CAAC;2DAGX;AAGD;IADC,IAAI,CAAC,QAAQ,CAAC;8DAcd;AAGD;IADC,IAAI,CAAC,UAAU,CAAC;gEAWhB;AAGD;IADC,IAAI,CAAC,YAAY,CAAC;kEAKlB;AAGD;IADC,IAAI,CAAC,UAAU,CAAC;gEAKhB;AAGD;IADC,IAAI,CAAC,OAAO,CAAC;6DAKb;AAGD;IADC,IAAI,CAAC,OAAO,CAAC;6DAIb;AAGD;IADC,IAAI,CAAC,UAAU,CAAC;gEAIhB;AAGD;IADC,IAAI,CAAC,KAAK,CAAC;2DAIX;AAGD;IADC,IAAI,CAAC,KAAK,CAAC;2DAKX;AAGD;IADC,IAAI,CAAC,UAAU,CAAC;gEAKhB;AAGD;IADC,IAAI,CAAC,SAAS,CAAC;+DAKf;AAGD;IADC,IAAI,CAAC,SAAS,CAAC;+DAKf;AA7ML,0EAoTC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getVersion(): any;
|