zenstack 1.0.16 → 1.1.1

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 (154) hide show
  1. package/README.md +93 -24
  2. package/bin/post-install.js +1 -1
  3. package/cli/actions/generate.d.ts +13 -0
  4. package/cli/actions/generate.js +71 -0
  5. package/cli/actions/generate.js.map +1 -0
  6. package/cli/actions/index.d.ts +3 -0
  7. package/cli/actions/index.js +20 -0
  8. package/cli/actions/index.js.map +1 -0
  9. package/cli/actions/info.d.ts +4 -0
  10. package/cli/actions/info.js +63 -0
  11. package/cli/actions/info.js.map +1 -0
  12. package/cli/actions/init.d.ts +12 -0
  13. package/cli/actions/init.js +83 -0
  14. package/cli/actions/init.js.map +1 -0
  15. package/cli/cli-util.d.ts +14 -11
  16. package/cli/cli-util.js +150 -82
  17. package/cli/cli-util.js.map +1 -1
  18. package/cli/config.d.ts +10 -0
  19. package/cli/config.js +62 -0
  20. package/cli/config.js.map +1 -0
  21. package/cli/index.d.ts +4 -12
  22. package/cli/index.js +36 -29
  23. package/cli/index.js.map +1 -1
  24. package/cli/plugin-runner.d.ts +13 -3
  25. package/cli/plugin-runner.js +165 -59
  26. package/cli/plugin-runner.js.map +1 -1
  27. package/constants.js +1 -1
  28. package/language-server/constants.d.ts +7 -0
  29. package/language-server/constants.js +8 -1
  30. package/language-server/constants.js.map +1 -1
  31. package/language-server/utils.d.ts +1 -14
  32. package/language-server/utils.js +2 -38
  33. package/language-server/utils.js.map +1 -1
  34. package/language-server/validator/attribute-application-validator.d.ts +15 -0
  35. package/language-server/validator/attribute-application-validator.js +246 -0
  36. package/language-server/validator/attribute-application-validator.js.map +1 -0
  37. package/language-server/validator/attribute-validator.d.ts +1 -1
  38. package/language-server/validator/attribute-validator.js +4 -1
  39. package/language-server/validator/attribute-validator.js.map +1 -1
  40. package/language-server/validator/datamodel-validator.d.ts +7 -0
  41. package/language-server/validator/datamodel-validator.js +84 -33
  42. package/language-server/validator/datamodel-validator.js.map +1 -1
  43. package/language-server/validator/enum-validator.js +3 -6
  44. package/language-server/validator/enum-validator.js.map +1 -1
  45. package/language-server/validator/expression-validator.d.ts +1 -1
  46. package/language-server/validator/expression-validator.js +108 -3
  47. package/language-server/validator/expression-validator.js.map +1 -1
  48. package/language-server/validator/function-decl-validator.d.ts +9 -0
  49. package/language-server/validator/function-decl-validator.js +13 -0
  50. package/language-server/validator/function-decl-validator.js.map +1 -0
  51. package/language-server/validator/function-invocation-validator.d.ts +11 -0
  52. package/language-server/validator/function-invocation-validator.js +135 -0
  53. package/language-server/validator/function-invocation-validator.js.map +1 -0
  54. package/language-server/validator/schema-validator.d.ts +4 -1
  55. package/language-server/validator/schema-validator.js +28 -7
  56. package/language-server/validator/schema-validator.js.map +1 -1
  57. package/language-server/validator/utils.d.ts +3 -4
  58. package/language-server/validator/utils.js +20 -123
  59. package/language-server/validator/utils.js.map +1 -1
  60. package/language-server/validator/zmodel-validator.d.ts +5 -1
  61. package/language-server/validator/zmodel-validator.js +18 -4
  62. package/language-server/validator/zmodel-validator.js.map +1 -1
  63. package/language-server/zmodel-code-action.d.ts +2 -1
  64. package/language-server/zmodel-code-action.js +46 -21
  65. package/language-server/zmodel-code-action.js.map +1 -1
  66. package/language-server/zmodel-definition.d.ts +7 -0
  67. package/language-server/zmodel-definition.js +31 -0
  68. package/language-server/zmodel-definition.js.map +1 -0
  69. package/language-server/zmodel-formatter.js +2 -2
  70. package/language-server/zmodel-formatter.js.map +1 -1
  71. package/language-server/zmodel-linker.d.ts +3 -0
  72. package/language-server/zmodel-linker.js +122 -41
  73. package/language-server/zmodel-linker.js.map +1 -1
  74. package/language-server/zmodel-module.js +4 -1
  75. package/language-server/zmodel-module.js.map +1 -1
  76. package/language-server/zmodel-scope.d.ts +7 -1
  77. package/language-server/zmodel-scope.js +57 -1
  78. package/language-server/zmodel-scope.js.map +1 -1
  79. package/language-server/zmodel-workspace-manager.d.ts +5 -1
  80. package/language-server/zmodel-workspace-manager.js +101 -0
  81. package/language-server/zmodel-workspace-manager.js.map +1 -1
  82. package/package.json +27 -20
  83. package/plugins/access-policy/expression-writer.d.ts +7 -0
  84. package/plugins/access-policy/expression-writer.js +325 -106
  85. package/plugins/access-policy/expression-writer.js.map +1 -1
  86. package/plugins/access-policy/index.d.ts +3 -3
  87. package/plugins/access-policy/index.js +3 -5
  88. package/plugins/access-policy/index.js.map +1 -1
  89. package/plugins/access-policy/policy-guard-generator.d.ts +10 -3
  90. package/plugins/access-policy/policy-guard-generator.js +406 -121
  91. package/plugins/access-policy/policy-guard-generator.js.map +1 -1
  92. package/plugins/model-meta/index.d.ts +3 -3
  93. package/plugins/model-meta/index.js +110 -46
  94. package/plugins/model-meta/index.js.map +1 -1
  95. package/plugins/plugin-utils.d.ts +8 -7
  96. package/plugins/plugin-utils.js +55 -21
  97. package/plugins/plugin-utils.js.map +1 -1
  98. package/plugins/prisma/index.d.ts +3 -3
  99. package/plugins/prisma/index.js +3 -5
  100. package/plugins/prisma/index.js.map +1 -1
  101. package/plugins/prisma/prisma-builder.d.ts +7 -14
  102. package/plugins/prisma/prisma-builder.js +29 -34
  103. package/plugins/prisma/prisma-builder.js.map +1 -1
  104. package/plugins/prisma/schema-generator.d.ts +7 -3
  105. package/plugins/prisma/schema-generator.js +146 -102
  106. package/plugins/prisma/schema-generator.js.map +1 -1
  107. package/plugins/prisma/zmodel-code-generator.d.ts +3 -1
  108. package/plugins/prisma/zmodel-code-generator.js +12 -2
  109. package/plugins/prisma/zmodel-code-generator.js.map +1 -1
  110. package/plugins/zod/generator.d.ts +4 -0
  111. package/plugins/zod/generator.js +298 -0
  112. package/plugins/zod/generator.js.map +1 -0
  113. package/plugins/zod/index.d.ts +4 -0
  114. package/plugins/zod/index.js +24 -0
  115. package/plugins/zod/index.js.map +1 -0
  116. package/plugins/zod/transformer.d.ts +68 -0
  117. package/plugins/zod/transformer.js +554 -0
  118. package/plugins/zod/transformer.js.map +1 -0
  119. package/plugins/zod/types.d.ts +25 -0
  120. package/plugins/zod/types.js.map +1 -0
  121. package/plugins/zod/utils/removeDir.d.ts +1 -0
  122. package/plugins/zod/utils/removeDir.js +30 -0
  123. package/plugins/zod/utils/removeDir.js.map +1 -0
  124. package/plugins/zod/utils/schema-gen.d.ts +3 -0
  125. package/plugins/zod/utils/schema-gen.js +188 -0
  126. package/plugins/zod/utils/schema-gen.js.map +1 -0
  127. package/res/starter.zmodel +6 -8
  128. package/res/stdlib.zmodel +238 -74
  129. package/telemetry.d.ts +2 -1
  130. package/telemetry.js +21 -11
  131. package/telemetry.js.map +1 -1
  132. package/utils/ast-utils.d.ts +12 -15
  133. package/utils/ast-utils.js +117 -66
  134. package/utils/ast-utils.js.map +1 -1
  135. package/utils/pkg-utils.d.ts +2 -2
  136. package/utils/pkg-utils.js +34 -16
  137. package/utils/pkg-utils.js.map +1 -1
  138. package/utils/typescript-expression-transformer.d.ts +54 -0
  139. package/utils/typescript-expression-transformer.js +326 -0
  140. package/utils/typescript-expression-transformer.js.map +1 -0
  141. package/utils/version-utils.js +7 -1
  142. package/utils/version-utils.js.map +1 -1
  143. package/plugins/access-policy/typescript-expression-transformer.d.ts +0 -26
  144. package/plugins/access-policy/typescript-expression-transformer.js +0 -111
  145. package/plugins/access-policy/typescript-expression-transformer.js.map +0 -1
  146. package/plugins/access-policy/utils.d.ts +0 -5
  147. package/plugins/access-policy/utils.js +0 -14
  148. package/plugins/access-policy/utils.js.map +0 -1
  149. package/plugins/access-policy/zod-schema-generator.d.ts +0 -12
  150. package/plugins/access-policy/zod-schema-generator.js +0 -158
  151. package/plugins/access-policy/zod-schema-generator.js.map +0 -1
  152. package/types.d.ts +0 -12
  153. package/types.js.map +0 -1
  154. /package/{types.js → plugins/zod/types.js} +0 -0
