zenstack 1.0.0-beta.1 → 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 (69) hide show
  1. package/README.md +12 -4
  2. package/cli/cli-util.js +1 -1
  3. package/cli/cli-util.js.map +1 -1
  4. package/cli/plugin-runner.d.ts +2 -1
  5. package/cli/plugin-runner.js +101 -47
  6. package/cli/plugin-runner.js.map +1 -1
  7. package/language-server/constants.d.ts +0 -4
  8. package/language-server/constants.js +1 -14
  9. package/language-server/constants.js.map +1 -1
  10. package/language-server/validator/datamodel-validator.js +8 -3
  11. package/language-server/validator/datamodel-validator.js.map +1 -1
  12. package/language-server/validator/expression-validator.js +38 -1
  13. package/language-server/validator/expression-validator.js.map +1 -1
  14. package/language-server/validator/function-decl-validator.d.ts +9 -0
  15. package/language-server/validator/function-decl-validator.js +15 -0
  16. package/language-server/validator/function-decl-validator.js.map +1 -0
  17. package/language-server/validator/function-invocation-validator.js +31 -5
  18. package/language-server/validator/function-invocation-validator.js.map +1 -1
  19. package/language-server/validator/utils.d.ts +3 -3
  20. package/language-server/validator/utils.js.map +1 -1
  21. package/language-server/validator/zmodel-validator.d.ts +2 -1
  22. package/language-server/validator/zmodel-validator.js +8 -3
  23. package/language-server/validator/zmodel-validator.js.map +1 -1
  24. package/language-server/zmodel-linker.d.ts +1 -0
  25. package/language-server/zmodel-linker.js +43 -1
  26. package/language-server/zmodel-linker.js.map +1 -1
  27. package/package.json +8 -15
  28. package/plugins/access-policy/expression-writer.js +33 -12
  29. package/plugins/access-policy/expression-writer.js.map +1 -1
  30. package/plugins/access-policy/policy-guard-generator.js +33 -22
  31. package/plugins/access-policy/policy-guard-generator.js.map +1 -1
  32. package/plugins/model-meta/index.js +18 -3
  33. package/plugins/model-meta/index.js.map +1 -1
  34. package/plugins/plugin-utils.d.ts +4 -0
  35. package/plugins/plugin-utils.js +16 -1
  36. package/plugins/plugin-utils.js.map +1 -1
  37. package/plugins/prisma/prisma-builder.d.ts +3 -1
  38. package/plugins/prisma/prisma-builder.js +9 -3
  39. package/plugins/prisma/prisma-builder.js.map +1 -1
  40. package/plugins/prisma/schema-generator.js +34 -5
  41. package/plugins/prisma/schema-generator.js.map +1 -1
  42. package/plugins/zod/generator.js +157 -18
  43. package/plugins/zod/generator.js.map +1 -1
  44. package/plugins/zod/index.d.ts +1 -1
  45. package/plugins/zod/transformer.d.ts +4 -4
  46. package/plugins/zod/transformer.js +134 -82
  47. package/plugins/zod/transformer.js.map +1 -1
  48. package/plugins/zod/types.d.ts +2 -0
  49. package/plugins/zod/utils/schema-gen.d.ts +3 -0
  50. package/plugins/zod/utils/schema-gen.js +178 -0
  51. package/plugins/zod/utils/schema-gen.js.map +1 -0
  52. package/res/stdlib.zmodel +102 -29
  53. package/telemetry.d.ts +1 -0
  54. package/telemetry.js +3 -1
  55. package/telemetry.js.map +1 -1
  56. package/utils/ast-utils.d.ts +1 -14
  57. package/utils/ast-utils.js +3 -71
  58. package/utils/ast-utils.js.map +1 -1
  59. package/utils/pkg-utils.js +1 -1
  60. package/utils/pkg-utils.js.map +1 -1
  61. package/utils/typescript-expression-transformer.d.ts +53 -0
  62. package/utils/typescript-expression-transformer.js +295 -0
  63. package/utils/typescript-expression-transformer.js.map +1 -0
  64. package/plugins/access-policy/typescript-expression-transformer.d.ts +0 -28
  65. package/plugins/access-policy/typescript-expression-transformer.js +0 -180
  66. package/plugins/access-policy/typescript-expression-transformer.js.map +0 -1
  67. package/plugins/access-policy/zod-schema-generator.d.ts +0 -12
  68. package/plugins/access-policy/zod-schema-generator.js +0 -160
  69. package/plugins/access-policy/zod-schema-generator.js.map +0 -1
