@zenstackhq/runtime 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 (49) hide show
  1. package/browser/index.d.mts +13 -0
  2. package/browser/index.d.ts +13 -0
  3. package/browser/index.js +69 -0
  4. package/browser/index.js.map +1 -0
  5. package/browser/index.mjs +31 -0
  6. package/browser/index.mjs.map +1 -0
  7. package/constants.d.ts +12 -2
  8. package/constants.js +13 -2
  9. package/constants.js.map +1 -1
  10. package/enhancements/index.d.ts +4 -0
  11. package/enhancements/index.js +4 -0
  12. package/enhancements/index.js.map +1 -1
  13. package/enhancements/model-meta.d.ts +4 -0
  14. package/enhancements/model-meta.js +24 -3
  15. package/enhancements/model-meta.js.map +1 -1
  16. package/enhancements/nested-write-vistor.d.ts +12 -11
  17. package/enhancements/nested-write-vistor.js +10 -10
  18. package/enhancements/nested-write-vistor.js.map +1 -1
  19. package/enhancements/policy/handler.d.ts +4 -3
  20. package/enhancements/policy/handler.js +12 -13
  21. package/enhancements/policy/handler.js.map +1 -1
  22. package/enhancements/policy/index.d.ts +5 -1
  23. package/enhancements/policy/index.js +36 -4
  24. package/enhancements/policy/index.js.map +1 -1
  25. package/enhancements/policy/policy-utils.d.ts +6 -3
  26. package/enhancements/policy/policy-utils.js +112 -39
  27. package/enhancements/policy/policy-utils.js.map +1 -1
  28. package/enhancements/types.d.ts +10 -1
  29. package/enhancements/utils.js +26 -4
  30. package/enhancements/utils.js.map +1 -1
  31. package/enhancements/where-visitor.d.ts +33 -0
  32. package/enhancements/where-visitor.js +87 -0
  33. package/enhancements/where-visitor.js.map +1 -0
  34. package/index.d.ts +2 -2
  35. package/index.js +2 -2
  36. package/index.js.map +1 -1
  37. package/package.json +28 -8
  38. package/zod/index.d.ts +2 -0
  39. package/zod/index.js +4 -0
  40. package/zod/input.d.ts +1 -0
  41. package/zod/input.js +8 -0
  42. package/zod/models.d.ts +1 -0
  43. package/zod/models.js +8 -0
  44. package/serialization-utils.d.ts +0 -1
  45. package/serialization-utils.js +0 -22
  46. package/serialization-utils.js.map +0 -1
  47. package/zod.d.ts +0 -10
  48. package/zod.js +0 -17
  49. package/zod.js.map +0 -1
@@ -29,5 +29,14 @@ export type PolicyDef = {
29
29
  } & Partial<Record<PolicyOperationKind, PolicyFunc>> & {
30
30
  preValueSelect?: object;
31
31
  }>;
32
- schema: Record<string, z.ZodSchema>;
32
+ validation: Record<string, {
33
+ hasValidation: boolean;
34
+ }>;
35
+ };
36
+ /**
37
+ * Zod schemas for validation
38
+ */
39
+ export type ZodSchemas = {
40
+ models: Record<string, z.ZodSchema>;
41
+ input: Record<string, Record<string, z.ZodSchema>>;
33
42
  };