package/cli/cli-util.js CHANGED
@@ -12,81 +12,33 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.runPlugins = exports.loadDocument = exports.initProject = void 0;
15
+ exports.checkNewVersion = exports.checkRequiredPackage = exports.getZenStackPackages = exports.getPluginDocuments = exports.mergeImportsDeclarations = exports.eagerLoadAllImports = exports.loadDocument = exports.requiredPrismaVersion = void 0;
16
+ const ast_1 = require("@zenstackhq/language/ast");
16
17
  const sdk_1 = require("@zenstackhq/sdk");
17
18
  const colors_1 = __importDefault(require("colors"));
18
19
  const fs_1 = __importDefault(require("fs"));
20
+ const get_latest_version_1 = __importDefault(require("get-latest-version"));
21
+ const langium_1 = require("langium");
19
22
  const node_1 = require("langium/node");
20
23
  const path_1 = __importDefault(require("path"));
24
+ const semver_1 = __importDefault(require("semver"));
21
25
  const vscode_uri_1 = require("vscode-uri");
22
26
  const constants_1 = require("../language-server/constants");
23
27
  const zmodel_module_1 = require("../language-server/zmodel-module");
24
- const pkg_utils_1 = require("../utils/pkg-utils");
28
+ const ast_utils_1 = require("../utils/ast-utils");
29
+ const version_utils_1 = require("../utils/version-utils");
25
30
  const cli_error_1 = require("./cli-error");
