zenstack 1.0.0-alpha.19 → 1.0.0-alpha.20

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.
@@ -108,18 +108,23 @@ class PluginRunner {
108
108
  }
109
109
  async runPlugin(name, run, context, options, dmmf, warnings) {
110
110
  const spinner = (0, _ora.default)(`Running plugin ${_colors.default.cyan(name)}`).start();
111
- await _telemetry.default.trackSpan('cli:plugin:start', 'cli:plugin:complete', 'cli:plugin:error', {
112
- plugin: name
113
- }, async () => {
114
- let result = run(context.schema, options, dmmf);
115
- if (result instanceof Promise) {
116
- result = await result;
117
- }
118
- if (Array.isArray(result)) {
119
- warnings.push(...result);
120
- }
121
- });
122
- spinner.succeed();
111
+ try {
112
+ await _telemetry.default.trackSpan('cli:plugin:start', 'cli:plugin:complete', 'cli:plugin:error', {
113
+ plugin: name
114
+ }, async () => {
115
+ let result = run(context.schema, options, dmmf);
116
+ if (result instanceof Promise) {
117
+ result = await result;
118
+ }
119
+ if (Array.isArray(result)) {
120
+ warnings.push(...result);
121
+ }
122
+ });
123
+ spinner.succeed();
124
+ } catch (err) {
125
+ spinner.fail();
126
+ throw err;
127
+ }
123
128
  }