@@ -1,160 +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 lower_case_first_1 = require("lower-case-first");
7
- /**
8
- * Writes Zod schema for data models.
9
- */
10
- class ZodSchemaGenerator {
11
- generate(writer, models) {
12
- let generated = false;
13
- writer.inlineBlock(() => {
14
- models.forEach((model) => {
15
- const fields = model.fields.filter((field) => {
16
- var _a;
17
- return !sdk_1.AUXILIARY_FIELDS.includes(field.name) &&
18
- // scalar fields only
19
- !(0, ast_1.isDataModelField)((_a = field.type.reference) === null || _a === void 0 ? void 0 : _a.ref) &&
20
- this.hasValidationAttributes(field);
21
- });
22
- if (fields.length === 0) {
23
- return;
24
- }
25
- generated = true;
26
- writer.write(`${(0, lower_case_first_1.lowerCaseFirst)(model.name)}: z.object(`);
27
- writer.inlineBlock(() => {
28
- fields.forEach((field) => {
29
- writer.writeLine(`${field.name}: ${this.makeFieldValidator(field)},`);
30
- });
31
- });
32
- writer.writeLine(').partial(),');
33
- });
34
- });
35
- return generated;
36
- }
37
- hasValidationAttributes(field) {
38
- return field.attributes.some((attr) => sdk_1.VALIDATION_ATTRIBUTES.includes(attr.decl.$refText));
39
- }
40
- makeFieldValidator(field) {
41
- var _a;
42
- let schema = this.makeZodSchema(field);
43
- // translate field constraint attributes to zod schema
44
- for (const attr of field.attributes) {
45
- switch ((_a = attr.decl.ref) === null || _a === void 0 ? void 0 : _a.name) {
46
- case '@length': {
47
- const min = this.getAttrLiteralArg(attr, 'min');
48
- if (min) {
49
- schema += `.min(${min})`;
50
- }
51
- const max = this.getAttrLiteralArg(attr, 'max');
52
- if (max) {
53
- schema += `.max(${max})`;
54
- }
55
- break;
56
- }
57
- case '@regex': {
58
- const expr = this.getAttrLiteralArg(attr, 'regex');
59
- if (expr) {
60
- schema += `.regex(/${expr}/)`;
61
- }
62
- break;
63
- }
64
- case '@startsWith': {
65
- const text = this.getAttrLiteralArg(attr, 'text');
66
- if (text) {
67
- schema += `.startsWith(${JSON.stringify(text)})`;
68
- }
69
- break;
70
- }
71
- case '@endsWith': {
72
- const text = this.getAttrLiteralArg(attr, 'text');
73
- if (text) {
74
- schema += `.endsWith(${JSON.stringify(text)})`;
75
- }
76
- break;
77
- }
78
- case '@email': {
79
- schema += `.email()`;
80
- break;
81
- }
82
- case '@url': {
83
- schema += `.url()`;
84
- break;
85
- }
86
- case '@datetime': {
87
- schema += `.datetime({ offset: true })`;
88
- break;
89
- }
90
- case '@gt': {
91
- const value = this.getAttrLiteralArg(attr, 'value');
92
- if (value !== undefined) {
93
- schema += `.gt(${value})`;
94
- }
95
- break;
96
- }
97
- case '@gte': {
98
- const value = this.getAttrLiteralArg(attr, 'value');
99
- if (value !== undefined) {
100
- schema += `.gte(${value})`;
101
- }
102
- break;
103
- }
104
- case '@lt': {
105
- const value = this.getAttrLiteralArg(attr, 'value');
106
- if (value !== undefined) {
107
- schema += `.lt(${value})`;
108
- }
109
- break;
110
- }
111
- case '@lte': {
112
- const value = this.getAttrLiteralArg(attr, 'value');
113
- if (value !== undefined) {
114
- schema += `.lte(${value})`;
115
- }
116
- break;
117
- }
118
- }
119
- }
120
- if (field.type.optional) {
121
- schema += '.nullable()';
122
- }
123
- return schema;
124
- }
125
- makeZodSchema(field) {
126
- let schema;
127
- switch (field.type.type) {
128
- case 'Int':
129
- case 'Float':
130
- case 'Decimal':
131
- schema = 'z.number()';
132
- break;
133
- case 'BigInt':
134
- schema = 'z.bigint()';
135
- break;
136
- case 'String':
137
- schema = 'z.string()';
138
- break;
139
- case 'Boolean':
140
- schema = 'z.boolean()';
141
- break;
142
- case 'DateTime':
143
- schema = 'z.date()';
144
- break;
145
- default:
146
- schema = 'z.any()';
147
- break;
148
- }
149
- if (field.type.array) {
150
- schema = `z.array(${schema})`;
151
- }
152
- return schema;
153
- }
154
- getAttrLiteralArg(attr, paramName) {
155
- const arg = attr.args.find((arg) => { var _a; return ((_a = arg.$resolvedParam) === null || _a === void 0 ? void 0 : _a.name) === paramName; });
156
- return arg && (0, sdk_1.getLiteral)(arg.value);
157
- }
158
- }
159
- exports.ZodSchemaGenerator = ZodSchemaGenerator;
160
- //# 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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"}