zenstack 1.0.0-alpha.99 → 1.0.0-beta.10

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 (103) hide show
  1. package/README.md +65 -24
  2. package/cli/cli-util.d.ts +4 -1
  3. package/cli/cli-util.js +63 -9
  4. package/cli/cli-util.js.map +1 -1
  5. package/cli/config.js +39 -13
  6. package/cli/config.js.map +1 -1
  7. package/cli/index.js +1 -6
  8. package/cli/index.js.map +1 -1
  9. package/cli/plugin-runner.d.ts +2 -1
  10. package/cli/plugin-runner.js +106 -48
  11. package/cli/plugin-runner.js.map +1 -1
  12. package/language-server/constants.d.ts +0 -4
  13. package/language-server/constants.js +1 -14
  14. package/language-server/constants.js.map +1 -1
  15. package/language-server/utils.d.ts +1 -5
  16. package/language-server/utils.js +3 -20
  17. package/language-server/utils.js.map +1 -1
  18. package/language-server/validator/datamodel-validator.d.ts +7 -0
  19. package/language-server/validator/datamodel-validator.js +71 -21
  20. package/language-server/validator/datamodel-validator.js.map +1 -1
  21. package/language-server/validator/expression-validator.js +44 -7
  22. package/language-server/validator/expression-validator.js.map +1 -1
  23. package/language-server/validator/function-decl-validator.d.ts +9 -0
  24. package/language-server/validator/function-decl-validator.js +15 -0
  25. package/language-server/validator/function-decl-validator.js.map +1 -0
  26. package/language-server/validator/function-invocation-validator.js +31 -5
  27. package/language-server/validator/function-invocation-validator.js.map +1 -1
  28. package/language-server/validator/schema-validator.d.ts +4 -1
  29. package/language-server/validator/schema-validator.js +25 -5
  30. package/language-server/validator/schema-validator.js.map +1 -1
  31. package/language-server/validator/utils.d.ts +4 -4
  32. package/language-server/validator/utils.js +10 -1
  33. package/language-server/validator/utils.js.map +1 -1
  34. package/language-server/validator/zmodel-validator.d.ts +4 -1
  35. package/language-server/validator/zmodel-validator.js +13 -4
  36. package/language-server/validator/zmodel-validator.js.map +1 -1
  37. package/language-server/zmodel-code-action.d.ts +2 -1
  38. package/language-server/zmodel-code-action.js +19 -10
  39. package/language-server/zmodel-code-action.js.map +1 -1
  40. package/language-server/zmodel-definition.d.ts +7 -0
  41. package/language-server/zmodel-definition.js +31 -0
  42. package/language-server/zmodel-definition.js.map +1 -0
  43. package/language-server/zmodel-formatter.js +2 -2
  44. package/language-server/zmodel-formatter.js.map +1 -1
  45. package/language-server/zmodel-linker.d.ts +2 -0
  46. package/language-server/zmodel-linker.js +71 -7
  47. package/language-server/zmodel-linker.js.map +1 -1
  48. package/language-server/zmodel-module.js +4 -1
  49. package/language-server/zmodel-module.js.map +1 -1
  50. package/language-server/zmodel-scope.d.ts +7 -1
  51. package/language-server/zmodel-scope.js +57 -1
  52. package/language-server/zmodel-scope.js.map +1 -1
  53. package/package.json +19 -21
  54. package/plugins/access-policy/expression-writer.js +71 -25
  55. package/plugins/access-policy/expression-writer.js.map +1 -1
  56. package/plugins/access-policy/policy-guard-generator.js +107 -73
  57. package/plugins/access-policy/policy-guard-generator.js.map +1 -1
  58. package/plugins/access-policy/utils.d.ts +2 -2
  59. package/plugins/access-policy/utils.js +2 -2
  60. package/plugins/access-policy/utils.js.map +1 -1
  61. package/plugins/model-meta/index.js +35 -31
  62. package/plugins/model-meta/index.js.map +1 -1
  63. package/plugins/plugin-utils.d.ts +4 -4
  64. package/plugins/plugin-utils.js +28 -18
  65. package/plugins/plugin-utils.js.map +1 -1
  66. package/plugins/prisma/index.d.ts +1 -1
  67. package/plugins/prisma/prisma-builder.d.ts +6 -3
  68. package/plugins/prisma/prisma-builder.js +29 -8
  69. package/plugins/prisma/prisma-builder.js.map +1 -1
  70. package/plugins/prisma/schema-generator.d.ts +4 -1
  71. package/plugins/prisma/schema-generator.js +149 -32
  72. package/plugins/prisma/schema-generator.js.map +1 -1
  73. package/plugins/zod/generator.js +171 -22
  74. package/plugins/zod/generator.js.map +1 -1
  75. package/plugins/zod/index.d.ts +1 -1
  76. package/plugins/zod/transformer.d.ts +6 -6
  77. package/plugins/zod/transformer.js +168 -108
  78. package/plugins/zod/transformer.js.map +1 -1
  79. package/plugins/zod/types.d.ts +2 -0
  80. package/plugins/zod/utils/schema-gen.d.ts +3 -0
  81. package/plugins/zod/utils/schema-gen.js +178 -0
  82. package/plugins/zod/utils/schema-gen.js.map +1 -0
  83. package/res/starter.zmodel +4 -4
  84. package/res/stdlib.zmodel +176 -90
  85. package/telemetry.d.ts +2 -1
  86. package/telemetry.js +5 -3
  87. package/telemetry.js.map +1 -1
  88. package/utils/ast-utils.d.ts +10 -3
  89. package/utils/ast-utils.js +91 -8
  90. package/utils/ast-utils.js.map +1 -1
  91. package/utils/pkg-utils.js +1 -1
  92. package/utils/pkg-utils.js.map +1 -1
  93. package/utils/typescript-expression-transformer.d.ts +53 -0
  94. package/utils/typescript-expression-transformer.js +295 -0
  95. package/utils/typescript-expression-transformer.js.map +1 -0
  96. package/utils/version-utils.js +1 -0
  97. package/utils/version-utils.js.map +1 -1
  98. package/plugins/access-policy/typescript-expression-transformer.d.ts +0 -28
  99. package/plugins/access-policy/typescript-expression-transformer.js +0 -121
  100. package/plugins/access-policy/typescript-expression-transformer.js.map +0 -1
  101. package/plugins/access-policy/zod-schema-generator.d.ts +0 -12
  102. package/plugins/access-policy/zod-schema-generator.js +0 -157
  103. package/plugins/access-policy/zod-schema-generator.js.map +0 -1