@@ -81,20 +81,42 @@ function loadPrismaModule(prisma) {
81
81
  var _a;
82
82
  // https://github.com/prisma/prisma/discussions/17832
83
83
  if ((_a = prisma._engineConfig) === null || _a === void 0 ? void 0 : _a.datamodelPath) {
84
+ // try engine path first
84
85
  const loadPath = path_1.default.dirname(prisma._engineConfig.datamodelPath);
85
86
  try {
86
87
  const _prisma = require(loadPath).Prisma;
87
- if (typeof _prisma !== 'undefined')
88
+ if (typeof _prisma !== 'undefined') {
88
89
  return _prisma;
89
- return require('@prisma/client/runtime');
90
+ }
90
91
  }
91
92
  catch (_b) {
92
- return require('@prisma/client/runtime');
93
+ // noop
93
94
  }
94
95
  }
95
- else {
96
+ try {
97
+ // Prisma v4
96
98
  return require('@prisma/client/runtime');
97
99
  }
100
+ catch (_c) {
101
+ try {
102
+ // Prisma v5
103
+ return require('@prisma/client');
104
+ }
105
+ catch (err) {
106
+ if (process.env.ZENSTACK_TEST === '1') {
107
+ // running in test, try cwd
108
+ try {
109
+ return require(path_1.default.join(process.cwd(), 'node_modules/@prisma/client/runtime'));
110
+ }
111
+ catch (_d) {
112
+ return require(path_1.default.join(process.cwd(), 'node_modules/@prisma/client'));
113
+ }
114
+ }
115
+ else {
116
+ throw err;
117
+ }
118
+ }
119
+ }
98
120
  }
99
121
  function prismaClientValidationError(prisma, ...args) {
100
122
  if (!_PrismaClientValidationError) {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/enhancements/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/enhancements/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { FieldInfo } from '../types';
2
+ import { ModelMeta } from './types';
3
+ /**
4
+ * Context for visiting
5
+ */
6
+ export type WhereVisitorContext = {
7
+ /**
8
+ * Parent data, can be used to replace fields
9
+ */
10
+ parent: any;
11
+ /**
12
+ * Current field, undefined if toplevel
13
+ */
14
+ field?: FieldInfo;
15
+ };
16
+ /**
17
+ * WhereVisitor's callback actions
18
+ */
19
+ export type WhereVisitorCallback = {
20
+ field?: (field: FieldInfo, data: any) => Promise<unknown>;
21
+ };
22
+ /**
23
+ * Recursive visitor for where payload
24
+ */
25
+ export declare class WhereVisitor {
26
+ private readonly modelMeta;
27
+ private readonly callback;
28
+ constructor(modelMeta: ModelMeta, callback: WhereVisitorCallback);
29
+ /**
30
+ * Start visiting
31
+ */
32
+ visit(model: string, where: any): Promise<void>;
33
+ }
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */
3
+ /* eslint-disable @typescript-eslint/no-explicit-any */
4
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
5
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
6
+ return new (P || (P = Promise))(function (resolve, reject) {
7
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
8
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
9
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
10
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
11
+ });
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.WhereVisitor = void 0;
15
+ const model_meta_1 = require("./model-meta");
16
+ const utils_1 = require("./utils");
17
+ const FILTER_OPERATORS = [
18
+ 'equals',
19
+ 'not',
20
+ 'in',
21
+ 'notIn',
22
+ 'lt',
23
+ 'lte',
24
+ 'gt',
25
+ 'gte',
26
+ 'contains',
27
+ 'search',
28
+ 'startsWith',
29
+ 'endsWith',
30
+ ];
31
+ const RELATION_FILTER_OPERATORS = ['is', 'isNot', 'some', 'every', 'none'];
32
+ /**
33
+ * Recursive visitor for where payload
34
+ */
35
+ class WhereVisitor {
36
+ constructor(modelMeta, callback) {
37
+ this.modelMeta = modelMeta;
38
+ this.callback = callback;
39
+ }
40
+ /**
41
+ * Start visiting
42
+ */
43
+ visit(model, where) {
44
+ var _a, _b, _c, _d;
45
+ return __awaiter(this, void 0, void 0, function* () {
46
+ if (!where) {
47
+ return;
48
+ }
49
+ for (const [k, v] of Object.entries(where)) {
50
+ if (['AND', 'OR', 'NOT'].includes(k)) {
51
+ for (const item of (0, utils_1.enumerate)(v)) {
52
+ yield this.visit(model, item);
53
+ }
54
+ continue;
55
+ }
56
+ if (RELATION_FILTER_OPERATORS.includes(k)) {
57
+ // visit into filter body
58
+ yield this.visit(model, v);
59
+ continue;
60
+ }
61
+ const field = (0, model_meta_1.resolveField)(this.modelMeta, model, k);
62
+ if (!field) {
63
+ continue;
64
+ }
65
+ if (typeof v === 'object') {
66
+ const filterOp = Object.keys(v).find((f) => FILTER_OPERATORS.includes(f));
67
+ if (filterOp) {
68
+ // reach into filter value
69
+ const newValue = yield ((_b = (_a = this.callback).field) === null || _b === void 0 ? void 0 : _b.call(_a, field, v[filterOp]));
70
+ v[filterOp] = newValue;
71
+ continue;
72
+ }
73
+ if (Object.keys(v).some((f) => RELATION_FILTER_OPERATORS.includes(f))) {
74
+ // filter payload
75
+ yield this.visit(field.type, v);
76
+ continue;
77
+ }
78
+ }
79
+ // scalar field
80
+ const newValue = yield ((_d = (_c = this.callback).field) === null || _d === void 0 ? void 0 : _d.call(_c, field, v));
81
+ where[k] = newValue;
82
+ }
83
+ });
84
+ }
85
+ }
86
+ exports.WhereVisitor = WhereVisitor;
87
+ //# sourceMappingURL=where-visitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"where-visitor.js","sourceRoot":"","sources":["../../src/enhancements/where-visitor.ts"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,uDAAuD;;;;;;;;;;;;AAGvD,6CAA4C;AAE5C,mCAAoC;AAwBpC,MAAM,gBAAgB,GAAG;IACrB,QAAQ;IACR,KAAK;IACL,IAAI;IACJ,OAAO;IACP,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,KAAK;IACL,UAAU;IACV,QAAQ;IACR,YAAY;IACZ,UAAU;CACb,CAAC;AAEF,MAAM,yBAAyB,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAE3E;;GAEG;AACH,MAAa,YAAY;IACrB,YAA6B,SAAoB,EAAmB,QAA8B;QAArE,cAAS,GAAT,SAAS,CAAW;QAAmB,aAAQ,GAAR,QAAQ,CAAsB;IAAG,CAAC;IAEtG;;OAEG;IACG,KAAK,CAAC,KAAa,EAAE,KAAU;;;YACjC,IAAI,CAAC,KAAK,EAAE;gBACR,OAAO;aACV;YAED,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAM,KAAK,CAAC,EAAE;gBAC7C,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;oBAClC,KAAK,MAAM,IAAI,IAAI,IAAA,iBAAS,EAAC,CAAC,CAAC,EAAE;wBAC7B,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;qBACjC;oBACD,SAAS;iBACZ;gBAED,IAAI,yBAAyB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;oBACvC,yBAAyB;oBACzB,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;oBAC3B,SAAS;iBACZ;gBAED,MAAM,KAAK,GAAG,IAAA,yBAAY,EAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;gBACrD,IAAI,CAAC,KAAK,EAAE;oBACR,SAAS;iBACZ;gBAED,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;oBACvB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1E,IAAI,QAAQ,EAAE;wBACV,0BAA0B;wBAC1B,MAAM,QAAQ,GAAG,MAAM,CAAA,MAAA,MAAA,IAAI,CAAC,QAAQ,EAAC,KAAK,mDAAG,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA,CAAC;wBACjE,CAAC,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;wBACvB,SAAS;qBACZ;oBAED,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;wBACnE,iBAAiB;wBACjB,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;wBAChC,SAAS;qBACZ;iBACJ;gBAED,eAAe;gBACf,MAAM,QAAQ,GAAG,MAAM,CAAA,MAAA,MAAA,IAAI,CAAC,QAAQ,EAAC,KAAK,mDAAG,KAAK,EAAE,CAAC,CAAC,CAAA,CAAC;gBACvD,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;aACvB;;KACJ;CACJ;AAnDD,oCAmDC"}
package/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
+ export * from './constants';
1
2
  export * from './enhancements';
2
- export * from './enhancements/policy';
3
+ export * from './error';
3
4
  export * from './types';
4
5
  export * from './validation';
5
- export * from './error';
package/index.js CHANGED
@@ -14,9 +14,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./constants"), exports);
17
18
  __exportStar(require("./enhancements"), exports);
18
- __exportStar(require("./enhancements/policy"), exports);
19
+ __exportStar(require("./error"), exports);
19
20
  __exportStar(require("./types"), exports);
20
21
  __exportStar(require("./validation"), exports);
21
- __exportStar(require("./error"), exports);
22
22
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,wDAAsC;AACtC,0CAAwB;AACxB,+CAA6B;AAC7B,0CAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,iDAA+B;AAC/B,0CAAwB;AACxB,0CAAwB;AACxB,+CAA6B"}
package/package.json CHANGED
@@ -1,12 +1,34 @@
1
1
  {
2
2
  "name": "@zenstackhq/runtime",
3
3
  "displayName": "ZenStack Runtime Library",
4
- "version": "1.0.0-beta.1",
4
+ "version": "1.0.0-beta.10",
5
5
  "description": "Runtime of ZenStack for both client-side and server-side environments.",
6
6
  "repository": {
7
7
  "type": "git",
8
8
  "url": "https://github.com/zenstackhq/zenstack"
9
9
  },
10
+ "main": "index.js",
11
+ "types": "index.d.ts",
12
+ "exports": {
13
+ ".": {
14
+ "default": "./index.js"
15
+ },
16
+ "./zod": {
17
+ "default": "./zod/index.js"
18
+ },
19
+ "./zod/input": {
20
+ "default": "./zod/input.js"
21
+ },
22
+ "./zod/models": {
23
+ "default": "./zod/models.js"
24
+ },
25
+ "./browser": {
26
+ "import": "./browser/index.mjs",
27
+ "require": "./browser/index.js",
28
+ "default": "./browser/index.js",
29
+ "types": "./browser/index.d.ts"
30
+ }
31
+ },
10
32
  "publishConfig": {
11
33
  "directory": "dist",
12
34
  "linkDirectory": true
@@ -15,6 +37,7 @@
15
37
  "@paralleldrive/cuid2": "^2.2.0",
16
38
  "@types/bcryptjs": "^2.4.2",
17
39
  "bcryptjs": "^2.4.3",
40
+ "buffer": "^6.0.3",
18
41
  "change-case": "^4.1.2",
19
42
  "colors": "1.4.0",
20
43
  "decimal.js": "^10.4.2",
@@ -23,12 +46,10 @@
23
46
  "pluralize": "^8.0.0",
24
47
  "superjson": "^1.11.0",
25
48
  "tslib": "^2.4.1",
49
+ "upper-case-first": "^2.0.2",
26
50
  "zod": "3.21.1",
27
51
  "zod-validation-error": "^0.2.1"
28
52
  },
29
- "peerDependencies": {
30
- "@prisma/client": "^4.0.0"
31
- },
32
53
  "author": {
33
54
  "name": "ZenStack Team"
34
55
  },
@@ -37,8 +58,7 @@
37
58
  "devDependencies": {
38
59
  "@types/bcryptjs": "^2.4.2",
39
60
  "@types/jest": "^29.5.0",
40
- "@types/lower-case-first": "^1.0.1",
41
- "@types/node": "^14.18.29",
61
+ "@types/node": "^18.0.0",
42
62
  "@types/pluralize": "^0.0.29",
43
63
  "copyfiles": "^2.4.1",
44
64
  "rimraf": "^3.0.2",
@@ -46,8 +66,8 @@
46
66
  },
47
67
  "scripts": {
48
68
  "clean": "rimraf dist",
49
- "build": "pnpm lint && pnpm clean && tsc && copyfiles ./package.json ./README.md ../../LICENSE dist",
50
- "watch": "tsc --watch",
69
+ "build": "pnpm lint && pnpm clean && tsc && tsup-node && copyfiles ./package.json ./README.md ../../LICENSE dist && copyfiles -u1 'res/**/*' dist && pnpm pack dist --pack-destination '../../../.build'",
70
+ "watch": "concurrently \"tsc --watch\" \"tsup-node --watch\"",
51
71
  "lint": "eslint src --ext ts",
52
72
  "publish-dev": "pnpm publish --tag dev"
53
73
  }
package/zod/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * as models from './models';
2
+ export * as input from './input';
package/zod/index.js ADDED
@@ -0,0 +1,4 @@
1
+ module.exports = {
2
+ models: require('./models'),
3
+ input: require('./input'),
4
+ };
package/zod/input.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from '.zenstack/zod/input';
package/zod/input.js ADDED
@@ -0,0 +1,8 @@
1
+ let schemas;
2
+ try {
3
+ schemas = require('.zenstack/zod/input/index');
4
+ } catch {}
5
+
6
+ module.exports = schemas && {
7
+ ...schemas,
8
+ };
@@ -0,0 +1 @@
1
+ export * from '.zenstack/zod/models';
package/zod/models.js ADDED
@@ -0,0 +1,8 @@
1
+ let schemas;
2
+ try {
3
+ schemas = require('.zenstack/zod/models/index');
4
+ } catch {}
5
+
6
+ module.exports = schemas && {
7
+ ...schemas,
8
+ };
@@ -1 +0,0 @@
1
- export declare function registerSerializers(): void;
@@ -1,22 +0,0 @@
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.registerSerializers = void 0;
7
- const decimal_js_1 = __importDefault(require("decimal.js"));
8
- const superjson_1 = __importDefault(require("superjson"));
9
- function registerSerializers() {
10
- superjson_1.default.registerCustom({
11
- isApplicable: (v) => Buffer.isBuffer(v),
12
- serialize: (v) => JSON.stringify(v.toJSON().data),
13
- deserialize: (v) => Buffer.from(JSON.parse(v)),
14
- }, 'Buffer');
15
- superjson_1.default.registerCustom({
16
- isApplicable: (v) => decimal_js_1.default.isDecimal(v),
17
- serialize: (v) => v.toJSON(),
18
- deserialize: (v) => new decimal_js_1.default(v),
19
- }, 'decimal.js');
20
- }
21
- exports.registerSerializers = registerSerializers;
22
- //# sourceMappingURL=serialization-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"serialization-utils.js","sourceRoot":"","sources":["../src/serialization-utils.ts"],"names":[],"mappings":";;;;;;AAAA,4DAAiC;AACjC,0DAAkC;AAElC,SAAgB,mBAAmB;IAC/B,mBAAS,CAAC,cAAc,CACpB;QACI,YAAY,EAAE,CAAC,CAAC,EAAe,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QACpD,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;QACjD,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACjD,EACD,QAAQ,CACX,CAAC;IACF,mBAAS,CAAC,cAAc,CACpB;QACI,YAAY,EAAE,CAAC,CAAC,EAAgB,EAAE,CAAC,oBAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QACvD,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE;QAC5B,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,oBAAO,CAAC,CAAC,CAAC;KACrC,EACD,YAAY,CACf,CAAC;AACN,CAAC;AAjBD,kDAiBC"}
package/zod.d.ts DELETED
@@ -1,10 +0,0 @@
1
- import z from 'zod';
2
- import { DbOperations } from './types';
3
- /**
4
- * Mapping from model type name to zod schema for Prisma operations
5
- */
6
- export type ModelZodSchema = Record<string, Record<keyof DbOperations, z.ZodType>>;
7
- /**
8
- * Load zod schema from standard location.
9
- */
10
- export declare function getModelZodSchemas(): ModelZodSchema;
package/zod.js DELETED
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getModelZodSchemas = void 0;
4
- /**
5
- * Load zod schema from standard location.
6
- */
7
- function getModelZodSchemas() {
8
- try {
9
- // eslint-disable-next-line @typescript-eslint/no-var-requires
10
- return require('.zenstack/zod').default;
11
- }
12
- catch (_a) {
13
- throw new Error('Zod schemas cannot be loaded. Please make sure "@core/zod" plugin is enabled in schema.zmodel.');
14
- }
15
- }
16
- exports.getModelZodSchemas = getModelZodSchemas;
17
- //# sourceMappingURL=zod.js.map
package/zod.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"zod.js","sourceRoot":"","sources":["../src/zod.ts"],"names":[],"mappings":";;;AAQA;;GAEG;AACH,SAAgB,kBAAkB;IAC9B,IAAI;QACA,8DAA8D;QAC9D,OAAO,OAAO,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC;KAC3C;IAAC,WAAM;QACJ,MAAM,IAAI,KAAK,CACX,gGAAgG,CACnG,CAAC;KACL;AACL,CAAC;AATD,gDASC"}