zenstack 1.0.0 → 1.0.2

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.
Files changed (300) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +194 -1
  3. package/bin/cli +3 -0
  4. package/bin/post-install.js +24 -0
  5. package/cli/actions/generate.d.ts +13 -0
  6. package/cli/actions/generate.js +71 -0
  7. package/cli/actions/generate.js.map +1 -0
  8. package/cli/actions/index.d.ts +3 -0
  9. package/cli/actions/index.js +20 -0
  10. package/cli/actions/index.js.map +1 -0
  11. package/cli/actions/info.d.ts +4 -0
  12. package/cli/actions/info.js +63 -0
  13. package/cli/actions/info.js.map +1 -0
  14. package/cli/actions/init.d.ts +12 -0
  15. package/cli/actions/init.js +83 -0
  16. package/cli/actions/init.js.map +1 -0
  17. package/cli/cli-error.d.ts +5 -0
  18. package/cli/cli-error.js +10 -0
  19. package/cli/cli-error.js.map +1 -0
  20. package/cli/cli-util.d.ts +21 -0
  21. package/cli/cli-util.js +211 -0
  22. package/cli/cli-util.js.map +1 -0
  23. package/cli/config.d.ts +10 -0
  24. package/cli/config.js +62 -0
  25. package/cli/config.js.map +1 -0
  26. package/cli/index.d.ts +7 -0
  27. package/cli/index.js +128 -0
  28. package/cli/index.js.map +1 -0
  29. package/cli/plugin-runner.d.ts +24 -0
  30. package/cli/plugin-runner.js +229 -0
  31. package/cli/plugin-runner.js.map +1 -0
  32. package/constants.d.ts +1 -0
  33. package/constants.js +6 -0
  34. package/constants.js.map +1 -0
  35. package/language-server/constants.d.ts +22 -0
  36. package/language-server/constants.js +27 -0
  37. package/language-server/constants.js.map +1 -0
  38. package/language-server/main.d.ts +1 -0
  39. package/language-server/main.js +13 -0
  40. package/language-server/main.js.map +1 -0
  41. package/language-server/types.d.ts +10 -0
  42. package/language-server/types.js +3 -0
  43. package/language-server/types.js.map +1 -0
  44. package/language-server/utils.d.ts +5 -0
  45. package/language-server/utils.js +22 -0
  46. package/language-server/utils.js.map +1 -0
  47. package/language-server/validator/attribute-application-validator.d.ts +15 -0
  48. package/language-server/validator/attribute-application-validator.js +246 -0
  49. package/language-server/validator/attribute-application-validator.js.map +1 -0
  50. package/language-server/validator/attribute-validator.d.ts +9 -0
  51. package/language-server/validator/attribute-validator.js +14 -0
  52. package/language-server/validator/attribute-validator.js.map +1 -0
  53. package/language-server/validator/datamodel-validator.d.ts +22 -0
  54. package/language-server/validator/datamodel-validator.js +329 -0
  55. package/language-server/validator/datamodel-validator.js.map +1 -0
  56. package/language-server/validator/datasource-validator.d.ts +12 -0
  57. package/language-server/validator/datasource-validator.js +66 -0
  58. package/language-server/validator/datasource-validator.js.map +1 -0
  59. package/language-server/validator/enum-validator.d.ts +11 -0
  60. package/language-server/validator/enum-validator.js +25 -0
  61. package/language-server/validator/enum-validator.js.map +1 -0
  62. package/language-server/validator/expression-validator.d.ts +10 -0
  63. package/language-server/validator/expression-validator.js +135 -0
  64. package/language-server/validator/expression-validator.js.map +1 -0
  65. package/language-server/validator/function-decl-validator.d.ts +9 -0
  66. package/language-server/validator/function-decl-validator.js +13 -0
  67. package/language-server/validator/function-decl-validator.js.map +1 -0
  68. package/language-server/validator/function-invocation-validator.d.ts +11 -0
  69. package/language-server/validator/function-invocation-validator.js +135 -0
  70. package/language-server/validator/function-invocation-validator.js.map +1 -0
  71. package/language-server/validator/schema-validator.d.ts +13 -0
  72. package/language-server/validator/schema-validator.js +49 -0
  73. package/language-server/validator/schema-validator.js.map +1 -0
  74. package/language-server/validator/utils.d.ts +24 -0
  75. package/language-server/validator/utils.js +154 -0
  76. package/language-server/validator/utils.js.map +1 -0
  77. package/language-server/validator/zmodel-validator.d.ts +25 -0
  78. package/language-server/validator/zmodel-validator.js +83 -0
  79. package/language-server/validator/zmodel-validator.js.map +1 -0
  80. package/language-server/zmodel-code-action.d.ts +15 -0
  81. package/language-server/zmodel-code-action.js +118 -0
  82. package/language-server/zmodel-code-action.js.map +1 -0
  83. package/language-server/zmodel-definition.d.ts +7 -0
  84. package/language-server/zmodel-definition.js +31 -0
  85. package/language-server/zmodel-definition.js.map +1 -0
  86. package/language-server/zmodel-formatter.d.ts +9 -0
  87. package/language-server/zmodel-formatter.js +76 -0
  88. package/language-server/zmodel-formatter.js.map +1 -0
  89. package/language-server/zmodel-linker.d.ts +32 -0
  90. package/language-server/zmodel-linker.js +447 -0
  91. package/language-server/zmodel-linker.js.map +1 -0
  92. package/language-server/zmodel-module.d.ts +41 -0
  93. package/language-server/zmodel-module.js +83 -0
  94. package/language-server/zmodel-module.js.map +1 -0
  95. package/language-server/zmodel-scope.d.ts +16 -0
  96. package/language-server/zmodel-scope.js +100 -0
  97. package/language-server/zmodel-scope.js.map +1 -0
  98. package/language-server/zmodel-workspace-manager.d.ts +12 -0
  99. package/language-server/zmodel-workspace-manager.js +138 -0
  100. package/language-server/zmodel-workspace-manager.js.map +1 -0
  101. package/package.json +140 -8
  102. package/plugins/access-policy/expression-writer.d.ts +46 -0
  103. package/plugins/access-policy/expression-writer.js +580 -0
  104. package/plugins/access-policy/expression-writer.js.map +1 -0
  105. package/plugins/access-policy/index.d.ts +4 -0
  106. package/plugins/access-policy/index.js +22 -0
  107. package/plugins/access-policy/index.js.map +1 -0
  108. package/plugins/access-policy/policy-guard-generator.d.ts +22 -0
  109. package/plugins/access-policy/policy-guard-generator.js +634 -0
  110. package/plugins/access-policy/policy-guard-generator.js.map +1 -0
  111. package/plugins/model-meta/index.d.ts +4 -0
  112. package/plugins/model-meta/index.js +232 -0
  113. package/plugins/model-meta/index.js.map +1 -0
  114. package/plugins/plugin-utils.d.ts +17 -0
  115. package/plugins/plugin-utils.js +80 -0
  116. package/plugins/plugin-utils.js.map +1 -0
  117. package/plugins/prisma/indent-string.d.ts +4 -0
  118. package/plugins/prisma/indent-string.js +12 -0
  119. package/plugins/prisma/indent-string.js.map +1 -0
  120. package/plugins/prisma/index.d.ts +4 -0
  121. package/plugins/prisma/index.js +22 -0
  122. package/plugins/prisma/index.js.map +1 -0
  123. package/plugins/prisma/prisma-builder.d.ts +145 -0
  124. package/plugins/prisma/prisma-builder.js +358 -0
  125. package/plugins/prisma/prisma-builder.js.map +1 -0
  126. package/plugins/prisma/schema-generator.d.ts +29 -0
  127. package/plugins/prisma/schema-generator.js +336 -0
  128. package/plugins/prisma/schema-generator.js.map +1 -0
  129. package/plugins/prisma/zmodel-code-generator.d.ts +30 -0
  130. package/plugins/prisma/zmodel-code-generator.js +124 -0
  131. package/plugins/prisma/zmodel-code-generator.js.map +1 -0
  132. package/plugins/zod/generator.d.ts +4 -0
  133. package/plugins/zod/generator.js +254 -0
  134. package/plugins/zod/generator.js.map +1 -0
  135. package/plugins/zod/index.d.ts +4 -0
  136. package/plugins/zod/index.js +24 -0
  137. package/plugins/zod/index.js.map +1 -0
  138. package/plugins/zod/transformer.d.ts +68 -0
  139. package/plugins/zod/transformer.js +554 -0
  140. package/plugins/zod/transformer.js.map +1 -0
  141. package/plugins/zod/types.d.ts +25 -0
  142. package/plugins/zod/types.js +3 -0
  143. package/plugins/zod/types.js.map +1 -0
  144. package/plugins/zod/utils/removeDir.d.ts +1 -0
  145. package/plugins/zod/utils/removeDir.js +30 -0
  146. package/plugins/zod/utils/removeDir.js.map +1 -0
  147. package/plugins/zod/utils/schema-gen.d.ts +3 -0
  148. package/plugins/zod/utils/schema-gen.js +188 -0
  149. package/plugins/zod/utils/schema-gen.js.map +1 -0
  150. package/res/prism-zmodel.js +20 -0
  151. package/res/starter.zmodel +51 -0
  152. package/res/stdlib.zmodel +506 -0
  153. package/telemetry.d.ts +21 -0
  154. package/telemetry.js +129 -0
  155. package/telemetry.js.map +1 -0
  156. package/utils/ast-utils.d.ts +13 -0
  157. package/utils/ast-utils.js +136 -0
  158. package/utils/ast-utils.js.map +1 -0
  159. package/utils/exec-utils.d.ts +6 -0
  160. package/utils/exec-utils.js +13 -0
  161. package/utils/exec-utils.js.map +1 -0
  162. package/utils/pkg-utils.d.ts +3 -0
  163. package/utils/pkg-utils.js +64 -0
  164. package/utils/pkg-utils.js.map +1 -0
  165. package/utils/typescript-expression-transformer.d.ts +54 -0
  166. package/utils/typescript-expression-transformer.js +326 -0
  167. package/utils/typescript-expression-transformer.js.map +1 -0
  168. package/utils/version-utils.d.ts +1 -0
  169. package/utils/version-utils.js +20 -0
  170. package/utils/version-utils.js.map +1 -0
  171. package/.vscode/extensions.json +0 -7
  172. package/.vscode/launch.json +0 -49
  173. package/.vscode/settings.json +0 -4
  174. package/packages/internal/jest.config.ts +0 -32
  175. package/packages/internal/package.json +0 -42
  176. package/packages/internal/src/constants.ts +0 -1
  177. package/packages/internal/src/handler/data/guard-utils.ts +0 -7
  178. package/packages/internal/src/handler/data/handler.ts +0 -415
  179. package/packages/internal/src/handler/data/query-processor.ts +0 -504
  180. package/packages/internal/src/handler/index.ts +0 -1
  181. package/packages/internal/src/handler/types.ts +0 -20
  182. package/packages/internal/src/index.ts +0 -3
  183. package/packages/internal/src/request-handler.ts +0 -27
  184. package/packages/internal/src/request.ts +0 -101
  185. package/packages/internal/src/types.ts +0 -40
  186. package/packages/internal/tests/query-processor.test.ts +0 -172
  187. package/packages/internal/tsconfig.json +0 -21
  188. package/packages/runtime/auth.d.ts +0 -1
  189. package/packages/runtime/auth.js +0 -3
  190. package/packages/runtime/hooks.d.ts +0 -10
  191. package/packages/runtime/hooks.js +0 -3
  192. package/packages/runtime/index.d.ts +0 -3
  193. package/packages/runtime/index.js +0 -1
  194. package/packages/runtime/package-lock.json +0 -512
  195. package/packages/runtime/package.json +0 -16
  196. package/packages/runtime/server.d.ts +0 -1
  197. package/packages/runtime/server.js +0 -3
  198. package/packages/runtime/types.d.ts +0 -1
  199. package/packages/runtime/types.js +0 -3
  200. package/packages/schema/.eslintrc.json +0 -13
  201. package/packages/schema/.vscodeignore +0 -4
  202. package/packages/schema/asset/logo-dark.png +0 -0
  203. package/packages/schema/asset/logo-light.png +0 -0
  204. package/packages/schema/bin/cli +0 -3
  205. package/packages/schema/jest.config.ts +0 -32
  206. package/packages/schema/langium-config.json +0 -14
  207. package/packages/schema/langium-quickstart.md +0 -41
  208. package/packages/schema/language-configuration.json +0 -30
  209. package/packages/schema/package.json +0 -96
  210. package/packages/schema/src/cli/cli-util.ts +0 -80
  211. package/packages/schema/src/cli/index.ts +0 -64
  212. package/packages/schema/src/extension.ts +0 -76
  213. package/packages/schema/src/generator/constants.ts +0 -5
  214. package/packages/schema/src/generator/index.ts +0 -92
  215. package/packages/schema/src/generator/next-auth/index.ts +0 -197
  216. package/packages/schema/src/generator/package.template.json +0 -9
  217. package/packages/schema/src/generator/prisma/expression-writer.ts +0 -352
  218. package/packages/schema/src/generator/prisma/index.ts +0 -32
  219. package/packages/schema/src/generator/prisma/plain-expression-builder.ts +0 -91
  220. package/packages/schema/src/generator/prisma/prisma-builder.ts +0 -366
  221. package/packages/schema/src/generator/prisma/query-gard-generator.ts +0 -208
  222. package/packages/schema/src/generator/prisma/schema-generator.ts +0 -300
  223. package/packages/schema/src/generator/react-hooks/index.ts +0 -181
  224. package/packages/schema/src/generator/service/index.ts +0 -107
  225. package/packages/schema/src/generator/tsconfig.template.json +0 -17
  226. package/packages/schema/src/generator/types.ts +0 -17
  227. package/packages/schema/src/generator/utils.ts +0 -9
  228. package/packages/schema/src/language-server/generated/ast.ts +0 -603
  229. package/packages/schema/src/language-server/generated/grammar.ts +0 -2190
  230. package/packages/schema/src/language-server/generated/module.ts +0 -24
  231. package/packages/schema/src/language-server/main.ts +0 -12
  232. package/packages/schema/src/language-server/stdlib.zmodel +0 -22
  233. package/packages/schema/src/language-server/types.ts +0 -9
  234. package/packages/schema/src/language-server/zmodel-index.ts +0 -33
  235. package/packages/schema/src/language-server/zmodel-linker.ts +0 -409
  236. package/packages/schema/src/language-server/zmodel-module.ts +0 -90
  237. package/packages/schema/src/language-server/zmodel-scope.ts +0 -21
  238. package/packages/schema/src/language-server/zmodel-validator.ts +0 -35
  239. package/packages/schema/src/language-server/zmodel.langium +0 -186
  240. package/packages/schema/src/utils/exec-utils.ts +0 -5
  241. package/packages/schema/src/utils/indent-string.ts +0 -6
  242. package/packages/schema/syntaxes/zmodel.json +0 -57
  243. package/packages/schema/syntaxes/zmodel.tmLanguage.json +0 -57
  244. package/packages/schema/tests/generator/expression-writer.test.ts +0 -676
  245. package/packages/schema/tests/generator/prisma-builder.test.ts +0 -138
  246. package/packages/schema/tests/schema/parser.test.ts +0 -423
  247. package/packages/schema/tests/schema/sample-todo.test.ts +0 -14
  248. package/packages/schema/tests/utils.ts +0 -38
  249. package/packages/schema/tsconfig.json +0 -23
  250. package/pnpm-workspace.yaml +0 -3
  251. package/samples/todo/.env +0 -2
  252. package/samples/todo/.eslintrc.json +0 -3
  253. package/samples/todo/.vscode/launch.json +0 -11
  254. package/samples/todo/README.md +0 -34
  255. package/samples/todo/components/AuthGuard.tsx +0 -17
  256. package/samples/todo/components/Avatar.tsx +0 -22
  257. package/samples/todo/components/BreadCrumb.tsx +0 -44
  258. package/samples/todo/components/ManageMembers.tsx +0 -134
  259. package/samples/todo/components/NavBar.tsx +0 -57
  260. package/samples/todo/components/SpaceMembers.tsx +0 -76
  261. package/samples/todo/components/Spaces.tsx +0 -28
  262. package/samples/todo/components/TimeInfo.tsx +0 -17
  263. package/samples/todo/components/Todo.tsx +0 -72
  264. package/samples/todo/components/TodoList.tsx +0 -77
  265. package/samples/todo/lib/context.ts +0 -31
  266. package/samples/todo/next.config.js +0 -10
  267. package/samples/todo/package-lock.json +0 -7527
  268. package/samples/todo/package.json +0 -45
  269. package/samples/todo/pages/_app.tsx +0 -50
  270. package/samples/todo/pages/api/auth/[...nextauth].ts +0 -83
  271. package/samples/todo/pages/api/zenstack/[...path].ts +0 -16
  272. package/samples/todo/pages/create-space.tsx +0 -114
  273. package/samples/todo/pages/index.tsx +0 -32
  274. package/samples/todo/pages/space/[slug]/[listId]/index.tsx +0 -88
  275. package/samples/todo/pages/space/[slug]/index.tsx +0 -169
  276. package/samples/todo/postcss.config.js +0 -6
  277. package/samples/todo/public/avatar.jpg +0 -0
  278. package/samples/todo/public/favicon.ico +0 -0
  279. package/samples/todo/public/logo.png +0 -0
  280. package/samples/todo/public/vercel.svg +0 -4
  281. package/samples/todo/styles/globals.css +0 -7
  282. package/samples/todo/tailwind.config.js +0 -11
  283. package/samples/todo/tsconfig.json +0 -28
  284. package/samples/todo/types/next-auth.d.ts +0 -14
  285. package/samples/todo/types/next.d.ts +0 -16
  286. package/samples/todo/zenstack/migrations/20221014084317_init/migration.sql +0 -153
  287. package/samples/todo/zenstack/migrations/20221020094651_upate_cli/migration.sql +0 -23
  288. package/samples/todo/zenstack/migrations/migration_lock.toml +0 -3
  289. package/samples/todo/zenstack/schema.prisma +0 -126
  290. package/samples/todo/zenstack/schema.zmodel +0 -161
  291. package/tests/integration/jest.config.ts +0 -16
  292. package/tests/integration/package-lock.json +0 -1081
  293. package/tests/integration/package.json +0 -27
  294. package/tests/integration/tests/operation-coverate.test.ts +0 -563
  295. package/tests/integration/tests/operations.zmodel +0 -69
  296. package/tests/integration/tests/todo-e2e.test.ts +0 -577
  297. package/tests/integration/tests/todo.zmodel +0 -123
  298. package/tests/integration/tests/tsconfig.template.json +0 -10
  299. package/tests/integration/tests/utils.ts +0 -133
  300. 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":";;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AACxB,6CAAwC;AAIxC,SAAS,MAAM,CAAC,KAAe,EAAE,GAAW;IACxC,IAAI,GAAG,GAAG,GAAG,CAAC;IACd,iDAAiD;IACjD,OAAO,IAAI,EAAE;QACT,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACzE,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAE1B,MAAM,EAAE,GAAG,cAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,EAAE,KAAK,GAAG;YAAE,OAAO,SAAS,CAAC,CAAC,oBAAoB;QACtD,GAAG,GAAG,EAAE,CAAC;KACZ;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,WAAW,GAAG,GAAG;IACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,WAAW,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,EAAE,WAAW,CAAC,CAAC;IAE3F,IAAI,CAAC,QAAQ,EAAE;QACX,kBAAkB;QAClB,OAAO,KAAK,CAAC;KAChB;IAED,QAAQ,cAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAC7B,KAAK,WAAW;YACZ,OAAO,MAAM,CAAC;QAClB,KAAK,gBAAgB;YACjB,OAAO,MAAM,CAAC;QAClB;YACI,OAAO,KAAK,CAAC;KACpB;AACL,CAAC;AACD,SAAgB,cAAc,CAC1B,GAAW,EACX,GAAY,EACZ,aAA0C,SAAS,EACnD,GAAG,GAAG,QAAQ,EACd,WAAW,GAAG,GAAG,EACjB,YAAY,GAAG,IAAI;IAEnB,MAAM,OAAO,GAAG,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,IAAI,GAAG,UAAU,OAAO,EAAE,CAAC,CAAC;IAClE,QAAQ,OAAO,EAAE;QACb,KAAK,MAAM;YACP,IAAA,qBAAQ,EACJ,eAAe,WAAW,SAAS,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAC1G,CAAC;YACF,MAAM;QAEV,KAAK,MAAM;YACP,IAAA,qBAAQ,EACJ,gBAAgB,WAAW,KAAK,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,IAC9D,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAC1B,IAAI,GAAG,IAAI,GAAG,EAAE,CACnB,CAAC;YACF,MAAM;QAEV;YACI,IAAA,qBAAQ,EACJ,yBAAyB,WAAW,KAAK,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,IACvE,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAC1B,IAAI,GAAG,IAAI,GAAG,EAAE,CACnB,CAAC;YACF,MAAM;KACb;AACL,CAAC;AAjCD,wCAiCC;AAED,SAAgB,aAAa,CACzB,GAAW,EACX,GAAY,EACZ,aAA0C,SAAS,EACnD,GAAG,GAAG,QAAQ,EACd,WAAW,GAAG,GAAG,EACjB,YAAY,GAAG,KAAK;IAEpB,MAAM,WAAW,GAAG,cAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9C,IAAI;QACA,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;KAClD;IAAC,OAAO,GAAG,EAAE;QACV,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;KACxE;AACL,CAAC;AAdD,sCAcC"}
@@ -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":"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"}
@@ -0,0 +1 @@
1
+ export declare function getVersion(): any;