@zenstackhq/testtools 1.0.0-beta.2 → 1.0.0-beta.21
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/db.d.ts +2 -0
- package/db.js +32 -0
- package/db.js.map +1 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/package.json +11 -10
- package/package.template.json +5 -4
- package/schema.d.ts +25 -16
- package/schema.js +79 -35
- package/schema.js.map +1 -1
package/db.d.ts
ADDED
package/db.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.dropPostgresDb = exports.createPostgresDb = void 0;
|
|
13
|
+
const pg_1 = require("pg");
|
|
14
|
+
const USERNAME = 'postgres';
|
|
15
|
+
const PASSWORD = 'abc123';
|
|
16
|
+
function createPostgresDb(db) {
|
|
17
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
18
|
+
const pool = new pg_1.Pool({ user: USERNAME, password: PASSWORD });
|
|
19
|
+
yield pool.query(`DROP DATABASE IF EXISTS "${db}";`);
|
|
20
|
+
yield pool.query(`CREATE DATABASE "${db}";`);
|
|
21
|
+
return `postgresql://${USERNAME}:${PASSWORD}@localhost:5432/${db}`;
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
exports.createPostgresDb = createPostgresDb;
|
|
25
|
+
function dropPostgresDb(db) {
|
|
26
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
27
|
+
const pool = new pg_1.Pool({ user: USERNAME, password: PASSWORD });
|
|
28
|
+
yield pool.query(`DROP DATABASE IF EXISTS "${db}";`);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
exports.dropPostgresDb = dropPostgresDb;
|
|
32
|
+
//# sourceMappingURL=db.js.map
|
package/db.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2BAA0B;AAE1B,MAAM,QAAQ,GAAG,UAAU,CAAC;AAC5B,MAAM,QAAQ,GAAG,QAAQ,CAAC;AAE1B,SAAsB,gBAAgB,CAAC,EAAU;;QAC7C,MAAM,IAAI,GAAG,IAAI,SAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9D,MAAM,IAAI,CAAC,KAAK,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAC;QACrD,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;QAC7C,OAAO,gBAAgB,QAAQ,IAAI,QAAQ,mBAAmB,EAAE,EAAE,CAAC;IACvE,CAAC;CAAA;AALD,4CAKC;AAED,SAAsB,cAAc,CAAC,EAAU;;QAC3C,MAAM,IAAI,GAAG,IAAI,SAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9D,MAAM,IAAI,CAAC,KAAK,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC;CAAA;AAHD,wCAGC"}
|
package/index.d.ts
CHANGED
package/index.js
CHANGED
|
@@ -15,4 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./schema"), exports);
|
|
18
|
+
__exportStar(require("./db"), exports);
|
|
18
19
|
//# 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,2CAAyB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,uCAAqB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zenstackhq/testtools",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.21",
|
|
4
4
|
"description": "ZenStack Test Tools",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"publishConfig": {
|
|
@@ -11,17 +11,18 @@
|
|
|
11
11
|
"author": "",
|
|
12
12
|
"license": "MIT",
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@prisma/
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"prisma": "~4.7.0",
|
|
14
|
+
"@prisma/generator-helper": "^5.0.0",
|
|
15
|
+
"json5": "^2.2.3",
|
|
16
|
+
"pg": "^8.11.1",
|
|
18
17
|
"tmp": "^0.2.1",
|
|
19
|
-
"@zenstackhq/language": "1.0.0-beta.
|
|
20
|
-
"@zenstackhq/runtime": "1.0.0-beta.
|
|
21
|
-
"
|
|
18
|
+
"@zenstackhq/language": "1.0.0-beta.21",
|
|
19
|
+
"@zenstackhq/runtime": "1.0.0-beta.21",
|
|
20
|
+
"@zenstackhq/sdk": "1.0.0-beta.21",
|
|
21
|
+
"zenstack": "1.0.0-beta.21"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
|
-
"@types/node": "^18.
|
|
24
|
+
"@types/node": "^18.0.0",
|
|
25
|
+
"@types/pg": "^8.10.2",
|
|
25
26
|
"@types/tmp": "^0.2.3",
|
|
26
27
|
"copyfiles": "^2.4.1",
|
|
27
28
|
"rimraf": "^3.0.2",
|
|
@@ -30,7 +31,7 @@
|
|
|
30
31
|
"scripts": {
|
|
31
32
|
"clean": "rimraf dist",
|
|
32
33
|
"lint": "eslint src --ext ts",
|
|
33
|
-
"build": "pnpm lint && pnpm clean && tsc && copyfiles ./package.json ./LICENSE ./README.md dist && copyfiles -u 1 src/package.template.json src/.npmrc.template dist",
|
|
34
|
+
"build": "pnpm lint && pnpm clean && tsc && copyfiles ./package.json ./LICENSE ./README.md dist && copyfiles -u 1 src/package.template.json src/.npmrc.template dist && pnpm pack dist --pack-destination '../../../.build'",
|
|
34
35
|
"watch": "tsc --watch"
|
|
35
36
|
}
|
|
36
37
|
}
|
package/package.template.json
CHANGED
|
@@ -7,14 +7,15 @@
|
|
|
7
7
|
"author": "",
|
|
8
8
|
"license": "ISC",
|
|
9
9
|
"dependencies": {
|
|
10
|
-
"@prisma/client": "^4.
|
|
10
|
+
"@prisma/client": "^4.8.0",
|
|
11
11
|
"@zenstackhq/runtime": "file:<root>/packages/runtime/dist",
|
|
12
|
-
"@zenstackhq/
|
|
12
|
+
"@zenstackhq/swr": "file:<root>/packages/plugins/swr/dist",
|
|
13
13
|
"@zenstackhq/trpc": "file:<root>/packages/plugins/trpc/dist",
|
|
14
14
|
"@zenstackhq/openapi": "file:<root>/packages/plugins/openapi/dist",
|
|
15
|
-
"prisma": "^4.
|
|
15
|
+
"prisma": "^4.8.0",
|
|
16
16
|
"typescript": "^4.9.3",
|
|
17
17
|
"zenstack": "file:<root>/packages/schema/dist",
|
|
18
|
-
"zod": "3.21.1"
|
|
18
|
+
"zod": "3.21.1",
|
|
19
|
+
"decimal.js": "^10.4.2"
|
|
19
20
|
}
|
|
20
21
|
}
|
package/schema.d.ts
CHANGED
|
@@ -12,39 +12,48 @@ import { type AuthUser, type DbOperations } from '@zenstackhq/runtime';
|
|
|
12
12
|
}`
|
|
13
13
|
*/
|
|
14
14
|
export declare const FILE_SPLITTER = "#FILE_SPLITTER#";
|
|
15
|
-
export type
|
|
16
|
-
[key in keyof DbOperations]: (...args: any[]) => Promise<any>;
|
|
17
|
-
};
|
|
18
|
-
export type WeakDbClientContract = Record<string, WeakDbOperations> & {
|
|
15
|
+
export type FullDbClientContract = Record<string, DbOperations> & {
|
|
19
16
|
$on(eventType: any, callback: (event: any) => void): void;
|
|
20
17
|
$use(cb: any): void;
|
|
21
18
|
$disconnect: () => Promise<void>;
|
|
22
|
-
$transaction: (input: ((tx:
|
|
19
|
+
$transaction: (input: ((tx: FullDbClientContract) => Promise<any>) | any[], options?: any) => Promise<any>;
|
|
23
20
|
$queryRaw: (query: TemplateStringsArray, ...args: any[]) => Promise<any>;
|
|
24
21
|
$executeRaw: (query: TemplateStringsArray, ...args: any[]) => Promise<number>;
|
|
25
|
-
$extends: (args: any) =>
|
|
22
|
+
$extends: (args: any) => FullDbClientContract;
|
|
26
23
|
};
|
|
27
24
|
export declare function run(cmd: string, env?: Record<string, string>, cwd?: string): void;
|
|
28
25
|
export declare function getWorkspaceRoot(start: string): string | undefined;
|
|
29
26
|
export declare function getWorkspaceNpmCacheFolder(start: string): string;
|
|
30
|
-
export
|
|
27
|
+
export type SchemaLoadOptions = {
|
|
28
|
+
addPrelude?: boolean;
|
|
29
|
+
pushDb?: boolean;
|
|
30
|
+
fullZod?: boolean;
|
|
31
|
+
extraDependencies?: string[];
|
|
32
|
+
compile?: boolean;
|
|
33
|
+
customSchemaFilePath?: string;
|
|
34
|
+
logPrismaQuery?: boolean;
|
|
35
|
+
provider?: 'sqlite' | 'postgresql';
|
|
36
|
+
dbUrl?: string;
|
|
37
|
+
pulseApiKey?: string;
|
|
38
|
+
};
|
|
39
|
+
export declare function loadSchemaFromFile(schemaFile: string, options?: SchemaLoadOptions): Promise<{
|
|
31
40
|
projectDir: string;
|
|
32
41
|
prisma: any;
|
|
33
|
-
withPolicy: (user?: AuthUser | undefined) =>
|
|
34
|
-
withOmit: () =>
|
|
35
|
-
withPassword: () =>
|
|
36
|
-
|
|
42
|
+
withPolicy: (user?: AuthUser | undefined) => FullDbClientContract;
|
|
43
|
+
withOmit: () => FullDbClientContract;
|
|
44
|
+
withPassword: () => FullDbClientContract;
|
|
45
|
+
enhance: (user?: AuthUser | undefined) => FullDbClientContract;
|
|
37
46
|
policy: any;
|
|
38
47
|
modelMeta: any;
|
|
39
48
|
zodSchemas: any;
|
|
40
49
|
}>;
|
|
41
|
-
export declare function loadSchema(schema: string,
|
|
50
|
+
export declare function loadSchema(schema: string, options?: SchemaLoadOptions): Promise<{
|
|
42
51
|
projectDir: string;
|
|
43
52
|
prisma: any;
|
|
44
|
-
withPolicy: (user?: AuthUser) =>
|
|
45
|
-
withOmit: () =>
|
|
46
|
-
withPassword: () =>
|
|
47
|
-
|
|
53
|
+
withPolicy: (user?: AuthUser) => FullDbClientContract;
|
|
54
|
+
withOmit: () => FullDbClientContract;
|
|
55
|
+
withPassword: () => FullDbClientContract;
|
|
56
|
+
enhance: (user?: AuthUser) => FullDbClientContract;
|
|
48
57
|
policy: any;
|
|
49
58
|
modelMeta: any;
|
|
50
59
|
zodSchemas: any;
|
package/schema.js
CHANGED
|
@@ -36,10 +36,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
36
36
|
};
|
|
37
37
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
38
|
exports.loadZModelAndDmmf = exports.loadSchema = exports.loadSchemaFromFile = exports.getWorkspaceNpmCacheFolder = exports.getWorkspaceRoot = exports.run = exports.FILE_SPLITTER = void 0;
|
|
39
|
-
const internals_1 = require("@prisma/internals");
|
|
40
39
|
const runtime_1 = require("@zenstackhq/runtime");
|
|
40
|
+
const sdk_1 = require("@zenstackhq/sdk");
|
|
41
41
|
const child_process_1 = require("child_process");
|
|
42
42
|
const fs = __importStar(require("fs"));
|
|
43
|
+
const json5_1 = __importDefault(require("json5"));
|
|
43
44
|
const path = __importStar(require("path"));
|
|
44
45
|
const tmp_1 = __importDefault(require("tmp"));
|
|
45
46
|
const cli_util_1 = require("zenstack/cli/cli-util");
|
|
@@ -56,12 +57,14 @@ const prisma_1 = __importDefault(require("zenstack/plugins/prisma"));
|
|
|
56
57
|
*/
|
|
57
58
|
exports.FILE_SPLITTER = '#FILE_SPLITTER#';
|
|
58
59
|
function run(cmd, env, cwd) {
|
|
60
|
+
const start = Date.now();
|
|
59
61
|
(0, child_process_1.execSync)(cmd, {
|
|
60
62
|
stdio: 'pipe',
|
|
61
63
|
encoding: 'utf-8',
|
|
62
64
|
env: Object.assign(Object.assign(Object.assign({}, process.env), { DO_NOT_TRACK: '1' }), env),
|
|
63
65
|
cwd,
|
|
64
66
|
});
|
|
67
|
+
console.log('Execution took', Date.now() - start, 'ms', '-', cmd);
|
|
65
68
|
}
|
|
66
69
|
exports.run = run;
|
|
67
70
|
function normalizePath(p) {
|
|
@@ -85,10 +88,16 @@ function getWorkspaceNpmCacheFolder(start) {
|
|
|
85
88
|
return root ? path.join(root, '.npmcache') : './.npmcache';
|
|
86
89
|
}
|
|
87
90
|
exports.getWorkspaceNpmCacheFolder = getWorkspaceNpmCacheFolder;
|
|
88
|
-
|
|
91
|
+
function makePrelude(options) {
|
|
92
|
+
var _a;
|
|
93
|
+
let dbUrl = (_a = options.dbUrl) !== null && _a !== void 0 ? _a : (options.provider === 'postgresql' ? 'env("DATABASE_URL")' : 'file:./dev.db');
|
|
94
|
+
if (!dbUrl.includes('env(') && !dbUrl.startsWith("'") && !dbUrl.startsWith('"')) {
|
|
95
|
+
dbUrl = `'${dbUrl}'`;
|
|
96
|
+
}
|
|
97
|
+
return `
|
|
89
98
|
datasource db {
|
|
90
|
-
provider = '
|
|
91
|
-
url =
|
|
99
|
+
provider = '${options.provider}'
|
|
100
|
+
url = ${dbUrl}
|
|
92
101
|
}
|
|
93
102
|
|
|
94
103
|
generator js {
|
|
@@ -96,30 +105,32 @@ generator js {
|
|
|
96
105
|
previewFeatures = ['clientExtensions']
|
|
97
106
|
}
|
|
98
107
|
|
|
99
|
-
plugin meta {
|
|
100
|
-
provider = '@core/model-meta'
|
|
101
|
-
output = '.zenstack'
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
plugin policy {
|
|
105
|
-
provider = '@core/access-policy'
|
|
106
|
-
output = '.zenstack'
|
|
107
|
-
}
|
|
108
|
-
|
|
109
108
|
plugin zod {
|
|
110
109
|
provider = '@core/zod'
|
|
111
|
-
|
|
110
|
+
modelOnly = ${!options.fullZod}
|
|
112
111
|
}
|
|
113
112
|
`;
|
|
114
|
-
|
|
113
|
+
}
|
|
114
|
+
const defaultOptions = {
|
|
115
|
+
addPrelude: true,
|
|
116
|
+
pushDb: true,
|
|
117
|
+
fullZod: false,
|
|
118
|
+
extraDependencies: [],
|
|
119
|
+
compile: false,
|
|
120
|
+
logPrismaQuery: false,
|
|
121
|
+
provider: 'sqlite',
|
|
122
|
+
};
|
|
123
|
+
function loadSchemaFromFile(schemaFile, options) {
|
|
115
124
|
return __awaiter(this, void 0, void 0, function* () {
|
|
116
125
|
const content = fs.readFileSync(schemaFile, { encoding: 'utf-8' });
|
|
117
|
-
return loadSchema(content,
|
|
126
|
+
return loadSchema(content, options);
|
|
118
127
|
});
|
|
119
128
|
}
|
|
120
129
|
exports.loadSchemaFromFile = loadSchemaFromFile;
|
|
121
|
-
function loadSchema(schema,
|
|
130
|
+
function loadSchema(schema, options) {
|
|
131
|
+
var _a, _b;
|
|
122
132
|
return __awaiter(this, void 0, void 0, function* () {
|
|
133
|
+
const opt = Object.assign(Object.assign({}, defaultOptions), options);
|
|
123
134
|
const { name: projectRoot } = tmp_1.default.dirSync({ unsafeCleanup: true });
|
|
124
135
|
const root = getWorkspaceRoot(__dirname);
|
|
125
136
|
if (!root) {
|
|
@@ -143,9 +154,9 @@ function loadSchema(schema, addPrelude = true, pushDb = true, extraDependencies
|
|
|
143
154
|
if (index === 0) {
|
|
144
155
|
// The first file is the main schema file
|
|
145
156
|
zmodelPath = path.join(projectRoot, fileName);
|
|
146
|
-
if (addPrelude) {
|
|
157
|
+
if (opt.addPrelude) {
|
|
147
158
|
// plugin need to be added after import statement
|
|
148
|
-
fileContent = `${fileContent}\n${
|
|
159
|
+
fileContent = `${fileContent}\n${makePrelude(opt)}`;
|
|
149
160
|
}
|
|
150
161
|
}
|
|
151
162
|
fileContent = fileContent.replaceAll('$projectRoot', projectRoot);
|
|
@@ -155,9 +166,9 @@ function loadSchema(schema, addPrelude = true, pushDb = true, extraDependencies
|
|
|
155
166
|
}
|
|
156
167
|
else {
|
|
157
168
|
schema = schema.replaceAll('$projectRoot', projectRoot);
|
|
158
|
-
const content = addPrelude ? `${
|
|
159
|
-
if (customSchemaFilePath) {
|
|
160
|
-
zmodelPath = path.join(projectRoot, customSchemaFilePath);
|
|
169
|
+
const content = opt.addPrelude ? `${makePrelude(opt)}\n${schema}` : schema;
|
|
170
|
+
if (opt.customSchemaFilePath) {
|
|
171
|
+
zmodelPath = path.join(projectRoot, opt.customSchemaFilePath);
|
|
161
172
|
fs.mkdirSync(path.dirname(zmodelPath), { recursive: true });
|
|
162
173
|
fs.writeFileSync(zmodelPath, content);
|
|
163
174
|
}
|
|
@@ -166,7 +177,7 @@ function loadSchema(schema, addPrelude = true, pushDb = true, extraDependencies
|
|
|
166
177
|
}
|
|
167
178
|
}
|
|
168
179
|
run('npm install');
|
|
169
|
-
if (customSchemaFilePath) {
|
|
180
|
+
if (opt.customSchemaFilePath) {
|
|
170
181
|
run(`npx zenstack generate --schema ${zmodelPath} --no-dependency-check`, {
|
|
171
182
|
NODE_PATH: './node_modules',
|
|
172
183
|
});
|
|
@@ -174,30 +185,63 @@ function loadSchema(schema, addPrelude = true, pushDb = true, extraDependencies
|
|
|
174
185
|
else {
|
|
175
186
|
run('npx zenstack generate --no-dependency-check', { NODE_PATH: './node_modules' });
|
|
176
187
|
}
|
|
177
|
-
if (pushDb) {
|
|
188
|
+
if (opt.pushDb) {
|
|
178
189
|
run('npx prisma db push');
|
|
179
190
|
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
191
|
+
if (opt.pulseApiKey) {
|
|
192
|
+
(_a = opt.extraDependencies) === null || _a === void 0 ? void 0 : _a.push('@prisma/extension-pulse');
|
|
193
|
+
}
|
|
194
|
+
(_b = opt.extraDependencies) === null || _b === void 0 ? void 0 : _b.forEach((dep) => {
|
|
183
195
|
console.log(`Installing dependency ${dep}`);
|
|
184
196
|
run(`npm install ${dep}`);
|
|
185
197
|
});
|
|
186
|
-
|
|
198
|
+
const PrismaClient = require(path.join(projectRoot, 'node_modules/.prisma/client')).PrismaClient;
|
|
199
|
+
let prisma = new PrismaClient({ log: ['info', 'warn', 'error'] });
|
|
200
|
+
if (opt.pulseApiKey) {
|
|
201
|
+
const withPulse = require(path.join(projectRoot, 'node_modules/@prisma/extension-pulse/dist/cjs')).withPulse;
|
|
202
|
+
prisma = prisma.$extends(withPulse({ apiKey: opt.pulseApiKey }));
|
|
203
|
+
}
|
|
204
|
+
if (opt.compile) {
|
|
187
205
|
console.log('Compiling...');
|
|
188
206
|
run('npx tsc --init');
|
|
207
|
+
// add generated '.zenstack/zod' folder to typescript's search path,
|
|
208
|
+
// so that it can be resolved from symbolic-linked files
|
|
209
|
+
const tsconfig = json5_1.default.parse(fs.readFileSync(path.join(projectRoot, './tsconfig.json'), 'utf-8'));
|
|
210
|
+
tsconfig.compilerOptions.paths = {
|
|
211
|
+
'.zenstack/zod/input': ['./node_modules/.zenstack/zod/input/index.d.ts'],
|
|
212
|
+
};
|
|
213
|
+
fs.writeFileSync(path.join(projectRoot, './tsconfig.json'), JSON.stringify(tsconfig, null, 2));
|
|
189
214
|
run('npx tsc --project tsconfig.json');
|
|
190
215
|
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
216
|
+
let policy;
|
|
217
|
+
let modelMeta;
|
|
218
|
+
let zodSchemas;
|
|
219
|
+
const outputPath = path.join(projectRoot, 'node_modules');
|
|
220
|
+
try {
|
|
221
|
+
policy = require(path.join(outputPath, '.zenstack/policy')).default;
|
|
222
|
+
}
|
|
223
|
+
catch (_c) {
|
|
224
|
+
/* noop */
|
|
225
|
+
}
|
|
226
|
+
try {
|
|
227
|
+
modelMeta = require(path.join(outputPath, '.zenstack/model-meta')).default;
|
|
228
|
+
}
|
|
229
|
+
catch (_d) {
|
|
230
|
+
/* noop */
|
|
231
|
+
}
|
|
232
|
+
try {
|
|
233
|
+
zodSchemas = require(path.join(outputPath, '.zenstack/zod'));
|
|
234
|
+
}
|
|
235
|
+
catch (_e) {
|
|
236
|
+
/* noop */
|
|
237
|
+
}
|
|
194
238
|
return {
|
|
195
239
|
projectDir: projectRoot,
|
|
196
240
|
prisma,
|
|
197
|
-
withPolicy: (user) => (0, runtime_1.withPolicy)(prisma, { user }, { policy, modelMeta, logPrismaQuery }),
|
|
241
|
+
withPolicy: (user) => (0, runtime_1.withPolicy)(prisma, { user }, { policy, modelMeta, zodSchemas, logPrismaQuery: opt.logPrismaQuery }),
|
|
198
242
|
withOmit: () => (0, runtime_1.withOmit)(prisma, { modelMeta }),
|
|
199
243
|
withPassword: () => (0, runtime_1.withPassword)(prisma, { modelMeta }),
|
|
200
|
-
|
|
244
|
+
enhance: (user) => (0, runtime_1.enhance)(prisma, { user }, { policy, modelMeta, zodSchemas, logPrismaQuery: opt.logPrismaQuery }),
|
|
201
245
|
policy,
|
|
202
246
|
modelMeta,
|
|
203
247
|
zodSchemas,
|
|
@@ -224,7 +268,7 @@ function loadZModelAndDmmf(content) {
|
|
|
224
268
|
const { name: prismaFile } = tmp_1.default.fileSync({ postfix: '.prisma' });
|
|
225
269
|
yield (0, prisma_1.default)(model, { schemaPath: modelFile, name: 'Prisma', output: prismaFile, generateClient: false });
|
|
226
270
|
const prismaContent = fs.readFileSync(prismaFile, { encoding: 'utf-8' });
|
|
227
|
-
const dmmf = yield (0,
|
|
271
|
+
const dmmf = yield (0, sdk_1.getDMMF)({ datamodel: prismaContent });
|
|
228
272
|
return { model, dmmf, modelFile };
|
|
229
273
|
});
|
|
230
274
|
}
|
package/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,iDAAoH;AACpH,yCAA0C;AAC1C,iDAAyC;AACzC,uCAAyB;AACzB,kDAAyB;AACzB,2CAA6B;AAC7B,8CAAsB;AACtB,oDAAqD;AACrD,qEAAmD;AAEnD;;;;;;;;;EASE;AACW,QAAA,aAAa,GAAG,iBAAiB,CAAC;AAY/C,SAAgB,GAAG,CAAC,GAAW,EAAE,GAA4B,EAAE,GAAY;IACvE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,IAAA,wBAAQ,EAAC,GAAG,EAAE;QACV,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,OAAO;QACjB,GAAG,gDAAO,OAAO,CAAC,GAAG,KAAE,YAAY,EAAE,GAAG,KAAK,GAAG,CAAE;QAClD,GAAG;KACN,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACtE,CAAC;AATD,kBASC;AAED,SAAS,aAAa,CAAC,CAAS;IAC5B,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,SAAgB,gBAAgB,CAAC,KAAa;IAC1C,IAAI,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAChC,OAAO,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE;QACzB,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC,EAAE;YACvD,OAAO,IAAI,CAAC;SACf;aAAM;YACH,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;SAC5C;KACJ;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAVD,4CAUC;AAED,SAAgB,0BAA0B,CAAC,KAAa;IACpD,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACrC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;AAC/D,CAAC;AAHD,gEAGC;AAED,SAAS,WAAW,CAAC,OAA0B;;IAC3C,IAAI,KAAK,GAAG,MAAA,OAAO,CAAC,KAAK,mCAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;IAE3G,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;QAC7E,KAAK,GAAG,IAAI,KAAK,GAAG,CAAC;KACxB;IAED,OAAO;;kBAEO,OAAO,CAAC,QAAQ;YACtB,KAAK;;;;;;;;;;kBAUC,CAAC,OAAO,CAAC,OAAO;;CAEjC,CAAC;AACF,CAAC;AAeD,MAAM,cAAc,GAAsB;IACtC,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,KAAK;IACd,iBAAiB,EAAE,EAAE;IACrB,OAAO,EAAE,KAAK;IACd,cAAc,EAAE,KAAK;IACrB,QAAQ,EAAE,QAAQ;CACrB,CAAC;AAEF,SAAsB,kBAAkB,CAAC,UAAkB,EAAE,OAA2B;;QACpF,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QACnE,OAAO,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;CAAA;AAHD,gDAGC;AAED,SAAsB,UAAU,CAAC,MAAc,EAAE,OAA2B;;;QACxE,MAAM,GAAG,mCAAQ,cAAc,GAAK,OAAO,CAAE,CAAC;QAE9C,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,aAAG,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAEnE,MAAM,IAAI,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAEzC,IAAI,CAAC,IAAI,EAAE;YACP,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;SACpD;QAED,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QACzG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;QAEhG,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QACrG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;QAE5F,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAE3B,IAAI,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QAEzD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,qBAAa,CAAC,CAAC;QAE1C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAClB,iBAAiB;YACjB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBAC1B,6BAA6B;gBAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;gBACrD,IAAI,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;gBAChD,IAAI,KAAK,KAAK,CAAC,EAAE;oBACb,yCAAyC;oBACzC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;oBAC9C,IAAI,GAAG,CAAC,UAAU,EAAE;wBAChB,iDAAiD;wBACjD,WAAW,GAAG,GAAG,WAAW,KAAK,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;qBACvD;iBACJ;gBAED,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;gBAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;gBAClD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC;SACN;aAAM;YACH,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;YACxD,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;YAC3E,IAAI,GAAG,CAAC,oBAAoB,EAAE;gBAC1B,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,oBAAoB,CAAC,CAAC;gBAC9D,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5D,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;aACzC;iBAAM;gBACH,EAAE,CAAC,aAAa,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;aAC9C;SACJ;QAED,GAAG,CAAC,aAAa,CAAC,CAAC;QAEnB,IAAI,GAAG,CAAC,oBAAoB,EAAE;YAC1B,GAAG,CAAC,kCAAkC,UAAU,wBAAwB,EAAE;gBACtE,SAAS,EAAE,gBAAgB;aAC9B,CAAC,CAAC;SACN;aAAM;YACH,GAAG,CAAC,6CAA6C,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC;SACvF;QAED,IAAI,GAAG,CAAC,MAAM,EAAE;YACZ,GAAG,CAAC,oBAAoB,CAAC,CAAC;SAC7B;QAED,IAAI,GAAG,CAAC,WAAW,EAAE;YACjB,MAAA,GAAG,CAAC,iBAAiB,0CAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;SAC1D;QAED,MAAA,GAAG,CAAC,iBAAiB,0CAAE,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACnC,OAAO,CAAC,GAAG,CAAC,yBAAyB,GAAG,EAAE,CAAC,CAAC;YAC5C,GAAG,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,6BAA6B,CAAC,CAAC,CAAC,YAAY,CAAC;QACjG,IAAI,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QAElE,IAAI,GAAG,CAAC,WAAW,EAAE;YACjB,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,+CAA+C,CAAC,CAAC,CAAC,SAAS,CAAC;YAC7G,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;SACpE;QAED,IAAI,GAAG,CAAC,OAAO,EAAE;YACb,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC5B,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAEtB,oEAAoE;YACpE,wDAAwD;YACxD,MAAM,QAAQ,GAAG,eAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;YACjG,QAAQ,CAAC,eAAe,CAAC,KAAK,GAAG;gBAC7B,qBAAqB,EAAE,CAAC,+CAA+C,CAAC;aAC3E,CAAC;YACF,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/F,GAAG,CAAC,iCAAiC,CAAC,CAAC;SAC1C;QAED,IAAI,MAAW,CAAC;QAChB,IAAI,SAAc,CAAC;QACnB,IAAI,UAAe,CAAC;QAEpB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAE1D,IAAI;YACA,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC;SACvE;QAAC,WAAM;YACJ,UAAU;SACb;QACD,IAAI;YACA,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,sBAAsB,CAAC,CAAC,CAAC,OAAO,CAAC;SAC9E;QAAC,WAAM;YACJ,UAAU;SACb;QACD,IAAI;YACA,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC;SAChE;QAAC,WAAM;YACJ,UAAU;SACb;QAED,OAAO;YACH,UAAU,EAAE,WAAW;YACvB,MAAM;YACN,UAAU,EAAE,CAAC,IAAe,EAAE,EAAE,CAC5B,IAAA,oBAAU,EACN,MAAM,EACN,EAAE,IAAI,EAAE,EACR,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,CAAC,cAAc,EAAE,CACxE;YACL,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAA,kBAAQ,EAAuB,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC;YACrE,YAAY,EAAE,GAAG,EAAE,CAAC,IAAA,sBAAY,EAAuB,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC;YAC7E,OAAO,EAAE,CAAC,IAAe,EAAE,EAAE,CACzB,IAAA,iBAAO,EACH,MAAM,EACN,EAAE,IAAI,EAAE,EACR,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,CAAC,cAAc,EAAE,CACxE;YACL,MAAM;YACN,SAAS;YACT,UAAU;SACb,CAAC;;CACL;AAhJD,gCAgJC;AAED;;;;GAIG;AACH,SAAsB,iBAAiB,CACnC,OAAe;;QAEf,MAAM,OAAO,GAAG;;;;;CAKnB,CAAC;QAEE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,aAAG,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;QACjE,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,OAAO,KAAK,OAAO,EAAE,CAAC,CAAC;QAEtD,MAAM,KAAK,GAAG,MAAM,IAAA,uBAAY,EAAC,SAAS,CAAC,CAAC;QAE5C,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,aAAG,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;QAClE,MAAM,IAAA,gBAAY,EAAC,KAAK,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;QAEhH,MAAM,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QAEzE,MAAM,IAAI,GAAG,MAAM,IAAA,aAAO,EAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC;QACzD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACtC,CAAC;CAAA;AAtBD,8CAsBC"}
|