26
- const plugin_runner_1 = require("./plugin-runner");
27
- /**
28
- * Initializes an existing project for ZenStack
29
- */
30
- function initProject(projectPath, prismaSchema, packageManager, tag) {
31
- return __awaiter(this, void 0, void 0, function* () {
32
- if (!fs_1.default.existsSync(projectPath)) {
33
- console.error(`Path does not exist: ${projectPath}`);
34
- throw new cli_error_1.CliError('project path does not exist');
35
- }
36
- const defaultPrismaSchemaLocation = './prisma/schema.prisma';
37
- if (prismaSchema) {
38
- if (!fs_1.default.existsSync(prismaSchema)) {
39
- console.error(`Prisma schema file does not exist: ${prismaSchema}`);
40
- throw new cli_error_1.CliError('prisma schema does not exist');
41
- }
42
- }
43
- else if (fs_1.default.existsSync(defaultPrismaSchemaLocation)) {
44
- prismaSchema = defaultPrismaSchemaLocation;
45
- }
46
- const zmodelFile = path_1.default.join(projectPath, './schema.zmodel');
47
- let sampleModelGenerated = false;
48
- if (fs_1.default.existsSync(zmodelFile)) {
49
- console.warn(`ZenStack model already exists at ${zmodelFile}, not generating a new one.`);
50
- }
51
- else {
52
- if (prismaSchema) {
53
- // copy over schema.prisma
54
- fs_1.default.copyFileSync(prismaSchema, zmodelFile);
55
- }
56
- else {
57
- // create a new model
58
- const starterContent = fs_1.default.readFileSync(path_1.default.join(__dirname, '../res/starter.zmodel'), 'utf-8');
59
- fs_1.default.writeFileSync(zmodelFile, starterContent);
60
- sampleModelGenerated = true;
61
- }
62
- }
63
- (0, pkg_utils_1.ensurePackage)('prisma', true, packageManager, 'latest', projectPath);
64
- (0, pkg_utils_1.ensurePackage)('@prisma/client', false, packageManager, 'latest', projectPath);
65
- (0, pkg_utils_1.installPackage)('zenstack', true, packageManager, tag, projectPath);
66
- (0, pkg_utils_1.installPackage)('@zenstackhq/runtime', false, packageManager, tag, projectPath);
67
- if (sampleModelGenerated) {
68
- console.log(`Sample model generated at: ${colors_1.default.blue(zmodelFile)}
69
-
70
- Please check the following guide on how to model your app:
71
- https://zenstack.dev/#/modeling-your-app.`);
72
- }
73
- else {
74
- console.log(`Your current Prisma schema "${prismaSchema}" has been copied to "${zmodelFile}".
75
- Moving forward please edit this file and run "zenstack generate" to regenerate Prisma schema.`);
76
- }
77
- console.log(colors_1.default.green('\nProject initialized successfully!'));
78
- });
79
- }
80
- exports.initProject = initProject;
31
+ // required minimal version of Prisma
32
+ exports.requiredPrismaVersion = '4.8.0';
81
33
  /**
82
34
  * Loads a zmodel document from a file.
83
35
  * @param fileName File name
84
36
  * @param services Language services
85
37
  * @returns Parsed and validated AST
86
38
  */
