@contember/client-content-generator 2.0.0-alpha.15 → 2.0.0-alpha.17

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 (34) hide show
  1. package/dist/development/src/EntityTypeSchemaGenerator.cjs +3 -2
  2. package/dist/development/src/EntityTypeSchemaGenerator.cjs.map +1 -1
  3. package/dist/development/src/EntityTypeSchemaGenerator.js +3 -2
  4. package/dist/development/src/EntityTypeSchemaGenerator.js.map +1 -1
  5. package/dist/development/src/EnumTypeSchemaGenerator.cjs +2 -1
  6. package/dist/development/src/EnumTypeSchemaGenerator.cjs.map +1 -1
  7. package/dist/development/src/EnumTypeSchemaGenerator.js +2 -1
  8. package/dist/development/src/EnumTypeSchemaGenerator.js.map +1 -1
  9. package/dist/development/src/utils.cjs +6 -0
  10. package/dist/development/src/utils.cjs.map +1 -0
  11. package/dist/development/src/utils.js +6 -0
  12. package/dist/development/src/utils.js.map +1 -0
  13. package/dist/production/src/EntityTypeSchemaGenerator.cjs +3 -2
  14. package/dist/production/src/EntityTypeSchemaGenerator.cjs.map +1 -1
  15. package/dist/production/src/EntityTypeSchemaGenerator.js +3 -2
  16. package/dist/production/src/EntityTypeSchemaGenerator.js.map +1 -1
  17. package/dist/production/src/EnumTypeSchemaGenerator.cjs +2 -1
  18. package/dist/production/src/EnumTypeSchemaGenerator.cjs.map +1 -1
  19. package/dist/production/src/EnumTypeSchemaGenerator.js +2 -1
  20. package/dist/production/src/EnumTypeSchemaGenerator.js.map +1 -1
  21. package/dist/production/src/utils.cjs +6 -0
  22. package/dist/production/src/utils.cjs.map +1 -0
  23. package/dist/production/src/utils.js +6 -0
  24. package/dist/production/src/utils.js.map +1 -0
  25. package/dist/types/EntityTypeSchemaGenerator.d.ts.map +1 -1
  26. package/dist/types/EnumTypeSchemaGenerator.d.ts.map +1 -1
  27. package/dist/types/tsconfig.tsbuildinfo +1 -1
  28. package/dist/types/utils.d.ts +2 -0
  29. package/dist/types/utils.d.ts.map +1 -0
  30. package/package.json +6 -6
  31. package/src/EntityTypeSchemaGenerator.ts +4 -2
  32. package/src/EnumTypeSchemaGenerator.ts +2 -1
  33. package/src/utils.ts +3 -0
  34. package/tests/generateEnumTypes.test.ts +1 -1
@@ -2,11 +2,12 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const schema = require("@contember/schema");
4
4
  const schemaUtils = require("@contember/schema-utils");
