@zenstackhq/testtools 1.0.0-alpha.78 → 1.0.0-alpha.80

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zenstackhq/testtools",
3
- "version": "1.0.0-alpha.78",
3
+ "version": "1.0.0-alpha.80",
4
4
  "description": "ZenStack Test Tools",
5
5
  "main": "index.js",
6
6
  "publishConfig": {
@@ -12,14 +12,18 @@
12
12
  "license": "MIT",
13
13
  "dependencies": {
14
14
  "@prisma/client": "^4.7.0",
15
+ "@prisma/generator-helper": "^4.7.1",
16
+ "@prisma/internals": "^4.7.1",
17
+ "prisma": "~4.7.0",
15
18
  "tmp": "^0.2.1",
16
- "@zenstackhq/runtime": "1.0.0-alpha.78"
19
+ "@zenstackhq/runtime": "1.0.0-alpha.80",
20
+ "zenstack": "1.0.0-alpha.80",
21
+ "@zenstackhq/language": "1.0.0-alpha.80"
17
22
  },
18
23
  "devDependencies": {
19
24
  "@types/node": "^18.14.2",
20
25
  "@types/tmp": "^0.2.3",
21
26
  "copyfiles": "^2.4.1",
22
- "prisma": "~4.7.0",
23
27
  "rimraf": "^3.0.2",
24
28
  "typescript": "^4.9.5"
25
29
  },
package/schema.d.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import type { DMMF } from '@prisma/generator-helper';
2
+ import type { Model } from '@zenstackhq/language/ast';
1
3
  import { type AuthUser, type DbOperations } from '@zenstackhq/runtime';
2
4
  export type WeakDbOperations = {
3
5
  [key in keyof DbOperations]: (...args: any[]) => Promise<any>;
@@ -15,6 +17,7 @@ export declare function run(cmd: string, env?: Record<string, string>, cwd?: str
15
17
  export declare function getWorkspaceRoot(start: string): string | undefined;
16
18
  export declare function getWorkspaceNpmCacheFolder(start: string): string;
17
19
  export declare function loadSchemaFromFile(schemaFile: string, addPrelude?: boolean, pushDb?: boolean): Promise<{
20
+ projectDir: string;
18
21
  prisma: any;
19
22
  withPolicy: (user?: AuthUser | undefined) => WeakDbClientContract;
20
23
  withOmit: () => WeakDbClientContract;
@@ -22,7 +25,8 @@ export declare function loadSchemaFromFile(schemaFile: string, addPrelude?: bool
22
25
  withPresets: (user?: AuthUser | undefined) => WeakDbClientContract;
23
26
  zodSchemas: any;
24
27
  }>;
25
- export declare function loadSchema(schema: string, addPrelude?: boolean, pushDb?: boolean): Promise<{
28
+ export declare function loadSchema(schema: string, addPrelude?: boolean, pushDb?: boolean, extraDependencies?: string[], compile?: boolean): Promise<{
29
+ projectDir: string;
26
30
  prisma: any;
27
31
  withPolicy: (user?: AuthUser) => WeakDbClientContract;
28
32
  withOmit: () => WeakDbClientContract;
@@ -30,3 +34,13 @@ export declare function loadSchema(schema: string, addPrelude?: boolean, pushDb?
30
34
  withPresets: (user?: AuthUser) => WeakDbClientContract;
31
35
  zodSchemas: any;
32
36
  }>;
37
+ /**
38
+ * Load ZModel and Prisma DMM from a string without creating a NPM project.
39
+ * @param content
40
+ * @returns
41
+ */
42
+ export declare function loadZModelAndDmmf(content: string): Promise<{
43
+ model: Model;
44
+ dmmf: DMMF.Document;
45
+ modelFile: string;
46
+ }>;
package/schema.js CHANGED
@@ -35,14 +35,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
35
35
  return (mod && mod.__esModule) ? mod : { "default": mod };
36
36
  };
37
37
  Object.defineProperty(exports, "__esModule", { value: true });
38
- exports.loadSchema = exports.loadSchemaFromFile = exports.getWorkspaceNpmCacheFolder = exports.getWorkspaceRoot = exports.run = void 0;
39
- /* eslint-disable @typescript-eslint/no-var-requires */
40
- /* eslint-disable @typescript-eslint/no-explicit-any */
38
+ exports.loadZModelAndDmmf = exports.loadSchema = exports.loadSchemaFromFile = exports.getWorkspaceNpmCacheFolder = exports.getWorkspaceRoot = exports.run = void 0;
39
+ const internals_1 = require("@prisma/internals");
41
40
  const runtime_1 = require("@zenstackhq/runtime");
42
41
  const child_process_1 = require("child_process");
43
42
  const fs = __importStar(require("fs"));
44
43
  const path = __importStar(require("path"));
45
44
  const tmp_1 = __importDefault(require("tmp"));
45
+ const cli_util_1 = require("zenstack/cli/cli-util");
46
+ const prisma_1 = __importDefault(require("zenstack/plugins/prisma"));
46
47
  function run(cmd, env, cwd) {
47
48
  (0, child_process_1.execSync)(cmd, {
48
49
  stdio: 'pipe',
@@ -78,7 +79,6 @@ datasource db {
78
79
 
79
80
  generator js {
80
81
  provider = 'prisma-client-js'
81
- output = '../.prisma'
82
82
  previewFeatures = ['clientExtensions']
83
83
  }
84
84
 
@@ -104,20 +104,21 @@ function loadSchemaFromFile(schemaFile, addPrelude = true, pushDb = true) {
104
104
  });
105
105
  }
106
106
  exports.loadSchemaFromFile = loadSchemaFromFile;
107
- function loadSchema(schema, addPrelude = true, pushDb = true) {
107
+ function loadSchema(schema, addPrelude = true, pushDb = true, extraDependencies = [], compile = false) {
108
108
  return __awaiter(this, void 0, void 0, function* () {
109
- const { name: workDir } = tmp_1.default.dirSync();
109
+ const { name: projectRoot } = tmp_1.default.dirSync();
110
110
  const root = getWorkspaceRoot(__dirname);
111
111
  if (!root) {
112
112
  throw new Error('Could not find workspace root');
113
113
  }
114
114
  console.log('Workspace root:', root);
115
115
  const pkgContent = fs.readFileSync(path.join(__dirname, 'package.template.json'), { encoding: 'utf-8' });
116
- fs.writeFileSync(path.join(workDir, 'package.json'), pkgContent.replaceAll('<root>', root));
116
+ fs.writeFileSync(path.join(projectRoot, 'package.json'), pkgContent.replaceAll('<root>', root));
117
117
  const npmrcContent = fs.readFileSync(path.join(__dirname, '.npmrc.template'), { encoding: 'utf-8' });
118
- fs.writeFileSync(path.join(workDir, '.npmrc'), npmrcContent.replaceAll('<root>', root));
119
- console.log('Workdir:', workDir);
120
- process.chdir(workDir);
118
+ fs.writeFileSync(path.join(projectRoot, '.npmrc'), npmrcContent.replaceAll('<root>', root));
119
+ console.log('Workdir:', projectRoot);
120
+ process.chdir(projectRoot);
121
+ schema = schema.replaceAll('$projectRoot', projectRoot);
121
122
  const content = addPrelude ? `${MODEL_PRELUDE}\n${schema}` : schema;
122
123
  fs.writeFileSync('schema.zmodel', content);
123
124
  run('npm install');
@@ -125,12 +126,22 @@ function loadSchema(schema, addPrelude = true, pushDb = true) {
125
126
  if (pushDb) {
126
127
  run('npx prisma db push');
127
128
  }
128
- const PrismaClient = require(path.join(workDir, '.prisma')).PrismaClient;
129
+ const PrismaClient = require(path.join(projectRoot, 'node_modules/.prisma/client')).PrismaClient;
129
130
  const prisma = new PrismaClient({ log: ['info', 'warn', 'error'] });
130
- const policy = require(path.join(workDir, '.zenstack/policy')).default;
131
- const modelMeta = require(path.join(workDir, '.zenstack/model-meta')).default;
132
- const zodSchemas = require(path.join(workDir, '.zenstack/zod')).default;
131
+ extraDependencies.forEach((dep) => {
132
+ console.log(`Installing dependency ${dep}`);
133
+ run(`npm install ${dep}`);
134
+ });
135
+ if (compile) {
136
+ console.log('Compiling...');
137
+ run('npx tsc --init');
138
+ run('npx tsc --project tsconfig.json');
139
+ }
140
+ const policy = require(path.join(projectRoot, '.zenstack/policy')).default;
141
+ const modelMeta = require(path.join(projectRoot, '.zenstack/model-meta')).default;
142
+ const zodSchemas = require(path.join(projectRoot, '.zenstack/zod')).default;
133
143
  return {
144
+ projectDir: projectRoot,
134
145
  prisma,
135
146
  withPolicy: (user) => (0, runtime_1.withPolicy)(prisma, { user }, policy, modelMeta),
136
147
  withOmit: () => (0, runtime_1.withOmit)(prisma, modelMeta),
@@ -141,4 +152,28 @@ function loadSchema(schema, addPrelude = true, pushDb = true) {
141
152
  });
142
153
  }
143
154
  exports.loadSchema = loadSchema;
155
+ /**
156
+ * Load ZModel and Prisma DMM from a string without creating a NPM project.
157
+ * @param content
158
+ * @returns
159
+ */
160
+ function loadZModelAndDmmf(content) {
161
+ return __awaiter(this, void 0, void 0, function* () {
162
+ const prelude = `
163
+ datasource db {
164
+ provider = 'postgresql'
165
+ url = env('DATABASE_URL')
166
+ }
167
+ `;
168
+ const { name: modelFile } = tmp_1.default.fileSync({ postfix: '.zmodel' });
169
+ fs.writeFileSync(modelFile, `${prelude}\n${content}`);
170
+ const model = yield (0, cli_util_1.loadDocument)(modelFile);
171
+ const { name: prismaFile } = tmp_1.default.fileSync({ postfix: '.prisma' });
172
+ yield (0, prisma_1.default)(model, { schemaPath: modelFile, output: prismaFile, generateClient: false });
173
+ const prismaContent = fs.readFileSync(prismaFile, { encoding: 'utf-8' });
174
+ const dmmf = yield (0, internals_1.getDMMF)({ datamodel: prismaContent });
175
+ return { model, dmmf, modelFile };
176
+ });
177
+ }
178
+ exports.loadZModelAndDmmf = loadZModelAndDmmf;
144
179
  //# sourceMappingURL=schema.js.map
package/schema.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}