87
- function loadDocument(fileName, services) {
88
- var _a;
39
+ function loadDocument(fileName) {
89
40
  return __awaiter(this, void 0, void 0, function* () {
41
+ const services = (0, zmodel_module_1.createZModelServices)(node_1.NodeFileSystem).ZModel;
90
42
  const extensions = services.LanguageMetaData.fileExtensions;
91
43
  if (!extensions.includes(path_1.default.extname(fileName))) {
92
44
  console.error(colors_1.default.yellow(`Please choose a file with extension: ${extensions}.`));
@@ -98,13 +50,22 @@ function loadDocument(fileName, services) {
98
50
  }
99
51
  // load standard library
100
52
  const stdLib = services.shared.workspace.LangiumDocuments.getOrCreateDocument(vscode_uri_1.URI.file(path_1.default.resolve(path_1.default.join(__dirname, '../res', constants_1.STD_LIB_MODULE_NAME))));
53
+ // load documents provided by plugins
54
+ const pluginDocuments = yield getPluginDocuments(services, fileName);
55
+ const langiumDocuments = services.shared.workspace.LangiumDocuments;
101
56
  // load the document
102
- const document = services.shared.workspace.LangiumDocuments.getOrCreateDocument(vscode_uri_1.URI.file(path_1.default.resolve(fileName)));
103
- // build the document together with standard library
104
- yield services.shared.workspace.DocumentBuilder.build([stdLib, document], {
57
+ const document = langiumDocuments.getOrCreateDocument(vscode_uri_1.URI.file(path_1.default.resolve(fileName)));
58
+ // load all imports
59
+ const importedURIs = eagerLoadAllImports(document, langiumDocuments);
60
+ const importedDocuments = importedURIs.map((uri) => langiumDocuments.getOrCreateDocument(uri));
61
+ // build the document together with standard library and plugin modules
62
+ yield services.shared.workspace.DocumentBuilder.build([stdLib, ...pluginDocuments, document, ...importedDocuments], {
105
63
  validationChecks: 'all',
106
64
  });
107
- const validationErrors = ((_a = document.diagnostics) !== null && _a !== void 0 ? _a : []).filter((e) => e.severity === 1);
65
+ const validationErrors = langiumDocuments.all
66
+ .flatMap((d) => { var _a; return (_a = d.diagnostics) !== null && _a !== void 0 ? _a : []; })
67
+ .filter((e) => e.severity === 1)
68
+ .toArray();
108
69
  if (validationErrors.length > 0) {
109
70
  console.error(colors_1.default.red('Validation errors:'));
110
71
  for (const validationError of validationErrors) {
@@ -112,32 +73,139 @@ function loadDocument(fileName, services) {
112
73
  }
113
74
  throw new cli_error_1.CliError('schema validation errors');
114
75
  }
115
- return document.parseResult.value;
76
+ const model = document.parseResult.value;
77
+ mergeImportsDeclarations(langiumDocuments, model);
78
+ validationAfterMerge(model);
79
+ (0, ast_utils_1.mergeBaseModel)(model);
80
+ return model;
116
81
  });
117
82
  }
118
83
  exports.loadDocument = loadDocument;
119
- function runPlugins(options) {
84
+ // check global unique thing after merge imports
85
+ function validationAfterMerge(model) {
86
+ const dataSources = model.declarations.filter((d) => (0, ast_1.isDataSource)(d));
87
+ if (dataSources.length == 0) {
88
+ console.error(colors_1.default.red('Validation errors: Model must define a datasource'));
89
+ throw new cli_error_1.CliError('schema validation errors');
90
+ }
91
+ else if (dataSources.length > 1) {
92
+ console.error(colors_1.default.red('Validation errors: Multiple datasource declarations are not allowed'));
93
+ throw new cli_error_1.CliError('schema validation errors');
94
+ }
95
+ }
96
+ function eagerLoadAllImports(document, documents, uris = new Set()) {
97
+ const uriString = document.uri.toString();
98
+ if (!uris.has(uriString)) {
99
+ uris.add(uriString);
100
+ const model = document.parseResult.value;
101
+ for (const imp of model.imports) {
102
+ const importedModel = (0, ast_utils_1.resolveImport)(documents, imp);
103
+ if (importedModel) {
104
+ const importedDoc = (0, langium_1.getDocument)(importedModel);
105
+ eagerLoadAllImports(importedDoc, documents, uris);
106
+ }
107
+ }
108
+ }
109
+ return Array.from(uris)
110
+ .filter((x) => uriString != x)
111
+ .map((e) => vscode_uri_1.URI.parse(e));
112
+ }
113
+ exports.eagerLoadAllImports = eagerLoadAllImports;
114
+ function mergeImportsDeclarations(documents, model) {
115
+ const importedModels = (0, ast_utils_1.resolveTransitiveImports)(documents, model);
116
+ const importedDeclarations = importedModels.flatMap((m) => m.declarations);
117
+ importedDeclarations.forEach((d) => {
118
+ const mutable = d;
119
+ // The plugin might use $container to access the model
120
+ // need to make sure it is always resolved to the main model
121
+ mutable.$container = model;
122
+ });
123
+ model.declarations.push(...importedDeclarations);
124
+ }
125
+ exports.mergeImportsDeclarations = mergeImportsDeclarations;
126
+ function getPluginDocuments(services, fileName) {
120
127
  return __awaiter(this, void 0, void 0, function* () {
121
- const services = (0, zmodel_module_1.createZModelServices)(node_1.NodeFileSystem).ZModel;
122
- const model = yield loadDocument(options.schema, services);
123
- const context = {
124
- schema: model,
125
- schemaPath: path_1.default.resolve(options.schema),
126
- outDir: path_1.default.dirname(options.schema),
127
- };
128
+ // parse the user document (without validation)
129
+ const parseResult = services.parser.LangiumParser.parse(fs_1.default.readFileSync(fileName, { encoding: 'utf-8' }));
130
+ const parsed = parseResult.value;
131
+ // traverse plugins and collect "plugin.zmodel" documents
132
+ const result = [];
133
+ parsed.declarations.forEach((decl) => {
134
+ if ((0, ast_1.isPlugin)(decl)) {
135
+ const providerField = decl.fields.find((f) => f.name === 'provider');
136
+ if (providerField) {
137
+ const provider = (0, sdk_1.getLiteral)(providerField.value);
138
+ if (provider) {
139
+ try {
140
+ const pluginEntrance = require.resolve(`${provider}`);
141
+ const pluginModelFile = path_1.default.join(path_1.default.dirname(pluginEntrance), constants_1.PLUGIN_MODULE_NAME);
142
+ if (fs_1.default.existsSync(pluginModelFile)) {
143
+ result.push(services.shared.workspace.LangiumDocuments.getOrCreateDocument(vscode_uri_1.URI.file(pluginModelFile)));
144
+ }
145
+ }
146
+ catch (_a) {
147
+ // noop
148
+ }
149
+ }
150
+ }
151
+ }
152
+ });
153
+ return result;
154
+ });
155
+ }
156
+ exports.getPluginDocuments = getPluginDocuments;
157
+ function getZenStackPackages(projectPath) {
158
+ var _a, _b;
159
+ let pkgJson;
160
+ const resolvedPath = path_1.default.resolve(projectPath);
161
+ try {
162
+ pkgJson = require(path_1.default.join(resolvedPath, 'package.json'));
163
+ }
164
+ catch (_c) {
165
+ return undefined;
166
+ }
167
+ const packages = [
168
+ ...Object.keys((_a = pkgJson.dependencies) !== null && _a !== void 0 ? _a : {}).filter((p) => p.startsWith('@zenstackhq/')),
169
+ ...Object.keys((_b = pkgJson.devDependencies) !== null && _b !== void 0 ? _b : {}).filter((p) => p.startsWith('@zenstackhq/')),
170
+ ];
171
+ const result = packages.map((pkg) => {
128
172
  try {
129
- yield new plugin_runner_1.PluginRunner().run(context);
173
+ const resolved = require.resolve(`${pkg}/package.json`, { paths: [resolvedPath] });
174
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
175
+ return { pkg, version: require(resolved).version };
130
176
  }
131
- catch (err) {
132
- if (err instanceof sdk_1.PluginError) {
133
- console.error(colors_1.default.red(err.message));
134
- throw new cli_error_1.CliError(err.message);
135
- }
136
- else {
137
- throw err;
138
- }
177
+ catch (_a) {
178
+ return { pkg, version: undefined };
179
+ }
180
+ });
181
+ result.splice(0, 0, { pkg: 'zenstack', version: (0, version_utils_1.getVersion)() });
182
+ return result;
183
+ }
184
+ exports.getZenStackPackages = getZenStackPackages;
185
+ function checkRequiredPackage(packageName, minVersion) {
186
+ let packageVersion;
187
+ try {
188
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
189
+ packageVersion = require(`${packageName}/package.json`).version;
190
+ }
191
+ catch (error) {
192
+ console.error(colors_1.default.red(`${packageName} not found, please install it`));
193
+ throw new cli_error_1.CliError(`${packageName} not found`);
194
+ }
195
+ if (minVersion && semver_1.default.lt(packageVersion, minVersion)) {
196
+ console.error(colors_1.default.red(`${packageName} needs to be above ${minVersion}, the installed version is ${packageVersion}, please upgrade it`));
197
+ throw new cli_error_1.CliError(`${packageName} version is too low`);
198
+ }
199
+ }
200
+ exports.checkRequiredPackage = checkRequiredPackage;
201
+ function checkNewVersion() {
202
+ return __awaiter(this, void 0, void 0, function* () {
203
+ const currVersion = (0, version_utils_1.getVersion)();
204
+ const latestVersion = yield (0, get_latest_version_1.default)('zenstack');
205
+ if (latestVersion && semver_1.default.gt(latestVersion, currVersion)) {
206
+ console.log(`A newer version ${colors_1.default.cyan(latestVersion)} is available.`);
139
207
  }
140
208
  });
141
209
  }
142
- exports.runPlugins = runPlugins;
210
+ exports.checkNewVersion = checkNewVersion;
143
211
  //# sourceMappingURL=cli-util.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli-util.js","sourceRoot":"","sources":["../../src/cli/cli-util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-util.js","sourceRoot":"","sources":["../../src/cli/cli-util.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kDAAyE;AACzE,yCAA6C;AAC7C,oDAA4B;AAC5B,4CAAoB;AACpB,4EAAkD;AAClD,qCAA2F;AAC3F,uCAA8C;AAC9C,gDAAwB;AACxB,oDAA4B;AAC5B,2CAAiC;AACjC,4DAAuF;AACvF,oEAAwF;AACxF,kDAA6F;AAC7F,0DAAoD;AACpD,2CAAuC;AAEvC,qCAAqC;AACxB,QAAA,qBAAqB,GAAG,OAAO,CAAC;AAE7C;;;;;GAKG;AACH,SAAsB,YAAY,CAAC,QAAgB;;QAC/C,MAAM,QAAQ,GAAG,IAAA,oCAAoB,EAAC,qBAAc,CAAC,CAAC,MAAM,CAAC;QAC7D,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC,cAAc,CAAC;QAC5D,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE;YAC9C,OAAO,CAAC,KAAK,CAAC,gBAAM,CAAC,MAAM,CAAC,wCAAwC,UAAU,GAAG,CAAC,CAAC,CAAC;YACpF,MAAM,IAAI,oBAAQ,CAAC,qBAAqB,CAAC,CAAC;SAC7C;QAED,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;YAC1B,OAAO,CAAC,KAAK,CAAC,gBAAM,CAAC,GAAG,CAAC,QAAQ,QAAQ,kBAAkB,CAAC,CAAC,CAAC;YAC9D,MAAM,IAAI,oBAAQ,CAAC,4BAA4B,CAAC,CAAC;SACpD;QAED,wBAAwB;QACxB,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,mBAAmB,CACzE,gBAAG,CAAC,IAAI,CAAC,cAAI,CAAC,OAAO,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,+BAAmB,CAAC,CAAC,CAAC,CAC9E,CAAC;QAEF,qCAAqC;QACrC,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAErE,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC;QACpE,oBAAoB;QACpB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,mBAAmB,CAAC,gBAAG,CAAC,IAAI,CAAC,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAExF,mBAAmB;QACnB,MAAM,YAAY,GAAG,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QAErE,MAAM,iBAAiB,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;QAE/F,uEAAuE;QACvE,MAAM,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,CACjD,CAAC,MAAM,EAAE,GAAG,eAAe,EAAE,QAAQ,EAAE,GAAG,iBAAiB,CAAC,EAC5D;YACI,gBAAgB,EAAE,KAAK;SAC1B,CACJ,CAAC;QAEF,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,GAAG;aACxC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,MAAA,CAAC,CAAC,WAAW,mCAAI,EAAE,CAAA,EAAA,CAAC;aACnC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC;aAC/B,OAAO,EAAE,CAAC;QAEf,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,OAAO,CAAC,KAAK,CAAC,gBAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAChD,KAAK,MAAM,eAAe,IAAI,gBAAgB,EAAE;gBAC5C,OAAO,CAAC,KAAK,CACT,gBAAM,CAAC,GAAG,CACN,QAAQ,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,KACxC,eAAe,CAAC,OACpB,KAAK,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAC/D,CACJ,CAAC;aACL;YACD,MAAM,IAAI,oBAAQ,CAAC,0BAA0B,CAAC,CAAC;SAClD;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAc,CAAC;QAElD,wBAAwB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAElD,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAE5B,IAAA,0BAAc,EAAC,KAAK,CAAC,CAAC;QAEtB,OAAO,KAAK,CAAC;IACjB,CAAC;CAAA;AAlED,oCAkEC;AAED,gDAAgD;AAChD,SAAS,oBAAoB,CAAC,KAAY;IACtC,MAAM,WAAW,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,kBAAY,EAAC,CAAC,CAAC,CAAC,CAAC;IACtE,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE;QACzB,OAAO,CAAC,KAAK,CAAC,gBAAM,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC,CAAC;QAC/E,MAAM,IAAI,oBAAQ,CAAC,0BAA0B,CAAC,CAAC;KAClD;SAAM,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;QAC/B,OAAO,CAAC,KAAK,CAAC,gBAAM,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC,CAAC;QACjG,MAAM,IAAI,oBAAQ,CAAC,0BAA0B,CAAC,CAAC;KAClD;AACL,CAAC;AAED,SAAgB,mBAAmB,CAC/B,QAAyB,EACzB,SAA2B,EAC3B,OAAoB,IAAI,GAAG,EAAE;IAE7B,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IAC1C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;QACtB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpB,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAc,CAAC;QAElD,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE;YAC7B,MAAM,aAAa,GAAG,IAAA,yBAAa,EAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YACpD,IAAI,aAAa,EAAE;gBACf,MAAM,WAAW,GAAG,IAAA,qBAAW,EAAC,aAAa,CAAC,CAAC;gBAC/C,mBAAmB,CAAC,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;aACrD;SACJ;KACJ;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;SAClB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,IAAI,CAAC,CAAC;SAC7B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,CAAC;AAtBD,kDAsBC;AAED,SAAgB,wBAAwB,CAAC,SAA2B,EAAE,KAAY;IAC9E,MAAM,cAAc,GAAG,IAAA,oCAAwB,EAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAElE,MAAM,oBAAoB,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IAE3E,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAC/B,MAAM,OAAO,GAAG,CAAqB,CAAC;QACtC,sDAAsD;QACtD,4DAA4D;QAC5D,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,CAAC;AACrD,CAAC;AAbD,4DAaC;AAED,SAAsB,kBAAkB,CAAC,QAAwB,EAAE,QAAgB;;QAC/E,+CAA+C;QAC/C,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QAC1G,MAAM,MAAM,GAAG,WAAW,CAAC,KAAc,CAAC;QAE1C,yDAAyD;QACzD,MAAM,MAAM,GAAsB,EAAE,CAAC;QACrC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACjC,IAAI,IAAA,cAAQ,EAAC,IAAI,CAAC,EAAE;gBAChB,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;gBACrE,IAAI,aAAa,EAAE;oBACf,MAAM,QAAQ,GAAG,IAAA,gBAAU,EAAS,aAAa,CAAC,KAAK,CAAC,CAAC;oBACzD,IAAI,QAAQ,EAAE;wBACV,IAAI;4BACA,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,QAAQ,EAAE,CAAC,CAAC;4BACtD,MAAM,eAAe,GAAG,cAAI,CAAC,IAAI,CAAC,cAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,8BAAkB,CAAC,CAAC;4BACpF,IAAI,YAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE;gCAChC,MAAM,CAAC,IAAI,CACP,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,mBAAmB,CAC1D,gBAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAC5B,CACJ,CAAC;6BACL;yBACJ;wBAAC,WAAM;4BACJ,OAAO;yBACV;qBACJ;iBACJ;aACJ;QACL,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAClB,CAAC;CAAA;AA/BD,gDA+BC;AAED,SAAgB,mBAAmB,CAAC,WAAmB;;IACnD,IAAI,OAA4F,CAAC;IACjG,MAAM,YAAY,GAAG,cAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/C,IAAI;QACA,OAAO,GAAG,OAAO,CAAC,cAAI,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC,CAAC;KAC9D;IAAC,WAAM;QACJ,OAAO,SAAS,CAAC;KACpB;IAED,MAAM,QAAQ,GAAG;QACb,GAAG,MAAM,CAAC,IAAI,CAAC,MAAA,OAAO,CAAC,YAAY,mCAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QACtF,GAAG,MAAM,CAAC,IAAI,CAAC,MAAA,OAAO,CAAC,eAAe,mCAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;KAC5F,CAAC;IAEF,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAChC,IAAI;YACA,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG,eAAe,EAAE,EAAE,KAAK,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACnF,8DAA8D;YAC9D,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;SACtD;QAAC,WAAM;YACJ,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;SACtC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,IAAA,0BAAU,GAAE,EAAE,CAAC,CAAC;IAEhE,OAAO,MAAM,CAAC;AAClB,CAAC;AA3BD,kDA2BC;AAED,SAAgB,oBAAoB,CAAC,WAAmB,EAAE,UAAmB;IACzE,IAAI,cAAsB,CAAC;IAC3B,IAAI;QACA,8DAA8D;QAC9D,cAAc,GAAG,OAAO,CAAC,GAAG,WAAW,eAAe,CAAC,CAAC,OAAO,CAAC;KACnE;IAAC,OAAO,KAAK,EAAE;QACZ,OAAO,CAAC,KAAK,CAAC,gBAAM,CAAC,GAAG,CAAC,GAAG,WAAW,+BAA+B,CAAC,CAAC,CAAC;QACzE,MAAM,IAAI,oBAAQ,CAAC,GAAG,WAAW,YAAY,CAAC,CAAC;KAClD;IAED,IAAI,UAAU,IAAI,gBAAM,CAAC,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC,EAAE;QACrD,OAAO,CAAC,KAAK,CACT,gBAAM,CAAC,GAAG,CACN,GAAG,WAAW,sBAAsB,UAAU,8BAA8B,cAAc,qBAAqB,CAClH,CACJ,CAAC;QACF,MAAM,IAAI,oBAAQ,CAAC,GAAG,WAAW,qBAAqB,CAAC,CAAC;KAC3D;AACL,CAAC;AAlBD,oDAkBC;AAED,SAAsB,eAAe;;QACjC,MAAM,WAAW,GAAG,IAAA,0BAAU,GAAE,CAAC;QACjC,MAAM,aAAa,GAAG,MAAM,IAAA,4BAAgB,EAAC,UAAU,CAAC,CAAC;QACzD,IAAI,aAAa,IAAI,gBAAM,CAAC,EAAE,CAAC,aAAa,EAAE,WAAW,CAAC,EAAE;YACxD,OAAO,CAAC,GAAG,CAAC,mBAAmB,gBAAM,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;SAC9E;IACL,CAAC;CAAA;AAND,0CAMC"}
@@ -0,0 +1,10 @@
1
+ import z from 'zod';
2
+ declare const schema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
3
+ export declare type ConfigType = z.infer<typeof schema>;
4
+ export declare let config: ConfigType;
5
+ /**
6
+ * Loads and validates CLI configuration file.
7
+ * @returns
8
+ */
9
+ export declare function loadConfig(filename: string): void;
10
+ export {};
package/cli/config.js ADDED
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.loadConfig = exports.config = void 0;
30
+ const fs_1 = __importDefault(require("fs"));
31
+ const zod_1 = __importStar(require("zod"));
32
+ const zod_validation_error_1 = require("zod-validation-error");
33
+ const cli_error_1 = require("./cli-error");
34
+ // TODO: future use
35
+ const schema = zod_1.default.object({});
36
+ exports.config = schema.parse({});
37
+ /**
38
+ * Loads and validates CLI configuration file.
39
+ * @returns
40
+ */
41
+ function loadConfig(filename) {
42
+ try {
43
+ const fileData = fs_1.default.readFileSync(filename, `utf-8`);
44
+ const content = JSON.parse(fileData);
45
+ exports.config = schema.parse(content);
46
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
47
+ }
48
+ catch (err) {
49
+ if ((err === null || err === void 0 ? void 0 : err.code) === `ENOENT`) {
50
+ throw new cli_error_1.CliError(`Config file could not be found: ${filename}`);
51
+ }
52
+ if (err instanceof SyntaxError) {
53
+ throw new cli_error_1.CliError(`Config is not a valid JSON file: ${filename}`);
54
+ }
55
+ if (err instanceof zod_1.ZodError) {
56
+ throw new cli_error_1.CliError(`Config file ${filename} is not valid: ${(0, zod_validation_error_1.fromZodError)(err)}`);
57
+ }
58
+ throw new cli_error_1.CliError(`Error loading config: ${filename}`);
59
+ }
60
+ }
61
+ exports.loadConfig = loadConfig;
62
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAAoB;AACpB,2CAAkC;AAClC,+DAAoD;AACpD,2CAAuC;AAEvC,mBAAmB;AACnB,MAAM,MAAM,GAAG,aAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAIjB,QAAA,MAAM,GAAe,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAEjD;;;GAGG;AACH,SAAgB,UAAU,CAAC,QAAgB;IACvC,IAAI;QACA,MAAM,QAAQ,GAAG,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACrC,cAAM,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/B,8DAA8D;KACjE;IAAC,OAAO,GAAQ,EAAE;QACf,IAAI,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,MAAK,QAAQ,EAAE;YACxB,MAAM,IAAI,oBAAQ,CAAC,mCAAmC,QAAQ,EAAE,CAAC,CAAC;SACrE;QACD,IAAI,GAAG,YAAY,WAAW,EAAE;YAC5B,MAAM,IAAI,oBAAQ,CAAC,oCAAoC,QAAQ,EAAE,CAAC,CAAC;SACtE;QACD,IAAI,GAAG,YAAY,cAAQ,EAAE;YACzB,MAAM,IAAI,oBAAQ,CAAC,eAAe,QAAQ,kBAAkB,IAAA,mCAAY,EAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SACpF;QACD,MAAM,IAAI,oBAAQ,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;KAC3D;AACL,CAAC;AAlBD,gCAkBC"}
package/cli/index.d.ts CHANGED
@@ -1,15 +1,7 @@
1
1
  import { Command } from 'commander';
2
- import { PackageManagers } from '../utils/pkg-utils';
3
- export declare const requiredPrismaVersion = "4.0.0";
4
- export declare const initAction: (projectPath: string, options: {
5
- prisma: string | undefined;
6
- packageManager: PackageManagers | undefined;
7
- tag: string;
8
- }) => Promise<void>;
9
- export declare const generateAction: (options: {
10
- schema: string;
11
- packageManager: PackageManagers | undefined;
12
- dependencyCheck: boolean;
13
- }) => Promise<void>;
2
+ import * as actions from './actions';
3
+ export declare const initAction: (projectPath: string, options: Parameters<typeof actions.init>[1]) => Promise<void>;
4
+ export declare const infoAction: (projectPath: string) => Promise<void>;
5
+ export declare const generateAction: (options: Parameters<typeof actions.generate>[1]) => Promise<void>;
14
6
  export declare function createProgram(): Command;
15
7
  export default function (): Promise<void>;
package/cli/index.js CHANGED
@@ -35,45 +35,29 @@ 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.createProgram = exports.generateAction = exports.initAction = exports.requiredPrismaVersion = void 0;
38
+ exports.createProgram = exports.generateAction = exports.infoAction = exports.initAction = void 0;
39
39
  /* eslint-disable @typescript-eslint/no-explicit-any */
40
40
  const module_1 = require("@zenstackhq/language/module");
41
41
  const colors_1 = __importDefault(require("colors"));
42
42
  const commander_1 = require("commander");
43
- const semver = __importStar(require("semver"));
43
+ const fs_1 = __importDefault(require("fs"));
44
44
  const telemetry_1 = __importDefault(require("../telemetry"));
45
45
  const version_utils_1 = require("../utils/version-utils");
46
- const cli_error_1 = require("./cli-error");
47
- const cli_util_1 = require("./cli-util");
48
- // required minimal version of Prisma
49
- exports.requiredPrismaVersion = '4.0.0';
46
+ const actions = __importStar(require("./actions"));
47
+ const config_1 = require("./config");
48
+ const DEFAULT_CONFIG_FILE = 'zenstack.config.json';
50
49
  const initAction = (projectPath, options) => __awaiter(void 0, void 0, void 0, function* () {
51
- yield telemetry_1.default.trackSpan('cli:command:start', 'cli:command:complete', 'cli:command:error', { command: 'init' }, () => (0, cli_util_1.initProject)(projectPath, options.prisma, options.packageManager, options.tag));
50
+ yield telemetry_1.default.trackSpan('cli:command:start', 'cli:command:complete', 'cli:command:error', { command: 'init' }, () => actions.init(projectPath, options));
52
51
  });
53
52
  exports.initAction = initAction;
53
+ const infoAction = (projectPath) => __awaiter(void 0, void 0, void 0, function* () {
54
+ yield telemetry_1.default.trackSpan('cli:command:start', 'cli:command:complete', 'cli:command:error', { command: 'info' }, () => actions.info(projectPath));
55
+ });
56
+ exports.infoAction = infoAction;
54
57
  const generateAction = (options) => __awaiter(void 0, void 0, void 0, function* () {
55
- if (options.dependencyCheck) {
56
- checkRequiredPackage('prisma', exports.requiredPrismaVersion);
57
- checkRequiredPackage('@prisma/client', exports.requiredPrismaVersion);
58
- }
59
- yield telemetry_1.default.trackSpan('cli:command:start', 'cli:command:complete', 'cli:command:error', { command: 'generate' }, () => (0, cli_util_1.runPlugins)(options));
58
+ yield telemetry_1.default.trackSpan('cli:command:start', 'cli:command:complete', 'cli:command:error', { command: 'generate' }, () => actions.generate(process.cwd(), options));
60
59
  });
61
60
  exports.generateAction = generateAction;
62
- const checkRequiredPackage = (packageName, minVersion) => {
63
- let packageVersion;
64
- try {
65
- // eslint-disable-next-line @typescript-eslint/no-var-requires
66
- packageVersion = require(`${packageName}/package.json`).version;
67
- }
68
- catch (error) {
69
- console.error(colors_1.default.red(`${packageName} not found, please install it`));
70
- throw new cli_error_1.CliError(`${packageName} not found`);
71
- }
72
- if (minVersion && semver.lt(packageVersion, minVersion)) {
73
- console.error(colors_1.default.red(`${packageName} needs to be above ${minVersion}, the installed version is ${packageVersion}, please upgrade it`));
74
- throw new cli_error_1.CliError(`${packageName} version is too low`);
75
- }
76
- };
77
61
  function createProgram() {
78
62
  const program = new commander_1.Command('zenstack');
79
63
  program.version((0, version_utils_1.getVersion)(), '-v --version', 'display CLI version');
@@ -83,27 +67,50 @@ function createProgram() {
83
67
  .showHelpAfterError()
84
68
  .showSuggestionAfterError();
85
69
  const schemaOption = new commander_1.Option('--schema <file>', `schema file (with extension ${schemaExtensions})`).default('./schema.zmodel');
70
+ const configOption = new commander_1.Option('-c, --config [file]', 'config file');
86
71
  const pmOption = new commander_1.Option('-p, --package-manager <pm>', 'package manager to use').choices([
87
72
  'npm',
88
73
  'yarn',
89
74
  'pnpm',
90
75
  ]);
76
+ const noVersionCheckOption = new commander_1.Option('--no-version-check', 'do not check for new version');
91
77
  const noDependencyCheck = new commander_1.Option('--no-dependency-check', 'do not check if dependencies are installed');
78
+ program
79
+ .command('info')
80
+ .description('Get information of installed ZenStack and related packages.')
81
+ .argument('[path]', 'project path', '.')
82
+ .action(exports.infoAction);
92
83
  program
93
84
  .command('init')
94
85
  .description('Initialize an existing project for ZenStack.')
86
+ .addOption(configOption)
95
87
  .addOption(pmOption)
96
88
  .addOption(new commander_1.Option('--prisma <file>', 'location of Prisma schema file to bootstrap from'))
97
- .addOption(new commander_1.Option('--tag <tag>', 'the NPM package tag to use when installing dependencies').default('latest'))
89
+ .addOption(new commander_1.Option('--tag <tag>', 'the NPM package tag to use when installing dependencies'))
90
+ .addOption(noVersionCheckOption)
98
91
  .argument('[path]', 'project path', '.')
99
92
  .action(exports.initAction);
100
93
  program
101
94
  .command('generate')
102
95
  .description('Run code generation.')
103
96
  .addOption(schemaOption)
104
- .addOption(pmOption)
97
+ .addOption(new commander_1.Option('-o, --output <path>', 'default output directory for built-in plugins'))
98
+ .addOption(configOption)
99
+ .addOption(new commander_1.Option('--no-default-plugins', 'do not run default plugins'))
100
+ .addOption(new commander_1.Option('--no-compile', 'do not compile the output of built-in plugins'))
101
+ .addOption(noVersionCheckOption)
105
102
  .addOption(noDependencyCheck)
106
103
  .action(exports.generateAction);
104
+ // make sure config is loaded before actions run
105
+ program.hook('preAction', (_, actionCommand) => __awaiter(this, void 0, void 0, function* () {
106
+ let configFile = actionCommand.opts().config;
107
+ if (!configFile && fs_1.default.existsSync(DEFAULT_CONFIG_FILE)) {
108
+ configFile = DEFAULT_CONFIG_FILE;
109
+ }
110
+ if (configFile) {
111
+ (0, config_1.loadConfig)(configFile);
112
+ }
113
+ }));
107
114
  return program;
108
115
  }
109
116
  exports.createProgram = createProgram;
package/cli/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,23 @@
1
- import { Context } from '../types';
1
+ import { Model } from '@zenstackhq/language/ast';
2
+ export declare type PluginRunnerOptions = {
3
+ schema: Model;
4
+ schemaPath: string;
5
+ output?: string;
6
+ defaultPlugins: boolean;
7
+ compile: boolean;
8
+ };
2
9
  /**
3
- * ZenStack code generator
10
+ * ZenStack plugin runner
4
11
  */
5
12
  export declare class PluginRunner {
6
13
  /**
7
14
  * Runs a series of nested generators
8
15
  */
9
- run(context: Context): Promise<void>;
16
+ run(options: PluginRunnerOptions): Promise<void>;
17
+ private calculateCorePlugins;
18
+ private hasValidation;
10
19
  private getPluginName;
20
+ private getPluginDependencies;
11
21
  private getPluginProvider;
12
22
  private runPlugin;
13
23
  private getPluginModulePath;