5
+ const utils = require("./utils.cjs");
5
6
  class EntityTypeSchemaGenerator {
6
7
  generate(model) {
7
8
  let code = "";
8
9
  for (const enumName of Object.keys(model.enums)) {
9
- code += `import type { ${enumName} } from './enums'
10
+ code += `import type { ${utils.getEnumTypeName(enumName)} } from './enums'
10
11
  `;
11
12
  }
12
13
  code += `
@@ -130,7 +131,7 @@ const uniqueType = (model, entity, field) => {
130
131
  const columnToTsType = (column) => {
131
132
  switch (column.type) {
132
133
  case schema.Model.ColumnType.Enum:
133
- return column.columnType;
134
+ return utils.getEnumTypeName(column.columnType);
134
135
  case schema.Model.ColumnType.String:
135
136
  return "string";
136
137
  case schema.Model.ColumnType.Int:
@@ -1 +1 @@
1
- {"version":3,"file":"EntityTypeSchemaGenerator.cjs","sources":["../../../../packages/client-content-generator/src/EntityTypeSchemaGenerator.ts"],"sourcesContent":["import { Model } from '@contember/schema'\nimport { acceptEveryFieldVisitor, acceptFieldVisitor } from '@contember/schema-utils'\n\nexport class EntityTypeSchemaGenerator {\n\tgenerate(model: Model.Schema): string {\n\t\tlet code = ''\n\t\tfor (const enumName of Object.keys(model.enums)) {\n\t\t\tcode += `import type { ${enumName} } from './enums'\\n`\n\t\t}\n\n\t\tcode += `\nexport type JSONPrimitive = string | number | boolean | null\nexport type JSONValue = JSONPrimitive | JSONObject | JSONArray\nexport type JSONObject = { readonly [K in string]?: JSONValue }\nexport type JSONArray = readonly JSONValue[]\n\n`\n\n\t\tfor (const entity of Object.values(model.entities)) {\n\t\t\tcode += this.generateTypeEntityCode(model, entity)\n\t\t}\n\t\tcode += '\\n'\n\t\tcode += `export type ContemberClientEntities = {\\n`\n\t\tfor (const entity of Object.values(model.entities)) {\n\t\t\tcode += `\\t${entity.name}: ${entity.name}\\n`\n\t\t}\n\t\tcode += '}\\n\\n'\n\t\tcode += `export type ContemberClientSchema = {\\n`\n\t\tcode += '\\tentities: ContemberClientEntities\\n'\n\t\tcode += '}\\n'\n\t\treturn code\n\t}\n\n\tprivate generateTypeEntityCode(model: Model.Schema, entity: Model.Entity): string {\n\t\tlet code = `export type ${entity.name} <OverRelation extends string | never = never> = {\\n`\n\t\tcode += '\\tname: \\'' + entity.name + '\\'\\n'\n\t\tcode += '\\tunique:\\n'\n\t\tcode += this.formatUniqueFields(model, entity)\n\t\tlet columnsCode = ''\n\t\tlet hasOneCode = ''\n\t\tlet hasManyCode = ''\n\t\tacceptEveryFieldVisitor(model, entity, {\n\t\t\tvisitHasMany: ctx => {\n\t\t\t\thasManyCode += `\\t\\t${ctx.relation.name}: ${ctx.targetEntity.name}${ctx.targetRelation?.type === Model.RelationType.ManyHasOne ? `<'${ctx.targetRelation.name}'>` : ''}\\n`\n\t\t\t},\n\t\t\tvisitHasOne: ctx => {\n\t\t\t\thasOneCode += `\\t\\t${ctx.relation.name}: ${ctx.targetEntity.name}\\n`\n\t\t\t},\n\t\t\tvisitColumn: ctx => {\n\t\t\t\tcolumnsCode += `\\t\\t${ctx.column.name}: ${columnToTsType(ctx.column)}${ctx.column.nullable ? ` | null` : ''}\\n`\n\t\t\t},\n\t\t})\n\n\t\tcode += '\\tcolumns: {\\n'\n\t\tcode += columnsCode\n\t\tcode += '\\t}\\n'\n\t\tcode += '\\thasOne: {\\n'\n\t\tcode += hasOneCode\n\t\tcode += '\\t}\\n'\n\t\tcode += '\\thasMany: {\\n'\n\t\tcode += hasManyCode\n\t\tcode += '\\t}\\n'\n\t\tcode += '\\thasManyBy: {\\n'\n\t\tcode += this.formatReducedFields(model, entity)\n\t\tcode += '\\t}\\n'\n\t\tcode += '}\\n'\n\t\treturn code\n\t}\n\n\tprivate formatReducedFields(model: Model.Schema, entity: Model.Entity): string {\n\t\tlet code = ''\n\t\tacceptEveryFieldVisitor(model, entity, {\n\t\t\tvisitOneHasMany: ({ entity, relation, targetEntity, targetRelation }) => {\n\t\t\t\tif (!targetRelation) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tconst uniqueConstraints = getFieldsForUniqueWhere(model, targetEntity)\n\t\t\t\tconst composedUnique = uniqueConstraints\n\t\t\t\t\t.filter(fields => fields.length === 2) //todo support all uniques\n\t\t\t\t\t.filter(fields => fields.includes(targetRelation.name))\n\t\t\t\t\t.map(fields => fields.filter(it => it !== targetRelation.name))\n\t\t\t\t\t.map(fields => fields[0])\n\t\t\t\tconst singleUnique = uniqueConstraints\n\t\t\t\t\t.filter(fields => fields.length === 1 && fields[0] !== targetEntity.primary)\n\t\t\t\t\t.map(fields => fields[0])\n\t\t\t\t\t.filter(it => it !== targetRelation.name)\n\n\t\t\t\t;[...composedUnique, ...singleUnique].forEach(fieldName => {\n\t\t\t\t\tconst capitalizeFirstLetter = (value: string) => {\n\t\t\t\t\t\treturn value.charAt(0).toUpperCase() + value.slice(1)\n\t\t\t\t\t}\n\t\t\t\t\tconst name = `${relation.name}By${capitalizeFirstLetter(fieldName)}`\n\n\t\t\t\t\tconst targetUnique = targetEntity.fields[fieldName]\n\n\t\t\t\t\tcode += `\\t\\t${name}: { entity: ${targetEntity.name}; by: {${fieldName}: ${uniqueType(model, targetEntity, targetUnique)}} }\\n`\n\n\t\t\t\t})\n\t\t\t},\n\t\t\tvisitColumn: () => {\n\t\t\t},\n\t\t\tvisitManyHasManyInverse: () => {\n\t\t\t},\n\t\t\tvisitManyHasManyOwning: () => {\n\t\t\t},\n\t\t\tvisitManyHasOne: () => {\n\t\t\t},\n\t\t\tvisitOneHasOneInverse: () => {\n\t\t\t},\n\t\t\tvisitOneHasOneOwning: () => {\n\t\t\t},\n\t\t})\n\t\treturn code\n\t}\n\n\tprivate formatUniqueFields(model: Model.Schema, entity: Model.Entity): string {\n\t\tconst fields = getFieldsForUniqueWhere(model, entity)\n\t\tlet code = ''\n\t\tfor (const field of fields) {\n\t\t\tcode += '\\t\\t| Omit<{ '\n\t\t\tcode += field.map(it => `${it}: ${uniqueType(model, entity, entity.fields[it])}`).join(', ')\n\t\t\tcode += '}, OverRelation>\\n'\n\t\t}\n\t\treturn code\n\t}\n}\n\n\nconst uniqueType = (model: Model.Schema, entity: Model.Entity, field: Model.AnyField): string => {\n\treturn acceptFieldVisitor(model, entity, field, {\n\t\tvisitColumn: ctx => {\n\t\t\treturn columnToTsType(ctx.column)\n\t\t},\n\t\tvisitRelation: ctx => {\n\t\t\treturn ctx.targetEntity.name + `['unique']`\n\t\t},\n\t})\n}\n\n\nconst columnToTsType = (column: Model.AnyColumn): string => {\n\tswitch (column.type) {\n\t\tcase Model.ColumnType.Enum:\n\t\t\treturn column.columnType\n\t\tcase Model.ColumnType.String:\n\t\t\treturn 'string'\n\t\tcase Model.ColumnType.Int:\n\t\t\treturn 'number'\n\t\tcase Model.ColumnType.Double:\n\t\t\treturn 'number'\n\t\tcase Model.ColumnType.Bool:\n\t\t\treturn 'boolean'\n\t\tcase Model.ColumnType.DateTime:\n\t\t\treturn 'string'\n\t\tcase Model.ColumnType.Date:\n\t\t\treturn 'string'\n\t\tcase Model.ColumnType.Json:\n\t\t\treturn 'JSONValue'\n\t\tcase Model.ColumnType.Uuid:\n\t\t\treturn 'string'\n\t\tdefault:\n\t\t\t((_: never) => {\n\t\t\t\tthrow new Error(`Unknown type ${_}`)\n\t\t\t})(column.type)\n\t}\n}\n\nconst getFieldsForUniqueWhere = (schema: Model.Schema, entity: Model.Entity): readonly (readonly string[])[] => {\n\tconst relations = Object.values(\n\t\tacceptEveryFieldVisitor<undefined | [string]>(schema, entity, {\n\t\t\tvisitColumn: () => undefined,\n\t\t\tvisitManyHasManyInverse: () => undefined,\n\t\t\tvisitManyHasManyOwning: () => undefined,\n\t\t\tvisitOneHasMany: ({ relation }) => [relation.name],\n\t\t\tvisitManyHasOne: () => undefined,\n\t\t\tvisitOneHasOneInverse: ({ relation }) => [relation.name],\n\t\t\tvisitOneHasOneOwning: ({ relation }) => [relation.name],\n\t\t}),\n\t).filter((it): it is [string] => !!it)\n\n\treturn [[entity.primary], ...Object.values(entity.unique).map(it => it.fields), ...relations]\n}\n"],"names":["acceptEveryFieldVisitor","Model","entity","acceptFieldVisitor","schema"],"mappings":"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"}
1
+ {"version":3,"file":"EntityTypeSchemaGenerator.cjs","sources":["../../../../packages/client-content-generator/src/EntityTypeSchemaGenerator.ts"],"sourcesContent":["import { Model } from '@contember/schema'\nimport { acceptEveryFieldVisitor, acceptFieldVisitor } from '@contember/schema-utils'\n\nimport { getEnumTypeName } from './utils'\n\nexport class EntityTypeSchemaGenerator {\n\tgenerate(model: Model.Schema): string {\n\t\tlet code = ''\n\t\tfor (const enumName of Object.keys(model.enums)) {\n\t\t\tcode += `import type { ${getEnumTypeName(enumName)} } from './enums'\\n`\n\t\t}\n\n\t\tcode += `\nexport type JSONPrimitive = string | number | boolean | null\nexport type JSONValue = JSONPrimitive | JSONObject | JSONArray\nexport type JSONObject = { readonly [K in string]?: JSONValue }\nexport type JSONArray = readonly JSONValue[]\n\n`\n\n\t\tfor (const entity of Object.values(model.entities)) {\n\t\t\tcode += this.generateTypeEntityCode(model, entity)\n\t\t}\n\t\tcode += '\\n'\n\t\tcode += `export type ContemberClientEntities = {\\n`\n\t\tfor (const entity of Object.values(model.entities)) {\n\t\t\tcode += `\\t${entity.name}: ${entity.name}\\n`\n\t\t}\n\t\tcode += '}\\n\\n'\n\t\tcode += `export type ContemberClientSchema = {\\n`\n\t\tcode += '\\tentities: ContemberClientEntities\\n'\n\t\tcode += '}\\n'\n\t\treturn code\n\t}\n\n\tprivate generateTypeEntityCode(model: Model.Schema, entity: Model.Entity): string {\n\t\tlet code = `export type ${entity.name} <OverRelation extends string | never = never> = {\\n`\n\t\tcode += '\\tname: \\'' + entity.name + '\\'\\n'\n\t\tcode += '\\tunique:\\n'\n\t\tcode += this.formatUniqueFields(model, entity)\n\t\tlet columnsCode = ''\n\t\tlet hasOneCode = ''\n\t\tlet hasManyCode = ''\n\t\tacceptEveryFieldVisitor(model, entity, {\n\t\t\tvisitHasMany: ctx => {\n\t\t\t\thasManyCode += `\\t\\t${ctx.relation.name}: ${ctx.targetEntity.name}${ctx.targetRelation?.type === Model.RelationType.ManyHasOne ? `<'${ctx.targetRelation.name}'>` : ''}\\n`\n\t\t\t},\n\t\t\tvisitHasOne: ctx => {\n\t\t\t\thasOneCode += `\\t\\t${ctx.relation.name}: ${ctx.targetEntity.name}\\n`\n\t\t\t},\n\t\t\tvisitColumn: ctx => {\n\t\t\t\tcolumnsCode += `\\t\\t${ctx.column.name}: ${columnToTsType(ctx.column)}${ctx.column.nullable ? ` | null` : ''}\\n`\n\t\t\t},\n\t\t})\n\n\t\tcode += '\\tcolumns: {\\n'\n\t\tcode += columnsCode\n\t\tcode += '\\t}\\n'\n\t\tcode += '\\thasOne: {\\n'\n\t\tcode += hasOneCode\n\t\tcode += '\\t}\\n'\n\t\tcode += '\\thasMany: {\\n'\n\t\tcode += hasManyCode\n\t\tcode += '\\t}\\n'\n\t\tcode += '\\thasManyBy: {\\n'\n\t\tcode += this.formatReducedFields(model, entity)\n\t\tcode += '\\t}\\n'\n\t\tcode += '}\\n'\n\t\treturn code\n\t}\n\n\tprivate formatReducedFields(model: Model.Schema, entity: Model.Entity): string {\n\t\tlet code = ''\n\t\tacceptEveryFieldVisitor(model, entity, {\n\t\t\tvisitOneHasMany: ({ entity, relation, targetEntity, targetRelation }) => {\n\t\t\t\tif (!targetRelation) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tconst uniqueConstraints = getFieldsForUniqueWhere(model, targetEntity)\n\t\t\t\tconst composedUnique = uniqueConstraints\n\t\t\t\t\t.filter(fields => fields.length === 2) //todo support all uniques\n\t\t\t\t\t.filter(fields => fields.includes(targetRelation.name))\n\t\t\t\t\t.map(fields => fields.filter(it => it !== targetRelation.name))\n\t\t\t\t\t.map(fields => fields[0])\n\t\t\t\tconst singleUnique = uniqueConstraints\n\t\t\t\t\t.filter(fields => fields.length === 1 && fields[0] !== targetEntity.primary)\n\t\t\t\t\t.map(fields => fields[0])\n\t\t\t\t\t.filter(it => it !== targetRelation.name)\n\n\t\t\t\t;[...composedUnique, ...singleUnique].forEach(fieldName => {\n\t\t\t\t\tconst capitalizeFirstLetter = (value: string) => {\n\t\t\t\t\t\treturn value.charAt(0).toUpperCase() + value.slice(1)\n\t\t\t\t\t}\n\t\t\t\t\tconst name = `${relation.name}By${capitalizeFirstLetter(fieldName)}`\n\n\t\t\t\t\tconst targetUnique = targetEntity.fields[fieldName]\n\n\t\t\t\t\tcode += `\\t\\t${name}: { entity: ${targetEntity.name}; by: {${fieldName}: ${uniqueType(model, targetEntity, targetUnique)}} }\\n`\n\n\t\t\t\t})\n\t\t\t},\n\t\t\tvisitColumn: () => {\n\t\t\t},\n\t\t\tvisitManyHasManyInverse: () => {\n\t\t\t},\n\t\t\tvisitManyHasManyOwning: () => {\n\t\t\t},\n\t\t\tvisitManyHasOne: () => {\n\t\t\t},\n\t\t\tvisitOneHasOneInverse: () => {\n\t\t\t},\n\t\t\tvisitOneHasOneOwning: () => {\n\t\t\t},\n\t\t})\n\t\treturn code\n\t}\n\n\tprivate formatUniqueFields(model: Model.Schema, entity: Model.Entity): string {\n\t\tconst fields = getFieldsForUniqueWhere(model, entity)\n\t\tlet code = ''\n\t\tfor (const field of fields) {\n\t\t\tcode += '\\t\\t| Omit<{ '\n\t\t\tcode += field.map(it => `${it}: ${uniqueType(model, entity, entity.fields[it])}`).join(', ')\n\t\t\tcode += '}, OverRelation>\\n'\n\t\t}\n\t\treturn code\n\t}\n}\n\n\nconst uniqueType = (model: Model.Schema, entity: Model.Entity, field: Model.AnyField): string => {\n\treturn acceptFieldVisitor(model, entity, field, {\n\t\tvisitColumn: ctx => {\n\t\t\treturn columnToTsType(ctx.column)\n\t\t},\n\t\tvisitRelation: ctx => {\n\t\t\treturn ctx.targetEntity.name + `['unique']`\n\t\t},\n\t})\n}\n\n\nconst columnToTsType = (column: Model.AnyColumn): string => {\n\tswitch (column.type) {\n\t\tcase Model.ColumnType.Enum:\n\t\t\treturn getEnumTypeName(column.columnType)\n\t\tcase Model.ColumnType.String:\n\t\t\treturn 'string'\n\t\tcase Model.ColumnType.Int:\n\t\t\treturn 'number'\n\t\tcase Model.ColumnType.Double:\n\t\t\treturn 'number'\n\t\tcase Model.ColumnType.Bool:\n\t\t\treturn 'boolean'\n\t\tcase Model.ColumnType.DateTime:\n\t\t\treturn 'string'\n\t\tcase Model.ColumnType.Date:\n\t\t\treturn 'string'\n\t\tcase Model.ColumnType.Json:\n\t\t\treturn 'JSONValue'\n\t\tcase Model.ColumnType.Uuid:\n\t\t\treturn 'string'\n\t\tdefault:\n\t\t\t((_: never) => {\n\t\t\t\tthrow new Error(`Unknown type ${_}`)\n\t\t\t})(column.type)\n\t}\n}\n\nconst getFieldsForUniqueWhere = (schema: Model.Schema, entity: Model.Entity): readonly (readonly string[])[] => {\n\tconst relations = Object.values(\n\t\tacceptEveryFieldVisitor<undefined | [string]>(schema, entity, {\n\t\t\tvisitColumn: () => undefined,\n\t\t\tvisitManyHasManyInverse: () => undefined,\n\t\t\tvisitManyHasManyOwning: () => undefined,\n\t\t\tvisitOneHasMany: ({ relation }) => [relation.name],\n\t\t\tvisitManyHasOne: () => undefined,\n\t\t\tvisitOneHasOneInverse: ({ relation }) => [relation.name],\n\t\t\tvisitOneHasOneOwning: ({ relation }) => [relation.name],\n\t\t}),\n\t).filter((it): it is [string] => !!it)\n\n\treturn [[entity.primary], ...Object.values(entity.unique).map(it => it.fields), ...relations]\n}\n"],"names":["getEnumTypeName","acceptEveryFieldVisitor","Model","entity","acceptFieldVisitor","schema"],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  import { Model } from "@contember/schema";
2
2
  import { acceptEveryFieldVisitor, acceptFieldVisitor } from "@contember/schema-utils";
3
+ import { getEnumTypeName } from "./utils.js";
3
4
  class EntityTypeSchemaGenerator {
4
5
  generate(model) {
5
6
  let code = "";
6
7
  for (const enumName of Object.keys(model.enums)) {
7
- code += `import type { ${enumName} } from './enums'
8
+ code += `import type { ${getEnumTypeName(enumName)} } from './enums'
8
9
  `;
9
10
  }
10
11
  code += `
@@ -128,7 +129,7 @@ const uniqueType = (model, entity, field) => {
128
129
  const columnToTsType = (column) => {
129
130
  switch (column.type) {
130
131
  case Model.ColumnType.Enum:
131
- return column.columnType;
132
+ return getEnumTypeName(column.columnType);
132
133
  case Model.ColumnType.String:
133
134
  return "string";
134
135
  case Model.ColumnType.Int:
@@ -1 +1 @@
1
- {"version":3,"file":"EntityTypeSchemaGenerator.js","sources":["../../../../packages/client-content-generator/src/EntityTypeSchemaGenerator.ts"],"sourcesContent":["import { Model } from '@contember/schema'\nimport { acceptEveryFieldVisitor, acceptFieldVisitor } from '@contember/schema-utils'\n\nexport class EntityTypeSchemaGenerator {\n\tgenerate(model: Model.Schema): string {\n\t\tlet code = ''\n\t\tfor (const enumName of Object.keys(model.enums)) {\n\t\t\tcode += `import type { ${enumName} } from './enums'\\n`\n\t\t}\n\n\t\tcode += `\nexport type JSONPrimitive = string | number | boolean | null\nexport type JSONValue = JSONPrimitive | JSONObject | JSONArray\nexport type JSONObject = { readonly [K in string]?: JSONValue }\nexport type JSONArray = readonly JSONValue[]\n\n`\n\n\t\tfor (const entity of Object.values(model.entities)) {\n\t\t\tcode += this.generateTypeEntityCode(model, entity)\n\t\t}\n\t\tcode += '\\n'\n\t\tcode += `export type ContemberClientEntities = {\\n`\n\t\tfor (const entity of Object.values(model.entities)) {\n\t\t\tcode += `\\t${entity.name}: ${entity.name}\\n`\n\t\t}\n\t\tcode += '}\\n\\n'\n\t\tcode += `export type ContemberClientSchema = {\\n`\n\t\tcode += '\\tentities: ContemberClientEntities\\n'\n\t\tcode += '}\\n'\n\t\treturn code\n\t}\n\n\tprivate generateTypeEntityCode(model: Model.Schema, entity: Model.Entity): string {\n\t\tlet code = `export type ${entity.name} <OverRelation extends string | never = never> = {\\n`\n\t\tcode += '\\tname: \\'' + entity.name + '\\'\\n'\n\t\tcode += '\\tunique:\\n'\n\t\tcode += this.formatUniqueFields(model, entity)\n\t\tlet columnsCode = ''\n\t\tlet hasOneCode = ''\n\t\tlet hasManyCode = ''\n\t\tacceptEveryFieldVisitor(model, entity, {\n\t\t\tvisitHasMany: ctx => {\n\t\t\t\thasManyCode += `\\t\\t${ctx.relation.name}: ${ctx.targetEntity.name}${ctx.targetRelation?.type === Model.RelationType.ManyHasOne ? `<'${ctx.targetRelation.name}'>` : ''}\\n`\n\t\t\t},\n\t\t\tvisitHasOne: ctx => {\n\t\t\t\thasOneCode += `\\t\\t${ctx.relation.name}: ${ctx.targetEntity.name}\\n`\n\t\t\t},\n\t\t\tvisitColumn: ctx => {\n\t\t\t\tcolumnsCode += `\\t\\t${ctx.column.name}: ${columnToTsType(ctx.column)}${ctx.column.nullable ? ` | null` : ''}\\n`\n\t\t\t},\n\t\t})\n\n\t\tcode += '\\tcolumns: {\\n'\n\t\tcode += columnsCode\n\t\tcode += '\\t}\\n'\n\t\tcode += '\\thasOne: {\\n'\n\t\tcode += hasOneCode\n\t\tcode += '\\t}\\n'\n\t\tcode += '\\thasMany: {\\n'\n\t\tcode += hasManyCode\n\t\tcode += '\\t}\\n'\n\t\tcode += '\\thasManyBy: {\\n'\n\t\tcode += this.formatReducedFields(model, entity)\n\t\tcode += '\\t}\\n'\n\t\tcode += '}\\n'\n\t\treturn code\n\t}\n\n\tprivate formatReducedFields(model: Model.Schema, entity: Model.Entity): string {\n\t\tlet code = ''\n\t\tacceptEveryFieldVisitor(model, entity, {\n\t\t\tvisitOneHasMany: ({ entity, relation, targetEntity, targetRelation }) => {\n\t\t\t\tif (!targetRelation) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tconst uniqueConstraints = getFieldsForUniqueWhere(model, targetEntity)\n\t\t\t\tconst composedUnique = uniqueConstraints\n\t\t\t\t\t.filter(fields => fields.length === 2) //todo support all uniques\n\t\t\t\t\t.filter(fields => fields.includes(targetRelation.name))\n\t\t\t\t\t.map(fields => fields.filter(it => it !== targetRelation.name))\n\t\t\t\t\t.map(fields => fields[0])\n\t\t\t\tconst singleUnique = uniqueConstraints\n\t\t\t\t\t.filter(fields => fields.length === 1 && fields[0] !== targetEntity.primary)\n\t\t\t\t\t.map(fields => fields[0])\n\t\t\t\t\t.filter(it => it !== targetRelation.name)\n\n\t\t\t\t;[...composedUnique, ...singleUnique].forEach(fieldName => {\n\t\t\t\t\tconst capitalizeFirstLetter = (value: string) => {\n\t\t\t\t\t\treturn value.charAt(0).toUpperCase() + value.slice(1)\n\t\t\t\t\t}\n\t\t\t\t\tconst name = `${relation.name}By${capitalizeFirstLetter(fieldName)}`\n\n\t\t\t\t\tconst targetUnique = targetEntity.fields[fieldName]\n\n\t\t\t\t\tcode += `\\t\\t${name}: { entity: ${targetEntity.name}; by: {${fieldName}: ${uniqueType(model, targetEntity, targetUnique)}} }\\n`\n\n\t\t\t\t})\n\t\t\t},\n\t\t\tvisitColumn: () => {\n\t\t\t},\n\t\t\tvisitManyHasManyInverse: () => {\n\t\t\t},\n\t\t\tvisitManyHasManyOwning: () => {\n\t\t\t},\n\t\t\tvisitManyHasOne: () => {\n\t\t\t},\n\t\t\tvisitOneHasOneInverse: () => {\n\t\t\t},\n\t\t\tvisitOneHasOneOwning: () => {\n\t\t\t},\n\t\t})\n\t\treturn code\n\t}\n\n\tprivate formatUniqueFields(model: Model.Schema, entity: Model.Entity): string {\n\t\tconst fields = getFieldsForUniqueWhere(model, entity)\n\t\tlet code = ''\n\t\tfor (const field of fields) {\n\t\t\tcode += '\\t\\t| Omit<{ '\n\t\t\tcode += field.map(it => `${it}: ${uniqueType(model, entity, entity.fields[it])}`).join(', ')\n\t\t\tcode += '}, OverRelation>\\n'\n\t\t}\n\t\treturn code\n\t}\n}\n\n\nconst uniqueType = (model: Model.Schema, entity: Model.Entity, field: Model.AnyField): string => {\n\treturn acceptFieldVisitor(model, entity, field, {\n\t\tvisitColumn: ctx => {\n\t\t\treturn columnToTsType(ctx.column)\n\t\t},\n\t\tvisitRelation: ctx => {\n\t\t\treturn ctx.targetEntity.name + `['unique']`\n\t\t},\n\t})\n}\n\n\nconst columnToTsType = (column: Model.AnyColumn): string => {\n\tswitch (column.type) {\n\t\tcase Model.ColumnType.Enum:\n\t\t\treturn column.columnType\n\t\tcase Model.ColumnType.String:\n\t\t\treturn 'string'\n\t\tcase Model.ColumnType.Int:\n\t\t\treturn 'number'\n\t\tcase Model.ColumnType.Double:\n\t\t\treturn 'number'\n\t\tcase Model.ColumnType.Bool:\n\t\t\treturn 'boolean'\n\t\tcase Model.ColumnType.DateTime:\n\t\t\treturn 'string'\n\t\tcase Model.ColumnType.Date:\n\t\t\treturn 'string'\n\t\tcase Model.ColumnType.Json:\n\t\t\treturn 'JSONValue'\n\t\tcase Model.ColumnType.Uuid:\n\t\t\treturn 'string'\n\t\tdefault:\n\t\t\t((_: never) => {\n\t\t\t\tthrow new Error(`Unknown type ${_}`)\n\t\t\t})(column.type)\n\t}\n}\n\nconst getFieldsForUniqueWhere = (schema: Model.Schema, entity: Model.Entity): readonly (readonly string[])[] => {\n\tconst relations = Object.values(\n\t\tacceptEveryFieldVisitor<undefined | [string]>(schema, entity, {\n\t\t\tvisitColumn: () => undefined,\n\t\t\tvisitManyHasManyInverse: () => undefined,\n\t\t\tvisitManyHasManyOwning: () => undefined,\n\t\t\tvisitOneHasMany: ({ relation }) => [relation.name],\n\t\t\tvisitManyHasOne: () => undefined,\n\t\t\tvisitOneHasOneInverse: ({ relation }) => [relation.name],\n\t\t\tvisitOneHasOneOwning: ({ relation }) => [relation.name],\n\t\t}),\n\t).filter((it): it is [string] => !!it)\n\n\treturn [[entity.primary], ...Object.values(entity.unique).map(it => it.fields), ...relations]\n}\n"],"names":["entity"],"mappings":"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"}
1
+ {"version":3,"file":"EntityTypeSchemaGenerator.js","sources":["../../../../packages/client-content-generator/src/EntityTypeSchemaGenerator.ts"],"sourcesContent":["import { Model } from '@contember/schema'\nimport { acceptEveryFieldVisitor, acceptFieldVisitor } from '@contember/schema-utils'\n\nimport { getEnumTypeName } from './utils'\n\nexport class EntityTypeSchemaGenerator {\n\tgenerate(model: Model.Schema): string {\n\t\tlet code = ''\n\t\tfor (const enumName of Object.keys(model.enums)) {\n\t\t\tcode += `import type { ${getEnumTypeName(enumName)} } from './enums'\\n`\n\t\t}\n\n\t\tcode += `\nexport type JSONPrimitive = string | number | boolean | null\nexport type JSONValue = JSONPrimitive | JSONObject | JSONArray\nexport type JSONObject = { readonly [K in string]?: JSONValue }\nexport type JSONArray = readonly JSONValue[]\n\n`\n\n\t\tfor (const entity of Object.values(model.entities)) {\n\t\t\tcode += this.generateTypeEntityCode(model, entity)\n\t\t}\n\t\tcode += '\\n'\n\t\tcode += `export type ContemberClientEntities = {\\n`\n\t\tfor (const entity of Object.values(model.entities)) {\n\t\t\tcode += `\\t${entity.name}: ${entity.name}\\n`\n\t\t}\n\t\tcode += '}\\n\\n'\n\t\tcode += `export type ContemberClientSchema = {\\n`\n\t\tcode += '\\tentities: ContemberClientEntities\\n'\n\t\tcode += '}\\n'\n\t\treturn code\n\t}\n\n\tprivate generateTypeEntityCode(model: Model.Schema, entity: Model.Entity): string {\n\t\tlet code = `export type ${entity.name} <OverRelation extends string | never = never> = {\\n`\n\t\tcode += '\\tname: \\'' + entity.name + '\\'\\n'\n\t\tcode += '\\tunique:\\n'\n\t\tcode += this.formatUniqueFields(model, entity)\n\t\tlet columnsCode = ''\n\t\tlet hasOneCode = ''\n\t\tlet hasManyCode = ''\n\t\tacceptEveryFieldVisitor(model, entity, {\n\t\t\tvisitHasMany: ctx => {\n\t\t\t\thasManyCode += `\\t\\t${ctx.relation.name}: ${ctx.targetEntity.name}${ctx.targetRelation?.type === Model.RelationType.ManyHasOne ? `<'${ctx.targetRelation.name}'>` : ''}\\n`\n\t\t\t},\n\t\t\tvisitHasOne: ctx => {\n\t\t\t\thasOneCode += `\\t\\t${ctx.relation.name}: ${ctx.targetEntity.name}\\n`\n\t\t\t},\n\t\t\tvisitColumn: ctx => {\n\t\t\t\tcolumnsCode += `\\t\\t${ctx.column.name}: ${columnToTsType(ctx.column)}${ctx.column.nullable ? ` | null` : ''}\\n`\n\t\t\t},\n\t\t})\n\n\t\tcode += '\\tcolumns: {\\n'\n\t\tcode += columnsCode\n\t\tcode += '\\t}\\n'\n\t\tcode += '\\thasOne: {\\n'\n\t\tcode += hasOneCode\n\t\tcode += '\\t}\\n'\n\t\tcode += '\\thasMany: {\\n'\n\t\tcode += hasManyCode\n\t\tcode += '\\t}\\n'\n\t\tcode += '\\thasManyBy: {\\n'\n\t\tcode += this.formatReducedFields(model, entity)\n\t\tcode += '\\t}\\n'\n\t\tcode += '}\\n'\n\t\treturn code\n\t}\n\n\tprivate formatReducedFields(model: Model.Schema, entity: Model.Entity): string {\n\t\tlet code = ''\n\t\tacceptEveryFieldVisitor(model, entity, {\n\t\t\tvisitOneHasMany: ({ entity, relation, targetEntity, targetRelation }) => {\n\t\t\t\tif (!targetRelation) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tconst uniqueConstraints = getFieldsForUniqueWhere(model, targetEntity)\n\t\t\t\tconst composedUnique = uniqueConstraints\n\t\t\t\t\t.filter(fields => fields.length === 2) //todo support all uniques\n\t\t\t\t\t.filter(fields => fields.includes(targetRelation.name))\n\t\t\t\t\t.map(fields => fields.filter(it => it !== targetRelation.name))\n\t\t\t\t\t.map(fields => fields[0])\n\t\t\t\tconst singleUnique = uniqueConstraints\n\t\t\t\t\t.filter(fields => fields.length === 1 && fields[0] !== targetEntity.primary)\n\t\t\t\t\t.map(fields => fields[0])\n\t\t\t\t\t.filter(it => it !== targetRelation.name)\n\n\t\t\t\t;[...composedUnique, ...singleUnique].forEach(fieldName => {\n\t\t\t\t\tconst capitalizeFirstLetter = (value: string) => {\n\t\t\t\t\t\treturn value.charAt(0).toUpperCase() + value.slice(1)\n\t\t\t\t\t}\n\t\t\t\t\tconst name = `${relation.name}By${capitalizeFirstLetter(fieldName)}`\n\n\t\t\t\t\tconst targetUnique = targetEntity.fields[fieldName]\n\n\t\t\t\t\tcode += `\\t\\t${name}: { entity: ${targetEntity.name}; by: {${fieldName}: ${uniqueType(model, targetEntity, targetUnique)}} }\\n`\n\n\t\t\t\t})\n\t\t\t},\n\t\t\tvisitColumn: () => {\n\t\t\t},\n\t\t\tvisitManyHasManyInverse: () => {\n\t\t\t},\n\t\t\tvisitManyHasManyOwning: () => {\n\t\t\t},\n\t\t\tvisitManyHasOne: () => {\n\t\t\t},\n\t\t\tvisitOneHasOneInverse: () => {\n\t\t\t},\n\t\t\tvisitOneHasOneOwning: () => {\n\t\t\t},\n\t\t})\n\t\treturn code\n\t}\n\n\tprivate formatUniqueFields(model: Model.Schema, entity: Model.Entity): string {\n\t\tconst fields = getFieldsForUniqueWhere(model, entity)\n\t\tlet code = ''\n\t\tfor (const field of fields) {\n\t\t\tcode += '\\t\\t| Omit<{ '\n\t\t\tcode += field.map(it => `${it}: ${uniqueType(model, entity, entity.fields[it])}`).join(', ')\n\t\t\tcode += '}, OverRelation>\\n'\n\t\t}\n\t\treturn code\n\t}\n}\n\n\nconst uniqueType = (model: Model.Schema, entity: Model.Entity, field: Model.AnyField): string => {\n\treturn acceptFieldVisitor(model, entity, field, {\n\t\tvisitColumn: ctx => {\n\t\t\treturn columnToTsType(ctx.column)\n\t\t},\n\t\tvisitRelation: ctx => {\n\t\t\treturn ctx.targetEntity.name + `['unique']`\n\t\t},\n\t})\n}\n\n\nconst columnToTsType = (column: Model.AnyColumn): string => {\n\tswitch (column.type) {\n\t\tcase Model.ColumnType.Enum:\n\t\t\treturn getEnumTypeName(column.columnType)\n\t\tcase Model.ColumnType.String:\n\t\t\treturn 'string'\n\t\tcase Model.ColumnType.Int:\n\t\t\treturn 'number'\n\t\tcase Model.ColumnType.Double:\n\t\t\treturn 'number'\n\t\tcase Model.ColumnType.Bool:\n\t\t\treturn 'boolean'\n\t\tcase Model.ColumnType.DateTime:\n\t\t\treturn 'string'\n\t\tcase Model.ColumnType.Date:\n\t\t\treturn 'string'\n\t\tcase Model.ColumnType.Json:\n\t\t\treturn 'JSONValue'\n\t\tcase Model.ColumnType.Uuid:\n\t\t\treturn 'string'\n\t\tdefault:\n\t\t\t((_: never) => {\n\t\t\t\tthrow new Error(`Unknown type ${_}`)\n\t\t\t})(column.type)\n\t}\n}\n\nconst getFieldsForUniqueWhere = (schema: Model.Schema, entity: Model.Entity): readonly (readonly string[])[] => {\n\tconst relations = Object.values(\n\t\tacceptEveryFieldVisitor<undefined | [string]>(schema, entity, {\n\t\t\tvisitColumn: () => undefined,\n\t\t\tvisitManyHasManyInverse: () => undefined,\n\t\t\tvisitManyHasManyOwning: () => undefined,\n\t\t\tvisitOneHasMany: ({ relation }) => [relation.name],\n\t\t\tvisitManyHasOne: () => undefined,\n\t\t\tvisitOneHasOneInverse: ({ relation }) => [relation.name],\n\t\t\tvisitOneHasOneOwning: ({ relation }) => [relation.name],\n\t\t}),\n\t).filter((it): it is [string] => !!it)\n\n\treturn [[entity.primary], ...Object.values(entity.unique).map(it => it.fields), ...relations]\n}\n"],"names":["entity"],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const utils = require("./utils.cjs");
3
4
  class EnumTypeSchemaGenerator {
4
5
  generate(model) {
5
6
  let code = "";
6
7
  for (const [enumName, values] of Object.entries(model.enums)) {
7
- code += `export type ${enumName} = ${values.map((it) => "\n | " + JSON.stringify(it)).join("")}
8
+ code += `export type ${utils.getEnumTypeName(enumName)} = ${values.map((it) => "\n | " + JSON.stringify(it)).join("")}
8
9
  `;
9
10
  }
10
11
  return code || "export {}\n";
@@ -1 +1 @@
1
- {"version":3,"file":"EnumTypeSchemaGenerator.cjs","sources":["../../../../packages/client-content-generator/src/EnumTypeSchemaGenerator.ts"],"sourcesContent":["import { Model } from '@contember/schema'\n\nexport class EnumTypeSchemaGenerator {\n\tgenerate(model: Model.Schema): string {\n\t\tlet code = ''\n\t\tfor (const [enumName, values] of Object.entries(model.enums)) {\n\t\t\tcode += `export type ${enumName} = ${values.map(it => '\\n\\t | ' + JSON.stringify(it)).join('')}\\n`\n\t\t}\n\n\t\treturn code || 'export {}\\n'\n\t}\n}\n"],"names":[],"mappings":";;AAEO,MAAM,wBAAwB;AAAA,EACpC,SAAS,OAA6B;AACrC,QAAI,OAAO;AACA,eAAA,CAAC,UAAU,MAAM,KAAK,OAAO,QAAQ,MAAM,KAAK,GAAG;AAC7D,cAAQ,eAAe,QAAQ,MAAM,OAAO,IAAI,CAAM,OAAA,WAAY,KAAK,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;AAAA;AAAA,IAC/F;AAEA,WAAO,QAAQ;AAAA,EAChB;AACD;;"}
1
+ {"version":3,"file":"EnumTypeSchemaGenerator.cjs","sources":["../../../../packages/client-content-generator/src/EnumTypeSchemaGenerator.ts"],"sourcesContent":["import { Model } from '@contember/schema'\nimport { getEnumTypeName } from './utils'\n\nexport class EnumTypeSchemaGenerator {\n\tgenerate(model: Model.Schema): string {\n\t\tlet code = ''\n\t\tfor (const [enumName, values] of Object.entries(model.enums)) {\n\t\t\tcode += `export type ${getEnumTypeName(enumName)} = ${values.map(it => '\\n\\t | ' + JSON.stringify(it)).join('')}\\n`\n\t\t}\n\n\t\treturn code || 'export {}\\n'\n\t}\n}\n"],"names":["getEnumTypeName"],"mappings":";;;AAGO,MAAM,wBAAwB;AAAA,EACpC,SAAS,OAA6B;AACrC,QAAI,OAAO;AACA,eAAA,CAAC,UAAU,MAAM,KAAK,OAAO,QAAQ,MAAM,KAAK,GAAG;AAC7D,cAAQ,eAAeA,MAAgB,gBAAA,QAAQ,CAAC,MAAM,OAAO,IAAI,CAAA,OAAM,WAAY,KAAK,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;AAAA;AAAA,IAChH;AAEA,WAAO,QAAQ;AAAA,EAChB;AACD;;"}
@@ -1,8 +1,9 @@
1
+ import { getEnumTypeName } from "./utils.js";
1
2
  class EnumTypeSchemaGenerator {
2
3
  generate(model) {
3
4
  let code = "";
4
5
  for (const [enumName, values] of Object.entries(model.enums)) {
5
- code += `export type ${enumName} = ${values.map((it) => "\n | " + JSON.stringify(it)).join("")}
6
+ code += `export type ${getEnumTypeName(enumName)} = ${values.map((it) => "\n | " + JSON.stringify(it)).join("")}
6
7
  `;
7
8
  }
8
9
  return code || "export {}\n";
@@ -1 +1 @@
1
- {"version":3,"file":"EnumTypeSchemaGenerator.js","sources":["../../../../packages/client-content-generator/src/EnumTypeSchemaGenerator.ts"],"sourcesContent":["import { Model } from '@contember/schema'\n\nexport class EnumTypeSchemaGenerator {\n\tgenerate(model: Model.Schema): string {\n\t\tlet code = ''\n\t\tfor (const [enumName, values] of Object.entries(model.enums)) {\n\t\t\tcode += `export type ${enumName} = ${values.map(it => '\\n\\t | ' + JSON.stringify(it)).join('')}\\n`\n\t\t}\n\n\t\treturn code || 'export {}\\n'\n\t}\n}\n"],"names":[],"mappings":"AAEO,MAAM,wBAAwB;AAAA,EACpC,SAAS,OAA6B;AACrC,QAAI,OAAO;AACA,eAAA,CAAC,UAAU,MAAM,KAAK,OAAO,QAAQ,MAAM,KAAK,GAAG;AAC7D,cAAQ,eAAe,QAAQ,MAAM,OAAO,IAAI,CAAM,OAAA,WAAY,KAAK,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;AAAA;AAAA,IAC/F;AAEA,WAAO,QAAQ;AAAA,EAChB;AACD;"}
1
+ {"version":3,"file":"EnumTypeSchemaGenerator.js","sources":["../../../../packages/client-content-generator/src/EnumTypeSchemaGenerator.ts"],"sourcesContent":["import { Model } from '@contember/schema'\nimport { getEnumTypeName } from './utils'\n\nexport class EnumTypeSchemaGenerator {\n\tgenerate(model: Model.Schema): string {\n\t\tlet code = ''\n\t\tfor (const [enumName, values] of Object.entries(model.enums)) {\n\t\t\tcode += `export type ${getEnumTypeName(enumName)} = ${values.map(it => '\\n\\t | ' + JSON.stringify(it)).join('')}\\n`\n\t\t}\n\n\t\treturn code || 'export {}\\n'\n\t}\n}\n"],"names":[],"mappings":";AAGO,MAAM,wBAAwB;AAAA,EACpC,SAAS,OAA6B;AACrC,QAAI,OAAO;AACA,eAAA,CAAC,UAAU,MAAM,KAAK,OAAO,QAAQ,MAAM,KAAK,GAAG;AAC7D,cAAQ,eAAe,gBAAgB,QAAQ,CAAC,MAAM,OAAO,IAAI,CAAA,OAAM,WAAY,KAAK,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;AAAA;AAAA,IAChH;AAEA,WAAO,QAAQ;AAAA,EAChB;AACD;"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const upperCaseFirstLetter = (str) => str.charAt(0).toUpperCase() + str.slice(1);
4
+ const getEnumTypeName = (enumName) => upperCaseFirstLetter(enumName);
5
+ exports.getEnumTypeName = getEnumTypeName;
6
+ //# sourceMappingURL=utils.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.cjs","sources":["../../../../packages/client-content-generator/src/utils.ts"],"sourcesContent":["const upperCaseFirstLetter = (str: string): string => str.charAt(0).toUpperCase() + str.slice(1)\n\nexport const getEnumTypeName = (enumName: string): string => upperCaseFirstLetter(enumName)\n"],"names":[],"mappings":";;AAAA,MAAM,uBAAuB,CAAC,QAAwB,IAAI,OAAO,CAAC,EAAE,gBAAgB,IAAI,MAAM,CAAC;AAExF,MAAM,kBAAkB,CAAC,aAA6B,qBAAqB,QAAQ;;"}
@@ -0,0 +1,6 @@
1
+ const upperCaseFirstLetter = (str) => str.charAt(0).toUpperCase() + str.slice(1);
2
+ const getEnumTypeName = (enumName) => upperCaseFirstLetter(enumName);
3
+ export {
4
+ getEnumTypeName
5
+ };
6
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sources":["../../../../packages/client-content-generator/src/utils.ts"],"sourcesContent":["const upperCaseFirstLetter = (str: string): string => str.charAt(0).toUpperCase() + str.slice(1)\n\nexport const getEnumTypeName = (enumName: string): string => upperCaseFirstLetter(enumName)\n"],"names":[],"mappings":"AAAA,MAAM,uBAAuB,CAAC,QAAwB,IAAI,OAAO,CAAC,EAAE,gBAAgB,IAAI,MAAM,CAAC;AAExF,MAAM,kBAAkB,CAAC,aAA6B,qBAAqB,QAAQ;"}
@@ -2,11 +2,12 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const schema = require("@contember/schema");
4
4
  const schemaUtils = require("@contember/schema-utils");
5
+ const utils = require("./utils.cjs");
5
6
  class EntityTypeSchemaGenerator {
6
7
  generate(model) {
7
8
  let code = "";
8
9
  for (const enumName of Object.keys(model.enums)) {
9
- code += `import type { ${enumName} } from './enums'
10
+ code += `import type { ${utils.getEnumTypeName(enumName)} } from './enums'
10
11
  `;
11
12
  }
12
13
  code += `
@@ -130,7 +131,7 @@ const uniqueType = (model, entity, field) => {
130
131
  const columnToTsType = (column) => {
131
132
  switch (column.type) {
132
133
  case schema.Model.ColumnType.Enum:
133
- return column.columnType;
134
+ return utils.getEnumTypeName(column.columnType);
134
135
  case schema.Model.ColumnType.String:
135
136
  return "string";
136
137
  case schema.Model.ColumnType.Int:
@@ -1 +1 @@
1
- {"version":3,"file":"EntityTypeSchemaGenerator.cjs","sources":["../../../../packages/client-content-generator/src/EntityTypeSchemaGenerator.ts"],"sourcesContent":["import { Model } from '@contember/schema'\nimport { acceptEveryFieldVisitor, acceptFieldVisitor } from '@contember/schema-utils'\n\nexport class EntityTypeSchemaGenerator {\n\tgenerate(model: Model.Schema): string {\n\t\tlet code = ''\n\t\tfor (const enumName of Object.keys(model.enums)) {\n\t\t\tcode += `import type { ${enumName} } from './enums'\\n`\n\t\t}\n\n\t\tcode += `\nexport type JSONPrimitive = string | number | boolean | null\nexport type JSONValue = JSONPrimitive | JSONObject | JSONArray\nexport type JSONObject = { readonly [K in string]?: JSONValue }\nexport type JSONArray = readonly JSONValue[]\n\n`\n\n\t\tfor (const entity of Object.values(model.entities)) {\n\t\t\tcode += this.generateTypeEntityCode(model, entity)\n\t\t}\n\t\tcode += '\\n'\n\t\tcode += `export type ContemberClientEntities = {\\n`\n\t\tfor (const entity of Object.values(model.entities)) {\n\t\t\tcode += `\\t${entity.name}: ${entity.name}\\n`\n\t\t}\n\t\tcode += '}\\n\\n'\n\t\tcode += `export type ContemberClientSchema = {\\n`\n\t\tcode += '\\tentities: ContemberClientEntities\\n'\n\t\tcode += '}\\n'\n\t\treturn code\n\t}\n\n\tprivate generateTypeEntityCode(model: Model.Schema, entity: Model.Entity): string {\n\t\tlet code = `export type ${entity.name} <OverRelation extends string | never = never> = {\\n`\n\t\tcode += '\\tname: \\'' + entity.name + '\\'\\n'\n\t\tcode += '\\tunique:\\n'\n\t\tcode += this.formatUniqueFields(model, entity)\n\t\tlet columnsCode = ''\n\t\tlet hasOneCode = ''\n\t\tlet hasManyCode = ''\n\t\tacceptEveryFieldVisitor(model, entity, {\n\t\t\tvisitHasMany: ctx => {\n\t\t\t\thasManyCode += `\\t\\t${ctx.relation.name}: ${ctx.targetEntity.name}${ctx.targetRelation?.type === Model.RelationType.ManyHasOne ? `<'${ctx.targetRelation.name}'>` : ''}\\n`\n\t\t\t},\n\t\t\tvisitHasOne: ctx => {\n\t\t\t\thasOneCode += `\\t\\t${ctx.relation.name}: ${ctx.targetEntity.name}\\n`\n\t\t\t},\n\t\t\tvisitColumn: ctx => {\n\t\t\t\tcolumnsCode += `\\t\\t${ctx.column.name}: ${columnToTsType(ctx.column)}${ctx.column.nullable ? ` | null` : ''}\\n`\n\t\t\t},\n\t\t})\n\n\t\tcode += '\\tcolumns: {\\n'\n\t\tcode += columnsCode\n\t\tcode += '\\t}\\n'\n\t\tcode += '\\thasOne: {\\n'\n\t\tcode += hasOneCode\n\t\tcode += '\\t}\\n'\n\t\tcode += '\\thasMany: {\\n'\n\t\tcode += hasManyCode\n\t\tcode += '\\t}\\n'\n\t\tcode += '\\thasManyBy: {\\n'\n\t\tcode += this.formatReducedFields(model, entity)\n\t\tcode += '\\t}\\n'\n\t\tcode += '}\\n'\n\t\treturn code\n\t}\n\n\tprivate formatReducedFields(model: Model.Schema, entity: Model.Entity): string {\n\t\tlet code = ''\n\t\tacceptEveryFieldVisitor(model, entity, {\n\t\t\tvisitOneHasMany: ({ entity, relation, targetEntity, targetRelation }) => {\n\t\t\t\tif (!targetRelation) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tconst uniqueConstraints = getFieldsForUniqueWhere(model, targetEntity)\n\t\t\t\tconst composedUnique = uniqueConstraints\n\t\t\t\t\t.filter(fields => fields.length === 2) //todo support all uniques\n\t\t\t\t\t.filter(fields => fields.includes(targetRelation.name))\n\t\t\t\t\t.map(fields => fields.filter(it => it !== targetRelation.name))\n\t\t\t\t\t.map(fields => fields[0])\n\t\t\t\tconst singleUnique = uniqueConstraints\n\t\t\t\t\t.filter(fields => fields.length === 1 && fields[0] !== targetEntity.primary)\n\t\t\t\t\t.map(fields => fields[0])\n\t\t\t\t\t.filter(it => it !== targetRelation.name)\n\n\t\t\t\t;[...composedUnique, ...singleUnique].forEach(fieldName => {\n\t\t\t\t\tconst capitalizeFirstLetter = (value: string) => {\n\t\t\t\t\t\treturn value.charAt(0).toUpperCase() + value.slice(1)\n\t\t\t\t\t}\n\t\t\t\t\tconst name = `${relation.name}By${capitalizeFirstLetter(fieldName)}`\n\n\t\t\t\t\tconst targetUnique = targetEntity.fields[fieldName]\n\n\t\t\t\t\tcode += `\\t\\t${name}: { entity: ${targetEntity.name}; by: {${fieldName}: ${uniqueType(model, targetEntity, targetUnique)}} }\\n`\n\n\t\t\t\t})\n\t\t\t},\n\t\t\tvisitColumn: () => {\n\t\t\t},\n\t\t\tvisitManyHasManyInverse: () => {\n\t\t\t},\n\t\t\tvisitManyHasManyOwning: () => {\n\t\t\t},\n\t\t\tvisitManyHasOne: () => {\n\t\t\t},\n\t\t\tvisitOneHasOneInverse: () => {\n\t\t\t},\n\t\t\tvisitOneHasOneOwning: () => {\n\t\t\t},\n\t\t})\n\t\treturn code\n\t}\n\n\tprivate formatUniqueFields(model: Model.Schema, entity: Model.Entity): string {\n\t\tconst fields = getFieldsForUniqueWhere(model, entity)\n\t\tlet code = ''\n\t\tfor (const field of fields) {\n\t\t\tcode += '\\t\\t| Omit<{ '\n\t\t\tcode += field.map(it => `${it}: ${uniqueType(model, entity, entity.fields[it])}`).join(', ')\n\t\t\tcode += '}, OverRelation>\\n'\n\t\t}\n\t\treturn code\n\t}\n}\n\n\nconst uniqueType = (model: Model.Schema, entity: Model.Entity, field: Model.AnyField): string => {\n\treturn acceptFieldVisitor(model, entity, field, {\n\t\tvisitColumn: ctx => {\n\t\t\treturn columnToTsType(ctx.column)\n\t\t},\n\t\tvisitRelation: ctx => {\n\t\t\treturn ctx.targetEntity.name + `['unique']`\n\t\t},\n\t})\n}\n\n\nconst columnToTsType = (column: Model.AnyColumn): string => {\n\tswitch (column.type) {\n\t\tcase Model.ColumnType.Enum:\n\t\t\treturn column.columnType\n\t\tcase Model.ColumnType.String:\n\t\t\treturn 'string'\n\t\tcase Model.ColumnType.Int:\n\t\t\treturn 'number'\n\t\tcase Model.ColumnType.Double:\n\t\t\treturn 'number'\n\t\tcase Model.ColumnType.Bool:\n\t\t\treturn 'boolean'\n\t\tcase Model.ColumnType.DateTime:\n\t\t\treturn 'string'\n\t\tcase Model.ColumnType.Date:\n\t\t\treturn 'string'\n\t\tcase Model.ColumnType.Json:\n\t\t\treturn 'JSONValue'\n\t\tcase Model.ColumnType.Uuid:\n\t\t\treturn 'string'\n\t\tdefault:\n\t\t\t((_: never) => {\n\t\t\t\tthrow new Error(`Unknown type ${_}`)\n\t\t\t})(column.type)\n\t}\n}\n\nconst getFieldsForUniqueWhere = (schema: Model.Schema, entity: Model.Entity): readonly (readonly string[])[] => {\n\tconst relations = Object.values(\n\t\tacceptEveryFieldVisitor<undefined | [string]>(schema, entity, {\n\t\t\tvisitColumn: () => undefined,\n\t\t\tvisitManyHasManyInverse: () => undefined,\n\t\t\tvisitManyHasManyOwning: () => undefined,\n\t\t\tvisitOneHasMany: ({ relation }) => [relation.name],\n\t\t\tvisitManyHasOne: () => undefined,\n\t\t\tvisitOneHasOneInverse: ({ relation }) => [relation.name],\n\t\t\tvisitOneHasOneOwning: ({ relation }) => [relation.name],\n\t\t}),\n\t).filter((it): it is [string] => !!it)\n\n\treturn [[entity.primary], ...Object.values(entity.unique).map(it => it.fields), ...relations]\n}\n"],"names":["acceptEveryFieldVisitor","Model","entity","acceptFieldVisitor","schema"],"mappings":"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"}
1
+ {"version":3,"file":"EntityTypeSchemaGenerator.cjs","sources":["../../../../packages/client-content-generator/src/EntityTypeSchemaGenerator.ts"],"sourcesContent":["import { Model } from '@contember/schema'\nimport { acceptEveryFieldVisitor, acceptFieldVisitor } from '@contember/schema-utils'\n\nimport { getEnumTypeName } from './utils'\n\nexport class EntityTypeSchemaGenerator {\n\tgenerate(model: Model.Schema): string {\n\t\tlet code = ''\n\t\tfor (const enumName of Object.keys(model.enums)) {\n\t\t\tcode += `import type { ${getEnumTypeName(enumName)} } from './enums'\\n`\n\t\t}\n\n\t\tcode += `\nexport type JSONPrimitive = string | number | boolean | null\nexport type JSONValue = JSONPrimitive | JSONObject | JSONArray\nexport type JSONObject = { readonly [K in string]?: JSONValue }\nexport type JSONArray = readonly JSONValue[]\n\n`\n\n\t\tfor (const entity of Object.values(model.entities)) {\n\t\t\tcode += this.generateTypeEntityCode(model, entity)\n\t\t}\n\t\tcode += '\\n'\n\t\tcode += `export type ContemberClientEntities = {\\n`\n\t\tfor (const entity of Object.values(model.entities)) {\n\t\t\tcode += `\\t${entity.name}: ${entity.name}\\n`\n\t\t}\n\t\tcode += '}\\n\\n'\n\t\tcode += `export type ContemberClientSchema = {\\n`\n\t\tcode += '\\tentities: ContemberClientEntities\\n'\n\t\tcode += '}\\n'\n\t\treturn code\n\t}\n\n\tprivate generateTypeEntityCode(model: Model.Schema, entity: Model.Entity): string {\n\t\tlet code = `export type ${entity.name} <OverRelation extends string | never = never> = {\\n`\n\t\tcode += '\\tname: \\'' + entity.name + '\\'\\n'\n\t\tcode += '\\tunique:\\n'\n\t\tcode += this.formatUniqueFields(model, entity)\n\t\tlet columnsCode = ''\n\t\tlet hasOneCode = ''\n\t\tlet hasManyCode = ''\n\t\tacceptEveryFieldVisitor(model, entity, {\n\t\t\tvisitHasMany: ctx => {\n\t\t\t\thasManyCode += `\\t\\t${ctx.relation.name}: ${ctx.targetEntity.name}${ctx.targetRelation?.type === Model.RelationType.ManyHasOne ? `<'${ctx.targetRelation.name}'>` : ''}\\n`\n\t\t\t},\n\t\t\tvisitHasOne: ctx => {\n\t\t\t\thasOneCode += `\\t\\t${ctx.relation.name}: ${ctx.targetEntity.name}\\n`\n\t\t\t},\n\t\t\tvisitColumn: ctx => {\n\t\t\t\tcolumnsCode += `\\t\\t${ctx.column.name}: ${columnToTsType(ctx.column)}${ctx.column.nullable ? ` | null` : ''}\\n`\n\t\t\t},\n\t\t})\n\n\t\tcode += '\\tcolumns: {\\n'\n\t\tcode += columnsCode\n\t\tcode += '\\t}\\n'\n\t\tcode += '\\thasOne: {\\n'\n\t\tcode += hasOneCode\n\t\tcode += '\\t}\\n'\n\t\tcode += '\\thasMany: {\\n'\n\t\tcode += hasManyCode\n\t\tcode += '\\t}\\n'\n\t\tcode += '\\thasManyBy: {\\n'\n\t\tcode += this.formatReducedFields(model, entity)\n\t\tcode += '\\t}\\n'\n\t\tcode += '}\\n'\n\t\treturn code\n\t}\n\n\tprivate formatReducedFields(model: Model.Schema, entity: Model.Entity): string {\n\t\tlet code = ''\n\t\tacceptEveryFieldVisitor(model, entity, {\n\t\t\tvisitOneHasMany: ({ entity, relation, targetEntity, targetRelation }) => {\n\t\t\t\tif (!targetRelation) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tconst uniqueConstraints = getFieldsForUniqueWhere(model, targetEntity)\n\t\t\t\tconst composedUnique = uniqueConstraints\n\t\t\t\t\t.filter(fields => fields.length === 2) //todo support all uniques\n\t\t\t\t\t.filter(fields => fields.includes(targetRelation.name))\n\t\t\t\t\t.map(fields => fields.filter(it => it !== targetRelation.name))\n\t\t\t\t\t.map(fields => fields[0])\n\t\t\t\tconst singleUnique = uniqueConstraints\n\t\t\t\t\t.filter(fields => fields.length === 1 && fields[0] !== targetEntity.primary)\n\t\t\t\t\t.map(fields => fields[0])\n\t\t\t\t\t.filter(it => it !== targetRelation.name)\n\n\t\t\t\t;[...composedUnique, ...singleUnique].forEach(fieldName => {\n\t\t\t\t\tconst capitalizeFirstLetter = (value: string) => {\n\t\t\t\t\t\treturn value.charAt(0).toUpperCase() + value.slice(1)\n\t\t\t\t\t}\n\t\t\t\t\tconst name = `${relation.name}By${capitalizeFirstLetter(fieldName)}`\n\n\t\t\t\t\tconst targetUnique = targetEntity.fields[fieldName]\n\n\t\t\t\t\tcode += `\\t\\t${name}: { entity: ${targetEntity.name}; by: {${fieldName}: ${uniqueType(model, targetEntity, targetUnique)}} }\\n`\n\n\t\t\t\t})\n\t\t\t},\n\t\t\tvisitColumn: () => {\n\t\t\t},\n\t\t\tvisitManyHasManyInverse: () => {\n\t\t\t},\n\t\t\tvisitManyHasManyOwning: () => {\n\t\t\t},\n\t\t\tvisitManyHasOne: () => {\n\t\t\t},\n\t\t\tvisitOneHasOneInverse: () => {\n\t\t\t},\n\t\t\tvisitOneHasOneOwning: () => {\n\t\t\t},\n\t\t})\n\t\treturn code\n\t}\n\n\tprivate formatUniqueFields(model: Model.Schema, entity: Model.Entity): string {\n\t\tconst fields = getFieldsForUniqueWhere(model, entity)\n\t\tlet code = ''\n\t\tfor (const field of fields) {\n\t\t\tcode += '\\t\\t| Omit<{ '\n\t\t\tcode += field.map(it => `${it}: ${uniqueType(model, entity, entity.fields[it])}`).join(', ')\n\t\t\tcode += '}, OverRelation>\\n'\n\t\t}\n\t\treturn code\n\t}\n}\n\n\nconst uniqueType = (model: Model.Schema, entity: Model.Entity, field: Model.AnyField): string => {\n\treturn acceptFieldVisitor(model, entity, field, {\n\t\tvisitColumn: ctx => {\n\t\t\treturn columnToTsType(ctx.column)\n\t\t},\n\t\tvisitRelation: ctx => {\n\t\t\treturn ctx.targetEntity.name + `['unique']`\n\t\t},\n\t})\n}\n\n\nconst columnToTsType = (column: Model.AnyColumn): string => {\n\tswitch (column.type) {\n\t\tcase Model.ColumnType.Enum:\n\t\t\treturn getEnumTypeName(column.columnType)\n\t\tcase Model.ColumnType.String:\n\t\t\treturn 'string'\n\t\tcase Model.ColumnType.Int:\n\t\t\treturn 'number'\n\t\tcase Model.ColumnType.Double:\n\t\t\treturn 'number'\n\t\tcase Model.ColumnType.Bool:\n\t\t\treturn 'boolean'\n\t\tcase Model.ColumnType.DateTime:\n\t\t\treturn 'string'\n\t\tcase Model.ColumnType.Date:\n\t\t\treturn 'string'\n\t\tcase Model.ColumnType.Json:\n\t\t\treturn 'JSONValue'\n\t\tcase Model.ColumnType.Uuid:\n\t\t\treturn 'string'\n\t\tdefault:\n\t\t\t((_: never) => {\n\t\t\t\tthrow new Error(`Unknown type ${_}`)\n\t\t\t})(column.type)\n\t}\n}\n\nconst getFieldsForUniqueWhere = (schema: Model.Schema, entity: Model.Entity): readonly (readonly string[])[] => {\n\tconst relations = Object.values(\n\t\tacceptEveryFieldVisitor<undefined | [string]>(schema, entity, {\n\t\t\tvisitColumn: () => undefined,\n\t\t\tvisitManyHasManyInverse: () => undefined,\n\t\t\tvisitManyHasManyOwning: () => undefined,\n\t\t\tvisitOneHasMany: ({ relation }) => [relation.name],\n\t\t\tvisitManyHasOne: () => undefined,\n\t\t\tvisitOneHasOneInverse: ({ relation }) => [relation.name],\n\t\t\tvisitOneHasOneOwning: ({ relation }) => [relation.name],\n\t\t}),\n\t).filter((it): it is [string] => !!it)\n\n\treturn [[entity.primary], ...Object.values(entity.unique).map(it => it.fields), ...relations]\n}\n"],"names":["getEnumTypeName","acceptEveryFieldVisitor","Model","entity","acceptFieldVisitor","schema"],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  import { Model } from "@contember/schema";
2
2
  import { acceptEveryFieldVisitor, acceptFieldVisitor } from "@contember/schema-utils";
3
+ import { getEnumTypeName } from "./utils.js";
3
4
  class EntityTypeSchemaGenerator {
4
5
  generate(model) {
5
6
  let code = "";
6
7
  for (const enumName of Object.keys(model.enums)) {
7
- code += `import type { ${enumName} } from './enums'
8
+ code += `import type { ${getEnumTypeName(enumName)} } from './enums'
8
9
  `;
9
10
  }
10
11
  code += `
@@ -128,7 +129,7 @@ const uniqueType = (model, entity, field) => {
128
129
  const columnToTsType = (column) => {
129
130
  switch (column.type) {
130
131
  case Model.ColumnType.Enum:
131
- return column.columnType;
132
+ return getEnumTypeName(column.columnType);
132
133
  case Model.ColumnType.String:
133
134
  return "string";
134
135
  case Model.ColumnType.Int:
@@ -1 +1 @@
1
- {"version":3,"file":"EntityTypeSchemaGenerator.js","sources":["../../../../packages/client-content-generator/src/EntityTypeSchemaGenerator.ts"],"sourcesContent":["import { Model } from '@contember/schema'\nimport { acceptEveryFieldVisitor, acceptFieldVisitor } from '@contember/schema-utils'\n\nexport class EntityTypeSchemaGenerator {\n\tgenerate(model: Model.Schema): string {\n\t\tlet code = ''\n\t\tfor (const enumName of Object.keys(model.enums)) {\n\t\t\tcode += `import type { ${enumName} } from './enums'\\n`\n\t\t}\n\n\t\tcode += `\nexport type JSONPrimitive = string | number | boolean | null\nexport type JSONValue = JSONPrimitive | JSONObject | JSONArray\nexport type JSONObject = { readonly [K in string]?: JSONValue }\nexport type JSONArray = readonly JSONValue[]\n\n`\n\n\t\tfor (const entity of Object.values(model.entities)) {\n\t\t\tcode += this.generateTypeEntityCode(model, entity)\n\t\t}\n\t\tcode += '\\n'\n\t\tcode += `export type ContemberClientEntities = {\\n`\n\t\tfor (const entity of Object.values(model.entities)) {\n\t\t\tcode += `\\t${entity.name}: ${entity.name}\\n`\n\t\t}\n\t\tcode += '}\\n\\n'\n\t\tcode += `export type ContemberClientSchema = {\\n`\n\t\tcode += '\\tentities: ContemberClientEntities\\n'\n\t\tcode += '}\\n'\n\t\treturn code\n\t}\n\n\tprivate generateTypeEntityCode(model: Model.Schema, entity: Model.Entity): string {\n\t\tlet code = `export type ${entity.name} <OverRelation extends string | never = never> = {\\n`\n\t\tcode += '\\tname: \\'' + entity.name + '\\'\\n'\n\t\tcode += '\\tunique:\\n'\n\t\tcode += this.formatUniqueFields(model, entity)\n\t\tlet columnsCode = ''\n\t\tlet hasOneCode = ''\n\t\tlet hasManyCode = ''\n\t\tacceptEveryFieldVisitor(model, entity, {\n\t\t\tvisitHasMany: ctx => {\n\t\t\t\thasManyCode += `\\t\\t${ctx.relation.name}: ${ctx.targetEntity.name}${ctx.targetRelation?.type === Model.RelationType.ManyHasOne ? `<'${ctx.targetRelation.name}'>` : ''}\\n`\n\t\t\t},\n\t\t\tvisitHasOne: ctx => {\n\t\t\t\thasOneCode += `\\t\\t${ctx.relation.name}: ${ctx.targetEntity.name}\\n`\n\t\t\t},\n\t\t\tvisitColumn: ctx => {\n\t\t\t\tcolumnsCode += `\\t\\t${ctx.column.name}: ${columnToTsType(ctx.column)}${ctx.column.nullable ? ` | null` : ''}\\n`\n\t\t\t},\n\t\t})\n\n\t\tcode += '\\tcolumns: {\\n'\n\t\tcode += columnsCode\n\t\tcode += '\\t}\\n'\n\t\tcode += '\\thasOne: {\\n'\n\t\tcode += hasOneCode\n\t\tcode += '\\t}\\n'\n\t\tcode += '\\thasMany: {\\n'\n\t\tcode += hasManyCode\n\t\tcode += '\\t}\\n'\n\t\tcode += '\\thasManyBy: {\\n'\n\t\tcode += this.formatReducedFields(model, entity)\n\t\tcode += '\\t}\\n'\n\t\tcode += '}\\n'\n\t\treturn code\n\t}\n\n\tprivate formatReducedFields(model: Model.Schema, entity: Model.Entity): string {\n\t\tlet code = ''\n\t\tacceptEveryFieldVisitor(model, entity, {\n\t\t\tvisitOneHasMany: ({ entity, relation, targetEntity, targetRelation }) => {\n\t\t\t\tif (!targetRelation) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tconst uniqueConstraints = getFieldsForUniqueWhere(model, targetEntity)\n\t\t\t\tconst composedUnique = uniqueConstraints\n\t\t\t\t\t.filter(fields => fields.length === 2) //todo support all uniques\n\t\t\t\t\t.filter(fields => fields.includes(targetRelation.name))\n\t\t\t\t\t.map(fields => fields.filter(it => it !== targetRelation.name))\n\t\t\t\t\t.map(fields => fields[0])\n\t\t\t\tconst singleUnique = uniqueConstraints\n\t\t\t\t\t.filter(fields => fields.length === 1 && fields[0] !== targetEntity.primary)\n\t\t\t\t\t.map(fields => fields[0])\n\t\t\t\t\t.filter(it => it !== targetRelation.name)\n\n\t\t\t\t;[...composedUnique, ...singleUnique].forEach(fieldName => {\n\t\t\t\t\tconst capitalizeFirstLetter = (value: string) => {\n\t\t\t\t\t\treturn value.charAt(0).toUpperCase() + value.slice(1)\n\t\t\t\t\t}\n\t\t\t\t\tconst name = `${relation.name}By${capitalizeFirstLetter(fieldName)}`\n\n\t\t\t\t\tconst targetUnique = targetEntity.fields[fieldName]\n\n\t\t\t\t\tcode += `\\t\\t${name}: { entity: ${targetEntity.name}; by: {${fieldName}: ${uniqueType(model, targetEntity, targetUnique)}} }\\n`\n\n\t\t\t\t})\n\t\t\t},\n\t\t\tvisitColumn: () => {\n\t\t\t},\n\t\t\tvisitManyHasManyInverse: () => {\n\t\t\t},\n\t\t\tvisitManyHasManyOwning: () => {\n\t\t\t},\n\t\t\tvisitManyHasOne: () => {\n\t\t\t},\n\t\t\tvisitOneHasOneInverse: () => {\n\t\t\t},\n\t\t\tvisitOneHasOneOwning: () => {\n\t\t\t},\n\t\t})\n\t\treturn code\n\t}\n\n\tprivate formatUniqueFields(model: Model.Schema, entity: Model.Entity): string {\n\t\tconst fields = getFieldsForUniqueWhere(model, entity)\n\t\tlet code = ''\n\t\tfor (const field of fields) {\n\t\t\tcode += '\\t\\t| Omit<{ '\n\t\t\tcode += field.map(it => `${it}: ${uniqueType(model, entity, entity.fields[it])}`).join(', ')\n\t\t\tcode += '}, OverRelation>\\n'\n\t\t}\n\t\treturn code\n\t}\n}\n\n\nconst uniqueType = (model: Model.Schema, entity: Model.Entity, field: Model.AnyField): string => {\n\treturn acceptFieldVisitor(model, entity, field, {\n\t\tvisitColumn: ctx => {\n\t\t\treturn columnToTsType(ctx.column)\n\t\t},\n\t\tvisitRelation: ctx => {\n\t\t\treturn ctx.targetEntity.name + `['unique']`\n\t\t},\n\t})\n}\n\n\nconst columnToTsType = (column: Model.AnyColumn): string => {\n\tswitch (column.type) {\n\t\tcase Model.ColumnType.Enum:\n\t\t\treturn column.columnType\n\t\tcase Model.ColumnType.String:\n\t\t\treturn 'string'\n\t\tcase Model.ColumnType.Int:\n\t\t\treturn 'number'\n\t\tcase Model.ColumnType.Double:\n\t\t\treturn 'number'\n\t\tcase Model.ColumnType.Bool:\n\t\t\treturn 'boolean'\n\t\tcase Model.ColumnType.DateTime:\n\t\t\treturn 'string'\n\t\tcase Model.ColumnType.Date:\n\t\t\treturn 'string'\n\t\tcase Model.ColumnType.Json:\n\t\t\treturn 'JSONValue'\n\t\tcase Model.ColumnType.Uuid:\n\t\t\treturn 'string'\n\t\tdefault:\n\t\t\t((_: never) => {\n\t\t\t\tthrow new Error(`Unknown type ${_}`)\n\t\t\t})(column.type)\n\t}\n}\n\nconst getFieldsForUniqueWhere = (schema: Model.Schema, entity: Model.Entity): readonly (readonly string[])[] => {\n\tconst relations = Object.values(\n\t\tacceptEveryFieldVisitor<undefined | [string]>(schema, entity, {\n\t\t\tvisitColumn: () => undefined,\n\t\t\tvisitManyHasManyInverse: () => undefined,\n\t\t\tvisitManyHasManyOwning: () => undefined,\n\t\t\tvisitOneHasMany: ({ relation }) => [relation.name],\n\t\t\tvisitManyHasOne: () => undefined,\n\t\t\tvisitOneHasOneInverse: ({ relation }) => [relation.name],\n\t\t\tvisitOneHasOneOwning: ({ relation }) => [relation.name],\n\t\t}),\n\t).filter((it): it is [string] => !!it)\n\n\treturn [[entity.primary], ...Object.values(entity.unique).map(it => it.fields), ...relations]\n}\n"],"names":["entity"],"mappings":";;AAGO,MAAM,0BAA0B;AAAA,EACtC,SAAS,OAA6B;AACrC,QAAI,OAAO;AACX,eAAW,YAAY,OAAO,KAAK,MAAM,KAAK,GAAG;AAChD,cAAQ,iBAAiB,QAAQ;AAAA;AAAA,IAClC;AAEQ,YAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQR,eAAW,UAAU,OAAO,OAAO,MAAM,QAAQ,GAAG;AAC3C,cAAA,KAAK,uBAAuB,OAAO,MAAM;AAAA,IAClD;AACQ,YAAA;AACA,YAAA;AAAA;AACR,eAAW,UAAU,OAAO,OAAO,MAAM,QAAQ,GAAG;AACnD,cAAQ,IAAK,OAAO,IAAI,KAAK,OAAO,IAAI;AAAA;AAAA,IACzC;AACQ,YAAA;AACA,YAAA;AAAA;AACA,YAAA;AACA,YAAA;AACD,WAAA;AAAA,EACR;AAAA,EAEQ,uBAAuB,OAAqB,QAA8B;AAC7E,QAAA,OAAO,eAAe,OAAO,IAAI;AAAA;AAC7B,YAAA,aAAe,OAAO,OAAO;AAC7B,YAAA;AACA,YAAA,KAAK,mBAAmB,OAAO,MAAM;AAC7C,QAAI,cAAc;AAClB,QAAI,aAAa;AACjB,QAAI,cAAc;AAClB,4BAAwB,OAAO,QAAQ;AAAA,MACtC,cAAc,CAAO,QAAA;AACL,uBAAA,KAAO,IAAI,SAAS,IAAI,KAAK,IAAI,aAAa,IAAI,GAAG,IAAI,gBAAgB,SAAS,MAAM,aAAa,aAAa,KAAK,IAAI,eAAe,IAAI,OAAO,EAAE;AAAA;AAAA,MACvK;AAAA,MACA,aAAa,CAAO,QAAA;AACnB,sBAAc,KAAO,IAAI,SAAS,IAAI,KAAK,IAAI,aAAa,IAAI;AAAA;AAAA,MACjE;AAAA,MACA,aAAa,CAAO,QAAA;AACnB,uBAAe,KAAO,IAAI,OAAO,IAAI,KAAK,eAAe,IAAI,MAAM,CAAC,GAAG,IAAI,OAAO,WAAW,YAAY,EAAE;AAAA;AAAA,MAC5G;AAAA,IAAA,CACA;AAEO,YAAA;AACA,YAAA;AACA,YAAA;AACA,YAAA;AACA,YAAA;AACA,YAAA;AACA,YAAA;AACA,YAAA;AACA,YAAA;AACA,YAAA;AACA,YAAA,KAAK,oBAAoB,OAAO,MAAM;AACtC,YAAA;AACA,YAAA;AACD,WAAA;AAAA,EACR;AAAA,EAEQ,oBAAoB,OAAqB,QAA8B;AAC9E,QAAI,OAAO;AACX,4BAAwB,OAAO,QAAQ;AAAA,MACtC,iBAAiB,CAAC,EAAE,QAAAA,SAAQ,UAAU,cAAc,qBAAqB;AACxE,YAAI,CAAC,gBAAgB;AACpB;AAAA,QACD;AACM,cAAA,oBAAoB,wBAAwB,OAAO,YAAY;AACrE,cAAM,iBAAiB,kBACrB,OAAO,CAAA,WAAU,OAAO,WAAW,CAAC,EACpC,OAAO,CAAA,WAAU,OAAO,SAAS,eAAe,IAAI,CAAC,EACrD,IAAI,CAAU,WAAA,OAAO,OAAO,CAAA,OAAM,OAAO,eAAe,IAAI,CAAC,EAC7D,IAAI,CAAU,WAAA,OAAO,CAAC,CAAC;AACnB,cAAA,eAAe,kBACnB,OAAO,CAAA,WAAU,OAAO,WAAW,KAAK,OAAO,CAAC,MAAM,aAAa,OAAO,EAC1E,IAAI,CAAU,WAAA,OAAO,CAAC,CAAC,EACvB,OAAO,CAAA,OAAM,OAAO,eAAe,IAAI;AAExC,SAAC,GAAG,gBAAgB,GAAG,YAAY,EAAE,QAAQ,CAAa,cAAA;AACpD,gBAAA,wBAAwB,CAAC,UAAkB;AACzC,mBAAA,MAAM,OAAO,CAAC,EAAE,gBAAgB,MAAM,MAAM,CAAC;AAAA,UAAA;AAErD,gBAAM,OAAO,GAAG,SAAS,IAAI,KAAK,sBAAsB,SAAS,CAAC;AAE5D,gBAAA,eAAe,aAAa,OAAO,SAAS;AAElD,kBAAQ,KAAO,IAAI,eAAe,aAAa,IAAI,UAAU,SAAS,KAAK,WAAW,OAAO,cAAc,YAAY,CAAC;AAAA;AAAA,QAAA,CAExH;AAAA,MACF;AAAA,MACA,aAAa,MAAM;AAAA,MACnB;AAAA,MACA,yBAAyB,MAAM;AAAA,MAC/B;AAAA,MACA,wBAAwB,MAAM;AAAA,MAC9B;AAAA,MACA,iBAAiB,MAAM;AAAA,MACvB;AAAA,MACA,uBAAuB,MAAM;AAAA,MAC7B;AAAA,MACA,sBAAsB,MAAM;AAAA,MAC5B;AAAA,IAAA,CACA;AACM,WAAA;AAAA,EACR;AAAA,EAEQ,mBAAmB,OAAqB,QAA8B;AACvE,UAAA,SAAS,wBAAwB,OAAO,MAAM;AACpD,QAAI,OAAO;AACX,eAAW,SAAS,QAAQ;AACnB,cAAA;AACR,cAAQ,MAAM,IAAI,CAAA,OAAM,GAAG,EAAE,KAAK,WAAW,OAAO,QAAQ,OAAO,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,IAAI;AACnF,cAAA;AAAA,IACT;AACO,WAAA;AAAA,EACR;AACD;AAGA,MAAM,aAAa,CAAC,OAAqB,QAAsB,UAAkC;AACzF,SAAA,mBAAmB,OAAO,QAAQ,OAAO;AAAA,IAC/C,aAAa,CAAO,QAAA;AACZ,aAAA,eAAe,IAAI,MAAM;AAAA,IACjC;AAAA,IACA,eAAe,CAAO,QAAA;AACd,aAAA,IAAI,aAAa,OAAO;AAAA,IAChC;AAAA,EAAA,CACA;AACF;AAGA,MAAM,iBAAiB,CAAC,WAAoC;AAC3D,UAAQ,OAAO,MAAM;AAAA,IACpB,KAAK,MAAM,WAAW;AACrB,aAAO,OAAO;AAAA,IACf,KAAK,MAAM,WAAW;AACd,aAAA;AAAA,IACR,KAAK,MAAM,WAAW;AACd,aAAA;AAAA,IACR,KAAK,MAAM,WAAW;AACd,aAAA;AAAA,IACR,KAAK,MAAM,WAAW;AACd,aAAA;AAAA,IACR,KAAK,MAAM,WAAW;AACd,aAAA;AAAA,IACR,KAAK,MAAM,WAAW;AACd,aAAA;AAAA,IACR,KAAK,MAAM,WAAW;AACd,aAAA;AAAA,IACR,KAAK,MAAM,WAAW;AACd,aAAA;AAAA,IACR;AACC,OAAC,CAAC,MAAa;AACd,cAAM,IAAI,MAAM,gBAAgB,CAAC,EAAE;AAAA,MAAA,GACjC,OAAO,IAAI;AAAA,EAChB;AACD;AAEA,MAAM,0BAA0B,CAAC,QAAsB,WAAyD;AAC/G,QAAM,YAAY,OAAO;AAAA,IACxB,wBAA8C,QAAQ,QAAQ;AAAA,MAC7D,aAAa,MAAM;AAAA,MACnB,yBAAyB,MAAM;AAAA,MAC/B,wBAAwB,MAAM;AAAA,MAC9B,iBAAiB,CAAC,EAAE,SAAe,MAAA,CAAC,SAAS,IAAI;AAAA,MACjD,iBAAiB,MAAM;AAAA,MACvB,uBAAuB,CAAC,EAAE,SAAe,MAAA,CAAC,SAAS,IAAI;AAAA,MACvD,sBAAsB,CAAC,EAAE,SAAe,MAAA,CAAC,SAAS,IAAI;AAAA,IAAA,CACtD;AAAA,IACA,OAAO,CAAC,OAAuB,CAAC,CAAC,EAAE;AAErC,SAAO,CAAC,CAAC,OAAO,OAAO,GAAG,GAAG,OAAO,OAAO,OAAO,MAAM,EAAE,IAAI,CAAA,OAAM,GAAG,MAAM,GAAG,GAAG,SAAS;AAC7F;"}
1
+ {"version":3,"file":"EntityTypeSchemaGenerator.js","sources":["../../../../packages/client-content-generator/src/EntityTypeSchemaGenerator.ts"],"sourcesContent":["import { Model } from '@contember/schema'\nimport { acceptEveryFieldVisitor, acceptFieldVisitor } from '@contember/schema-utils'\n\nimport { getEnumTypeName } from './utils'\n\nexport class EntityTypeSchemaGenerator {\n\tgenerate(model: Model.Schema): string {\n\t\tlet code = ''\n\t\tfor (const enumName of Object.keys(model.enums)) {\n\t\t\tcode += `import type { ${getEnumTypeName(enumName)} } from './enums'\\n`\n\t\t}\n\n\t\tcode += `\nexport type JSONPrimitive = string | number | boolean | null\nexport type JSONValue = JSONPrimitive | JSONObject | JSONArray\nexport type JSONObject = { readonly [K in string]?: JSONValue }\nexport type JSONArray = readonly JSONValue[]\n\n`\n\n\t\tfor (const entity of Object.values(model.entities)) {\n\t\t\tcode += this.generateTypeEntityCode(model, entity)\n\t\t}\n\t\tcode += '\\n'\n\t\tcode += `export type ContemberClientEntities = {\\n`\n\t\tfor (const entity of Object.values(model.entities)) {\n\t\t\tcode += `\\t${entity.name}: ${entity.name}\\n`\n\t\t}\n\t\tcode += '}\\n\\n'\n\t\tcode += `export type ContemberClientSchema = {\\n`\n\t\tcode += '\\tentities: ContemberClientEntities\\n'\n\t\tcode += '}\\n'\n\t\treturn code\n\t}\n\n\tprivate generateTypeEntityCode(model: Model.Schema, entity: Model.Entity): string {\n\t\tlet code = `export type ${entity.name} <OverRelation extends string | never = never> = {\\n`\n\t\tcode += '\\tname: \\'' + entity.name + '\\'\\n'\n\t\tcode += '\\tunique:\\n'\n\t\tcode += this.formatUniqueFields(model, entity)\n\t\tlet columnsCode = ''\n\t\tlet hasOneCode = ''\n\t\tlet hasManyCode = ''\n\t\tacceptEveryFieldVisitor(model, entity, {\n\t\t\tvisitHasMany: ctx => {\n\t\t\t\thasManyCode += `\\t\\t${ctx.relation.name}: ${ctx.targetEntity.name}${ctx.targetRelation?.type === Model.RelationType.ManyHasOne ? `<'${ctx.targetRelation.name}'>` : ''}\\n`\n\t\t\t},\n\t\t\tvisitHasOne: ctx => {\n\t\t\t\thasOneCode += `\\t\\t${ctx.relation.name}: ${ctx.targetEntity.name}\\n`\n\t\t\t},\n\t\t\tvisitColumn: ctx => {\n\t\t\t\tcolumnsCode += `\\t\\t${ctx.column.name}: ${columnToTsType(ctx.column)}${ctx.column.nullable ? ` | null` : ''}\\n`\n\t\t\t},\n\t\t})\n\n\t\tcode += '\\tcolumns: {\\n'\n\t\tcode += columnsCode\n\t\tcode += '\\t}\\n'\n\t\tcode += '\\thasOne: {\\n'\n\t\tcode += hasOneCode\n\t\tcode += '\\t}\\n'\n\t\tcode += '\\thasMany: {\\n'\n\t\tcode += hasManyCode\n\t\tcode += '\\t}\\n'\n\t\tcode += '\\thasManyBy: {\\n'\n\t\tcode += this.formatReducedFields(model, entity)\n\t\tcode += '\\t}\\n'\n\t\tcode += '}\\n'\n\t\treturn code\n\t}\n\n\tprivate formatReducedFields(model: Model.Schema, entity: Model.Entity): string {\n\t\tlet code = ''\n\t\tacceptEveryFieldVisitor(model, entity, {\n\t\t\tvisitOneHasMany: ({ entity, relation, targetEntity, targetRelation }) => {\n\t\t\t\tif (!targetRelation) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tconst uniqueConstraints = getFieldsForUniqueWhere(model, targetEntity)\n\t\t\t\tconst composedUnique = uniqueConstraints\n\t\t\t\t\t.filter(fields => fields.length === 2) //todo support all uniques\n\t\t\t\t\t.filter(fields => fields.includes(targetRelation.name))\n\t\t\t\t\t.map(fields => fields.filter(it => it !== targetRelation.name))\n\t\t\t\t\t.map(fields => fields[0])\n\t\t\t\tconst singleUnique = uniqueConstraints\n\t\t\t\t\t.filter(fields => fields.length === 1 && fields[0] !== targetEntity.primary)\n\t\t\t\t\t.map(fields => fields[0])\n\t\t\t\t\t.filter(it => it !== targetRelation.name)\n\n\t\t\t\t;[...composedUnique, ...singleUnique].forEach(fieldName => {\n\t\t\t\t\tconst capitalizeFirstLetter = (value: string) => {\n\t\t\t\t\t\treturn value.charAt(0).toUpperCase() + value.slice(1)\n\t\t\t\t\t}\n\t\t\t\t\tconst name = `${relation.name}By${capitalizeFirstLetter(fieldName)}`\n\n\t\t\t\t\tconst targetUnique = targetEntity.fields[fieldName]\n\n\t\t\t\t\tcode += `\\t\\t${name}: { entity: ${targetEntity.name}; by: {${fieldName}: ${uniqueType(model, targetEntity, targetUnique)}} }\\n`\n\n\t\t\t\t})\n\t\t\t},\n\t\t\tvisitColumn: () => {\n\t\t\t},\n\t\t\tvisitManyHasManyInverse: () => {\n\t\t\t},\n\t\t\tvisitManyHasManyOwning: () => {\n\t\t\t},\n\t\t\tvisitManyHasOne: () => {\n\t\t\t},\n\t\t\tvisitOneHasOneInverse: () => {\n\t\t\t},\n\t\t\tvisitOneHasOneOwning: () => {\n\t\t\t},\n\t\t})\n\t\treturn code\n\t}\n\n\tprivate formatUniqueFields(model: Model.Schema, entity: Model.Entity): string {\n\t\tconst fields = getFieldsForUniqueWhere(model, entity)\n\t\tlet code = ''\n\t\tfor (const field of fields) {\n\t\t\tcode += '\\t\\t| Omit<{ '\n\t\t\tcode += field.map(it => `${it}: ${uniqueType(model, entity, entity.fields[it])}`).join(', ')\n\t\t\tcode += '}, OverRelation>\\n'\n\t\t}\n\t\treturn code\n\t}\n}\n\n\nconst uniqueType = (model: Model.Schema, entity: Model.Entity, field: Model.AnyField): string => {\n\treturn acceptFieldVisitor(model, entity, field, {\n\t\tvisitColumn: ctx => {\n\t\t\treturn columnToTsType(ctx.column)\n\t\t},\n\t\tvisitRelation: ctx => {\n\t\t\treturn ctx.targetEntity.name + `['unique']`\n\t\t},\n\t})\n}\n\n\nconst columnToTsType = (column: Model.AnyColumn): string => {\n\tswitch (column.type) {\n\t\tcase Model.ColumnType.Enum:\n\t\t\treturn getEnumTypeName(column.columnType)\n\t\tcase Model.ColumnType.String:\n\t\t\treturn 'string'\n\t\tcase Model.ColumnType.Int:\n\t\t\treturn 'number'\n\t\tcase Model.ColumnType.Double:\n\t\t\treturn 'number'\n\t\tcase Model.ColumnType.Bool:\n\t\t\treturn 'boolean'\n\t\tcase Model.ColumnType.DateTime:\n\t\t\treturn 'string'\n\t\tcase Model.ColumnType.Date:\n\t\t\treturn 'string'\n\t\tcase Model.ColumnType.Json:\n\t\t\treturn 'JSONValue'\n\t\tcase Model.ColumnType.Uuid:\n\t\t\treturn 'string'\n\t\tdefault:\n\t\t\t((_: never) => {\n\t\t\t\tthrow new Error(`Unknown type ${_}`)\n\t\t\t})(column.type)\n\t}\n}\n\nconst getFieldsForUniqueWhere = (schema: Model.Schema, entity: Model.Entity): readonly (readonly string[])[] => {\n\tconst relations = Object.values(\n\t\tacceptEveryFieldVisitor<undefined | [string]>(schema, entity, {\n\t\t\tvisitColumn: () => undefined,\n\t\t\tvisitManyHasManyInverse: () => undefined,\n\t\t\tvisitManyHasManyOwning: () => undefined,\n\t\t\tvisitOneHasMany: ({ relation }) => [relation.name],\n\t\t\tvisitManyHasOne: () => undefined,\n\t\t\tvisitOneHasOneInverse: ({ relation }) => [relation.name],\n\t\t\tvisitOneHasOneOwning: ({ relation }) => [relation.name],\n\t\t}),\n\t).filter((it): it is [string] => !!it)\n\n\treturn [[entity.primary], ...Object.values(entity.unique).map(it => it.fields), ...relations]\n}\n"],"names":["entity"],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const utils = require("./utils.cjs");
3
4
  class EnumTypeSchemaGenerator {
4
5
  generate(model) {
5
6
  let code = "";
6
7
  for (const [enumName, values] of Object.entries(model.enums)) {
7
- code += `export type ${enumName} = ${values.map((it) => "\n | " + JSON.stringify(it)).join("")}
8
+ code += `export type ${utils.getEnumTypeName(enumName)} = ${values.map((it) => "\n | " + JSON.stringify(it)).join("")}
8
9
  `;
9
10
  }
10
11
  return code || "export {}\n";
@@ -1 +1 @@
1
- {"version":3,"file":"EnumTypeSchemaGenerator.cjs","sources":["../../../../packages/client-content-generator/src/EnumTypeSchemaGenerator.ts"],"sourcesContent":["import { Model } from '@contember/schema'\n\nexport class EnumTypeSchemaGenerator {\n\tgenerate(model: Model.Schema): string {\n\t\tlet code = ''\n\t\tfor (const [enumName, values] of Object.entries(model.enums)) {\n\t\t\tcode += `export type ${enumName} = ${values.map(it => '\\n\\t | ' + JSON.stringify(it)).join('')}\\n`\n\t\t}\n\n\t\treturn code || 'export {}\\n'\n\t}\n}\n"],"names":[],"mappings":";;AAEO,MAAM,wBAAwB;AAAA,EACpC,SAAS,OAA6B;AACrC,QAAI,OAAO;AACA,eAAA,CAAC,UAAU,MAAM,KAAK,OAAO,QAAQ,MAAM,KAAK,GAAG;AAC7D,cAAQ,eAAe,QAAQ,MAAM,OAAO,IAAI,CAAM,OAAA,WAAY,KAAK,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;AAAA;AAAA,IAC/F;AAEA,WAAO,QAAQ;AAAA,EAChB;AACD;;"}
1
+ {"version":3,"file":"EnumTypeSchemaGenerator.cjs","sources":["../../../../packages/client-content-generator/src/EnumTypeSchemaGenerator.ts"],"sourcesContent":["import { Model } from '@contember/schema'\nimport { getEnumTypeName } from './utils'\n\nexport class EnumTypeSchemaGenerator {\n\tgenerate(model: Model.Schema): string {\n\t\tlet code = ''\n\t\tfor (const [enumName, values] of Object.entries(model.enums)) {\n\t\t\tcode += `export type ${getEnumTypeName(enumName)} = ${values.map(it => '\\n\\t | ' + JSON.stringify(it)).join('')}\\n`\n\t\t}\n\n\t\treturn code || 'export {}\\n'\n\t}\n}\n"],"names":["getEnumTypeName"],"mappings":";;;AAGO,MAAM,wBAAwB;AAAA,EACpC,SAAS,OAA6B;AACrC,QAAI,OAAO;AACA,eAAA,CAAC,UAAU,MAAM,KAAK,OAAO,QAAQ,MAAM,KAAK,GAAG;AAC7D,cAAQ,eAAeA,MAAgB,gBAAA,QAAQ,CAAC,MAAM,OAAO,IAAI,CAAA,OAAM,WAAY,KAAK,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;AAAA;AAAA,IAChH;AAEA,WAAO,QAAQ;AAAA,EAChB;AACD;;"}
@@ -1,8 +1,9 @@
1
+ import { getEnumTypeName } from "./utils.js";
1
2
  class EnumTypeSchemaGenerator {
2
3
  generate(model) {
3
4
  let code = "";
4
5
  for (const [enumName, values] of Object.entries(model.enums)) {
5
- code += `export type ${enumName} = ${values.map((it) => "\n | " + JSON.stringify(it)).join("")}
6
+ code += `export type ${getEnumTypeName(enumName)} = ${values.map((it) => "\n | " + JSON.stringify(it)).join("")}
6
7
  `;
7
8
  }
8
9
  return code || "export {}\n";
@@ -1 +1 @@
1
- {"version":3,"file":"EnumTypeSchemaGenerator.js","sources":["../../../../packages/client-content-generator/src/EnumTypeSchemaGenerator.ts"],"sourcesContent":["import { Model } from '@contember/schema'\n\nexport class EnumTypeSchemaGenerator {\n\tgenerate(model: Model.Schema): string {\n\t\tlet code = ''\n\t\tfor (const [enumName, values] of Object.entries(model.enums)) {\n\t\t\tcode += `export type ${enumName} = ${values.map(it => '\\n\\t | ' + JSON.stringify(it)).join('')}\\n`\n\t\t}\n\n\t\treturn code || 'export {}\\n'\n\t}\n}\n"],"names":[],"mappings":"AAEO,MAAM,wBAAwB;AAAA,EACpC,SAAS,OAA6B;AACrC,QAAI,OAAO;AACA,eAAA,CAAC,UAAU,MAAM,KAAK,OAAO,QAAQ,MAAM,KAAK,GAAG;AAC7D,cAAQ,eAAe,QAAQ,MAAM,OAAO,IAAI,CAAM,OAAA,WAAY,KAAK,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;AAAA;AAAA,IAC/F;AAEA,WAAO,QAAQ;AAAA,EAChB;AACD;"}
1
+ {"version":3,"file":"EnumTypeSchemaGenerator.js","sources":["../../../../packages/client-content-generator/src/EnumTypeSchemaGenerator.ts"],"sourcesContent":["import { Model } from '@contember/schema'\nimport { getEnumTypeName } from './utils'\n\nexport class EnumTypeSchemaGenerator {\n\tgenerate(model: Model.Schema): string {\n\t\tlet code = ''\n\t\tfor (const [enumName, values] of Object.entries(model.enums)) {\n\t\t\tcode += `export type ${getEnumTypeName(enumName)} = ${values.map(it => '\\n\\t | ' + JSON.stringify(it)).join('')}\\n`\n\t\t}\n\n\t\treturn code || 'export {}\\n'\n\t}\n}\n"],"names":[],"mappings":";AAGO,MAAM,wBAAwB;AAAA,EACpC,SAAS,OAA6B;AACrC,QAAI,OAAO;AACA,eAAA,CAAC,UAAU,MAAM,KAAK,OAAO,QAAQ,MAAM,KAAK,GAAG;AAC7D,cAAQ,eAAe,gBAAgB,QAAQ,CAAC,MAAM,OAAO,IAAI,CAAA,OAAM,WAAY,KAAK,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;AAAA;AAAA,IAChH;AAEA,WAAO,QAAQ;AAAA,EAChB;AACD;"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const upperCaseFirstLetter = (str) => str.charAt(0).toUpperCase() + str.slice(1);
4
+ const getEnumTypeName = (enumName) => upperCaseFirstLetter(enumName);
5
+ exports.getEnumTypeName = getEnumTypeName;
6
+ //# sourceMappingURL=utils.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.cjs","sources":["../../../../packages/client-content-generator/src/utils.ts"],"sourcesContent":["const upperCaseFirstLetter = (str: string): string => str.charAt(0).toUpperCase() + str.slice(1)\n\nexport const getEnumTypeName = (enumName: string): string => upperCaseFirstLetter(enumName)\n"],"names":[],"mappings":";;AAAA,MAAM,uBAAuB,CAAC,QAAwB,IAAI,OAAO,CAAC,EAAE,gBAAgB,IAAI,MAAM,CAAC;AAExF,MAAM,kBAAkB,CAAC,aAA6B,qBAAqB,QAAQ;;"}
@@ -0,0 +1,6 @@
1
+ const upperCaseFirstLetter = (str) => str.charAt(0).toUpperCase() + str.slice(1);
2
+ const getEnumTypeName = (enumName) => upperCaseFirstLetter(enumName);
3
+ export {
4
+ getEnumTypeName
5
+ };
6
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sources":["../../../../packages/client-content-generator/src/utils.ts"],"sourcesContent":["const upperCaseFirstLetter = (str: string): string => str.charAt(0).toUpperCase() + str.slice(1)\n\nexport const getEnumTypeName = (enumName: string): string => upperCaseFirstLetter(enumName)\n"],"names":[],"mappings":"AAAA,MAAM,uBAAuB,CAAC,QAAwB,IAAI,OAAO,CAAC,EAAE,gBAAgB,IAAI,MAAM,CAAC;AAExF,MAAM,kBAAkB,CAAC,aAA6B,qBAAqB,QAAQ;"}
@@ -1 +1 @@
1
- {"version":3,"file":"EntityTypeSchemaGenerator.d.ts","sourceRoot":"","sources":["../../src/EntityTypeSchemaGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAGzC,qBAAa,yBAAyB;IACrC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM;IA6BrC,OAAO,CAAC,sBAAsB;IAoC9B,OAAO,CAAC,mBAAmB;IA8C3B,OAAO,CAAC,kBAAkB;CAU1B"}
1
+ {"version":3,"file":"EntityTypeSchemaGenerator.d.ts","sourceRoot":"","sources":["../../src/EntityTypeSchemaGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAKzC,qBAAa,yBAAyB;IACrC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM;IA6BrC,OAAO,CAAC,sBAAsB;IAoC9B,OAAO,CAAC,mBAAmB;IA8C3B,OAAO,CAAC,kBAAkB;CAU1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"EnumTypeSchemaGenerator.d.ts","sourceRoot":"","sources":["../../src/EnumTypeSchemaGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAEzC,qBAAa,uBAAuB;IACnC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM;CAQrC"}
1
+ {"version":3,"file":"EnumTypeSchemaGenerator.d.ts","sourceRoot":"","sources":["../../src/EnumTypeSchemaGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAGzC,qBAAa,uBAAuB;IACnC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM;CAQrC"}
@@ -1 +1 @@
1
- {"program":{"fileNames":["../../../../node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../../node_modules/typescript/lib/lib.es2023.d.ts","../../../../node_modules/typescript/lib/lib.esnext.d.ts","../../../../node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2023.array.d.ts","../../../../node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../../node_modules/typescript/lib/lib.esnext.array.d.ts","../../../../node_modules/typescript/lib/lib.esnext.collection.d.ts","../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../../node_modules/typescript/lib/lib.esnext.string.d.ts","../../../../node_modules/typescript/lib/lib.esnext.promise.d.ts","../../../../node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../../../node_modules/typescript/lib/lib.esnext.object.d.ts","../../../../node_modules/typescript/lib/lib.esnext.regexp.d.ts","../../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../../node_modules/@types/react/global.d.ts","../../../../node_modules/csstype/index.d.ts","../../../../node_modules/@types/prop-types/index.d.ts","../../../../node_modules/@types/react/index.d.ts","../../../../node_modules/@types/react/jsx-runtime.d.ts","../../../schema/dist/types/schema/value.d.ts","../../../schema/dist/types/schema/input.d.ts","../../../schema/dist/types/schema/json.d.ts","../../../schema/dist/types/schema/acl.d.ts","../../../schema/dist/types/schema/actions.d.ts","../../../schema/dist/types/schema/actionsPayload.d.ts","../../../schema/dist/types/schema/model.d.ts","../../../schema/dist/types/schema/result.d.ts","../../../schema/dist/types/schema/settings.d.ts","../../../schema/dist/types/schema/validation.d.ts","../../../schema/dist/types/schema/index.d.ts","../../../schema/dist/types/ProjectRole.d.ts","../../../schema/dist/types/index.d.ts","../../src/EnumTypeSchemaGenerator.ts","../../../typesafe/dist/types/index.d.ts","../../../schema-utils/dist/types/model/modelUtils.d.ts","../../../schema-utils/dist/types/model/resolveDefaultColumnType.d.ts","../../../schema-utils/dist/types/model/NamingConventions.d.ts","../../../schema-utils/dist/types/model/index.d.ts","../../../schema-utils/dist/types/definition-generator/TsDefinitionGenerator.d.ts","../../../schema-utils/dist/types/definition-generator/DefinitionNamingConventions.d.ts","../../../schema-utils/dist/types/definition-generator/AclDefinitionCodeGenerator.d.ts","../../../schema-utils/dist/types/definition-generator/DefinitionCodeGenerator.d.ts","../../../schema-utils/dist/types/definition-generator/index.d.ts","../../../schema-utils/dist/types/lax/schema.d.ts","../../../schema-utils/dist/types/lax/LaxSchemaConverter.d.ts","../../../schema-utils/dist/types/lax/index.d.ts","../../../schema-utils/dist/types/acl/AllowAllPermissionFactory.d.ts","../../../schema-utils/dist/types/acl/PredicateDefinitionProcessor.d.ts","../../../schema-utils/dist/types/acl/schemaUtils.d.ts","../../../schema-utils/dist/types/acl/index.d.ts","../../../schema-utils/dist/types/dataUtils.d.ts","../../../schema-utils/dist/types/validation/errors.d.ts","../../../schema-utils/dist/types/validation/AclValidator.d.ts","../../../schema-utils/dist/types/validation/ModelValidator.d.ts","../../../schema-utils/dist/types/validation/ValidationValidator.d.ts","../../../schema-utils/dist/types/validation/SchemaValidator.d.ts","../../../schema-utils/dist/types/validation/MembershipResolver.d.ts","../../../schema-utils/dist/types/validation/index.d.ts","../../../schema-utils/dist/types/schemaNormalizer.d.ts","../../../schema-utils/dist/types/schemaFilter.d.ts","../../../schema-utils/dist/types/schemaChecksum.d.ts","../../../schema-utils/dist/types/utils/assertNever.d.ts","../../../schema-utils/dist/types/utils/isIt.d.ts","../../../schema-utils/dist/types/utils/deepCompare.d.ts","../../../schema-utils/dist/types/utils/index.d.ts","../../../schema-utils/dist/types/index.d.ts","../../src/EntityTypeSchemaGenerator.ts","../../../graphql-client/dist/types/GraphQlClientRequestOptions.d.ts","../../../graphql-client/dist/types/GraphQlClient.d.ts","../../../graphql-client/dist/types/GraphQlClientError.d.ts","../../../graphql-client/dist/types/index.d.ts","../../../client-content/dist/types/types/Schema.d.ts","../../../client-content/dist/types/types/Input.d.ts","../../../client-content/dist/types/types/Result.d.ts","../../../client-content/dist/types/types/index.d.ts","../../../graphql-builder/dist/types/nodes/GraphQlFragmentSpread.d.ts","../../../graphql-builder/dist/types/nodes/GraphQlInlineFragment.d.ts","../../../graphql-builder/dist/types/nodes/GraphQlField.d.ts","../../../graphql-builder/dist/types/nodes/GraphQlFragment.d.ts","../../../graphql-builder/dist/types/nodes/index.d.ts","../../../graphql-builder/dist/types/GraphQlQueryPrinter.d.ts","../../../graphql-builder/dist/types/index.d.ts","../../../client-content/dist/types/nodes/ContentEntitySelection.d.ts","../../../client-content/dist/types/nodes/ContentOperation.d.ts","../../../client-content/dist/types/nodes/TypedEntitySelection.d.ts","../../../client-content/dist/types/nodes/index.d.ts","../../../client-content/dist/types/ContentClient.d.ts","../../../client-content/dist/types/ContentQueryBuilder.d.ts","../../../client-content/dist/types/TypedContentQueryBuilder.d.ts","../../../client-content/dist/types/utils/mutationFragments.d.ts","../../../client-content/dist/types/index.d.ts","../../src/NameSchemaGenerator.ts","../../src/ContemberClientGenerator.ts","../../src/generate.ts","../../src/index.ts","../../../../node_modules/@types/node/assert.d.ts","../../../../node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/buffer/index.d.ts","../../../../node_modules/undici-types/header.d.ts","../../../../node_modules/undici-types/readable.d.ts","../../../../node_modules/undici-types/file.d.ts","../../../../node_modules/undici-types/fetch.d.ts","../../../../node_modules/undici-types/formdata.d.ts","../../../../node_modules/undici-types/connector.d.ts","../../../../node_modules/undici-types/client.d.ts","../../../../node_modules/undici-types/errors.d.ts","../../../../node_modules/undici-types/dispatcher.d.ts","../../../../node_modules/undici-types/global-dispatcher.d.ts","../../../../node_modules/undici-types/global-origin.d.ts","../../../../node_modules/undici-types/pool-stats.d.ts","../../../../node_modules/undici-types/pool.d.ts","../../../../node_modules/undici-types/handlers.d.ts","../../../../node_modules/undici-types/balanced-pool.d.ts","../../../../node_modules/undici-types/agent.d.ts","../../../../node_modules/undici-types/mock-interceptor.d.ts","../../../../node_modules/undici-types/mock-agent.d.ts","../../../../node_modules/undici-types/mock-client.d.ts","../../../../node_modules/undici-types/mock-pool.d.ts","../../../../node_modules/undici-types/mock-errors.d.ts","../../../../node_modules/undici-types/proxy-agent.d.ts","../../../../node_modules/undici-types/api.d.ts","../../../../node_modules/undici-types/cookies.d.ts","../../../../node_modules/undici-types/patch.d.ts","../../../../node_modules/undici-types/filereader.d.ts","../../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../../node_modules/undici-types/websocket.d.ts","../../../../node_modules/undici-types/content-type.d.ts","../../../../node_modules/undici-types/cache.d.ts","../../../../node_modules/undici-types/interceptors.d.ts","../../../../node_modules/undici-types/index.d.ts","../../../../node_modules/@types/node/globals.d.ts","../../../../node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/@types/node/buffer.d.ts","../../../../node_modules/@types/node/child_process.d.ts","../../../../node_modules/@types/node/cluster.d.ts","../../../../node_modules/@types/node/console.d.ts","../../../../node_modules/@types/node/constants.d.ts","../../../../node_modules/@types/node/crypto.d.ts","../../../../node_modules/@types/node/dgram.d.ts","../../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/@types/node/dns.d.ts","../../../../node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/@types/node/domain.d.ts","../../../../node_modules/@types/node/dom-events.d.ts","../../../../node_modules/@types/node/events.d.ts","../../../../node_modules/@types/node/fs.d.ts","../../../../node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/@types/node/http.d.ts","../../../../node_modules/@types/node/http2.d.ts","../../../../node_modules/@types/node/https.d.ts","../../../../node_modules/@types/node/inspector.d.ts","../../../../node_modules/@types/node/module.d.ts","../../../../node_modules/@types/node/net.d.ts","../../../../node_modules/@types/node/os.d.ts","../../../../node_modules/@types/node/path.d.ts","../../../../node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/@types/node/process.d.ts","../../../../node_modules/@types/node/punycode.d.ts","../../../../node_modules/@types/node/querystring.d.ts","../../../../node_modules/@types/node/readline.d.ts","../../../../node_modules/@types/node/readline/promises.d.ts","../../../../node_modules/@types/node/repl.d.ts","../../../../node_modules/@types/node/stream.d.ts","../../../../node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/@types/node/stream/web.d.ts","../../../../node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/@types/node/test.d.ts","../../../../node_modules/@types/node/timers.d.ts","../../../../node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/@types/node/tls.d.ts","../../../../node_modules/@types/node/trace_events.d.ts","../../../../node_modules/@types/node/tty.d.ts","../../../../node_modules/@types/node/url.d.ts","../../../../node_modules/@types/node/util.d.ts","../../../../node_modules/@types/node/v8.d.ts","../../../../node_modules/@types/node/vm.d.ts","../../../../node_modules/@types/node/wasi.d.ts","../../../../node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/@types/node/zlib.d.ts","../../../../node_modules/@types/node/globals.global.d.ts","../../../../node_modules/@types/node/index.d.ts"],"fileInfos":[{"version":"44e584d4f6444f58791784f1d530875970993129442a847597db702a073ca68c","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc","27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","17edc026abf73c5c2dd508652d63f68ec4efd9d4856e3469890d27598209feb5",{"version":"4af6b0c727b7a2896463d512fafd23634229adf69ac7c00e2ae15a09cb084fad","affectsGlobalScope":true},{"version":"9c00a480825408b6a24c63c1b71362232927247595d7c97659bc24dc68ae0757","affectsGlobalScope":true},{"version":"6920e1448680767498a0b77c6a00a8e77d14d62c3da8967b171f1ddffa3c18e4","affectsGlobalScope":true},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"bb42a7797d996412ecdc5b2787720de477103a0b2e53058569069a0e2bae6c7e","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"b541a838a13f9234aba650a825393ffc2292dc0fc87681a5d81ef0c96d281e7a","affectsGlobalScope":true},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true},{"version":"ae37d6ccd1560b0203ab88d46987393adaaa78c919e51acf32fb82c86502e98c","affectsGlobalScope":true},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"5e07ed3809d48205d5b985642a59f2eba47c402374a7cf8006b686f79efadcbd","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"479553e3779be7d4f68e9f40cdb82d038e5ef7592010100410723ceced22a0f7","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true},{"version":"d3d7b04b45033f57351c8434f60b6be1ea71a2dfec2d0a0c3c83badbb0e3e693","affectsGlobalScope":true},{"version":"956d27abdea9652e8368ce029bb1e0b9174e9678a273529f426df4b3d90abd60","affectsGlobalScope":true},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true},{"version":"e6633e05da3ff36e6da2ec170d0d03ccf33de50ca4dc6f5aeecb572cedd162fb","affectsGlobalScope":true},{"version":"d8670852241d4c6e03f2b89d67497a4bbefe29ecaa5a444e2c11a9b05e6fccc6","affectsGlobalScope":true},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true},{"version":"caccc56c72713969e1cfe5c3d44e5bab151544d9d2b373d7dbe5a1e4166652be","affectsGlobalScope":true},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true},{"version":"08a58483392df5fcc1db57d782e87734f77ae9eab42516028acbfe46f29a3ef7","affectsGlobalScope":true},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true},{"version":"0b11f3ca66aa33124202c80b70cd203219c3d4460cfc165e0707aa9ec710fc53","affectsGlobalScope":true},{"version":"6a3f5a0129cc80cf439ab71164334d649b47059a4f5afca90282362407d0c87f","affectsGlobalScope":true},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true},{"version":"15b98a533864d324e5f57cd3cfc0579b231df58c1c0f6063ea0fcb13c3c74ff9","affectsGlobalScope":true},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},{"version":"36a2e4c9a67439aca5f91bb304611d5ae6e20d420503e96c230cf8fcdc948d94","affectsGlobalScope":true},"8a8eb4ebffd85e589a1cc7c178e291626c359543403d58c9cd22b81fab5b1fb9","247a952efd811d780e5630f8cfd76f495196f5fa74f6f0fee39ac8ba4a3c9800",{"version":"8ca4709dbd22a34bcc1ebf93e1877645bdb02ebd3f3d9a211a299a8db2ee4ba1","affectsGlobalScope":true},"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","3ae62be455efcb1874e7fd1f30f2bb83144757d2f349ceb0c6523bb9f7f7a860","8e86b98b3e0df46d3f83c303661824d1965ddd63e674fc0b6849f7869f5b86f0","b1296831e111197bd9ebd73f0d15ad0fe2e11fcc51a6302edb23ffd93794db36","5610e8177b34fa50394973f3faba06fd5268b1264a2f4f7daaa71fee1194a94d","ec0b1ad8de385d526b4e16c7ab8da4b84c1fb15a680d4c82b0e0b5f70e9f80c5","462c0b72a4911d6356ebbfed5dedd9682edf2bd60bcf6ea025539f1cd8c64bf4","5c3f0890ecc492ada4fa62824b8db132adbf9757e918cdc7421a586474b7cb16","f42116e2e8ad600dc90bdf8ceade9dcf593c35812d8aaba9c03a3f1dbb87330e","0a719586fbf47735737c3ef22372473f05ae36bcdec431c5bb565478466190be","dff2fee737ebe5174f549c9f28e114c0cabac4b5fe4e364654465ba528979ba4","ad1f130d5fb49665e218d5366db67ead55593335a2c02733ae5f8466a99def53","466df547af9cf3861658b08baf3ecbd41c0eaad2101378fadfa54ab24db103e6","92404f0f42ffd8d939cf6fb1a911235e931981f94dcab0e85f9ae5faf876ea3c",{"version":"eca5cad3e8e191ea65e1486cdfb95565082734046f86c27323498bf43079438c","signature":"f0b0d83cf814e2d1f3cbe11a382f307774f4527d4c5c97cb37a9d7d96958ac60"},"5631be3447b74e49a1ebae38530320cfeedffac181181491ec1a03ce11d59b26","1090a100fefe5c21a36fe36b0c83dd566ac8c3d9b3fa1f2c2733e173c599614c","1208b368dc1c1e92d8fcbd3eac3f37dfea25672dc37134cce620455559e4da96","fb76be343c21f4e9dc23ddbb69f7a4a81dab90e9586c303668081dd3b4e30e58","daa9330eda367a2de8034fe1c11a387f25c1fb9c7b1a694facda6114bb22fef0","6c8f26d28cdb6bd0edc2d9d5b7040654b84776e85b2fb2da9ff5d23de67ff17c","bd25f7cb1c87f89392b2e5c6ed6846c4acc016e959783f1bc2d1c529b804492c","dc0b794be4f93caea87286e4f8a1b9bb1c8f2d6b26f35a3ea9f366b0b13478b6","2fa776928692b8d0cf9363ee7fd815b1539f207c91cae851639623e923174ae7","1120c659d2214c93367b3d93336d28a3ab1a45fccecd0ba3599ea99a20295af3","2d994cd941265041b7ab04efd9f9628a0ddaa7eb3ca13bc53c1f73f0b8954a74","9dfd6d6aa56e7f5ab521b038c35b8c42fbf789abe3316cd917cebc5e9117d7e0","9ac8296db617c4ae910ee4b618bb78bb130cdfca956ad8c4502e8d3283381c99","aa03a6771a194845f7d08c94a5927aaf0b67d0c0c4d9ab06167c1d36eda18f2b","2e3f3ef49948c5ddaa9bc1187af0cefb685b8cc529460264548c434de625f5bc","7777d96bf1dd9d4a21853f1db7f8ac76b362f1534a882692c9fc8f7b3850dcab","8da1c5a41069f9cbcae8690056768f4d315ee9e020d3162fd1703013cf8c0325","46454d6185f96b8d90c816ace56e90aa21d0c3e3907f65e47182e63ca87d7e33","1ab55d65db2bc181e91481b6ce92a2285eda09ccfea566f047c055d2ff0cb03c","d5bb605f28707fe26e7c87836418abc6fba7679cf5ee99a49ecf532c93846bf9","e9124ac92fb22b3e867d40dc8d9c1d9d1502fa69b3611d05ace7258be72f9777","a29fee10a827a80f5c211a21e5513185349ba264ea8b04a382a451982e23b294","f4fefa0f2c0e1a5587c1d698d5ded77e6c8695ab2eff6c7b28c3d3d18d58f731","3fa52693f21eed67e1bd50be0d25c7055d326580d78ceef9cca0c287e224656e","05ebf96323766ec1a492a055ada17f8e540142335b9467e1f430023c40f4592d","8b9c51e573464bff3b83adf232405f01a87447d1266b1a1a93a02fe3b713b588","8cf3d80aa530218e59750d58f63922099c102514ff34255480cc5ba24099711d","e846789af23154545cd9025760a9d063d1bfed8fd5022aac5874c241d9058864","a95c25e1f9146dd90f7cb36c7e306a25a67bdef1eaae7319a60d2f9d3ff66804","2e8b4d5b4a88c5cb82edc4585e7615641f7714676a8d92bf36884dcc7c975f12","c51e163a5110087ff0e59381f117d97fd23d275a80aa9c7bb4c7a58f52a3943a","b7f4d30efff05ede0b6358ded8aedefb29802ed4cf6fbd16e3921f9cf76780ae","3a6e1f99acca4b9d262c1b9ac7931c50c86bb525a6c397c2769d21e08cf5c1dd",{"version":"f8a67047ed9dd64f5dab6cb2d2109c4014cfb41542b0b007b40a98e80cfc803a","signature":"360b9a2f734bdda3c3877cd6e5dd92fae9f3e914cf2c14d935dc8c9cc29ff4ce"},"8c56ed339fb7ea09a933aae91daa038e669730da6b6d422275d0a7e5293b46a7","711255f9dda18a35389ec1e3fa8ebe6e906e67902550afad96b0ac6c5a5de327","4d023a0827a63ad5e6b498f92830d79e40e6fd487ed6b7c6fc2528eb9b3c0937","e17fbde86ef68adc663fff12c63cce11175482b3f108afd90fa3c11754afe6c6","af8e795fed72274bbd8d655d04588bbd88871dbd603dff6461362cb5207d2284","33491243e9e60504ee3d733817b089c90d639dc3f1238a3d6417083e9dd5b683","f289c5204b0819632486cefeec845a20a7a9c769180fb6bede63b0d7f24839d2","feaceef383869ce3addd7d620c89fa6ff1d5753f7b451cffb1e926998df2b5e4","34e5c5b2be8aa1b3f75ccd21529ae8b9163f510dbdabae4caae3fec3010cc33b","45fb3525f5c652416e54f91bd8378464d41e22b0ccc108de7db918cf8e92ffd3","e2402a646d4471b0985495b6bfca6c9c731d335195bf206e8c982d8ca362692f","08d34fcbf615950f6d3dd6858437159f0c0af08d5af645ec415ebfeaeacf3bd0","13ce162c8088b92a985e41a2ddf61cbb191101c280214a74dd9e8d2fd3c9c905","d2689735d2498972d6f02fbaff989b1fa500b5a140af7e7c08a15fbc36c1d3d3","4b47e095287cc1351b5fa9c5112d1d2d255bd8916ce76347225837b244e97ed5","4f4d0e8aeb309bbb646dd57615ca9375fa2821df08120fe318124647d91de80a","06c1e22ce1921cfd383c800f9e191972c5dfaca8996cca54d85c4b4cb41db49d","0b42a31c12bc794fe3b4efafc5af85e9bd2d094f086157dfdc98ea4f0a13016a","6c7327831239ec38e57c18eb15c5b191aa258ada0528de8dc93092efcba20896","3c4de8d194c64b484827151ff14582884166268c345cbb13f9c19e4be3912f54","62ca877d3c090576b3ca1cd3e576c931eaedefc3af1b5ef405e41fd22c8b2955","5e8c7ad4619cc15007aa5bc3f4e1a30cb01540c14beaa609fb8d17d21acaceba","016e695348eb662b9adead21973e3da689bbff9c65811491644e2ed594fca800","1702404293385fb18761a3cf716b3c2888c6fa95d3ef96bc8e4e8f5a6e679689",{"version":"3ba31b0ae95aeb5491f764222294fe55d7599567c149854dbf999db97b5bb7af","signature":"d5efb5060898d1f076715772c3480d4ce727be55e2167fb299bd6556ae70eeae"},{"version":"6eea1cd7302667f74cf05794d56316644f2a94156c43f39ab56940c2ed9ac50c","signature":"64fc8e10187e3facc023e41fafcd45a40b767a607e41270184e0585efe894d81"},{"version":"64e1f5a6a5cfade16c82633c77b44d9598e756132ed72ce104245d69bae178e4","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"675668049a0b4175aa1ad4fd80c751267db0053152755a7fac646eef592c3882","signature":"5cb53013b1adc504c16bed8523675d1efdeab8e7b22cd9a880d1d074cd5357e4"},"09df3b4f1c937f02e7fee2836d4c4d7a63e66db70fd4d4e97126f4542cc21d9d","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1",{"version":"4d719cfab49ae4045d15cb6bed0f38ad3d7d6eb7f277d2603502a0f862ca3182","affectsGlobalScope":true},"cce1f5f86974c1e916ec4a8cab6eec9aa8e31e8148845bf07fbaa8e1d97b1a2c",{"version":"5a856afb15f9dc9983faa391dde989826995a33983c1cccb173e9606688e9709","affectsGlobalScope":true},"546ab07e19116d935ad982e76a223275b53bff7771dab94f433b7ab04652936e","7b43160a49cf2c6082da0465876c4a0b164e160b81187caeb0a6ca7a281e85ba",{"version":"aefb5a4a209f756b580eb53ea771cca8aad411603926f307a5e5b8ec6b16dcf6","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","f5a8b7ec4b798c88679194a8ebc25dcb6f5368e6e5811fcda9fe12b0d445b8db","b86e1a45b29437f3a99bad4147cb9fe2357617e8008c0484568e5bb5138d6e13","b5b719a47968cd61a6f83f437236bb6fe22a39223b6620da81ef89f5d7a78fb7","42c431e7965b641106b5e25ab3283aa4865ca7bb9909610a2abfa6226e4348be","0b7e732af0a9599be28c091d6bd1cb22c856ec0d415d4749c087c3881ca07a56","b7fe70be794e13d1b7940e318b8770cd1fb3eced7707805318a2e3aaac2c3e9e",{"version":"2c71199d1fc83bf17636ad5bf63a945633406b7b94887612bba4ef027c662b3e","affectsGlobalScope":true},{"version":"8d6138a264ddc6f94f16e99d4e117a2d6eb31b217891cf091b6437a2f114d561","affectsGlobalScope":true},"3b4c85eea12187de9929a76792b98406e8778ce575caca8c574f06da82622c54","f788131a39c81e0c9b9e463645dd7132b5bc1beb609b0e31e5c1ceaea378b4df","0c236069ce7bded4f6774946e928e4b3601894d294054af47a553f7abcafe2c1","21894466693f64957b9bd4c80fa3ec7fdfd4efa9d1861e070aca23f10220c9b2","396a8939b5e177542bdf9b5262b4eee85d29851b2d57681fa9d7eae30e225830","21773f5ac69ddf5a05636ba1f50b5239f4f2d27e4420db147fc2f76a5ae598ac",{"version":"6ec93c745c5e3e25e278fa35451bf18ef857f733de7e57c15e7920ac463baa2a","affectsGlobalScope":true},"a5fe4cc622c3bf8e09ababde5f4096ceac53163eefcd95e9cd53f062ff9bb67a","30c2ec6abf6aaa60eb4f32fb1235531506b7961c6d1bdc7430711aec8fd85295","0f05c06ff6196958d76b865ae17245b52d8fe01773626ac3c43214a2458ea7b7",{"version":"308b84e1943ef30015469770e931eb21b795348893b2a6562ca54ea8f0b3c41c","affectsGlobalScope":true},{"version":"d48009cbe8a30a504031cc82e1286f78fed33b7a42abf7602c23b5547b382563","affectsGlobalScope":true},"7aaeb5e62f90e1b2be0fc4844df78cdb1be15c22b427bc6c39d57308785b8f10","3ba30205a029ebc0c91d7b1ab4da73f6277d730ca1fc6692d5a9144c6772c76b","d8dba11dc34d50cb4202de5effa9a1b296d7a2f4a029eec871f894bddfb6430d","8b71dd18e7e63b6f991b511a201fad7c3bf8d1e0dd98acb5e3d844f335a73634","01d8e1419c84affad359cc240b2b551fb9812b450b4d3d456b64cda8102d4f60","458b216959c231df388a5de9dcbcafd4b4ca563bc3784d706d0455467d7d4942","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","f8c87b19eae111f8720b0345ab301af8d81add39621b63614dfc2d15fd6f140a","831c22d257717bf2cbb03afe9c4bcffc5ccb8a2074344d4238bf16d3a857bb12",{"version":"24ba151e213906027e2b1f5223d33575a3612b0234a0e2b56119520bbe0e594b","affectsGlobalScope":true},{"version":"cbf046714f3a3ba2544957e1973ac94aa819fa8aa668846fa8de47eb1c41b0b2","affectsGlobalScope":true},"aa34c3aa493d1c699601027c441b9664547c3024f9dbab1639df7701d63d18fa","eae74e3d50820f37c72c0679fed959cd1e63c98f6a146a55b8c4361582fa6a52","7c651f8dce91a927ab62925e73f190763574c46098f2b11fb8ddc1b147a6709a","7440ab60f4cb031812940cc38166b8bb6fbf2540cfe599f87c41c08011f0c1df",{"version":"aed89e3c18f4c659ee8153a76560dffda23e2d801e1e60d7a67abd84bc555f8d","affectsGlobalScope":true},{"version":"0ed13c80faeb2b7160bffb4926ff299c468e67a37a645b3ae0917ba0db633c1b","affectsGlobalScope":true},"e393915d3dc385e69c0e2390739c87b2d296a610662eb0b1cb85224e55992250","2f940651c2f30e6b29f8743fae3f40b7b1c03615184f837132b56ea75edad08b","5749c327c3f789f658072f8340786966c8b05ea124a56c1d8d60e04649495a4d",{"version":"c9d62b2a51b2ff166314d8be84f6881a7fcbccd37612442cf1c70d27d5352f50","affectsGlobalScope":true},"e7dbf5716d76846c7522e910896c5747b6df1abd538fee8f5291bdc843461795",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"b510d0a18e3db42ac9765d26711083ec1e8b4e21caaca6dc4d25ae6e8623f447"],"root":[92,126,[151,154]],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"experimentalDecorators":true,"jsx":4,"module":99,"noEmitOnError":true,"noImplicitOverride":true,"outDir":"./","skipLibCheck":true,"sourceMap":true,"strict":true,"target":7,"useDefineForClassFields":true},"fileIdsList":[[155,234],[191,234],[192,197,225,234],[193,204,205,212,222,233,234],[193,194,204,212,234],[195,234],[196,197,205,213,234],[197,222,230,234],[198,200,204,212,234],[199,234],[200,201,234],[204,234],[202,204,234],[191,204,234],[204,205,206,222,233,234],[204,205,206,219,222,225,234],[189,234,238],[234],[200,204,207,212,222,233,234],[204,205,207,208,212,222,230,233,234],[207,209,222,230,233,234],[155,156,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240],[204,210,234],[211,233,234,238],[200,204,212,222,234],[213,234],[214,234],[191,215,234],[216,232,234,238],[217,234],[218,234],[204,219,220,234],[219,221,234,236],[192,204,222,223,224,225,234],[192,222,224,234],[222,223,234],[225,234],[226,234],[191,222,234],[204,228,229,234],[228,229,234],[197,212,222,230,234],[231,234],[212,232,234],[192,207,218,233,234],[197,234],[222,234,235],[211,234,236],[234,237],[192,197,204,206,215,222,233,234,236,238],[222,234,239],[74,75,76,234],[77,234],[166,170,233,234],[166,222,233,234],[161,234],[163,166,230,233,234],[212,230,234],[234,241],[161,234,241],[163,166,212,233,234],[158,159,162,165,192,204,222,233,234],[158,164,234],[162,166,192,225,233,234,241],[192,234,241],[182,192,234,241],[160,161,234,241],[166,234],[160,161,162,163,164,165,166,167,168,170,171,172,173,174,175,176,177,178,179,180,181,183,184,185,186,187,188,234],[166,173,174,234],[164,166,174,175,234],[165,234],[158,161,166,234],[166,170,174,175,234],[170,234],[164,166,169,233,234],[158,163,164,166,170,173,234],[192,222,234],[161,166,182,192,234,238,241],[78,91,92,126,151,234],[78,91,125,234],[78,91,234],[78,91,125,150,234],[78,152,206,214,234],[78,92,126,151,152,234],[130,145,234],[91,134,145,234],[134,145,147,234],[134,145,146,147,148,149,234],[91,134,141,234],[141,234],[134,142,234],[142,143,144,234],[91,131,234],[91,234],[131,132,133,234],[91,139,234],[139,140,234],[91,135,136,234],[137,234],[135,136,137,138,234],[127,234],[127,128,129,234],[106,107,108,234],[91,99,234],[91,97,99,100,234],[91,97,234],[98,99,100,101,234],[91,93,97,102,105,109,110,117,118,119,120,124,234],[91,97,103,234],[103,104,234],[93,234],[94,95,96,234],[121,122,123,234],[91,111,234],[111,112,113,114,115,116,234],[89,90,234],[80,81,234],[81,234],[79,80,81,82,83,84,85,86,87,88,234],[79,234],[80,234]],"referencedMap":[[155,1],[156,1],[191,2],[192,3],[193,4],[194,5],[195,6],[196,7],[197,8],[198,9],[199,10],[200,11],[201,11],[203,12],[202,13],[204,14],[205,15],[206,16],[190,17],[240,18],[207,19],[208,20],[209,21],[241,22],[210,23],[211,24],[212,25],[213,26],[214,27],[215,28],[216,29],[217,30],[218,31],[219,32],[220,32],[221,33],[222,34],[224,35],[223,36],[225,37],[226,38],[227,39],[228,40],[229,41],[230,42],[231,43],[232,44],[233,45],[234,46],[235,47],[236,48],[237,49],[238,50],[239,51],[76,18],[74,18],[77,52],[78,53],[157,18],[75,18],[72,18],[73,18],[12,18],[13,18],[15,18],[14,18],[2,18],[16,18],[17,18],[18,18],[19,18],[20,18],[21,18],[22,18],[23,18],[3,18],[24,18],[4,18],[25,18],[29,18],[26,18],[27,18],[28,18],[30,18],[31,18],[32,18],[5,18],[33,18],[34,18],[35,18],[36,18],[6,18],[40,18],[37,18],[38,18],[39,18],[41,18],[7,18],[42,18],[47,18],[48,18],[43,18],[44,18],[45,18],[46,18],[8,18],[52,18],[49,18],[50,18],[51,18],[53,18],[9,18],[54,18],[55,18],[56,18],[59,18],[57,18],[58,18],[60,18],[61,18],[10,18],[62,18],[1,18],[63,18],[64,18],[11,18],[69,18],[66,18],[65,18],[70,18],[68,18],[71,18],[67,18],[173,54],[180,55],[172,54],[187,56],[164,57],[163,58],[186,59],[181,60],[184,61],[166,62],[165,63],[161,64],[160,65],[183,66],[162,67],[167,68],[168,18],[171,68],[158,18],[189,69],[188,68],[175,70],[176,71],[178,72],[174,73],[177,74],[182,59],[169,75],[170,76],[179,77],[159,78],[185,79],[152,80],[126,81],[92,82],[151,83],[153,84],[154,85],[146,86],[147,87],[148,88],[150,89],[142,90],[143,91],[144,92],[145,93],[132,94],[133,95],[131,95],[134,96],[149,91],[140,97],[141,98],[137,99],[138,100],[135,18],[136,100],[139,101],[128,102],[129,18],[127,18],[130,103],[106,95],[107,95],[109,104],[108,95],[110,95],[100,105],[101,106],[99,18],[98,107],[102,108],[125,109],[104,110],[105,111],[103,112],[96,18],[97,113],[94,95],[95,95],[120,95],[119,95],[118,95],[121,18],[123,18],[124,114],[122,18],[112,115],[116,95],[113,115],[115,115],[114,115],[111,18],[117,116],[90,18],[91,117],[82,118],[83,119],[84,118],[89,120],[80,121],[81,18],[85,122],[86,121],[87,18],[88,119],[79,18],[93,18]],"latestChangedDtsFile":"./index.d.ts"},"version":"5.5.3"}
1
+ {"program":{"fileNames":["../../../../node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../../node_modules/typescript/lib/lib.es2023.d.ts","../../../../node_modules/typescript/lib/lib.esnext.d.ts","../../../../node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2023.array.d.ts","../../../../node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../../node_modules/typescript/lib/lib.esnext.array.d.ts","../../../../node_modules/typescript/lib/lib.esnext.collection.d.ts","../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../../node_modules/typescript/lib/lib.esnext.string.d.ts","../../../../node_modules/typescript/lib/lib.esnext.promise.d.ts","../../../../node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../../../node_modules/typescript/lib/lib.esnext.object.d.ts","../../../../node_modules/typescript/lib/lib.esnext.regexp.d.ts","../../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../../node_modules/@types/react/global.d.ts","../../../../node_modules/csstype/index.d.ts","../../../../node_modules/@types/prop-types/index.d.ts","../../../../node_modules/@types/react/index.d.ts","../../../../node_modules/@types/react/jsx-runtime.d.ts","../../../schema/dist/types/schema/value.d.ts","../../../schema/dist/types/schema/input.d.ts","../../../schema/dist/types/schema/json.d.ts","../../../schema/dist/types/schema/acl.d.ts","../../../schema/dist/types/schema/actions.d.ts","../../../schema/dist/types/schema/actionsPayload.d.ts","../../../schema/dist/types/schema/model.d.ts","../../../schema/dist/types/schema/result.d.ts","../../../schema/dist/types/schema/settings.d.ts","../../../schema/dist/types/schema/validation.d.ts","../../../schema/dist/types/schema/index.d.ts","../../../schema/dist/types/ProjectRole.d.ts","../../../schema/dist/types/index.d.ts","../../src/utils.ts","../../src/EnumTypeSchemaGenerator.ts","../../../typesafe/dist/types/index.d.ts","../../../schema-utils/dist/types/model/modelUtils.d.ts","../../../schema-utils/dist/types/model/resolveDefaultColumnType.d.ts","../../../schema-utils/dist/types/model/NamingConventions.d.ts","../../../schema-utils/dist/types/model/index.d.ts","../../../schema-utils/dist/types/definition-generator/TsDefinitionGenerator.d.ts","../../../schema-utils/dist/types/definition-generator/DefinitionNamingConventions.d.ts","../../../schema-utils/dist/types/definition-generator/AclDefinitionCodeGenerator.d.ts","../../../schema-utils/dist/types/definition-generator/DefinitionCodeGenerator.d.ts","../../../schema-utils/dist/types/definition-generator/index.d.ts","../../../schema-utils/dist/types/lax/schema.d.ts","../../../schema-utils/dist/types/lax/LaxSchemaConverter.d.ts","../../../schema-utils/dist/types/lax/index.d.ts","../../../schema-utils/dist/types/acl/AllowAllPermissionFactory.d.ts","../../../schema-utils/dist/types/acl/PredicateDefinitionProcessor.d.ts","../../../schema-utils/dist/types/acl/schemaUtils.d.ts","../../../schema-utils/dist/types/acl/index.d.ts","../../../schema-utils/dist/types/dataUtils.d.ts","../../../schema-utils/dist/types/validation/errors.d.ts","../../../schema-utils/dist/types/validation/AclValidator.d.ts","../../../schema-utils/dist/types/validation/ModelValidator.d.ts","../../../schema-utils/dist/types/validation/ValidationValidator.d.ts","../../../schema-utils/dist/types/validation/SchemaValidator.d.ts","../../../schema-utils/dist/types/validation/MembershipResolver.d.ts","../../../schema-utils/dist/types/validation/index.d.ts","../../../schema-utils/dist/types/schemaNormalizer.d.ts","../../../schema-utils/dist/types/schemaFilter.d.ts","../../../schema-utils/dist/types/schemaChecksum.d.ts","../../../schema-utils/dist/types/utils/assertNever.d.ts","../../../schema-utils/dist/types/utils/isIt.d.ts","../../../schema-utils/dist/types/utils/deepCompare.d.ts","../../../schema-utils/dist/types/utils/index.d.ts","../../../schema-utils/dist/types/index.d.ts","../../src/EntityTypeSchemaGenerator.ts","../../../graphql-client/dist/types/GraphQlClientRequestOptions.d.ts","../../../graphql-client/dist/types/GraphQlClient.d.ts","../../../graphql-client/dist/types/GraphQlClientError.d.ts","../../../graphql-client/dist/types/index.d.ts","../../../client-content/dist/types/types/Schema.d.ts","../../../client-content/dist/types/types/Input.d.ts","../../../client-content/dist/types/types/Result.d.ts","../../../client-content/dist/types/types/index.d.ts","../../../graphql-builder/dist/types/nodes/GraphQlFragmentSpread.d.ts","../../../graphql-builder/dist/types/nodes/GraphQlInlineFragment.d.ts","../../../graphql-builder/dist/types/nodes/GraphQlField.d.ts","../../../graphql-builder/dist/types/nodes/GraphQlFragment.d.ts","../../../graphql-builder/dist/types/nodes/index.d.ts","../../../graphql-builder/dist/types/GraphQlQueryPrinter.d.ts","../../../graphql-builder/dist/types/index.d.ts","../../../client-content/dist/types/nodes/ContentEntitySelection.d.ts","../../../client-content/dist/types/nodes/ContentOperation.d.ts","../../../client-content/dist/types/nodes/TypedEntitySelection.d.ts","../../../client-content/dist/types/nodes/index.d.ts","../../../client-content/dist/types/ContentClient.d.ts","../../../client-content/dist/types/ContentQueryBuilder.d.ts","../../../client-content/dist/types/TypedContentQueryBuilder.d.ts","../../../client-content/dist/types/utils/mutationFragments.d.ts","../../../client-content/dist/types/index.d.ts","../../src/NameSchemaGenerator.ts","../../src/ContemberClientGenerator.ts","../../src/generate.ts","../../src/index.ts","../../../../node_modules/@types/node/assert.d.ts","../../../../node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/buffer/index.d.ts","../../../../node_modules/undici-types/header.d.ts","../../../../node_modules/undici-types/readable.d.ts","../../../../node_modules/undici-types/file.d.ts","../../../../node_modules/undici-types/fetch.d.ts","../../../../node_modules/undici-types/formdata.d.ts","../../../../node_modules/undici-types/connector.d.ts","../../../../node_modules/undici-types/client.d.ts","../../../../node_modules/undici-types/errors.d.ts","../../../../node_modules/undici-types/dispatcher.d.ts","../../../../node_modules/undici-types/global-dispatcher.d.ts","../../../../node_modules/undici-types/global-origin.d.ts","../../../../node_modules/undici-types/pool-stats.d.ts","../../../../node_modules/undici-types/pool.d.ts","../../../../node_modules/undici-types/handlers.d.ts","../../../../node_modules/undici-types/balanced-pool.d.ts","../../../../node_modules/undici-types/agent.d.ts","../../../../node_modules/undici-types/mock-interceptor.d.ts","../../../../node_modules/undici-types/mock-agent.d.ts","../../../../node_modules/undici-types/mock-client.d.ts","../../../../node_modules/undici-types/mock-pool.d.ts","../../../../node_modules/undici-types/mock-errors.d.ts","../../../../node_modules/undici-types/proxy-agent.d.ts","../../../../node_modules/undici-types/api.d.ts","../../../../node_modules/undici-types/cookies.d.ts","../../../../node_modules/undici-types/patch.d.ts","../../../../node_modules/undici-types/filereader.d.ts","../../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../../node_modules/undici-types/websocket.d.ts","../../../../node_modules/undici-types/content-type.d.ts","../../../../node_modules/undici-types/cache.d.ts","../../../../node_modules/undici-types/interceptors.d.ts","../../../../node_modules/undici-types/index.d.ts","../../../../node_modules/@types/node/globals.d.ts","../../../../node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/@types/node/buffer.d.ts","../../../../node_modules/@types/node/child_process.d.ts","../../../../node_modules/@types/node/cluster.d.ts","../../../../node_modules/@types/node/console.d.ts","../../../../node_modules/@types/node/constants.d.ts","../../../../node_modules/@types/node/crypto.d.ts","../../../../node_modules/@types/node/dgram.d.ts","../../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/@types/node/dns.d.ts","../../../../node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/@types/node/domain.d.ts","../../../../node_modules/@types/node/dom-events.d.ts","../../../../node_modules/@types/node/events.d.ts","../../../../node_modules/@types/node/fs.d.ts","../../../../node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/@types/node/http.d.ts","../../../../node_modules/@types/node/http2.d.ts","../../../../node_modules/@types/node/https.d.ts","../../../../node_modules/@types/node/inspector.d.ts","../../../../node_modules/@types/node/module.d.ts","../../../../node_modules/@types/node/net.d.ts","../../../../node_modules/@types/node/os.d.ts","../../../../node_modules/@types/node/path.d.ts","../../../../node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/@types/node/process.d.ts","../../../../node_modules/@types/node/punycode.d.ts","../../../../node_modules/@types/node/querystring.d.ts","../../../../node_modules/@types/node/readline.d.ts","../../../../node_modules/@types/node/readline/promises.d.ts","../../../../node_modules/@types/node/repl.d.ts","../../../../node_modules/@types/node/stream.d.ts","../../../../node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/@types/node/stream/web.d.ts","../../../../node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/@types/node/test.d.ts","../../../../node_modules/@types/node/timers.d.ts","../../../../node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/@types/node/tls.d.ts","../../../../node_modules/@types/node/trace_events.d.ts","../../../../node_modules/@types/node/tty.d.ts","../../../../node_modules/@types/node/url.d.ts","../../../../node_modules/@types/node/util.d.ts","../../../../node_modules/@types/node/v8.d.ts","../../../../node_modules/@types/node/vm.d.ts","../../../../node_modules/@types/node/wasi.d.ts","../../../../node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/@types/node/zlib.d.ts","../../../../node_modules/@types/node/globals.global.d.ts","../../../../node_modules/@types/node/index.d.ts"],"fileInfos":[{"version":"44e584d4f6444f58791784f1d530875970993129442a847597db702a073ca68c","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc","27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","17edc026abf73c5c2dd508652d63f68ec4efd9d4856e3469890d27598209feb5",{"version":"4af6b0c727b7a2896463d512fafd23634229adf69ac7c00e2ae15a09cb084fad","affectsGlobalScope":true},{"version":"9c00a480825408b6a24c63c1b71362232927247595d7c97659bc24dc68ae0757","affectsGlobalScope":true},{"version":"6920e1448680767498a0b77c6a00a8e77d14d62c3da8967b171f1ddffa3c18e4","affectsGlobalScope":true},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"bb42a7797d996412ecdc5b2787720de477103a0b2e53058569069a0e2bae6c7e","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"b541a838a13f9234aba650a825393ffc2292dc0fc87681a5d81ef0c96d281e7a","affectsGlobalScope":true},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true},{"version":"ae37d6ccd1560b0203ab88d46987393adaaa78c919e51acf32fb82c86502e98c","affectsGlobalScope":true},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"5e07ed3809d48205d5b985642a59f2eba47c402374a7cf8006b686f79efadcbd","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"479553e3779be7d4f68e9f40cdb82d038e5ef7592010100410723ceced22a0f7","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true},{"version":"d3d7b04b45033f57351c8434f60b6be1ea71a2dfec2d0a0c3c83badbb0e3e693","affectsGlobalScope":true},{"version":"956d27abdea9652e8368ce029bb1e0b9174e9678a273529f426df4b3d90abd60","affectsGlobalScope":true},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true},{"version":"e6633e05da3ff36e6da2ec170d0d03ccf33de50ca4dc6f5aeecb572cedd162fb","affectsGlobalScope":true},{"version":"d8670852241d4c6e03f2b89d67497a4bbefe29ecaa5a444e2c11a9b05e6fccc6","affectsGlobalScope":true},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true},{"version":"caccc56c72713969e1cfe5c3d44e5bab151544d9d2b373d7dbe5a1e4166652be","affectsGlobalScope":true},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true},{"version":"9d540251809289a05349b70ab5f4b7b99f922af66ab3c39ba56a475dcf95d5ff","affectsGlobalScope":true},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true},{"version":"0b11f3ca66aa33124202c80b70cd203219c3d4460cfc165e0707aa9ec710fc53","affectsGlobalScope":true},{"version":"6a3f5a0129cc80cf439ab71164334d649b47059a4f5afca90282362407d0c87f","affectsGlobalScope":true},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true},{"version":"15b98a533864d324e5f57cd3cfc0579b231df58c1c0f6063ea0fcb13c3c74ff9","affectsGlobalScope":true},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},{"version":"36a2e4c9a67439aca5f91bb304611d5ae6e20d420503e96c230cf8fcdc948d94","affectsGlobalScope":true},"8a8eb4ebffd85e589a1cc7c178e291626c359543403d58c9cd22b81fab5b1fb9","247a952efd811d780e5630f8cfd76f495196f5fa74f6f0fee39ac8ba4a3c9800",{"version":"c469d07daf4f88b613f0c99d95389e049e85c14f28f58120abca6785a0b3813d","affectsGlobalScope":true},"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","3ae62be455efcb1874e7fd1f30f2bb83144757d2f349ceb0c6523bb9f7f7a860","8e86b98b3e0df46d3f83c303661824d1965ddd63e674fc0b6849f7869f5b86f0","b1296831e111197bd9ebd73f0d15ad0fe2e11fcc51a6302edb23ffd93794db36","5610e8177b34fa50394973f3faba06fd5268b1264a2f4f7daaa71fee1194a94d","ec0b1ad8de385d526b4e16c7ab8da4b84c1fb15a680d4c82b0e0b5f70e9f80c5","462c0b72a4911d6356ebbfed5dedd9682edf2bd60bcf6ea025539f1cd8c64bf4","5c3f0890ecc492ada4fa62824b8db132adbf9757e918cdc7421a586474b7cb16","f42116e2e8ad600dc90bdf8ceade9dcf593c35812d8aaba9c03a3f1dbb87330e","0a719586fbf47735737c3ef22372473f05ae36bcdec431c5bb565478466190be","dff2fee737ebe5174f549c9f28e114c0cabac4b5fe4e364654465ba528979ba4","ad1f130d5fb49665e218d5366db67ead55593335a2c02733ae5f8466a99def53","466df547af9cf3861658b08baf3ecbd41c0eaad2101378fadfa54ab24db103e6","92404f0f42ffd8d939cf6fb1a911235e931981f94dcab0e85f9ae5faf876ea3c",{"version":"0c233f23fa6aef75de3cd8bb708114545ba1aaf976c1275cc76a4507e9614e02","signature":"a404413d55ace912b644189eebdf890f75a936ad34b6650e1f17f20615be89eb"},{"version":"2cc39660c1357af78764b1e0bd7753e9219c25b25604e394bc6daef055054088","signature":"f0b0d83cf814e2d1f3cbe11a382f307774f4527d4c5c97cb37a9d7d96958ac60"},"5631be3447b74e49a1ebae38530320cfeedffac181181491ec1a03ce11d59b26","1090a100fefe5c21a36fe36b0c83dd566ac8c3d9b3fa1f2c2733e173c599614c","1208b368dc1c1e92d8fcbd3eac3f37dfea25672dc37134cce620455559e4da96","fb76be343c21f4e9dc23ddbb69f7a4a81dab90e9586c303668081dd3b4e30e58","daa9330eda367a2de8034fe1c11a387f25c1fb9c7b1a694facda6114bb22fef0","6c8f26d28cdb6bd0edc2d9d5b7040654b84776e85b2fb2da9ff5d23de67ff17c","bd25f7cb1c87f89392b2e5c6ed6846c4acc016e959783f1bc2d1c529b804492c","dc0b794be4f93caea87286e4f8a1b9bb1c8f2d6b26f35a3ea9f366b0b13478b6","2fa776928692b8d0cf9363ee7fd815b1539f207c91cae851639623e923174ae7","1120c659d2214c93367b3d93336d28a3ab1a45fccecd0ba3599ea99a20295af3","2d994cd941265041b7ab04efd9f9628a0ddaa7eb3ca13bc53c1f73f0b8954a74","9dfd6d6aa56e7f5ab521b038c35b8c42fbf789abe3316cd917cebc5e9117d7e0","9ac8296db617c4ae910ee4b618bb78bb130cdfca956ad8c4502e8d3283381c99","aa03a6771a194845f7d08c94a5927aaf0b67d0c0c4d9ab06167c1d36eda18f2b","2e3f3ef49948c5ddaa9bc1187af0cefb685b8cc529460264548c434de625f5bc","7777d96bf1dd9d4a21853f1db7f8ac76b362f1534a882692c9fc8f7b3850dcab","8da1c5a41069f9cbcae8690056768f4d315ee9e020d3162fd1703013cf8c0325","46454d6185f96b8d90c816ace56e90aa21d0c3e3907f65e47182e63ca87d7e33","1ab55d65db2bc181e91481b6ce92a2285eda09ccfea566f047c055d2ff0cb03c","d5bb605f28707fe26e7c87836418abc6fba7679cf5ee99a49ecf532c93846bf9","e9124ac92fb22b3e867d40dc8d9c1d9d1502fa69b3611d05ace7258be72f9777","a29fee10a827a80f5c211a21e5513185349ba264ea8b04a382a451982e23b294","f4fefa0f2c0e1a5587c1d698d5ded77e6c8695ab2eff6c7b28c3d3d18d58f731","3fa52693f21eed67e1bd50be0d25c7055d326580d78ceef9cca0c287e224656e","05ebf96323766ec1a492a055ada17f8e540142335b9467e1f430023c40f4592d","8b9c51e573464bff3b83adf232405f01a87447d1266b1a1a93a02fe3b713b588","8cf3d80aa530218e59750d58f63922099c102514ff34255480cc5ba24099711d","e846789af23154545cd9025760a9d063d1bfed8fd5022aac5874c241d9058864","a95c25e1f9146dd90f7cb36c7e306a25a67bdef1eaae7319a60d2f9d3ff66804","2e8b4d5b4a88c5cb82edc4585e7615641f7714676a8d92bf36884dcc7c975f12","c51e163a5110087ff0e59381f117d97fd23d275a80aa9c7bb4c7a58f52a3943a","b7f4d30efff05ede0b6358ded8aedefb29802ed4cf6fbd16e3921f9cf76780ae","3a6e1f99acca4b9d262c1b9ac7931c50c86bb525a6c397c2769d21e08cf5c1dd",{"version":"29306372d317b50f852270690d6ed8026ef371bfb478fd5292ab360f8c0f08b9","signature":"360b9a2f734bdda3c3877cd6e5dd92fae9f3e914cf2c14d935dc8c9cc29ff4ce"},"8c56ed339fb7ea09a933aae91daa038e669730da6b6d422275d0a7e5293b46a7","711255f9dda18a35389ec1e3fa8ebe6e906e67902550afad96b0ac6c5a5de327","4d023a0827a63ad5e6b498f92830d79e40e6fd487ed6b7c6fc2528eb9b3c0937","e17fbde86ef68adc663fff12c63cce11175482b3f108afd90fa3c11754afe6c6","af8e795fed72274bbd8d655d04588bbd88871dbd603dff6461362cb5207d2284","33491243e9e60504ee3d733817b089c90d639dc3f1238a3d6417083e9dd5b683","f289c5204b0819632486cefeec845a20a7a9c769180fb6bede63b0d7f24839d2","feaceef383869ce3addd7d620c89fa6ff1d5753f7b451cffb1e926998df2b5e4","34e5c5b2be8aa1b3f75ccd21529ae8b9163f510dbdabae4caae3fec3010cc33b","45fb3525f5c652416e54f91bd8378464d41e22b0ccc108de7db918cf8e92ffd3","e2402a646d4471b0985495b6bfca6c9c731d335195bf206e8c982d8ca362692f","08d34fcbf615950f6d3dd6858437159f0c0af08d5af645ec415ebfeaeacf3bd0","13ce162c8088b92a985e41a2ddf61cbb191101c280214a74dd9e8d2fd3c9c905","d2689735d2498972d6f02fbaff989b1fa500b5a140af7e7c08a15fbc36c1d3d3","4b47e095287cc1351b5fa9c5112d1d2d255bd8916ce76347225837b244e97ed5","4f4d0e8aeb309bbb646dd57615ca9375fa2821df08120fe318124647d91de80a","06c1e22ce1921cfd383c800f9e191972c5dfaca8996cca54d85c4b4cb41db49d","0b42a31c12bc794fe3b4efafc5af85e9bd2d094f086157dfdc98ea4f0a13016a","6c7327831239ec38e57c18eb15c5b191aa258ada0528de8dc93092efcba20896","3c4de8d194c64b484827151ff14582884166268c345cbb13f9c19e4be3912f54","62ca877d3c090576b3ca1cd3e576c931eaedefc3af1b5ef405e41fd22c8b2955","5e8c7ad4619cc15007aa5bc3f4e1a30cb01540c14beaa609fb8d17d21acaceba","016e695348eb662b9adead21973e3da689bbff9c65811491644e2ed594fca800","1702404293385fb18761a3cf716b3c2888c6fa95d3ef96bc8e4e8f5a6e679689",{"version":"3ba31b0ae95aeb5491f764222294fe55d7599567c149854dbf999db97b5bb7af","signature":"d5efb5060898d1f076715772c3480d4ce727be55e2167fb299bd6556ae70eeae"},{"version":"6eea1cd7302667f74cf05794d56316644f2a94156c43f39ab56940c2ed9ac50c","signature":"64fc8e10187e3facc023e41fafcd45a40b767a607e41270184e0585efe894d81"},{"version":"64e1f5a6a5cfade16c82633c77b44d9598e756132ed72ce104245d69bae178e4","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"675668049a0b4175aa1ad4fd80c751267db0053152755a7fac646eef592c3882","signature":"5cb53013b1adc504c16bed8523675d1efdeab8e7b22cd9a880d1d074cd5357e4"},"09df3b4f1c937f02e7fee2836d4c4d7a63e66db70fd4d4e97126f4542cc21d9d","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1",{"version":"4d719cfab49ae4045d15cb6bed0f38ad3d7d6eb7f277d2603502a0f862ca3182","affectsGlobalScope":true},"cce1f5f86974c1e916ec4a8cab6eec9aa8e31e8148845bf07fbaa8e1d97b1a2c",{"version":"5a856afb15f9dc9983faa391dde989826995a33983c1cccb173e9606688e9709","affectsGlobalScope":true},"546ab07e19116d935ad982e76a223275b53bff7771dab94f433b7ab04652936e","7b43160a49cf2c6082da0465876c4a0b164e160b81187caeb0a6ca7a281e85ba",{"version":"aefb5a4a209f756b580eb53ea771cca8aad411603926f307a5e5b8ec6b16dcf6","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","f5a8b7ec4b798c88679194a8ebc25dcb6f5368e6e5811fcda9fe12b0d445b8db","b86e1a45b29437f3a99bad4147cb9fe2357617e8008c0484568e5bb5138d6e13","b5b719a47968cd61a6f83f437236bb6fe22a39223b6620da81ef89f5d7a78fb7","42c431e7965b641106b5e25ab3283aa4865ca7bb9909610a2abfa6226e4348be","0b7e732af0a9599be28c091d6bd1cb22c856ec0d415d4749c087c3881ca07a56","b7fe70be794e13d1b7940e318b8770cd1fb3eced7707805318a2e3aaac2c3e9e",{"version":"2c71199d1fc83bf17636ad5bf63a945633406b7b94887612bba4ef027c662b3e","affectsGlobalScope":true},{"version":"8d6138a264ddc6f94f16e99d4e117a2d6eb31b217891cf091b6437a2f114d561","affectsGlobalScope":true},"3b4c85eea12187de9929a76792b98406e8778ce575caca8c574f06da82622c54","f788131a39c81e0c9b9e463645dd7132b5bc1beb609b0e31e5c1ceaea378b4df","0c236069ce7bded4f6774946e928e4b3601894d294054af47a553f7abcafe2c1","21894466693f64957b9bd4c80fa3ec7fdfd4efa9d1861e070aca23f10220c9b2","396a8939b5e177542bdf9b5262b4eee85d29851b2d57681fa9d7eae30e225830","21773f5ac69ddf5a05636ba1f50b5239f4f2d27e4420db147fc2f76a5ae598ac",{"version":"6ec93c745c5e3e25e278fa35451bf18ef857f733de7e57c15e7920ac463baa2a","affectsGlobalScope":true},"a5fe4cc622c3bf8e09ababde5f4096ceac53163eefcd95e9cd53f062ff9bb67a","30c2ec6abf6aaa60eb4f32fb1235531506b7961c6d1bdc7430711aec8fd85295","0f05c06ff6196958d76b865ae17245b52d8fe01773626ac3c43214a2458ea7b7",{"version":"308b84e1943ef30015469770e931eb21b795348893b2a6562ca54ea8f0b3c41c","affectsGlobalScope":true},{"version":"d48009cbe8a30a504031cc82e1286f78fed33b7a42abf7602c23b5547b382563","affectsGlobalScope":true},"7aaeb5e62f90e1b2be0fc4844df78cdb1be15c22b427bc6c39d57308785b8f10","3ba30205a029ebc0c91d7b1ab4da73f6277d730ca1fc6692d5a9144c6772c76b","d8dba11dc34d50cb4202de5effa9a1b296d7a2f4a029eec871f894bddfb6430d","8b71dd18e7e63b6f991b511a201fad7c3bf8d1e0dd98acb5e3d844f335a73634","01d8e1419c84affad359cc240b2b551fb9812b450b4d3d456b64cda8102d4f60","458b216959c231df388a5de9dcbcafd4b4ca563bc3784d706d0455467d7d4942","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","f8c87b19eae111f8720b0345ab301af8d81add39621b63614dfc2d15fd6f140a","831c22d257717bf2cbb03afe9c4bcffc5ccb8a2074344d4238bf16d3a857bb12",{"version":"24ba151e213906027e2b1f5223d33575a3612b0234a0e2b56119520bbe0e594b","affectsGlobalScope":true},{"version":"cbf046714f3a3ba2544957e1973ac94aa819fa8aa668846fa8de47eb1c41b0b2","affectsGlobalScope":true},"aa34c3aa493d1c699601027c441b9664547c3024f9dbab1639df7701d63d18fa","eae74e3d50820f37c72c0679fed959cd1e63c98f6a146a55b8c4361582fa6a52","7c651f8dce91a927ab62925e73f190763574c46098f2b11fb8ddc1b147a6709a","7440ab60f4cb031812940cc38166b8bb6fbf2540cfe599f87c41c08011f0c1df",{"version":"aed89e3c18f4c659ee8153a76560dffda23e2d801e1e60d7a67abd84bc555f8d","affectsGlobalScope":true},{"version":"0ed13c80faeb2b7160bffb4926ff299c468e67a37a645b3ae0917ba0db633c1b","affectsGlobalScope":true},"e393915d3dc385e69c0e2390739c87b2d296a610662eb0b1cb85224e55992250","2f940651c2f30e6b29f8743fae3f40b7b1c03615184f837132b56ea75edad08b","5749c327c3f789f658072f8340786966c8b05ea124a56c1d8d60e04649495a4d",{"version":"c9d62b2a51b2ff166314d8be84f6881a7fcbccd37612442cf1c70d27d5352f50","affectsGlobalScope":true},"e7dbf5716d76846c7522e910896c5747b6df1abd538fee8f5291bdc843461795",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"b510d0a18e3db42ac9765d26711083ec1e8b4e21caaca6dc4d25ae6e8623f447"],"root":[92,93,127,[152,155]],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"experimentalDecorators":true,"jsx":4,"module":99,"noEmitOnError":true,"noImplicitOverride":true,"outDir":"./","skipLibCheck":true,"sourceMap":true,"strict":true,"target":7,"useDefineForClassFields":true},"fileIdsList":[[156,235],[192,235],[193,198,226,235],[194,205,206,213,223,234,235],[194,195,205,213,235],[196,235],[197,198,206,214,235],[198,223,231,235],[199,201,205,213,235],[200,235],[201,202,235],[205,235],[203,205,235],[192,205,235],[205,206,207,223,234,235],[205,206,207,220,223,226,235],[190,235,239],[235],[201,205,208,213,223,234,235],[205,206,208,209,213,223,231,234,235],[208,210,223,231,234,235],[156,157,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241],[205,211,235],[212,234,235,239],[201,205,213,223,235],[214,235],[215,235],[192,216,235],[217,233,235,239],[218,235],[219,235],[205,220,221,235],[220,222,235,237],[193,205,223,224,225,226,235],[193,223,225,235],[223,224,235],[226,235],[227,235],[192,223,235],[205,229,230,235],[229,230,235],[198,213,223,231,235],[232,235],[213,233,235],[193,208,219,234,235],[198,235],[223,235,236],[212,235,237],[235,238],[193,198,205,207,216,223,234,235,237,239],[223,235,240],[74,75,76,235],[77,235],[167,171,234,235],[167,223,234,235],[162,235],[164,167,231,234,235],[213,231,235],[235,242],[162,235,242],[164,167,213,234,235],[159,160,163,166,193,205,223,234,235],[159,165,235],[163,167,193,226,234,235,242],[193,235,242],[183,193,235,242],[161,162,235,242],[167,235],[161,162,163,164,165,166,167,168,169,171,172,173,174,175,176,177,178,179,180,181,182,184,185,186,187,188,189,235],[167,174,175,235],[165,167,175,176,235],[166,235],[159,162,167,235],[167,171,175,176,235],[171,235],[165,167,170,234,235],[159,164,165,167,171,174,235],[193,223,235],[162,167,183,193,235,239,242],[78,91,93,127,152,235],[78,91,92,126,235],[78,91,92,235],[78,91,126,151,235],[78,153,207,215,235],[78,93,127,152,153,235],[78,235],[131,146,235],[91,135,146,235],[135,146,148,235],[135,146,147,148,149,150,235],[91,135,142,235],[142,235],[135,143,235],[143,144,145,235],[91,132,235],[91,235],[132,133,134,235],[91,140,235],[140,141,235],[91,136,137,235],[138,235],[136,137,138,139,235],[128,235],[128,129,130,235],[107,108,109,235],[91,100,235],[91,98,100,101,235],[91,98,235],[99,100,101,102,235],[91,94,98,103,106,110,111,118,119,120,121,125,235],[91,98,104,235],[104,105,235],[94,235],[95,96,97,235],[122,123,124,235],[91,112,235],[112,113,114,115,116,117,235],[89,90,235],[80,81,235],[81,235],[79,80,81,82,83,84,85,86,87,88,235],[79,235],[80,235]],"referencedMap":[[156,1],[157,1],[192,2],[193,3],[194,4],[195,5],[196,6],[197,7],[198,8],[199,9],[200,10],[201,11],[202,11],[204,12],[203,13],[205,14],[206,15],[207,16],[191,17],[241,18],[208,19],[209,20],[210,21],[242,22],[211,23],[212,24],[213,25],[214,26],[215,27],[216,28],[217,29],[218,30],[219,31],[220,32],[221,32],[222,33],[223,34],[225,35],[224,36],[226,37],[227,38],[228,39],[229,40],[230,41],[231,42],[232,43],[233,44],[234,45],[235,46],[236,47],[237,48],[238,49],[239,50],[240,51],[76,18],[74,18],[77,52],[78,53],[158,18],[75,18],[72,18],[73,18],[12,18],[13,18],[15,18],[14,18],[2,18],[16,18],[17,18],[18,18],[19,18],[20,18],[21,18],[22,18],[23,18],[3,18],[24,18],[4,18],[25,18],[29,18],[26,18],[27,18],[28,18],[30,18],[31,18],[32,18],[5,18],[33,18],[34,18],[35,18],[36,18],[6,18],[40,18],[37,18],[38,18],[39,18],[41,18],[7,18],[42,18],[47,18],[48,18],[43,18],[44,18],[45,18],[46,18],[8,18],[52,18],[49,18],[50,18],[51,18],[53,18],[9,18],[54,18],[55,18],[56,18],[59,18],[57,18],[58,18],[60,18],[61,18],[10,18],[62,18],[1,18],[63,18],[64,18],[11,18],[69,18],[66,18],[65,18],[70,18],[68,18],[71,18],[67,18],[174,54],[181,55],[173,54],[188,56],[165,57],[164,58],[187,59],[182,60],[185,61],[167,62],[166,63],[162,64],[161,65],[184,66],[163,67],[168,68],[169,18],[172,68],[159,18],[190,69],[189,68],[176,70],[177,71],[179,72],[175,73],[178,74],[183,59],[170,75],[171,76],[180,77],[160,78],[186,79],[153,80],[127,81],[93,82],[152,83],[154,84],[155,85],[92,86],[147,87],[148,88],[149,89],[151,90],[143,91],[144,92],[145,93],[146,94],[133,95],[134,96],[132,96],[135,97],[150,92],[141,98],[142,99],[138,100],[139,101],[136,18],[137,101],[140,102],[129,103],[130,18],[128,18],[131,104],[107,96],[108,96],[110,105],[109,96],[111,96],[101,106],[102,107],[100,18],[99,108],[103,109],[126,110],[105,111],[106,112],[104,113],[97,18],[98,114],[95,96],[96,96],[121,96],[120,96],[119,96],[122,18],[124,18],[125,115],[123,18],[113,116],[117,96],[114,116],[116,116],[115,116],[112,18],[118,117],[90,18],[91,118],[82,119],[83,120],[84,119],[89,121],[80,122],[81,18],[85,123],[86,122],[87,18],[88,120],[79,18],[94,18]],"latestChangedDtsFile":"./index.d.ts"},"version":"5.5.4"}
@@ -0,0 +1,2 @@
1
+ export declare const getEnumTypeName: (enumName: string) => string;
2
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,aAAc,MAAM,KAAG,MAAwC,CAAA"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@contember/client-content-generator",
3
3
  "license": "Apache-2.0",
4
- "version": "2.0.0-alpha.15",
4
+ "version": "2.0.0-alpha.17",
5
5
  "type": "module",
6
6
  "sideEffects": false,
7
7
  "main": "./dist/production/index.js",
@@ -33,13 +33,13 @@
33
33
  "ae:test": "api-extractor run"
34
34
  },
35
35
  "dependencies": {
36
- "@contember/client-content": "2.0.0-alpha.15",
37
- "@contember/schema": "2.0.0-alpha.15",
38
- "@contember/schema-utils": "2.0.0-alpha.15"
36
+ "@contember/client-content": "2.0.0-alpha.17",
37
+ "@contember/schema": "2.0.0-alpha.17",
38
+ "@contember/schema-utils": "2.0.0-alpha.17"
39
39
  },
40
40
  "devDependencies": {
41
- "@contember/schema-definition": "2.0.0-alpha.15",
42
- "@types/node": "^20.10.5"
41
+ "@contember/schema-definition": "2.0.0-alpha.17",
42
+ "@types/node": "^20.16.5"
43
43
  },
44
44
  "repository": {
45
45
  "type": "git",
@@ -1,11 +1,13 @@
1
1
  import { Model } from '@contember/schema'
2
2
  import { acceptEveryFieldVisitor, acceptFieldVisitor } from '@contember/schema-utils'
3
3
 
4
+ import { getEnumTypeName } from './utils'
5
+
4
6
  export class EntityTypeSchemaGenerator {
5
7
  generate(model: Model.Schema): string {
6
8
  let code = ''
7
9
  for (const enumName of Object.keys(model.enums)) {
8
- code += `import type { ${enumName} } from './enums'\n`
10
+ code += `import type { ${getEnumTypeName(enumName)} } from './enums'\n`
9
11
  }
10
12
 
11
13
  code += `
@@ -141,7 +143,7 @@ const uniqueType = (model: Model.Schema, entity: Model.Entity, field: Model.AnyF
141
143
  const columnToTsType = (column: Model.AnyColumn): string => {
142
144
  switch (column.type) {
143
145
  case Model.ColumnType.Enum:
144
- return column.columnType
146
+ return getEnumTypeName(column.columnType)
145
147
  case Model.ColumnType.String:
146
148
  return 'string'
147
149
  case Model.ColumnType.Int:
@@ -1,10 +1,11 @@
1
1
  import { Model } from '@contember/schema'
2
+ import { getEnumTypeName } from './utils'
2
3
 
3
4
  export class EnumTypeSchemaGenerator {
4
5
  generate(model: Model.Schema): string {
5
6
  let code = ''
6
7
  for (const [enumName, values] of Object.entries(model.enums)) {
7
- code += `export type ${enumName} = ${values.map(it => '\n\t | ' + JSON.stringify(it)).join('')}\n`
8
+ code += `export type ${getEnumTypeName(enumName)} = ${values.map(it => '\n\t | ' + JSON.stringify(it)).join('')}\n`
8
9
  }
9
10
 
10
11
  return code || 'export {}\n'
package/src/utils.ts ADDED
@@ -0,0 +1,3 @@
1
+ const upperCaseFirstLetter = (str: string): string => str.charAt(0).toUpperCase() + str.slice(1)
2
+
3
+ export const getEnumTypeName = (enumName: string): string => upperCaseFirstLetter(enumName)
@@ -8,7 +8,7 @@ test('generate enums', () => {
8
8
  entities: {},
9
9
  enums: {
10
10
  OrderStatus: ['new', 'paid', 'cancelled'],
11
- OrderType: ['normal', 'express'],
11
+ orderType: ['normal', 'express'],
12
12
  },
13
13
  })).toMatchInlineSnapshot(`
14
14
  "export type OrderStatus =