@@ -1,121 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const ast_1 = require("@zenstackhq/language/ast");
4
- const sdk_1 = require("@zenstackhq/sdk");
5
- const ast_utils_1 = require("../../utils/ast-utils");
6
- const utils_1 = require("./utils");
7
- /**
8
- * Transforms ZModel expression to plain TypeScript expression.
9
- */
10
- class TypeScriptExpressionTransformer {
11
- /**
12
- * Constructs a new TypeScriptExpressionTransformer.
13
- *
14
- * @param isPostGuard indicates if we're writing for post-update conditions
15
- */
16
- constructor(isPostGuard = false) {
17
- this.isPostGuard = isPostGuard;
18
- }
19
- /**
20
- *
21
- * @param expr
22
- * @returns
23
- */
24
- transform(expr) {
25
- switch (expr.$type) {
26
- case ast_1.LiteralExpr:
27
- return this.literal(expr);
28
- case ast_1.ArrayExpr:
29
- return this.array(expr);
30
- case ast_1.NullExpr:
31
- return this.null();
32
- case ast_1.ThisExpr:
33
- return this.this(expr);
34
- case ast_1.ReferenceExpr:
35
- return this.reference(expr);
36
- case ast_1.InvocationExpr:
37
- return this.invocation(expr);
38
- case ast_1.MemberAccessExpr:
39
- return this.memberAccess(expr);
40
- case ast_1.UnaryExpr:
41
- return this.unary(expr);
42
- case ast_1.BinaryExpr:
43
- return this.binary(expr);
44
- default:
45
- throw new sdk_1.PluginError(`Unsupported expression type: ${expr.$type}`);
46
- }
47
- }
48
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
49
- this(expr) {
50
- // "this" is mapped to id comparison
51
- return 'id';
52
- }
53
- memberAccess(expr) {
54
- if (!expr.member.ref) {
55
- throw new sdk_1.PluginError(`Unresolved MemberAccessExpr`);
56
- }
57
- if ((0, ast_1.isThisExpr)(expr.operand)) {
58
- return expr.member.ref.name;
59
- }
60
- else if ((0, utils_1.isFutureExpr)(expr.operand)) {
61
- if (!this.isPostGuard) {
62
- throw new sdk_1.PluginError(`future() is only supported in postUpdate rules`);
63
- }
64
- return expr.member.ref.name;
65
- }
66
- else {
67
- // normalize field access to null instead of undefined to avoid accidentally use undefined in filter
68
- return `(${this.transform(expr.operand)}?.${expr.member.ref.name} ?? null)`;
69
- }
70
- }
71
- invocation(expr) {
72
- var _a;
73
- if ((0, ast_utils_1.isAuthInvocation)(expr)) {
74
- return 'user';
75
- }
76
- else {
77
- throw new sdk_1.PluginError(`Function invocation is not supported: ${(_a = expr.function.ref) === null || _a === void 0 ? void 0 : _a.name}`);
78
- }
79
- }
80
- reference(expr) {
81
- if (!expr.target.ref) {
82
- throw new sdk_1.PluginError(`Unresolved ReferenceExpr`);
83
- }
84
- if ((0, ast_1.isEnumField)(expr.target.ref)) {
85
- return `${expr.target.ref.$container.name}.${expr.target.ref.name}`;
86
- }
87
- else {
88
- if (this.isPostGuard) {
89
- // if we're processing post-update, any direct field access should be
90
- // treated as access to context.preValue, which is entity's value before
91
- // the update
92
- return `context.preValue?.${expr.target.ref.name}`;
93
- }
94
- else {
95
- return expr.target.ref.name;
96
- }
97
- }
98
- }
99
- null() {
100
- return 'null';
101
- }
102
- array(expr) {
103
- return `[${expr.items.map((item) => this.transform(item)).join(', ')}]`;
104
- }
105
- literal(expr) {
106
- if (typeof expr.value === 'string') {
107
- return `'${expr.value}'`;
108
- }
109
- else {
110
- return expr.value.toString();
111
- }
112
- }
113
- unary(expr) {
114
- return `(${expr.operator} ${this.transform(expr.operand)})`;
115
- }
116
- binary(expr) {
117
- return `(${this.transform(expr.left)} ${expr.operator} ${this.transform(expr.right)})`;
118
- }
119
- }
120
- exports.default = TypeScriptExpressionTransformer;
121
- //# sourceMappingURL=typescript-expression-transformer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"typescript-expression-transformer.js","sourceRoot":"","sources":["../../../src/plugins/access-policy/typescript-expression-transformer.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- import { DataModel } from '@zenstackhq/language/ast';
2
- import { CodeBlockWriter } from 'ts-morph';
3
- /**
4
- * Writes Zod schema for data models.
5
- */
6
- export declare class ZodSchemaGenerator {
7
- generate(writer: CodeBlockWriter, models: DataModel[]): void;
8
- private hasValidationAttributes;
9
- private makeFieldValidator;
10
- private makeZodSchema;
11
- private getAttrLiteralArg;
12
- }
@@ -1,157 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ZodSchemaGenerator = void 0;
4
- const ast_1 = require("@zenstackhq/language/ast");
5
- const sdk_1 = require("@zenstackhq/sdk");
6
- const change_case_1 = require("change-case");
7
- /**
8
- * Writes Zod schema for data models.
9
- */
10
- class ZodSchemaGenerator {
11
- generate(writer, models) {
12
- writer.inlineBlock(() => {
13
- models.forEach((model) => {
14
- const fields = model.fields.filter((field) => {
15
- var _a;
16
- return !sdk_1.AUXILIARY_FIELDS.includes(field.name) &&
17
- // scalar fields only
18
- !(0, ast_1.isDataModelField)((_a = field.type.reference) === null || _a === void 0 ? void 0 : _a.ref) &&
19
- this.hasValidationAttributes(field);
20
- });
21
- if (fields.length === 0) {
22
- return;
23
- }
24
- writer.write(`${(0, change_case_1.camelCase)(model.name)}: z.object(`);
25
- writer.inlineBlock(() => {
26
- fields.forEach((field) => {
27
- writer.writeLine(`${field.name}: ${this.makeFieldValidator(field)},`);
28
- });
29
- });
30
- writer.writeLine(').partial(),');
31
- });
32
- });
33
- }
34
- hasValidationAttributes(field) {
35
- return field.attributes.some((attr) => sdk_1.VALIDATION_ATTRIBUTES.includes(attr.decl.$refText));
36
- }
37
- makeFieldValidator(field) {
38
- var _a;
39
- let schema = this.makeZodSchema(field);
40
- // translate field constraint attributes to zod schema
41
- for (const attr of field.attributes) {
42
- switch ((_a = attr.decl.ref) === null || _a === void 0 ? void 0 : _a.name) {
43
- case '@length': {
44
- const min = this.getAttrLiteralArg(attr, 'min');
45
- if (min) {
46
- schema += `.min(${min})`;
47
- }
48
- const max = this.getAttrLiteralArg(attr, 'max');
49
- if (max) {
50
- schema += `.max(${max})`;
51
- }
52
- break;
53
- }
54
- case '@regex': {
55
- const expr = this.getAttrLiteralArg(attr, 'regex');
56
- if (expr) {
57
- schema += `.regex(/${expr}/)`;
58
- }
59
- break;
60
- }
61
- case '@startsWith': {
62
- const text = this.getAttrLiteralArg(attr, 'text');
63
- if (text) {
64
- schema += `.startsWith(${JSON.stringify(text)})`;
65
- }
66
- break;
67
- }
68
- case '@endsWith': {
69
- const text = this.getAttrLiteralArg(attr, 'text');
70
- if (text) {
71
- schema += `.endsWith(${JSON.stringify(text)})`;
72
- }
73
- break;
74
- }
75
- case '@email': {
76
- schema += `.email()`;
77
- break;
78
- }
79
- case '@url': {
80
- schema += `.url()`;
81
- break;
82
- }
83
- case '@datetime': {
84
- schema += `.datetime({ offset: true })`;
85
- break;
86
- }
87
- case '@gt': {
88
- const value = this.getAttrLiteralArg(attr, 'value');
89
- if (value !== undefined) {
90
- schema += `.gt(${value})`;
91
- }
92
- break;
93
- }
94
- case '@gte': {
95
- const value = this.getAttrLiteralArg(attr, 'value');
96
- if (value !== undefined) {
97
- schema += `.gte(${value})`;
98
- }
99
- break;
100
- }
101
- case '@lt': {
102
- const value = this.getAttrLiteralArg(attr, 'value');
103
- if (value !== undefined) {
104
- schema += `.lt(${value})`;
105
- }
106
- break;
107
- }
108
- case '@lte': {
109
- const value = this.getAttrLiteralArg(attr, 'value');
110
- if (value !== undefined) {
111
- schema += `.lte(${value})`;
112
- }
113
- break;
114
- }
115
- }
116
- }
117
- if (field.type.optional) {
118
- schema += '.nullable()';
119
- }
120
- return schema;
121
- }
122
- makeZodSchema(field) {
123
- let schema;
124
- switch (field.type.type) {
125
- case 'Int':
126
- case 'Float':
127
- case 'Decimal':
128
- schema = 'z.number()';
129
- break;
130
- case 'BigInt':
131
- schema = 'z.bigint()';
132
- break;
133
- case 'String':
134
- schema = 'z.string()';
135
- break;
136
- case 'Boolean':
137
- schema = 'z.boolean()';
138
- break;
139
- case 'DateTime':
140
- schema = 'z.date()';
141
- break;
142
- default:
143
- schema = 'z.any()';
144
- break;
145
- }
146
- if (field.type.array) {
147
- schema = `z.array(${schema})`;
148
- }
149
- return schema;
150
- }
151
- getAttrLiteralArg(attr, paramName) {
152
- const arg = attr.args.find((arg) => { var _a; return ((_a = arg.$resolvedParam) === null || _a === void 0 ? void 0 : _a.name) === paramName; });
153
- return arg && (0, sdk_1.getLiteral)(arg.value);
154
- }
155
- }
156
- exports.ZodSchemaGenerator = ZodSchemaGenerator;
157
- //# sourceMappingURL=zod-schema-generator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"zod-schema-generator.js","sourceRoot":"","sources":["../../../src/plugins/access-policy/zod-schema-generator.ts"],"names":[],"mappings":"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"}