124
129
  getPluginModulePath(provider) {
125
130
  let pluginModulePath = provider;
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-runner.js","names":["PluginRunner","run","context","version","require","console","log","colors","bold","plugins","pluginDecls","schema","declarations","filter","d","isPlugin","prereqPlugins","allPluginProviders","concat","map","p","getPluginProvider","includes","prismaOutput","pluginProvider","plugin","find","options","fields","forEach","f","value","getLiteral","getLiteralArray","CliError","name","pluginModulePath","getPluginModulePath","pluginModule","err","error","default","push","getPluginName","provider","output","warnings","dmmf","undefined","runPlugin","getDMMF","datamodel","fs","readFileSync","encoding","green","w","warn","yellow","providerField","spinner","ora","cyan","start","telemetry","trackSpan","result","Promise","Array","isArray","succeed","startsWith","replace","path","join","__dirname"],"sources":["../../src/cli/plugin-runner.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport { DMMF } from '@prisma/generator-helper';\nimport { getDMMF } from '@prisma/internals';\nimport { Plugin, isPlugin } from '@zenstackhq/language/ast';\nimport { PluginFunction, PluginOptions, getLiteral, getLiteralArray } from '@zenstackhq/sdk';\nimport colors from 'colors';\nimport fs from 'fs';\nimport ora from 'ora';\nimport path from 'path';\nimport telemetry from '../telemetry';\nimport { Context } from '../types';\nimport { CliError } from './cli-error';\n\n/**\n * ZenStack code generator\n */\nexport class PluginRunner {\n /**\n * Runs a series of nested generators\n */\n async run(context: Context): Promise<void> {\n const version = require('../package.json').version;\n console.log(colors.bold(`⌛️ ZenStack CLI v${version}, running plugins`));\n\n const plugins: Array<{\n provider: string;\n name: string;\n run: PluginFunction;\n options: PluginOptions;\n }> = [];\n\n const pluginDecls = context.schema.declarations.filter((d): d is Plugin => isPlugin(d));\n const prereqPlugins = ['@zenstack/prisma', '@zenstack/model-meta', '@zenstack/access-policy'];\n const allPluginProviders = prereqPlugins.concat(\n pluginDecls\n .map((p) => this.getPluginProvider(p))\n .filter((p): p is string => !!p && !prereqPlugins.includes(p))\n );\n let prismaOutput = './prisma/schema.prisma';\n\n for (const pluginProvider of allPluginProviders) {\n const plugin = pluginDecls.find((p) => this.getPluginProvider(p) === pluginProvider);\n if (plugin) {\n const options: PluginOptions = {};\n\n plugin.fields.forEach((f) => {\n const value = getLiteral(f.value) || getLiteralArray(f.value);\n if (!value) {\n throw new CliError(`Invalid plugin value for ${f.name}`);\n }\n options[f.name] = value;\n });\n\n const pluginModulePath = this.getPluginModulePath(pluginProvider);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let pluginModule: any;\n try {\n pluginModule = require(pluginModulePath);\n } catch (err) {\n console.error(`Unable to load plugin module ${pluginProvider}: ${pluginModulePath}, ${err}`);\n throw new CliError(`Unable to load plugin module ${pluginProvider}`);\n }\n\n if (!pluginModule.default || typeof pluginModule.default !== 'function') {\n console.error(`Plugin provider ${pluginProvider} is missing a default function export`);\n throw new CliError(`Plugin provider ${pluginProvider} is missing a default function export`);\n }\n plugins.push({\n name: this.getPluginName(pluginModule, pluginProvider),\n provider: pluginProvider,\n run: pluginModule.default as PluginFunction,\n options,\n });\n\n if (pluginProvider === '@zenstack/prisma' && options.output) {\n // record custom prisma output path\n prismaOutput = options.output as string;\n }\n } else {\n // synthesize a plugin\n const pluginModule = require(this.getPluginModulePath(pluginProvider));\n plugins.push({\n name: this.getPluginName(pluginModule, pluginProvider),\n provider: pluginProvider,\n run: pluginModule.default,\n options: {},\n });\n }\n }\n\n const warnings: string[] = [];\n\n let dmmf: DMMF.Document | undefined = undefined;\n for (const { name, provider, run, options } of plugins) {\n await this.runPlugin(name, run, context, options, dmmf, warnings);\n if (provider === '@zenstack/prisma') {\n // load prisma DMMF\n dmmf = await getDMMF({\n datamodel: fs.readFileSync(prismaOutput, { encoding: 'utf-8' }),\n });\n }\n }\n\n console.log(colors.green(colors.bold('\\n👻 All plugins completed successfully!')));\n\n warnings.forEach((w) => console.warn(colors.yellow(w)));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private getPluginName(pluginModule: any, pluginProvider: string): string {\n return typeof pluginModule.name === 'string' ? (pluginModule.name as string) : pluginProvider;\n }\n\n private getPluginProvider(plugin: Plugin) {\n const providerField = plugin.fields.find((f) => f.name === 'provider');\n return getLiteral<string>(providerField?.value);\n }\n\n private async runPlugin(\n name: string,\n run: PluginFunction,\n context: Context,\n options: PluginOptions,\n dmmf: DMMF.Document | undefined,\n warnings: string[]\n ) {\n const spinner = ora(`Running plugin ${colors.cyan(name)}`).start();\n await telemetry.trackSpan(\n 'cli:plugin:start',\n 'cli:plugin:complete',\n 'cli:plugin:error',\n {\n plugin: name,\n },\n async () => {\n let result = run(context.schema, options, dmmf);\n if (result instanceof Promise) {\n result = await result;\n }\n if (Array.isArray(result)) {\n warnings.push(...result);\n }\n }\n );\n spinner.succeed();\n }\n\n private getPluginModulePath(provider: string) {\n let pluginModulePath = provider;\n if (pluginModulePath.startsWith('@zenstack/')) {\n pluginModulePath = pluginModulePath.replace(/^@zenstack/, path.join(__dirname, '../plugins'));\n }\n return pluginModulePath;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"plugin-runner.js","names":["PluginRunner","run","context","version","require","console","log","colors","bold","plugins","pluginDecls","schema","declarations","filter","d","isPlugin","prereqPlugins","allPluginProviders","concat","map","p","getPluginProvider","includes","prismaOutput","pluginProvider","plugin","find","options","fields","forEach","f","value","getLiteral","getLiteralArray","CliError","name","pluginModulePath","getPluginModulePath","pluginModule","err","error","default","push","getPluginName","provider","output","warnings","dmmf","undefined","runPlugin","getDMMF","datamodel","fs","readFileSync","encoding","green","w","warn","yellow","providerField","spinner","ora","cyan","start","telemetry","trackSpan","result","Promise","Array","isArray","succeed","fail","startsWith","replace","path","join","__dirname"],"sources":["../../src/cli/plugin-runner.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport { DMMF } from '@prisma/generator-helper';\nimport { getDMMF } from '@prisma/internals';\nimport { Plugin, isPlugin } from '@zenstackhq/language/ast';\nimport { PluginFunction, PluginOptions, getLiteral, getLiteralArray } from '@zenstackhq/sdk';\nimport colors from 'colors';\nimport fs from 'fs';\nimport ora from 'ora';\nimport path from 'path';\nimport telemetry from '../telemetry';\nimport { Context } from '../types';\nimport { CliError } from './cli-error';\n\n/**\n * ZenStack code generator\n */\nexport class PluginRunner {\n /**\n * Runs a series of nested generators\n */\n async run(context: Context): Promise<void> {\n const version = require('../package.json').version;\n console.log(colors.bold(`⌛️ ZenStack CLI v${version}, running plugins`));\n\n const plugins: Array<{\n provider: string;\n name: string;\n run: PluginFunction;\n options: PluginOptions;\n }> = [];\n\n const pluginDecls = context.schema.declarations.filter((d): d is Plugin => isPlugin(d));\n const prereqPlugins = ['@zenstack/prisma', '@zenstack/model-meta', '@zenstack/access-policy'];\n const allPluginProviders = prereqPlugins.concat(\n pluginDecls\n .map((p) => this.getPluginProvider(p))\n .filter((p): p is string => !!p && !prereqPlugins.includes(p))\n );\n let prismaOutput = './prisma/schema.prisma';\n\n for (const pluginProvider of allPluginProviders) {\n const plugin = pluginDecls.find((p) => this.getPluginProvider(p) === pluginProvider);\n if (plugin) {\n const options: PluginOptions = {};\n\n plugin.fields.forEach((f) => {\n const value = getLiteral(f.value) || getLiteralArray(f.value);\n if (!value) {\n throw new CliError(`Invalid plugin value for ${f.name}`);\n }\n options[f.name] = value;\n });\n\n const pluginModulePath = this.getPluginModulePath(pluginProvider);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let pluginModule: any;\n try {\n pluginModule = require(pluginModulePath);\n } catch (err) {\n console.error(`Unable to load plugin module ${pluginProvider}: ${pluginModulePath}, ${err}`);\n throw new CliError(`Unable to load plugin module ${pluginProvider}`);\n }\n\n if (!pluginModule.default || typeof pluginModule.default !== 'function') {\n console.error(`Plugin provider ${pluginProvider} is missing a default function export`);\n throw new CliError(`Plugin provider ${pluginProvider} is missing a default function export`);\n }\n plugins.push({\n name: this.getPluginName(pluginModule, pluginProvider),\n provider: pluginProvider,\n run: pluginModule.default as PluginFunction,\n options,\n });\n\n if (pluginProvider === '@zenstack/prisma' && options.output) {\n // record custom prisma output path\n prismaOutput = options.output as string;\n }\n } else {\n // synthesize a plugin\n const pluginModule = require(this.getPluginModulePath(pluginProvider));\n plugins.push({\n name: this.getPluginName(pluginModule, pluginProvider),\n provider: pluginProvider,\n run: pluginModule.default,\n options: {},\n });\n }\n }\n\n const warnings: string[] = [];\n\n let dmmf: DMMF.Document | undefined = undefined;\n for (const { name, provider, run, options } of plugins) {\n await this.runPlugin(name, run, context, options, dmmf, warnings);\n if (provider === '@zenstack/prisma') {\n // load prisma DMMF\n dmmf = await getDMMF({\n datamodel: fs.readFileSync(prismaOutput, { encoding: 'utf-8' }),\n });\n }\n }\n\n console.log(colors.green(colors.bold('\\n👻 All plugins completed successfully!')));\n\n warnings.forEach((w) => console.warn(colors.yellow(w)));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private getPluginName(pluginModule: any, pluginProvider: string): string {\n return typeof pluginModule.name === 'string' ? (pluginModule.name as string) : pluginProvider;\n }\n\n private getPluginProvider(plugin: Plugin) {\n const providerField = plugin.fields.find((f) => f.name === 'provider');\n return getLiteral<string>(providerField?.value);\n }\n\n private async runPlugin(\n name: string,\n run: PluginFunction,\n context: Context,\n options: PluginOptions,\n dmmf: DMMF.Document | undefined,\n warnings: string[]\n ) {\n const spinner = ora(`Running plugin ${colors.cyan(name)}`).start();\n try {\n await telemetry.trackSpan(\n 'cli:plugin:start',\n 'cli:plugin:complete',\n 'cli:plugin:error',\n {\n plugin: name,\n },\n async () => {\n let result = run(context.schema, options, dmmf);\n if (result instanceof Promise) {\n result = await result;\n }\n if (Array.isArray(result)) {\n warnings.push(...result);\n }\n }\n );\n spinner.succeed();\n } catch (err) {\n spinner.fail();\n throw err;\n }\n }\n\n private getPluginModulePath(provider: string) {\n let pluginModulePath = provider;\n if (pluginModulePath.startsWith('@zenstack/')) {\n pluginModulePath = pluginModulePath.replace(/^@zenstack/, path.join(__dirname, '../plugins'));\n }\n return pluginModulePath;\n }\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publisher": "zenstack",
4
4
  "displayName": "ZenStack Language Tools",
5
5
  "description": "A toolkit for building secure CRUD apps with Next.js + Typescript",
6
- "version": "1.0.0-alpha.19",
6
+ "version": "1.0.0-alpha.20",
7
7
  "author": {
8
8
  "name": "ZenStack Team"
9
9
  },
@@ -90,9 +90,9 @@
90
90
  "vscode-languageserver-textdocument": "^1.0.7",
91
91
  "vscode-uri": "^3.0.6",
92
92
  "zod": "^3.19.1",
93
- "@zenstackhq/language": "1.0.0-alpha.19",
94
- "@zenstackhq/runtime": "1.0.0-alpha.19",
95
- "@zenstackhq/sdk": "1.0.0-alpha.19"
93
+ "@zenstackhq/language": "1.0.0-alpha.20",
94
+ "@zenstackhq/runtime": "1.0.0-alpha.20",
95
+ "@zenstackhq/sdk": "1.0.0-alpha.20"
96
96
  },
97
97
  "devDependencies": {
98
98
  "@babel/cli": "^7.19.3",
@@ -111,6 +111,7 @@
111
111
  "@typescript-eslint/parser": "^5.42.0",
112
112
  "babel-plugin-inline-dotenv": "^1.7.0",
113
113
  "concurrently": "^7.4.0",
114
+ "copyfiles": "^2.4.1",
114
115
  "dotenv": "^16.0.3",
115
116
  "esbuild": "^0.15.12",
116
117
  "eslint": "^8.27.0",
@@ -130,7 +131,7 @@
130
131
  "vscode:prepublish": "pnpm lint && pnpm bundle",
131
132
  "vscode:package": "vsce package --no-dependencies",
132
133
  "clean": "rimraf bundle dist",
133
- "build": "pnpm clean && pnpm lint && tsc && babel src -d dist --extensions '.ts' && cp -r bin src/res ./README.md ./LICENSE ./package.json dist/ && node build/post-build.js",
134
+ "build": "pnpm clean && pnpm lint && tsc && babel src -d dist --extensions '.ts' && copyfiles -F \"bin/*\" ./README.md ./LICENSE ./package.json dist && copyfiles -u 1 \"src/res/*\" dist && node build/post-build.js",
134
135
  "bundle": "pnpm clean && pnpm lint && node build/bundle.js --minify",
135
136
  "watch": "babel src -d dist --extensions '.ts' -w",
136
137
  "lint": "eslint src tests --ext ts",