zenstack 0.6.0-pre.11 → 0.6.0-pre.12

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 (203) hide show
  1. package/cli/cli-error.d.ts +5 -0
  2. package/cli/cli-error.js +12 -0
  3. package/cli/cli-error.js.map +1 -0
  4. package/cli/cli-util.d.ts +18 -0
  5. package/cli/cli-util.js +168 -0
  6. package/cli/cli-util.js.map +1 -0
  7. package/cli/index.d.ts +10 -0
  8. package/cli/index.js +78 -6531
  9. package/cli/index.js.map +1 -0
  10. package/cli/plugin-runner.d.ts +14 -0
  11. package/cli/plugin-runner.js +133 -0
  12. package/cli/plugin-runner.js.map +1 -0
  13. package/global.d.js +1 -0
  14. package/global.d.js.map +1 -0
  15. package/language-server/constants.d.ts +12 -0
  16. package/language-server/constants.js +24 -0
  17. package/language-server/constants.js.map +1 -0
  18. package/language-server/main.d.ts +1 -0
  19. package/language-server/main.js +20 -6436
  20. package/language-server/main.js.map +1 -0
  21. package/language-server/types.d.ts +10 -0
  22. package/language-server/types.js +1 -0
  23. package/language-server/types.js.map +1 -0
  24. package/language-server/utils.d.ts +10 -0
  25. package/language-server/utils.js +28 -0
  26. package/language-server/utils.js.map +1 -0
  27. package/language-server/validator/attribute-validator.d.ts +9 -0
  28. package/language-server/validator/attribute-validator.js +15 -0
  29. package/language-server/validator/attribute-validator.js.map +1 -0
  30. package/language-server/validator/datamodel-validator.d.ts +16 -0
  31. package/language-server/validator/datamodel-validator.js +365 -0
  32. package/language-server/validator/datamodel-validator.js.map +1 -0
  33. package/language-server/validator/datasource-validator.d.ts +13 -0
  34. package/language-server/validator/datasource-validator.js +85 -0
  35. package/language-server/validator/datasource-validator.js.map +1 -0
  36. package/language-server/validator/enum-validator.d.ts +9 -0
  37. package/language-server/validator/enum-validator.js +18 -0
  38. package/language-server/validator/enum-validator.js.map +1 -0
  39. package/language-server/validator/expression-validator.d.ts +11 -0
  40. package/language-server/validator/expression-validator.js +40 -0
  41. package/language-server/validator/expression-validator.js.map +1 -0
  42. package/language-server/validator/schema-validator.d.ts +10 -0
  43. package/language-server/validator/schema-validator.js +35 -0
  44. package/language-server/validator/schema-validator.js.map +1 -0
  45. package/language-server/validator/utils.d.ts +24 -0
  46. package/language-server/validator/utils.js +116 -0
  47. package/language-server/validator/utils.js.map +1 -0
  48. package/language-server/validator/zmodel-validator.d.ts +21 -0
  49. package/language-server/validator/zmodel-validator.js +72 -0
  50. package/language-server/validator/zmodel-validator.js.map +1 -0
  51. package/language-server/zmodel-linker.d.ts +29 -0
  52. package/language-server/zmodel-linker.js +364 -0
  53. package/language-server/zmodel-linker.js.map +1 -0
  54. package/language-server/zmodel-module.d.ts +41 -0
  55. package/language-server/zmodel-module.js +84 -0
  56. package/language-server/zmodel-module.js.map +1 -0
  57. package/language-server/zmodel-scope.d.ts +10 -0
  58. package/language-server/zmodel-scope.js +34 -0
  59. package/language-server/zmodel-scope.js.map +1 -0
  60. package/language-server/zmodel-workspace-manager.d.ts +8 -0
  61. package/language-server/zmodel-workspace-manager.js +25 -0
  62. package/language-server/zmodel-workspace-manager.js.map +1 -0
  63. package/package.json +20 -15
  64. package/plugins/access-policy/expression-writer.d.ts +38 -0
  65. package/plugins/access-policy/expression-writer.js +323 -0
  66. package/plugins/access-policy/expression-writer.js.map +1 -0
  67. package/plugins/access-policy/index.d.ts +4 -0
  68. package/plugins/access-policy/index.js +15 -4289
  69. package/plugins/access-policy/index.js.map +1 -0
  70. package/plugins/access-policy/policy-guard-generator.d.ts +15 -0
  71. package/plugins/access-policy/policy-guard-generator.js +345 -0
  72. package/plugins/access-policy/policy-guard-generator.js.map +1 -0
  73. package/plugins/access-policy/typescript-expression-transformer.d.ts +26 -0
  74. package/plugins/access-policy/typescript-expression-transformer.js +110 -0
  75. package/plugins/access-policy/typescript-expression-transformer.js.map +1 -0
  76. package/plugins/access-policy/utils.d.ts +5 -0
  77. package/plugins/access-policy/utils.js +16 -0
  78. package/plugins/access-policy/utils.js.map +1 -0
  79. package/plugins/access-policy/zod-schema-generator.d.ts +12 -0
  80. package/plugins/access-policy/zod-schema-generator.js +174 -0
  81. package/plugins/access-policy/zod-schema-generator.js.map +1 -0
  82. package/plugins/model-meta/index.d.ts +4 -0
  83. package/plugins/model-meta/index.js +130 -0
  84. package/plugins/model-meta/index.js.map +1 -0
  85. package/plugins/plugin-utils.d.ts +16 -0
  86. package/plugins/plugin-utils.js +58 -0
  87. package/plugins/plugin-utils.js.map +1 -0
  88. package/plugins/prisma/indent-string.d.ts +4 -0
  89. package/plugins/prisma/indent-string.js +16 -0
  90. package/plugins/prisma/indent-string.js.map +1 -0
  91. package/plugins/prisma/index.d.ts +4 -0
  92. package/plugins/prisma/index.js +15 -3740
  93. package/plugins/prisma/index.js.map +1 -0
  94. package/plugins/prisma/prisma-builder.d.ts +123 -0
  95. package/plugins/prisma/prisma-builder.js +256 -0
  96. package/plugins/prisma/prisma-builder.js.map +1 -0
  97. package/plugins/prisma/schema-generator.d.ts +22 -0
  98. package/plugins/prisma/schema-generator.js +201 -0
  99. package/plugins/prisma/schema-generator.js.map +1 -0
  100. package/plugins/react-hooks/index.d.ts +4 -0
  101. package/plugins/react-hooks/index.js +14 -4332
  102. package/plugins/react-hooks/index.js.map +1 -0
  103. package/plugins/react-hooks/react-hooks-generator.d.ts +3 -0
  104. package/plugins/react-hooks/react-hooks-generator.js +333 -0
  105. package/plugins/react-hooks/react-hooks-generator.js.map +1 -0
  106. package/plugins/trpc/config.d.ts +9 -0
  107. package/plugins/trpc/config.js +12 -0
  108. package/plugins/trpc/config.js.map +1 -0
  109. package/plugins/trpc/generator.d.ts +4 -0
  110. package/plugins/trpc/generator.js +132 -0
  111. package/plugins/trpc/generator.js.map +1 -0
  112. package/plugins/trpc/helpers.d.ts +9 -0
  113. package/plugins/trpc/helpers.js +144 -0
  114. package/plugins/trpc/helpers.js.map +1 -0
  115. package/plugins/trpc/index.d.ts +5 -0
  116. package/plugins/trpc/index.js +14 -5401
  117. package/plugins/trpc/index.js.map +1 -0
  118. package/plugins/trpc/project.d.ts +2 -0
  119. package/plugins/trpc/project.js +21 -0
  120. package/plugins/trpc/project.js.map +1 -0
  121. package/plugins/trpc/types.d.ts +0 -0
  122. package/plugins/trpc/types.js +1 -0
  123. package/plugins/trpc/types.js.map +1 -0
  124. package/plugins/trpc/utils/removeDir.d.ts +1 -0
  125. package/plugins/trpc/utils/removeDir.js +22 -0
  126. package/plugins/trpc/utils/removeDir.js.map +1 -0
  127. package/plugins/trpc/utils/uncapitalizeFirstLetter.d.ts +1 -0
  128. package/plugins/trpc/utils/uncapitalizeFirstLetter.js +11 -0
  129. package/plugins/trpc/utils/uncapitalizeFirstLetter.js.map +1 -0
  130. package/plugins/zod/generator.d.ts +4 -0
  131. package/plugins/zod/generator.js +78 -0
  132. package/plugins/zod/generator.js.map +1 -0
  133. package/plugins/zod/helpers/aggregate-helpers.d.ts +5 -0
  134. package/plugins/zod/helpers/aggregate-helpers.js +77 -0
  135. package/plugins/zod/helpers/aggregate-helpers.js.map +1 -0
  136. package/plugins/zod/helpers/comments-helpers.d.ts +6 -0
  137. package/plugins/zod/helpers/comments-helpers.js +91 -0
  138. package/plugins/zod/helpers/comments-helpers.js.map +1 -0
  139. package/plugins/zod/helpers/helpers.d.ts +8 -0
  140. package/plugins/zod/helpers/helpers.js +39 -0
  141. package/plugins/zod/helpers/helpers.js.map +1 -0
  142. package/plugins/zod/helpers/include-helpers.d.ts +2 -0
  143. package/plugins/zod/helpers/include-helpers.js +94 -0
  144. package/plugins/zod/helpers/include-helpers.js.map +1 -0
  145. package/plugins/zod/helpers/index.d.ts +4 -0
  146. package/plugins/zod/helpers/index.js +50 -0
  147. package/plugins/zod/helpers/index.js.map +1 -0
  148. package/plugins/zod/helpers/model-helpers.d.ts +6 -0
  149. package/plugins/zod/helpers/model-helpers.js +50 -0
  150. package/plugins/zod/helpers/model-helpers.js.map +1 -0
  151. package/plugins/zod/helpers/modelArgs-helpers.d.ts +2 -0
  152. package/plugins/zod/helpers/modelArgs-helpers.js +62 -0
  153. package/plugins/zod/helpers/modelArgs-helpers.js.map +1 -0
  154. package/plugins/zod/helpers/mongodb-helpers.d.ts +3 -0
  155. package/plugins/zod/helpers/mongodb-helpers.js +63 -0
  156. package/plugins/zod/helpers/mongodb-helpers.js.map +1 -0
  157. package/plugins/zod/helpers/select-helpers.d.ts +2 -0
  158. package/plugins/zod/helpers/select-helpers.js +150 -0
  159. package/plugins/zod/helpers/select-helpers.js.map +1 -0
  160. package/plugins/zod/index.d.ts +5 -0
  161. package/plugins/zod/index.js +14 -4824
  162. package/plugins/zod/index.js.map +1 -0
  163. package/plugins/zod/transformer.d.ts +70 -0
  164. package/plugins/zod/transformer.js +464 -0
  165. package/plugins/zod/transformer.js.map +1 -0
  166. package/plugins/zod/types.d.ts +20 -0
  167. package/plugins/zod/types.js +1 -0
  168. package/plugins/zod/types.js.map +1 -0
  169. package/plugins/zod/utils/formatFile.d.ts +1 -0
  170. package/plugins/zod/utils/formatFile.js +35 -0
  171. package/plugins/zod/utils/formatFile.js.map +1 -0
  172. package/plugins/zod/utils/removeDir.d.ts +1 -0
  173. package/plugins/zod/utils/removeDir.js +22 -0
  174. package/plugins/zod/utils/removeDir.js.map +1 -0
  175. package/plugins/zod/utils/writeFileSafely.d.ts +1 -0
  176. package/plugins/zod/utils/writeFileSafely.js +18 -0
  177. package/plugins/zod/utils/writeFileSafely.js.map +1 -0
  178. package/res/prism-zmodel.js +2 -4
  179. package/res/stdlib.zmodel +12 -1
  180. package/telemetry.d.ts +21 -0
  181. package/telemetry.js +102 -0
  182. package/telemetry.js.map +1 -0
  183. package/types.d.ts +11 -0
  184. package/types.js +1 -0
  185. package/types.js.map +1 -0
  186. package/utils/ast-utils.d.ts +15 -0
  187. package/utils/ast-utils.js +79 -0
  188. package/utils/ast-utils.js.map +1 -0
  189. package/utils/exec-utils.d.ts +6 -0
  190. package/utils/exec-utils.js +17 -0
  191. package/utils/exec-utils.js.map +1 -0
  192. package/utils/indent-string.d.ts +4 -0
  193. package/utils/indent-string.js +16 -0
  194. package/utils/indent-string.js.map +1 -0
  195. package/utils/pkg-utils.d.ts +3 -0
  196. package/utils/pkg-utils.js +43 -0
  197. package/utils/pkg-utils.js.map +1 -0
  198. package/asset/logo-256-bg.png +0 -0
  199. package/asset/logo-dark-256.png +0 -0
  200. package/asset/logo-light-256.png +0 -0
  201. package/extension.js +0 -39
  202. package/res/package.template.json +0 -9
  203. package/res/tsconfig.template.json +0 -17
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-generator.js","names":["PrismaSchemaGenerator","generate","model","options","prisma","PrismaModel","decl","declarations","$type","DataSource","generateDataSource","Enum","generateEnum","DataModel","generateModel","Generator","generateGenerator","outFile","output","fs","existsSync","path","dirname","mkdirSync","recursive","writeFile","toString","execSync","dataSource","provider","undefined","url","shadowDatabaseUrl","f","fields","name","isStringLiteral","value","PluginError","r","extractDataSourceUrl","addDataSource","fieldValue","PrismaDataSourceUrl","isInvocationExpr","function","ref","args","length","addGenerator","map","isArrayExpr","getLiteralArray","getLiteral","addModel","field","generateModelField","allowAll","denyAll","hasFieldValidation","analyzePolicies","addField","GUARD_FIELD_NAME","PrismaFieldAttribute","PrismaAttributeArg","PrismaAttributeArgValue","TRANSACTION_FIELD_NAME","addAttribute","attr","attributes","filter","isPrismaAttribute","generateModelAttribute","find","a","fieldType","type","reference","$container","ModelFieldType","array","optional","makeFieldAttribute","resolved","arg","makeAttributeArg","makeAttributeArgValue","node","isLiteralExpr","Array","items","item","isReferenceExpr","PrismaFieldReference","target","PrismaFieldReferenceArg","makeFunctionCall","PrismaFunctionCall","PrismaFunctionCallArg","push","PrismaModelAttribute","addEnum"],"sources":["../../../src/plugins/prisma/schema-generator.ts"],"sourcesContent":["import {\n AstNode,\n Attribute,\n AttributeArg,\n DataModel,\n DataModelAttribute,\n DataModelField,\n DataModelFieldAttribute,\n DataSource,\n Enum,\n Expression,\n Generator,\n InvocationExpr,\n LiteralExpr,\n Model,\n isArrayExpr,\n isInvocationExpr,\n isLiteralExpr,\n isReferenceExpr,\n} from '@zenstackhq/language/ast';\nimport {\n GUARD_FIELD_NAME,\n PluginError,\n PluginOptions,\n TRANSACTION_FIELD_NAME,\n getLiteral,\n getLiteralArray,\n resolved,\n} from '@zenstackhq/sdk';\nimport fs from 'fs';\nimport { writeFile } from 'fs/promises';\nimport path from 'path';\nimport { analyzePolicies } from '../../utils/ast-utils';\nimport { execSync } from '../../utils/exec-utils';\nimport {\n ModelFieldType,\n AttributeArg as PrismaAttributeArg,\n AttributeArgValue as PrismaAttributeArgValue,\n Model as PrismaDataModel,\n DataSourceUrl as PrismaDataSourceUrl,\n FieldAttribute as PrismaFieldAttribute,\n FieldReference as PrismaFieldReference,\n FieldReferenceArg as PrismaFieldReferenceArg,\n FunctionCall as PrismaFunctionCall,\n FunctionCallArg as PrismaFunctionCallArg,\n PrismaModel,\n ModelAttribute as PrismaModelAttribute,\n} from './prisma-builder';\n\n/**\n * Generates Prisma schema file\n */\nexport default class PrismaSchemaGenerator {\n async generate(model: Model, options: PluginOptions) {\n const prisma = new PrismaModel();\n\n for (const decl of model.declarations) {\n switch (decl.$type) {\n case DataSource:\n this.generateDataSource(prisma, decl as DataSource);\n break;\n\n case Enum:\n this.generateEnum(prisma, decl as Enum);\n break;\n\n case DataModel:\n this.generateModel(prisma, decl as DataModel);\n break;\n\n case Generator:\n this.generateGenerator(prisma, decl as Generator);\n break;\n }\n }\n\n const outFile = (options.output as string) ?? './prisma/schema.prisma';\n if (!fs.existsSync(path.dirname(outFile))) {\n fs.mkdirSync(path.dirname(outFile), { recursive: true });\n }\n await writeFile(outFile, prisma.toString());\n\n // run 'prisma generate'\n await execSync(`npx prisma generate --schema ${outFile}`);\n }\n\n private generateDataSource(prisma: PrismaModel, dataSource: DataSource) {\n let provider: string | undefined = undefined;\n let url: PrismaDataSourceUrl | undefined = undefined;\n let shadowDatabaseUrl: PrismaDataSourceUrl | undefined = undefined;\n\n for (const f of dataSource.fields) {\n switch (f.name) {\n case 'provider': {\n if (this.isStringLiteral(f.value)) {\n provider = f.value.value as string;\n } else {\n throw new PluginError('Datasource provider must be set to a string');\n }\n break;\n }\n\n case 'url': {\n const r = this.extractDataSourceUrl(f.value);\n if (!r) {\n throw new PluginError('Invalid value for datasource url');\n }\n url = r;\n break;\n }\n\n case 'shadowDatabaseUrl': {\n const r = this.extractDataSourceUrl(f.value);\n if (!r) {\n throw new PluginError('Invalid value for datasource url');\n }\n shadowDatabaseUrl = r;\n break;\n }\n }\n }\n\n if (!provider) {\n throw new PluginError('Datasource is missing \"provider\" field');\n }\n if (!url) {\n throw new PluginError('Datasource is missing \"url\" field');\n }\n\n prisma.addDataSource(dataSource.name, provider, url, shadowDatabaseUrl);\n }\n\n private extractDataSourceUrl(fieldValue: LiteralExpr | InvocationExpr) {\n if (this.isStringLiteral(fieldValue)) {\n return new PrismaDataSourceUrl(fieldValue.value as string, false);\n } else if (\n isInvocationExpr(fieldValue) &&\n fieldValue.function.ref?.name === 'env' &&\n fieldValue.args.length === 1 &&\n this.isStringLiteral(fieldValue.args[0].value)\n ) {\n return new PrismaDataSourceUrl(fieldValue.args[0].value.value as string, true);\n } else {\n return null;\n }\n }\n\n private generateGenerator(prisma: PrismaModel, decl: Generator) {\n prisma.addGenerator(\n decl.name,\n decl.fields.map((f) => {\n const value = isArrayExpr(f.value) ? getLiteralArray(f.value) : getLiteral(f.value);\n return { name: f.name, value };\n })\n );\n }\n\n private generateModel(prisma: PrismaModel, decl: DataModel) {\n const model = prisma.addModel(decl.name);\n for (const field of decl.fields) {\n this.generateModelField(model, field);\n }\n\n const { allowAll, denyAll, hasFieldValidation } = analyzePolicies(decl);\n\n if ((!allowAll && !denyAll) || hasFieldValidation) {\n // generate auxiliary fields for policy check\n\n // add an \"zenstack_guard\" field for dealing with pure auth() related conditions\n model.addField(GUARD_FIELD_NAME, 'Boolean', [\n new PrismaFieldAttribute('@default', [\n new PrismaAttributeArg(undefined, new PrismaAttributeArgValue('Boolean', true)),\n ]),\n ]);\n\n // add an \"zenstack_transaction\" field for tracking records created/updated with nested writes\n model.addField(TRANSACTION_FIELD_NAME, 'String?');\n\n // create an index for \"zenstack_transaction\" field\n model.addAttribute('@@index', [\n new PrismaAttributeArg(\n undefined,\n new PrismaAttributeArgValue('Array', [\n new PrismaAttributeArgValue('FieldReference', TRANSACTION_FIELD_NAME),\n ])\n ),\n ]);\n }\n\n for (const attr of decl.attributes.filter((attr) => attr.decl.ref && this.isPrismaAttribute(attr.decl.ref))) {\n this.generateModelAttribute(model, attr);\n }\n }\n\n private isPrismaAttribute(attr: Attribute) {\n return !!attr.attributes.find((a) => a.decl.ref?.name === '@@@prisma');\n }\n\n private generateModelField(model: PrismaDataModel, field: DataModelField) {\n const fieldType = field.type.type || field.type.reference?.ref?.name;\n if (!fieldType) {\n throw new PluginError(`Field type is not resolved: ${field.$container.name}.${field.name}`);\n }\n\n const type = new ModelFieldType(fieldType, field.type.array, field.type.optional);\n\n const attributes = field.attributes\n .filter((attr) => attr.decl.ref && this.isPrismaAttribute(attr.decl.ref))\n .map((attr) => this.makeFieldAttribute(attr));\n model.addField(field.name, type, attributes);\n }\n\n private makeFieldAttribute(attr: DataModelFieldAttribute) {\n return new PrismaFieldAttribute(\n resolved(attr.decl).name,\n attr.args.map((arg) => this.makeAttributeArg(arg))\n );\n }\n\n private makeAttributeArg(arg: AttributeArg): PrismaAttributeArg {\n return new PrismaAttributeArg(arg.name, this.makeAttributeArgValue(arg.value));\n }\n\n private makeAttributeArgValue(node: Expression): PrismaAttributeArgValue {\n if (isLiteralExpr(node)) {\n switch (typeof node.value) {\n case 'string':\n return new PrismaAttributeArgValue('String', node.value);\n case 'number':\n return new PrismaAttributeArgValue('Number', node.value);\n case 'boolean':\n return new PrismaAttributeArgValue('Boolean', node.value);\n default:\n throw new PluginError(`Unexpected literal type: ${typeof node.value}`);\n }\n } else if (isArrayExpr(node)) {\n return new PrismaAttributeArgValue(\n 'Array',\n new Array(...node.items.map((item) => this.makeAttributeArgValue(item)))\n );\n } else if (isReferenceExpr(node)) {\n return new PrismaAttributeArgValue(\n 'FieldReference',\n new PrismaFieldReference(\n resolved(node.target).name,\n node.args.map((arg) => new PrismaFieldReferenceArg(arg.name, arg.value))\n )\n );\n } else if (isInvocationExpr(node)) {\n // invocation\n return new PrismaAttributeArgValue('FunctionCall', this.makeFunctionCall(node));\n } else {\n throw new PluginError(`Unsupported attribute argument expression type: ${node.$type}`);\n }\n }\n\n makeFunctionCall(node: InvocationExpr): PrismaFunctionCall {\n return new PrismaFunctionCall(\n resolved(node.function).name,\n node.args.map((arg) => {\n if (!isLiteralExpr(arg.value)) {\n throw new PluginError('Function call argument must be literal');\n }\n return new PrismaFunctionCallArg(arg.name, arg.value.value);\n })\n );\n }\n\n private generateModelAttribute(model: PrismaDataModel, attr: DataModelAttribute) {\n model.attributes.push(\n new PrismaModelAttribute(\n resolved(attr.decl).name,\n attr.args.map((arg) => this.makeAttributeArg(arg))\n )\n );\n }\n\n private generateEnum(prisma: PrismaModel, decl: Enum) {\n prisma.addEnum(\n decl.name,\n decl.fields.map((f) => f.name)\n );\n }\n\n private isStringLiteral(node: AstNode): node is LiteralExpr {\n return isLiteralExpr(node) && typeof node.value === 'string';\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Model } from '@zenstackhq/language/ast';
2
+ import { PluginOptions } from '@zenstackhq/sdk';
3
+ export declare const name = "React Hooks";
4
+ export default function run(model: Model, options: PluginOptions): Promise<string[]>;