joist-graphql-codegen 2.3.0-next.41 → 2.3.0-next.43

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 (125) hide show
  1. package/build/_virtual/_rolldown/runtime.cjs +23 -0
  2. package/build/generateEnumDetailResolvers.cjs +40 -0
  3. package/build/generateEnumDetailResolvers.cjs.map +1 -0
  4. package/build/generateEnumDetailResolvers.d.cts +8 -0
  5. package/build/generateEnumDetailResolvers.d.cts.map +1 -0
  6. package/build/generateEnumDetailResolvers.d.mts +8 -0
  7. package/build/generateEnumDetailResolvers.d.mts.map +1 -0
  8. package/build/generateEnumDetailResolvers.js +23 -23
  9. package/build/generateEnumDetailResolvers.js.map +1 -1
  10. package/build/generateEnumsGraphql.cjs +29 -0
  11. package/build/generateEnumsGraphql.cjs.map +1 -0
  12. package/build/generateEnumsGraphql.d.cts +8 -0
  13. package/build/generateEnumsGraphql.d.cts.map +1 -0
  14. package/build/generateEnumsGraphql.d.mts +8 -0
  15. package/build/generateEnumsGraphql.d.mts.map +1 -0
  16. package/build/generateEnumsGraphql.js +24 -27
  17. package/build/generateEnumsGraphql.js.map +1 -1
  18. package/build/generateGraphqlCodegen.cjs +54 -0
  19. package/build/generateGraphqlCodegen.cjs.map +1 -0
  20. package/build/generateGraphqlCodegen.d.cts +8 -0
  21. package/build/generateGraphqlCodegen.d.cts.map +1 -0
  22. package/build/generateGraphqlCodegen.d.mts +8 -0
  23. package/build/generateGraphqlCodegen.d.mts.map +1 -0
  24. package/build/generateGraphqlCodegen.js +28 -30
  25. package/build/generateGraphqlCodegen.js.map +1 -1
  26. package/build/generateGraphqlSchemaFiles.cjs +491 -0
  27. package/build/generateGraphqlSchemaFiles.cjs.map +1 -0
  28. package/build/{generateGraphqlSchemaFiles.d.ts → generateGraphqlSchemaFiles.d.cts} +6 -2
  29. package/build/generateGraphqlSchemaFiles.d.cts.map +1 -0
  30. package/build/generateGraphqlSchemaFiles.d.mts +15 -0
  31. package/build/generateGraphqlSchemaFiles.d.mts.map +1 -0
  32. package/build/generateGraphqlSchemaFiles.js +444 -286
  33. package/build/generateGraphqlSchemaFiles.js.map +1 -1
  34. package/build/generateObjectResolvers.cjs +70 -0
  35. package/build/generateObjectResolvers.cjs.map +1 -0
  36. package/build/{generateObjectResolvers.d.ts → generateObjectResolvers.d.cts} +5 -1
  37. package/build/generateObjectResolvers.d.cts.map +1 -0
  38. package/build/generateObjectResolvers.d.mts +17 -0
  39. package/build/generateObjectResolvers.d.mts.map +1 -0
  40. package/build/generateObjectResolvers.js +48 -38
  41. package/build/generateObjectResolvers.js.map +1 -1
  42. package/build/generateQueryPageResolvers.cjs +51 -0
  43. package/build/generateQueryPageResolvers.cjs.map +1 -0
  44. package/build/generateQueryPageResolvers.d.cts +8 -0
  45. package/build/generateQueryPageResolvers.d.cts.map +1 -0
  46. package/build/generateQueryPageResolvers.d.mts +8 -0
  47. package/build/generateQueryPageResolvers.d.mts.map +1 -0
  48. package/build/generateQueryPageResolvers.js +31 -35
  49. package/build/generateQueryPageResolvers.js.map +1 -1
  50. package/build/generateQueryResolvers.cjs +55 -0
  51. package/build/generateQueryResolvers.cjs.map +1 -0
  52. package/build/generateQueryResolvers.d.cts +10 -0
  53. package/build/generateQueryResolvers.d.cts.map +1 -0
  54. package/build/generateQueryResolvers.d.mts +10 -0
  55. package/build/generateQueryResolvers.d.mts.map +1 -0
  56. package/build/generateQueryResolvers.js +38 -36
  57. package/build/generateQueryResolvers.js.map +1 -1
  58. package/build/generateResolverUtils.cjs +36 -0
  59. package/build/generateResolverUtils.cjs.map +1 -0
  60. package/build/generateResolverUtils.d.cts +8 -0
  61. package/build/generateResolverUtils.d.cts.map +1 -0
  62. package/build/generateResolverUtils.d.mts +8 -0
  63. package/build/generateResolverUtils.d.mts.map +1 -0
  64. package/build/generateResolverUtils.js +25 -26
  65. package/build/generateResolverUtils.js.map +1 -1
  66. package/build/generateSaveResolvers.cjs +57 -0
  67. package/build/generateSaveResolvers.cjs.map +1 -0
  68. package/build/{generateSaveResolvers.d.ts → generateSaveResolvers.d.cts} +5 -1
  69. package/build/generateSaveResolvers.d.cts.map +1 -0
  70. package/build/generateSaveResolvers.d.mts +17 -0
  71. package/build/generateSaveResolvers.d.mts.map +1 -0
  72. package/build/generateSaveResolvers.js +39 -40
  73. package/build/generateSaveResolvers.js.map +1 -1
  74. package/build/graphqlUtils.cjs +160 -0
  75. package/build/graphqlUtils.cjs.map +1 -0
  76. package/build/graphqlUtils.d.cts +31 -0
  77. package/build/graphqlUtils.d.cts.map +1 -0
  78. package/build/graphqlUtils.d.mts +31 -0
  79. package/build/graphqlUtils.d.mts.map +1 -0
  80. package/build/graphqlUtils.js +120 -218
  81. package/build/graphqlUtils.js.map +1 -1
  82. package/build/history.cjs +25 -0
  83. package/build/history.cjs.map +1 -0
  84. package/build/history.d.cts +9 -0
  85. package/build/history.d.cts.map +1 -0
  86. package/build/history.d.mts +9 -0
  87. package/build/history.d.mts.map +1 -0
  88. package/build/history.js +17 -14
  89. package/build/history.js.map +1 -1
  90. package/build/index.cjs +57 -0
  91. package/build/index.cjs.map +1 -0
  92. package/build/index.d.cts +7 -0
  93. package/build/index.d.cts.map +1 -0
  94. package/build/index.d.mts +7 -0
  95. package/build/index.d.mts.map +1 -0
  96. package/build/index.js +48 -54
  97. package/build/index.js.map +1 -1
  98. package/build/testUtils.cjs +181 -0
  99. package/build/testUtils.cjs.map +1 -0
  100. package/build/testUtils.d.cts +20 -0
  101. package/build/testUtils.d.cts.map +1 -0
  102. package/build/testUtils.d.mts +20 -0
  103. package/build/testUtils.d.mts.map +1 -0
  104. package/build/testUtils.js +152 -158
  105. package/build/testUtils.js.map +1 -1
  106. package/build/utils.cjs +51 -0
  107. package/build/utils.cjs.map +1 -0
  108. package/build/utils.d.cts +16 -0
  109. package/build/utils.d.cts.map +1 -0
  110. package/build/utils.d.mts +16 -0
  111. package/build/utils.d.mts.map +1 -0
  112. package/build/utils.js +37 -49
  113. package/build/utils.js.map +1 -1
  114. package/package.json +28 -5
  115. package/build/generateEnumDetailResolvers.d.ts +0 -4
  116. package/build/generateEnumsGraphql.d.ts +0 -4
  117. package/build/generateGraphqlCodegen.d.ts +0 -4
  118. package/build/generateQueryPageResolvers.d.ts +0 -4
  119. package/build/generateQueryResolvers.d.ts +0 -6
  120. package/build/generateResolverUtils.d.ts +0 -4
  121. package/build/graphqlUtils.d.ts +0 -27
  122. package/build/history.d.ts +0 -5
  123. package/build/index.d.ts +0 -3
  124. package/build/testUtils.d.ts +0 -24
  125. package/build/utils.d.ts +0 -12
@@ -1 +1 @@
1
- {"version":3,"file":"generateGraphqlSchemaFiles.js","sourceRoot":"","sources":["../src/generateGraphqlSchemaFiles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generateGraphqlSchemaFiles.js","names":[],"sources":["../src/generateGraphqlSchemaFiles.ts"],"sourcesContent":["import { camelCase } from \"change-case\";\nimport { type Config, type DbMetadata, type EntityDbMetadata } from \"joist-codegen\";\nimport { groupBy } from \"joist-utils\";\nimport pluralize from \"pluralize\";\n\nimport { type GqlField, type GqlUnion, mapTypescriptTypeToGraphQLType, upsertIntoFile } from \"./graphqlUtils.ts\";\nimport { loadHistory, writeHistory } from \"./history.ts\";\nimport { type Fs } from \"./utils.ts\";\n\n/**\n * Generates `*.graphql` files based on the database schema.\n *\n * This follows an \"evergreen\" approach where we upsert changes into files that are also\n * hand-modified by the programmer. We remember what insertions we've made in a history file,\n * and will only do them once, which allows programmers to manually add/edit/remove fields\n * without this stomping over their changes.\n */\nexport async function generateGraphqlSchemaFiles(config: Config, fs: Fs, dbMeta: DbMetadata): Promise<void> {\n const { entities } = dbMeta;\n // Generate the \"ideal\" fields based solely on the domain model\n const fields = [\n ...createPageInfoFields(config),\n ...createQueryFields(config, entities),\n ...createSaveMutation(entities),\n ...createEntityFields(dbMeta),\n ...createFilterFields(dbMeta),\n ...createSaveEntityInputFields(dbMeta),\n ...createSaveEntityResultFields(entities),\n ];\n\n const unions = createPolymorphicUnions(entities);\n\n // Load the history and filter out only \"new\" / not-yet-added-to-.graphql fields\n const history = await loadHistory(fs);\n const newEntries = [\n ...fields.filter(({ objectName, fieldName }) => !history[objectName]?.includes(fieldName)),\n ...unions.filter(({ objectName, types }) => {\n const set = new Set(history[objectName] ?? []);\n return !(set.size === types.length && types.every((type) => set.has(type)));\n }),\n ];\n if (newEntries.length === 0) {\n return;\n }\n\n // Update the `.graphql` files with our new types/fields\n await Promise.all(\n Object.entries(groupBy(newEntries, (f) => f.file)).map(([file, fields]) => {\n return upsertIntoFile(fs, file, fields);\n }),\n );\n\n // Record the current batch of fields back to the history file\n newEntries.forEach((entry) => {\n if (entry.objectType === \"union\") {\n const { objectName, types } = entry;\n history[objectName] = types;\n } else {\n const { objectName, fieldName } = entry;\n const fields = (history[objectName] = history[objectName] || []);\n if (!fields.includes(fieldName)) {\n fields.push(fieldName);\n }\n }\n });\n await writeHistory(fs, history);\n}\n\n/** Makes the project's pagination metadata type. */\nfunction createPageInfoFields(config: Config): GqlField[] {\n const common = { file: \"pageInfo.graphql\", objectType: \"output\" as const, objectName: \"PageInfo\" };\n const shared = [\n { ...common, fieldName: \"hasNextPage\", fieldType: \"Boolean!\" },\n { ...common, fieldName: \"hasPreviousPage\", fieldType: \"Boolean!\" },\n { ...common, fieldName: \"totalCount\", fieldType: \"Int!\" },\n ];\n\n // Joist assumes each project uses either cursor or limit pagination, so the public GraphQL type is\n // always named `PageInfo` but contains the fields for the configured pagination style.\n if ((config.paginationStyle ?? \"cursor\") === \"limit\") {\n return [\n ...shared,\n { ...common, fieldName: \"nextPage\", fieldType: \"Int\" },\n { ...common, fieldName: \"currentPage\", fieldType: \"Int\" },\n ];\n }\n\n return [\n ...shared,\n { ...common, fieldName: \"startCursor\", fieldType: \"String\" },\n { ...common, fieldName: \"endCursor\", fieldType: \"String\" },\n ];\n}\n\n/** Make all the fields for `type Author`, `type Book`, etc. */\nfunction createPolymorphicUnions(entities: EntityDbMetadata[]): GqlUnion[] {\n return entities.flatMap((e) => {\n const file = fileName(e);\n return e.polymorphics.map(({ fieldType, components }) => {\n return { file, objectType: \"union\", objectName: fieldType, types: components.map((c) => c.otherEntity.name) };\n });\n });\n}\n\n/** Make all the fields for `type Author`, `type Book`, etc. */\nfunction createEntityFields(dbMeta: DbMetadata): GqlField[] {\n const { entities } = dbMeta;\n return entities.flatMap((e) => {\n const file = fileName(e);\n const objectType = \"output\" as const;\n const objectName = e.entity.name;\n const common = { file, objectType, objectName };\n\n const id: GqlField = { ...common, fieldName: \"id\", fieldType: \"ID!\" };\n\n const primitives = e.primitives.flatMap(({ fieldName, fieldType: tsType, isArray, notNull }) => {\n const fieldType = primitiveFieldType(fieldName, tsType, isArray, notNull);\n if (!fieldType) return [];\n return [{ ...common, fieldName, fieldType }];\n });\n\n const enums = e.enums.map(({ fieldName, enumType, notNull, isArray }) => {\n const fieldType = isArray ? `[${enumType.symbol}!]!` : `${enumType.symbol}Detail${maybeRequired(notNull)}`;\n return { ...common, fieldName, fieldType };\n });\n const pgEnums = e.pgEnums.map(({ fieldName, enumType, notNull }) => {\n const fieldType = `${enumType.symbol}${maybeRequired(notNull)}`;\n return { ...common, fieldName, fieldType };\n });\n\n const m2os = e.manyToOnes.map(({ fieldName, otherEntity, notNull }) => {\n const other = dbMeta.entitiesByName[otherEntity.name];\n const maybeLike = other.subTypes.length > 0 && !other.abstract ? \"Like\" : \"\";\n const fieldType = `${otherEntity.name}${maybeLike}${maybeRequired(notNull)}`;\n return { ...common, fieldName, fieldType };\n });\n\n const o2ms = e.oneToManys.map(({ fieldName, otherEntity }) => {\n const fieldType = `[${otherEntity.name}!]!`;\n return { ...common, fieldName, fieldType };\n });\n\n const m2ms = e.manyToManys.map(({ fieldName, otherEntity }) => {\n const fieldType = `[${otherEntity.name}!]!`;\n return { ...common, fieldName, fieldType };\n });\n\n const o2os = e.oneToOnes.map(({ fieldName, otherEntity }) => {\n return { ...common, fieldName, fieldType: otherEntity.name };\n });\n\n const polys = e.polymorphics.map(({ fieldName, fieldType }) => {\n return { ...common, fieldName, fieldType };\n });\n\n // GraphQL wants base fields copy/pasted onto subtypes, so re-run ourselves against just the base type\n const inheritedFields = e.baseClassName\n ? createEntityFields(findBaseEntity(dbMeta, e.baseClassName))\n .map((f) => ({ ...f, ...common }))\n .filter((f) => f.fieldName !== \"id\")\n : [];\n\n return [id, ...inheritedFields, ...primitives, ...enums, ...pgEnums, ...m2os, ...o2ms, ...m2ms, ...o2os, ...polys];\n });\n}\n\n/** Makes the `Mutations.save${entity}` placeholder. */\nfunction createSaveMutation(entities: EntityDbMetadata[]): GqlField[] {\n return entities.map((e) => {\n const file = fileName(e);\n const inputType = `Save${e.entity.name}Input`;\n const outputType = `Save${e.entity.name}Result`;\n return {\n file,\n objectType: \"output\",\n objectName: \"Mutation\",\n fieldName: `save${e.entity.name}`,\n fieldType: `${outputType}!`,\n argsString: `input: ${inputType}!`,\n extends: true,\n };\n });\n}\n\n/** Makes the `Query.${entity}` and `Query.${entity}s` placeholders. */\nfunction createQueryFields(config: Config, entities: EntityDbMetadata[]): GqlField[] {\n return entities.flatMap((e) => {\n const file = fileName(e);\n const { name } = e.entity;\n const pluralName = pluralize(name);\n const camelName = camelCase(name);\n const pluralCamelName = pluralize(camelName);\n const collectionType =\n (config.paginationStyle ?? \"cursor\") === \"limit\" ? `${pluralName}Page!` : `${pluralName}Connection!`;\n const collectionArgs =\n (config.paginationStyle ?? \"cursor\") === \"limit\"\n ? `filter: ${name}Filter, limit: Int, offset: Int`\n : `filter: ${name}Filter, first: Int, after: String, last: Int, before: String`;\n return [\n {\n file,\n objectType: \"output\",\n objectName: \"Query\",\n fieldName: camelName,\n fieldType: `${name}!`,\n argsString: `id: ID!`,\n extends: true,\n },\n {\n file,\n objectType: \"output\",\n objectName: \"Query\",\n fieldName: pluralCamelName,\n fieldType: collectionType,\n argsString: collectionArgs,\n extends: true,\n },\n ...createPaginationTypes(config, file, e),\n ];\n });\n}\n\n/** Makes the `AuthorFilter`, `BookFilter`, etc. input types. */\nfunction createFilterFields(dbMeta: DbMetadata): GqlField[] {\n const { entities } = dbMeta;\n return entities.flatMap((e) => {\n const file = fileName(e);\n const objectType = \"input\" as const;\n const objectName = `${e.entity.name}Filter`;\n const common = { file, objectType, objectName };\n\n const id: GqlField = { ...common, fieldName: \"id\", fieldType: filterListType(\"ID\") };\n\n const primitives = e.primitives.flatMap(({ fieldName, fieldType: tsType, isArray }) => {\n const fieldType = primitiveFieldType(fieldName, tsType, isArray);\n if (!fieldType) return [];\n return [{ ...common, fieldName, fieldType: filterListType(fieldType) }];\n });\n\n const enums = e.enums.map(({ fieldName, enumType, isArray }) => {\n const fieldType = isArray ? `[${enumType.symbol}!]` : enumType.symbol;\n return { ...common, fieldName, fieldType: filterListType(fieldType) };\n });\n const pgEnums = e.pgEnums.map(({ fieldName, enumType }) => {\n return { ...common, fieldName, fieldType: filterListType(enumType.symbol) };\n });\n\n const m2os = e.manyToOnes.map(({ fieldName }) => {\n return { ...common, fieldName: `${fieldName}Id`, fieldType: filterListType(\"ID\") };\n });\n\n const polys = e.polymorphics.map(({ fieldName }) => {\n return { ...common, fieldName: `${fieldName}Id`, fieldType: filterListType(\"ID\") };\n });\n\n const inherited = e.baseClassName\n ? createFilterFields(findBaseEntity(dbMeta, e.baseClassName))\n .map((f) => ({ ...f, ...common }))\n .filter((f) => f.fieldName !== \"id\")\n : [];\n\n return [id, ...inherited, ...primitives, ...enums, ...pgEnums, ...m2os, ...polys];\n });\n}\n\n/** Makes the page/connection types for `Query.authors`. */\nfunction createPaginationTypes(config: Config, file: string, e: EntityDbMetadata): GqlField[] {\n const { name } = e.entity;\n const pluralName = pluralize(name);\n const objectType = \"output\" as const;\n if ((config.paginationStyle ?? \"cursor\") === \"limit\") {\n return [\n { file, objectType, objectName: `${pluralName}Page`, fieldName: \"entities\", fieldType: `[${name}!]!` },\n { file, objectType, objectName: `${pluralName}Page`, fieldName: \"pageInfo\", fieldType: \"PageInfo!\" },\n ];\n }\n return [\n { file, objectType, objectName: `${pluralName}Connection`, fieldName: \"edges\", fieldType: `[${pluralName}Edge!]!` },\n { file, objectType, objectName: `${pluralName}Connection`, fieldName: \"nodes\", fieldType: `[${name}!]!` },\n { file, objectType, objectName: `${pluralName}Connection`, fieldName: \"pageInfo\", fieldType: \"PageInfo!\" },\n { file, objectType, objectName: `${pluralName}Edge`, fieldName: \"node\", fieldType: `${name}!` },\n { file, objectType, objectName: `${pluralName}Edge`, fieldName: \"cursor\", fieldType: \"String!\" },\n ];\n}\n\n/** Make all the fields for `type SaveAuthorInput`, `type SaveBookBook`, etc. */\nfunction createSaveEntityInputFields(dbMeta: DbMetadata): GqlField[] {\n const { entities } = dbMeta;\n return entities.flatMap((e) => {\n const file = fileName(e);\n const objectType = \"input\" as const;\n const objectName = `Save${e.entity.name}Input`;\n const common = { file, objectType, objectName };\n\n const id: GqlField = { ...common, fieldName: \"id\", fieldType: \"ID\" };\n\n const primitives = e.primitives\n .filter((f) => f.derived === false)\n .flatMap(({ fieldName, fieldType: tsType, isArray }) => {\n const fieldType = primitiveFieldType(fieldName, tsType, isArray);\n if (!fieldType) return [];\n return [{ ...common, fieldName, fieldType }];\n });\n\n const enums = e.enums.map(({ fieldName, enumType, isArray }) => {\n return { ...common, fieldName, fieldType: isArray ? `[${enumType.symbol}!]` : enumType.symbol };\n });\n const pgEnums = e.pgEnums.map(({ fieldName, enumType }) => {\n return { ...common, fieldName, fieldType: enumType.symbol };\n });\n\n const m2os = e.manyToOnes.map(({ fieldName }) => {\n return { ...common, fieldName: `${fieldName}Id`, fieldType: \"ID\" };\n });\n\n const polys = e.polymorphics.map(({ fieldName }) => {\n return { ...common, fieldName: `${fieldName}Id`, fieldType: \"ID\" };\n });\n\n const inherited = e.baseClassName\n ? createSaveEntityInputFields(findBaseEntity(dbMeta, e.baseClassName))\n .map((f) => ({ ...f, ...common }))\n .filter((f) => f.fieldName !== \"id\")\n : [];\n\n return [id, ...inherited, ...primitives, ...enums, ...pgEnums, ...m2os, ...polys];\n });\n}\n\n/** Makes the fields for `type SaveAuthorResult`, `type SaveBookResult`, etc. */\nfunction createSaveEntityResultFields(entities: EntityDbMetadata[]): GqlField[] {\n return entities.flatMap((e) => {\n const file = fileName(e);\n const {\n entity: { name },\n } = e;\n const objectType = \"output\" as const;\n const objectName = `Save${name}Result`;\n const fieldName = camelCase(name);\n const entity: GqlField = { file, objectType, objectName, fieldName, fieldType: `${name}!` };\n return [entity];\n });\n}\n\nfunction maybeRequired(notNull: boolean): string {\n return notNull ? \"!\" : \"\";\n}\n\n/** Returns the GraphQL type for primitive fields, including primitive arrays. */\nfunction primitiveFieldType(\n fieldName: string,\n tsType: Parameters<typeof mapTypescriptTypeToGraphQLType>[1],\n isArray: boolean,\n notNull = false,\n): string | undefined {\n const gqlType = mapTypescriptTypeToGraphQLType(fieldName, tsType);\n if (!gqlType) return undefined;\n const fieldType = isArray ? `[${gqlType}!]` : gqlType;\n return `${fieldType}${maybeRequired(notNull)}`;\n}\n\n/** Wraps filter fields in lists so GraphQL callers can pass one value or OR several values. */\nfunction filterListType(fieldType: string): string {\n return `[${fieldType}!]`;\n}\n\n/** I.e. `Book` --> `books.graphql`. */\nfunction fileName(e: EntityDbMetadata): string {\n return `${camelCase(e.entity.name)}.graphql`;\n}\n\nfunction findBaseEntity(dbMeta: DbMetadata, baseClassName: string): DbMetadata {\n return {\n ...dbMeta,\n entities: dbMeta.entities.filter((e) => e.entity.name === baseClassName),\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_utils = require("./utils.cjs");
3
+ let change_case = require("change-case");
4
+ require("joist-codegen");
5
+ let ts_poet = require("ts-poet");
6
+ //#region src/generateObjectResolvers.ts
7
+ const entityResolver = (0, ts_poet.imp)("entityResolver@src/resolvers/utils.ts");
8
+ const makeRunObjectFields = (0, ts_poet.imp)("makeRunObjectFields@src/resolvers/testUtils.ts");
9
+ const makeRunObjectField = (0, ts_poet.imp)("makeRunObjectField@src/resolvers/testUtils.ts");
10
+ /**
11
+ * Generates a base resolver using the entityResolver utility.
12
+ *
13
+ * This also preempts our other Joist-agnostic resolver scaffolding [1] because b/c `joist-codegen`
14
+ * will run first and put these Joist-aware resolvers in place first.
15
+ *
16
+ * Then when [1] runs, it will only output resolver scaffolding for non-entity resolvers.
17
+ *
18
+ * [1]: https://github.com/homebound-team/graphql-typescript-resolver-scaffolding
19
+ */
20
+ function generateObjectResolvers(config, entities) {
21
+ const entitiesPath = require_utils.getEntitiesImportPath(config);
22
+ const resolvers = entities.map((e) => {
23
+ const camelName = (0, change_case.camelCase)(e.name);
24
+ const type = (0, ts_poet.imp)(`${e.name}@${entitiesPath}`);
25
+ const resolverType = (0, ts_poet.imp)(`t:${e.name}Resolvers@src/generated/graphql-types.ts`);
26
+ const contents = ts_poet.code`
27
+ export const ${camelName}Resolvers: ${resolverType} = {
28
+ ...${entityResolver}(${type}),
29
+ };
30
+ `;
31
+ return {
32
+ name: `resolvers/${camelName}/${camelName}Resolvers.ts`,
33
+ overwrite: false,
34
+ contents
35
+ };
36
+ });
37
+ const testFiles = entities.map((e) => {
38
+ const { name } = e;
39
+ const camelName = (0, change_case.camelCase)(name);
40
+ const factory = (0, ts_poet.imp)(`new${name}@${entitiesPath}`);
41
+ const resolverConst = (0, ts_poet.imp)(`${camelName}Resolvers@src/resolvers/${camelName}/${camelName}Resolvers.ts`);
42
+ const tagName = config.entities[name].tag || "entity";
43
+ const keys = e.primitives.map((field) => `"${field.fieldName}"`).join(", ");
44
+ const contents = ts_poet.code`
45
+ describe("${camelName}Resolvers", () => {
46
+ it.withCtx("can return", async (ctx) => {
47
+ const { em } = ctx;
48
+ // Given a ${(0, change_case.sentenceCase)(name)}
49
+ const ${tagName} = ${factory}(em);
50
+ // Then we can query it
51
+ const result = await runFields(ctx, ${tagName}, [${keys}]);
52
+ expect(result).toMatchEntity({});
53
+ });
54
+ });
55
+
56
+ const runFields = ${makeRunObjectFields}(${resolverConst});
57
+ const runField = ${makeRunObjectField}(${resolverConst});
58
+ `;
59
+ return {
60
+ name: `resolvers/${camelName}/${camelName}Resolvers.test.ts`,
61
+ overwrite: false,
62
+ contents
63
+ };
64
+ });
65
+ return [...resolvers, ...testFiles];
66
+ }
67
+ //#endregion
68
+ exports.generateObjectResolvers = generateObjectResolvers;
69
+
70
+ //# sourceMappingURL=generateObjectResolvers.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateObjectResolvers.cjs","names":["imp","getEntitiesImportPath","camelCase","sentenceCase"],"sources":["../src/generateObjectResolvers.ts"],"sourcesContent":["import { camelCase, sentenceCase } from \"change-case\";\nimport { type Config, type EntityDbMetadata } from \"joist-codegen\";\nimport { type CodegenFile, code, imp } from \"ts-poet\";\n\nimport { getEntitiesImportPath } from \"./utils.ts\";\n\nconst entityResolver = imp(\"entityResolver@src/resolvers/utils.ts\");\nconst makeRunObjectFields = imp(\"makeRunObjectFields@src/resolvers/testUtils.ts\");\nconst makeRunObjectField = imp(\"makeRunObjectField@src/resolvers/testUtils.ts\");\n\n/**\n * Generates a base resolver using the entityResolver utility.\n *\n * This also preempts our other Joist-agnostic resolver scaffolding [1] because b/c `joist-codegen`\n * will run first and put these Joist-aware resolvers in place first.\n *\n * Then when [1] runs, it will only output resolver scaffolding for non-entity resolvers.\n *\n * [1]: https://github.com/homebound-team/graphql-typescript-resolver-scaffolding\n */\nexport function generateObjectResolvers(config: Config, entities: EntityDbMetadata[]): CodegenFile[] {\n const entitiesPath = getEntitiesImportPath(config);\n const resolvers = entities.map((e) => {\n const camelName = camelCase(e.name);\n const type = imp(`${e.name}@${entitiesPath}`);\n const resolverType = imp(`t:${e.name}Resolvers@src/generated/graphql-types.ts`);\n const contents = code`\n export const ${camelName}Resolvers: ${resolverType} = {\n ...${entityResolver}(${type}),\n };\n `;\n return { name: `resolvers/${camelName}/${camelName}Resolvers.ts`, overwrite: false, contents };\n });\n\n const testFiles = entities.map((e) => {\n const { name } = e;\n const camelName = camelCase(name);\n const factory = imp(`new${name}@${entitiesPath}`);\n const resolverConst = imp(`${camelName}Resolvers@src/resolvers/${camelName}/${camelName}Resolvers.ts`);\n\n const tagName = config.entities[name].tag || \"entity\";\n const keys = e.primitives.map((field) => `\"${field.fieldName}\"`).join(\", \");\n\n const contents = code`\n describe(\"${camelName}Resolvers\", () => {\n it.withCtx(\"can return\", async (ctx) => {\n const { em } = ctx;\n // Given a ${sentenceCase(name)}\n const ${tagName} = ${factory}(em);\n // Then we can query it\n const result = await runFields(ctx, ${tagName}, [${keys}]);\n expect(result).toMatchEntity({});\n });\n });\n\n const runFields = ${makeRunObjectFields}(${resolverConst});\n const runField = ${makeRunObjectField}(${resolverConst});\n `;\n return { name: `resolvers/${camelName}/${camelName}Resolvers.test.ts`, overwrite: false, contents };\n });\n\n return [...resolvers, ...testFiles];\n}\n"],"mappings":";;;;;;AAMA,MAAM,kBAAA,GAAiBA,QAAAA,IAAAA,CAAI,uCAAuC;AAClE,MAAM,uBAAA,GAAsBA,QAAAA,IAAAA,CAAI,gDAAgD;AAChF,MAAM,sBAAA,GAAqBA,QAAAA,IAAAA,CAAI,+CAA+C;;;;;;;;;;;AAY9E,SAAgB,wBAAwB,QAAgB,UAA6C;CACnG,MAAM,eAAeC,cAAAA,sBAAsB,MAAM;CACjD,MAAM,YAAY,SAAS,KAAK,MAAM;EACpC,MAAM,aAAA,GAAYC,YAAAA,UAAAA,CAAU,EAAE,IAAI;EAClC,MAAM,QAAA,GAAOF,QAAAA,IAAAA,CAAI,GAAG,EAAE,KAAK,GAAG,cAAc;EAC5C,MAAM,gBAAA,GAAeA,QAAAA,IAAAA,CAAI,KAAK,EAAE,KAAK,yCAAyC;EAC9E,MAAM,WAAW,QAAA,IAAI;qBACJ,UAAU,aAAa,aAAa;aAC5C,eAAe,GAAG,KAAK;;;EAGhC,OAAO;GAAE,MAAM,aAAa,UAAU,GAAG,UAAU;GAAe,WAAW;GAAO;EAAS;CAC/F,CAAC;CAED,MAAM,YAAY,SAAS,KAAK,MAAM;EACpC,MAAM,EAAE,SAAS;EACjB,MAAM,aAAA,GAAYE,YAAAA,UAAAA,CAAU,IAAI;EAChC,MAAM,WAAA,GAAUF,QAAAA,IAAAA,CAAI,MAAM,KAAK,GAAG,cAAc;EAChD,MAAM,iBAAA,GAAgBA,QAAAA,IAAAA,CAAI,GAAG,UAAU,0BAA0B,UAAU,GAAG,UAAU,aAAa;EAErG,MAAM,UAAU,OAAO,SAAS,KAAK,CAAC,OAAO;EAC7C,MAAM,OAAO,EAAE,WAAW,KAAK,UAAU,IAAI,MAAM,UAAU,EAAE,CAAC,CAAC,KAAK,IAAI;EAE1E,MAAM,WAAW,QAAA,IAAI;kBACP,UAAU;;;wBAGLG,GAAAA,YAAAA,aAAAA,CAAa,IAAI,EAAE;kBACxB,QAAQ,KAAK,QAAQ;;gDAES,QAAQ,KAAK,KAAK;;;;;0BAKxC,oBAAoB,GAAG,cAAc;yBACtC,mBAAmB,GAAG,cAAc;;EAEzD,OAAO;GAAE,MAAM,aAAa,UAAU,GAAG,UAAU;GAAoB,WAAW;GAAO;EAAS;CACpG,CAAC;CAED,OAAO,CAAC,GAAG,WAAW,GAAG,SAAS;AACpC"}
@@ -1,5 +1,6 @@
1
1
  import { Config, EntityDbMetadata } from "joist-codegen";
2
2
  import { CodegenFile } from "ts-poet";
3
+ //#region src/generateObjectResolvers.d.ts
3
4
  /**
4
5
  * Generates a base resolver using the entityResolver utility.
5
6
  *
@@ -10,4 +11,7 @@ import { CodegenFile } from "ts-poet";
10
11
  *
11
12
  * [1]: https://github.com/homebound-team/graphql-typescript-resolver-scaffolding
12
13
  */
13
- export declare function generateObjectResolvers(config: Config, entities: EntityDbMetadata[]): CodegenFile[];
14
+ declare function generateObjectResolvers(config: Config, entities: EntityDbMetadata[]): CodegenFile[];
15
+ //#endregion
16
+ export { generateObjectResolvers };
17
+ //# sourceMappingURL=generateObjectResolvers.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateObjectResolvers.d.cts","names":[],"sources":["../src/generateObjectResolvers.ts"],"mappings":";;;;;;;;;;;;;iBAoBgB,wBAAwB,QAAQ,QAAQ,UAAU,qBAAqB"}
@@ -0,0 +1,17 @@
1
+ import { Config, EntityDbMetadata } from "joist-codegen";
2
+ import { CodegenFile } from "ts-poet";
3
+ //#region src/generateObjectResolvers.d.ts
4
+ /**
5
+ * Generates a base resolver using the entityResolver utility.
6
+ *
7
+ * This also preempts our other Joist-agnostic resolver scaffolding [1] because b/c `joist-codegen`
8
+ * will run first and put these Joist-aware resolvers in place first.
9
+ *
10
+ * Then when [1] runs, it will only output resolver scaffolding for non-entity resolvers.
11
+ *
12
+ * [1]: https://github.com/homebound-team/graphql-typescript-resolver-scaffolding
13
+ */
14
+ declare function generateObjectResolvers(config: Config, entities: EntityDbMetadata[]): CodegenFile[];
15
+ //#endregion
16
+ export { generateObjectResolvers };
17
+ //# sourceMappingURL=generateObjectResolvers.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateObjectResolvers.d.mts","names":[],"sources":["../src/generateObjectResolvers.ts"],"mappings":";;;;;;;;;;;;;iBAoBgB,wBAAwB,QAAQ,QAAQ,UAAU,qBAAqB"}
@@ -1,47 +1,50 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateObjectResolvers = generateObjectResolvers;
4
- const change_case_1 = require("change-case");
5
- const ts_poet_1 = require("ts-poet");
6
- const utils_1 = require("./utils");
7
- const entityResolver = (0, ts_poet_1.imp)("entityResolver@src/resolvers/utils.ts");
8
- const makeRunObjectFields = (0, ts_poet_1.imp)("makeRunObjectFields@src/resolvers/testUtils.ts");
9
- const makeRunObjectField = (0, ts_poet_1.imp)("makeRunObjectField@src/resolvers/testUtils.ts");
1
+ import { getEntitiesImportPath } from "./utils.js";
2
+ import { camelCase, sentenceCase } from "change-case";
3
+ import "joist-codegen";
4
+ import { code, imp } from "ts-poet";
5
+ //#region src/generateObjectResolvers.ts
6
+ const entityResolver = imp("entityResolver@src/resolvers/utils.ts");
7
+ const makeRunObjectFields = imp("makeRunObjectFields@src/resolvers/testUtils.ts");
8
+ const makeRunObjectField = imp("makeRunObjectField@src/resolvers/testUtils.ts");
10
9
  /**
11
- * Generates a base resolver using the entityResolver utility.
12
- *
13
- * This also preempts our other Joist-agnostic resolver scaffolding [1] because b/c `joist-codegen`
14
- * will run first and put these Joist-aware resolvers in place first.
15
- *
16
- * Then when [1] runs, it will only output resolver scaffolding for non-entity resolvers.
17
- *
18
- * [1]: https://github.com/homebound-team/graphql-typescript-resolver-scaffolding
19
- */
10
+ * Generates a base resolver using the entityResolver utility.
11
+ *
12
+ * This also preempts our other Joist-agnostic resolver scaffolding [1] because b/c `joist-codegen`
13
+ * will run first and put these Joist-aware resolvers in place first.
14
+ *
15
+ * Then when [1] runs, it will only output resolver scaffolding for non-entity resolvers.
16
+ *
17
+ * [1]: https://github.com/homebound-team/graphql-typescript-resolver-scaffolding
18
+ */
20
19
  function generateObjectResolvers(config, entities) {
21
- const entitiesPath = (0, utils_1.getEntitiesImportPath)(config);
22
- const resolvers = entities.map((e) => {
23
- const camelName = (0, change_case_1.camelCase)(e.name);
24
- const type = (0, ts_poet_1.imp)(`${e.name}@${entitiesPath}`);
25
- const resolverType = (0, ts_poet_1.imp)(`t:${e.name}Resolvers@src/generated/graphql-types.ts`);
26
- const contents = (0, ts_poet_1.code) `
20
+ const entitiesPath = getEntitiesImportPath(config);
21
+ const resolvers = entities.map((e) => {
22
+ const camelName = camelCase(e.name);
23
+ const type = imp(`${e.name}@${entitiesPath}`);
24
+ const resolverType = imp(`t:${e.name}Resolvers@src/generated/graphql-types.ts`);
25
+ const contents = code`
27
26
  export const ${camelName}Resolvers: ${resolverType} = {
28
27
  ...${entityResolver}(${type}),
29
28
  };
30
29
  `;
31
- return { name: `resolvers/${camelName}/${camelName}Resolvers.ts`, overwrite: false, contents };
32
- });
33
- const testFiles = entities.map((e) => {
34
- const { name } = e;
35
- const camelName = (0, change_case_1.camelCase)(name);
36
- const factory = (0, ts_poet_1.imp)(`new${name}@${entitiesPath}`);
37
- const resolverConst = (0, ts_poet_1.imp)(`${camelName}Resolvers@src/resolvers/${camelName}/${camelName}Resolvers.ts`);
38
- const tagName = config.entities[name].tag || "entity";
39
- const keys = e.primitives.map((field) => `"${field.fieldName}"`).join(", ");
40
- const contents = (0, ts_poet_1.code) `
30
+ return {
31
+ name: `resolvers/${camelName}/${camelName}Resolvers.ts`,
32
+ overwrite: false,
33
+ contents
34
+ };
35
+ });
36
+ const testFiles = entities.map((e) => {
37
+ const { name } = e;
38
+ const camelName = camelCase(name);
39
+ const factory = imp(`new${name}@${entitiesPath}`);
40
+ const resolverConst = imp(`${camelName}Resolvers@src/resolvers/${camelName}/${camelName}Resolvers.ts`);
41
+ const tagName = config.entities[name].tag || "entity";
42
+ const keys = e.primitives.map((field) => `"${field.fieldName}"`).join(", ");
43
+ const contents = code`
41
44
  describe("${camelName}Resolvers", () => {
42
45
  it.withCtx("can return", async (ctx) => {
43
46
  const { em } = ctx;
44
- // Given a ${(0, change_case_1.sentenceCase)(name)}
47
+ // Given a ${sentenceCase(name)}
45
48
  const ${tagName} = ${factory}(em);
46
49
  // Then we can query it
47
50
  const result = await runFields(ctx, ${tagName}, [${keys}]);
@@ -52,8 +55,15 @@ function generateObjectResolvers(config, entities) {
52
55
  const runFields = ${makeRunObjectFields}(${resolverConst});
53
56
  const runField = ${makeRunObjectField}(${resolverConst});
54
57
  `;
55
- return { name: `resolvers/${camelName}/${camelName}Resolvers.test.ts`, overwrite: false, contents };
56
- });
57
- return [...resolvers, ...testFiles];
58
+ return {
59
+ name: `resolvers/${camelName}/${camelName}Resolvers.test.ts`,
60
+ overwrite: false,
61
+ contents
62
+ };
63
+ });
64
+ return [...resolvers, ...testFiles];
58
65
  }
66
+ //#endregion
67
+ export { generateObjectResolvers };
68
+
59
69
  //# sourceMappingURL=generateObjectResolvers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generateObjectResolvers.js","sourceRoot":"","sources":["../src/generateObjectResolvers.ts"],"names":[],"mappings":";;;AAAA,6CAAsD;AAEtD,qCAAiD;AAEjD,mCAAgD;AAEhD,MAAM,cAAc,GAAG,IAAA,aAAG,EAAC,uCAAuC,CAAC,CAAC;AACpE,MAAM,mBAAmB,GAAG,IAAA,aAAG,EAAC,gDAAgD,CAAC,CAAC;AAClF,MAAM,kBAAkB,GAAG,IAAA,aAAG,EAAC,+CAA+C,CAAC,CAAC;AAEhF;;;;;;;;;GASG;AACH,iCAAwC,MAAc,EAAE,QAA4B;IAClF,MAAM,YAAY,GAAG,IAAA,6BAAqB,EAAC,MAAM,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACnC,MAAM,SAAS,GAAG,IAAA,uBAAS,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,IAAA,aAAG,EAAC,GAAG,CAAC,CAAC,IAAI,IAAI,YAAY,EAAE,CAAC,CAAC;QAC9C,MAAM,YAAY,GAAG,IAAA,aAAG,EAAC,KAAK,CAAC,CAAC,IAAI,0CAA0C,CAAC,CAAC;QAChF,MAAM,QAAQ,GAAG,IAAA,cAAI,EAAA;qBACJ,SAAS,cAAc,YAAY;aAC3C,cAAc,IAAI,IAAI;;KAE9B,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,aAAa,SAAS,IAAI,SAAS,cAAc,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACjG,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACnC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACnB,MAAM,SAAS,GAAG,IAAA,uBAAS,EAAC,IAAI,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC,CAAC;QAClD,MAAM,aAAa,GAAG,IAAA,aAAG,EAAC,GAAG,SAAS,2BAA2B,SAAS,IAAI,SAAS,cAAc,CAAC,CAAC;QAEvG,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC;QACtD,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE5E,MAAM,QAAQ,GAAG,IAAA,cAAI,EAAA;kBACP,SAAS;;;uBAGJ,IAAA,0BAAY,EAAC,IAAI,CAAC;kBACvB,OAAO,MAAM,OAAO;;gDAEU,OAAO,MAAM,IAAI;;;;;0BAKvC,mBAAmB,IAAI,aAAa;yBACrC,kBAAkB,IAAI,aAAa;KACvD,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,aAAa,SAAS,IAAI,SAAS,mBAAmB,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACtG,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,SAAS,EAAE,GAAG,SAAS,CAAC,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"generateObjectResolvers.js","names":[],"sources":["../src/generateObjectResolvers.ts"],"sourcesContent":["import { camelCase, sentenceCase } from \"change-case\";\nimport { type Config, type EntityDbMetadata } from \"joist-codegen\";\nimport { type CodegenFile, code, imp } from \"ts-poet\";\n\nimport { getEntitiesImportPath } from \"./utils.ts\";\n\nconst entityResolver = imp(\"entityResolver@src/resolvers/utils.ts\");\nconst makeRunObjectFields = imp(\"makeRunObjectFields@src/resolvers/testUtils.ts\");\nconst makeRunObjectField = imp(\"makeRunObjectField@src/resolvers/testUtils.ts\");\n\n/**\n * Generates a base resolver using the entityResolver utility.\n *\n * This also preempts our other Joist-agnostic resolver scaffolding [1] because b/c `joist-codegen`\n * will run first and put these Joist-aware resolvers in place first.\n *\n * Then when [1] runs, it will only output resolver scaffolding for non-entity resolvers.\n *\n * [1]: https://github.com/homebound-team/graphql-typescript-resolver-scaffolding\n */\nexport function generateObjectResolvers(config: Config, entities: EntityDbMetadata[]): CodegenFile[] {\n const entitiesPath = getEntitiesImportPath(config);\n const resolvers = entities.map((e) => {\n const camelName = camelCase(e.name);\n const type = imp(`${e.name}@${entitiesPath}`);\n const resolverType = imp(`t:${e.name}Resolvers@src/generated/graphql-types.ts`);\n const contents = code`\n export const ${camelName}Resolvers: ${resolverType} = {\n ...${entityResolver}(${type}),\n };\n `;\n return { name: `resolvers/${camelName}/${camelName}Resolvers.ts`, overwrite: false, contents };\n });\n\n const testFiles = entities.map((e) => {\n const { name } = e;\n const camelName = camelCase(name);\n const factory = imp(`new${name}@${entitiesPath}`);\n const resolverConst = imp(`${camelName}Resolvers@src/resolvers/${camelName}/${camelName}Resolvers.ts`);\n\n const tagName = config.entities[name].tag || \"entity\";\n const keys = e.primitives.map((field) => `\"${field.fieldName}\"`).join(\", \");\n\n const contents = code`\n describe(\"${camelName}Resolvers\", () => {\n it.withCtx(\"can return\", async (ctx) => {\n const { em } = ctx;\n // Given a ${sentenceCase(name)}\n const ${tagName} = ${factory}(em);\n // Then we can query it\n const result = await runFields(ctx, ${tagName}, [${keys}]);\n expect(result).toMatchEntity({});\n });\n });\n\n const runFields = ${makeRunObjectFields}(${resolverConst});\n const runField = ${makeRunObjectField}(${resolverConst});\n `;\n return { name: `resolvers/${camelName}/${camelName}Resolvers.test.ts`, overwrite: false, contents };\n });\n\n return [...resolvers, ...testFiles];\n}\n"],"mappings":";;;;;AAMA,MAAM,iBAAiB,IAAI,uCAAuC;AAClE,MAAM,sBAAsB,IAAI,gDAAgD;AAChF,MAAM,qBAAqB,IAAI,+CAA+C;;;;;;;;;;;AAY9E,SAAgB,wBAAwB,QAAgB,UAA6C;CACnG,MAAM,eAAe,sBAAsB,MAAM;CACjD,MAAM,YAAY,SAAS,KAAK,MAAM;EACpC,MAAM,YAAY,UAAU,EAAE,IAAI;EAClC,MAAM,OAAO,IAAI,GAAG,EAAE,KAAK,GAAG,cAAc;EAC5C,MAAM,eAAe,IAAI,KAAK,EAAE,KAAK,yCAAyC;EAC9E,MAAM,WAAW,IAAI;qBACJ,UAAU,aAAa,aAAa;aAC5C,eAAe,GAAG,KAAK;;;EAGhC,OAAO;GAAE,MAAM,aAAa,UAAU,GAAG,UAAU;GAAe,WAAW;GAAO;EAAS;CAC/F,CAAC;CAED,MAAM,YAAY,SAAS,KAAK,MAAM;EACpC,MAAM,EAAE,SAAS;EACjB,MAAM,YAAY,UAAU,IAAI;EAChC,MAAM,UAAU,IAAI,MAAM,KAAK,GAAG,cAAc;EAChD,MAAM,gBAAgB,IAAI,GAAG,UAAU,0BAA0B,UAAU,GAAG,UAAU,aAAa;EAErG,MAAM,UAAU,OAAO,SAAS,KAAK,CAAC,OAAO;EAC7C,MAAM,OAAO,EAAE,WAAW,KAAK,UAAU,IAAI,MAAM,UAAU,EAAE,CAAC,CAAC,KAAK,IAAI;EAE1E,MAAM,WAAW,IAAI;kBACP,UAAU;;;uBAGL,aAAa,IAAI,EAAE;kBACxB,QAAQ,KAAK,QAAQ;;gDAES,QAAQ,KAAK,KAAK;;;;;0BAKxC,oBAAoB,GAAG,cAAc;yBACtC,mBAAmB,GAAG,cAAc;;EAEzD,OAAO;GAAE,MAAM,aAAa,UAAU,GAAG,UAAU;GAAoB,WAAW;GAAO;EAAS;CACpG,CAAC;CAED,OAAO,CAAC,GAAG,WAAW,GAAG,SAAS;AACpC"}
@@ -0,0 +1,51 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_runtime = require("./_virtual/_rolldown/runtime.cjs");
3
+ const require_utils = require("./utils.cjs");
4
+ let change_case = require("change-case");
5
+ require("joist-codegen");
6
+ let pluralize = require("pluralize");
7
+ pluralize = require_runtime.__toESM(pluralize, 1);
8
+ let ts_poet = require("ts-poet");
9
+ //#region src/generateQueryPageResolvers.ts
10
+ const queryResolvers = (0, ts_poet.imp)("t:QueryResolvers@src/generated/graphql-types.ts");
11
+ const makeRunQuery = (0, ts_poet.imp)("makeRunQuery@src/resolvers/testUtils.ts");
12
+ /** Generates paginated top-level query resolvers. */
13
+ function generateQueryPageResolvers(config, db) {
14
+ const entitiesPath = require_utils.getEntitiesImportPath(config);
15
+ return db.entities.flatMap((e) => {
16
+ const { name } = e;
17
+ const camelName = (0, change_case.camelCase)(name);
18
+ const pluralName = (0, pluralize.default)(camelName);
19
+ const type = (0, ts_poet.imp)(`${name}@${entitiesPath}`);
20
+ const paginate = (0, ts_poet.imp)("paginate@src/resolvers/utils.ts");
21
+ const resolverConst = (0, ts_poet.imp)(`${pluralName}@src/resolvers/${camelName}/${pluralName}Query.ts`);
22
+ return [{
23
+ name: `resolvers/${camelName}/${pluralName}Query.ts`,
24
+ overwrite: false,
25
+ contents: ts_poet.code`
26
+ export const ${pluralName}: Pick<${queryResolvers}, "${pluralName}"> = {
27
+ async ${pluralName}(_, args, ctx) {
28
+ return ${paginate}(ctx, ${type}, args);
29
+ },
30
+ };
31
+ `
32
+ }, {
33
+ name: `resolvers/${camelName}/${pluralName}Query.test.ts`,
34
+ overwrite: false,
35
+ contents: ts_poet.code`
36
+ describe("${pluralName}", () => {
37
+ it.withCtx("returns ${pluralName}", async (ctx) => {
38
+ const result = await run(ctx);
39
+ expect(result).toBeDefined();
40
+ });
41
+ });
42
+
43
+ const run = ${makeRunQuery}(${resolverConst});
44
+ `
45
+ }];
46
+ });
47
+ }
48
+ //#endregion
49
+ exports.generateQueryPageResolvers = generateQueryPageResolvers;
50
+
51
+ //# sourceMappingURL=generateQueryPageResolvers.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateQueryPageResolvers.cjs","names":["imp","getEntitiesImportPath","camelCase"],"sources":["../src/generateQueryPageResolvers.ts"],"sourcesContent":["import { camelCase } from \"change-case\";\nimport { type Config, type DbMetadata } from \"joist-codegen\";\nimport pluralize from \"pluralize\";\nimport { type CodegenFile, code, imp } from \"ts-poet\";\n\nimport { getEntitiesImportPath } from \"./utils.ts\";\n\nconst queryResolvers = imp(\"t:QueryResolvers@src/generated/graphql-types.ts\");\nconst makeRunQuery = imp(\"makeRunQuery@src/resolvers/testUtils.ts\");\n\n/** Generates paginated top-level query resolvers. */\nexport function generateQueryPageResolvers(config: Config, db: DbMetadata): CodegenFile[] {\n const entitiesPath = getEntitiesImportPath(config);\n return db.entities.flatMap((e) => {\n const { name } = e;\n const camelName = camelCase(name);\n const pluralName = pluralize(camelName);\n const type = imp(`${name}@${entitiesPath}`);\n const paginate = imp(\"paginate@src/resolvers/utils.ts\");\n const resolverConst = imp(`${pluralName}@src/resolvers/${camelName}/${pluralName}Query.ts`);\n return [\n {\n name: `resolvers/${camelName}/${pluralName}Query.ts`,\n overwrite: false,\n contents: code`\n export const ${pluralName}: Pick<${queryResolvers}, \"${pluralName}\"> = {\n async ${pluralName}(_, args, ctx) {\n return ${paginate}(ctx, ${type}, args);\n },\n };\n `,\n },\n {\n name: `resolvers/${camelName}/${pluralName}Query.test.ts`,\n overwrite: false,\n contents: code`\n describe(\"${pluralName}\", () => {\n it.withCtx(\"returns ${pluralName}\", async (ctx) => {\n const result = await run(ctx);\n expect(result).toBeDefined();\n });\n });\n\n const run = ${makeRunQuery}(${resolverConst});\n `,\n },\n ];\n });\n}\n"],"mappings":";;;;;;;;;AAOA,MAAM,kBAAA,GAAiBA,QAAAA,IAAAA,CAAI,iDAAiD;AAC5E,MAAM,gBAAA,GAAeA,QAAAA,IAAAA,CAAI,yCAAyC;;AAGlE,SAAgB,2BAA2B,QAAgB,IAA+B;CACxF,MAAM,eAAeC,cAAAA,sBAAsB,MAAM;CACjD,OAAO,GAAG,SAAS,SAAS,MAAM;EAChC,MAAM,EAAE,SAAS;EACjB,MAAM,aAAA,GAAYC,YAAAA,UAAAA,CAAU,IAAI;EAChC,MAAM,cAAA,GAAa,UAAA,QAAA,CAAU,SAAS;EACtC,MAAM,QAAA,GAAOF,QAAAA,IAAAA,CAAI,GAAG,KAAK,GAAG,cAAc;EAC1C,MAAM,YAAA,GAAWA,QAAAA,IAAAA,CAAI,iCAAiC;EACtD,MAAM,iBAAA,GAAgBA,QAAAA,IAAAA,CAAI,GAAG,WAAW,iBAAiB,UAAU,GAAG,WAAW,SAAS;EAC1F,OAAO,CACL;GACE,MAAM,aAAa,UAAU,GAAG,WAAW;GAC3C,WAAW;GACX,UAAU,QAAA,IAAI;yBACG,WAAW,SAAS,eAAe,KAAK,WAAW;oBACxD,WAAW;uBACR,SAAS,QAAQ,KAAK;;;;EAIvC,GACA;GACE,MAAM,aAAa,UAAU,GAAG,WAAW;GAC3C,WAAW;GACX,UAAU,QAAA,IAAI;sBACA,WAAW;kCACC,WAAW;;;;;;wBAMrB,aAAa,GAAG,cAAc;;EAEhD,CACF;CACF,CAAC;AACH"}
@@ -0,0 +1,8 @@
1
+ import { Config, DbMetadata } from "joist-codegen";
2
+ import { CodegenFile } from "ts-poet";
3
+ //#region src/generateQueryPageResolvers.d.ts
4
+ /** Generates paginated top-level query resolvers. */
5
+ declare function generateQueryPageResolvers(config: Config, db: DbMetadata): CodegenFile[];
6
+ //#endregion
7
+ export { generateQueryPageResolvers };
8
+ //# sourceMappingURL=generateQueryPageResolvers.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateQueryPageResolvers.d.cts","names":[],"sources":["../src/generateQueryPageResolvers.ts"],"mappings":";;;;iBAWgB,2BAA2B,QAAQ,QAAQ,IAAI,aAAa"}
@@ -0,0 +1,8 @@
1
+ import { Config, DbMetadata } from "joist-codegen";
2
+ import { CodegenFile } from "ts-poet";
3
+ //#region src/generateQueryPageResolvers.d.ts
4
+ /** Generates paginated top-level query resolvers. */
5
+ declare function generateQueryPageResolvers(config: Config, db: DbMetadata): CodegenFile[];
6
+ //#endregion
7
+ export { generateQueryPageResolvers };
8
+ //# sourceMappingURL=generateQueryPageResolvers.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateQueryPageResolvers.d.mts","names":[],"sources":["../src/generateQueryPageResolvers.ts"],"mappings":";;;;iBAWgB,2BAA2B,QAAQ,QAAQ,IAAI,aAAa"}
@@ -1,41 +1,35 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.generateQueryPageResolvers = generateQueryPageResolvers;
7
- const change_case_1 = require("change-case");
8
- const pluralize_1 = __importDefault(require("pluralize"));
9
- const ts_poet_1 = require("ts-poet");
10
- const utils_1 = require("./utils");
11
- const queryResolvers = (0, ts_poet_1.imp)("t:QueryResolvers@src/generated/graphql-types.ts");
12
- const makeRunQuery = (0, ts_poet_1.imp)("makeRunQuery@src/resolvers/testUtils.ts");
1
+ import { getEntitiesImportPath } from "./utils.js";
2
+ import { camelCase } from "change-case";
3
+ import "joist-codegen";
4
+ import pluralize from "pluralize";
5
+ import { code, imp } from "ts-poet";
6
+ //#region src/generateQueryPageResolvers.ts
7
+ const queryResolvers = imp("t:QueryResolvers@src/generated/graphql-types.ts");
8
+ const makeRunQuery = imp("makeRunQuery@src/resolvers/testUtils.ts");
13
9
  /** Generates paginated top-level query resolvers. */
14
10
  function generateQueryPageResolvers(config, db) {
15
- const entitiesPath = (0, utils_1.getEntitiesImportPath)(config);
16
- return db.entities.flatMap((e) => {
17
- const { name } = e;
18
- const camelName = (0, change_case_1.camelCase)(name);
19
- const pluralName = (0, pluralize_1.default)(camelName);
20
- const type = (0, ts_poet_1.imp)(`${name}@${entitiesPath}`);
21
- const paginate = (0, ts_poet_1.imp)("paginate@src/resolvers/utils.ts");
22
- const resolverConst = (0, ts_poet_1.imp)(`${pluralName}@src/resolvers/${camelName}/${pluralName}Query.ts`);
23
- return [
24
- {
25
- name: `resolvers/${camelName}/${pluralName}Query.ts`,
26
- overwrite: false,
27
- contents: (0, ts_poet_1.code) `
11
+ const entitiesPath = getEntitiesImportPath(config);
12
+ return db.entities.flatMap((e) => {
13
+ const { name } = e;
14
+ const camelName = camelCase(name);
15
+ const pluralName = pluralize(camelName);
16
+ const type = imp(`${name}@${entitiesPath}`);
17
+ const paginate = imp("paginate@src/resolvers/utils.ts");
18
+ const resolverConst = imp(`${pluralName}@src/resolvers/${camelName}/${pluralName}Query.ts`);
19
+ return [{
20
+ name: `resolvers/${camelName}/${pluralName}Query.ts`,
21
+ overwrite: false,
22
+ contents: code`
28
23
  export const ${pluralName}: Pick<${queryResolvers}, "${pluralName}"> = {
29
24
  async ${pluralName}(_, args, ctx) {
30
25
  return ${paginate}(ctx, ${type}, args);
31
26
  },
32
27
  };
33
- `,
34
- },
35
- {
36
- name: `resolvers/${camelName}/${pluralName}Query.test.ts`,
37
- overwrite: false,
38
- contents: (0, ts_poet_1.code) `
28
+ `
29
+ }, {
30
+ name: `resolvers/${camelName}/${pluralName}Query.test.ts`,
31
+ overwrite: false,
32
+ contents: code`
39
33
  describe("${pluralName}", () => {
40
34
  it.withCtx("returns ${pluralName}", async (ctx) => {
41
35
  const result = await run(ctx);
@@ -44,9 +38,11 @@ function generateQueryPageResolvers(config, db) {
44
38
  });
45
39
 
46
40
  const run = ${makeRunQuery}(${resolverConst});
47
- `,
48
- },
49
- ];
50
- });
41
+ `
42
+ }];
43
+ });
51
44
  }
45
+ //#endregion
46
+ export { generateQueryPageResolvers };
47
+
52
48
  //# sourceMappingURL=generateQueryPageResolvers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generateQueryPageResolvers.js","sourceRoot":"","sources":["../src/generateQueryPageResolvers.ts"],"names":[],"mappings":";;;;;;AAAA,6CAAwC;AAExC,0DAAkC;AAClC,qCAAiD;AAEjD,mCAAgD;AAEhD,MAAM,cAAc,GAAG,IAAA,aAAG,EAAC,iDAAiD,CAAC,CAAC;AAC9E,MAAM,YAAY,GAAG,IAAA,aAAG,EAAC,yCAAyC,CAAC,CAAC;AAEpE,qDAAqD;AACrD,oCAA2C,MAAc,EAAE,EAAc;IACvE,MAAM,YAAY,GAAG,IAAA,6BAAqB,EAAC,MAAM,CAAC,CAAC;IACnD,OAAO,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAC/B,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACnB,MAAM,SAAS,GAAG,IAAA,uBAAS,EAAC,IAAI,CAAC,CAAC;QAClC,MAAM,UAAU,GAAG,IAAA,mBAAS,EAAC,SAAS,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,IAAA,aAAG,EAAC,GAAG,IAAI,IAAI,YAAY,EAAE,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAA,aAAG,EAAC,iCAAiC,CAAC,CAAC;QACxD,MAAM,aAAa,GAAG,IAAA,aAAG,EAAC,GAAG,UAAU,kBAAkB,SAAS,IAAI,UAAU,UAAU,CAAC,CAAC;QAC5F,OAAO;YACL;gBACE,IAAI,EAAE,aAAa,SAAS,IAAI,UAAU,UAAU;gBACpD,SAAS,EAAE,KAAK;gBAChB,QAAQ,EAAE,IAAA,cAAI,EAAA;yBACG,UAAU,UAAU,cAAc,MAAM,UAAU;oBACvD,UAAU;uBACP,QAAQ,SAAS,IAAI;;;SAGnC;aACF;YACD;gBACE,IAAI,EAAE,aAAa,SAAS,IAAI,UAAU,eAAe;gBACzD,SAAS,EAAE,KAAK;gBAChB,QAAQ,EAAE,IAAA,cAAI,EAAA;sBACA,UAAU;kCACE,UAAU;;;;;;wBAMpB,YAAY,IAAI,aAAa;SAC5C;aACF;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"generateQueryPageResolvers.js","names":[],"sources":["../src/generateQueryPageResolvers.ts"],"sourcesContent":["import { camelCase } from \"change-case\";\nimport { type Config, type DbMetadata } from \"joist-codegen\";\nimport pluralize from \"pluralize\";\nimport { type CodegenFile, code, imp } from \"ts-poet\";\n\nimport { getEntitiesImportPath } from \"./utils.ts\";\n\nconst queryResolvers = imp(\"t:QueryResolvers@src/generated/graphql-types.ts\");\nconst makeRunQuery = imp(\"makeRunQuery@src/resolvers/testUtils.ts\");\n\n/** Generates paginated top-level query resolvers. */\nexport function generateQueryPageResolvers(config: Config, db: DbMetadata): CodegenFile[] {\n const entitiesPath = getEntitiesImportPath(config);\n return db.entities.flatMap((e) => {\n const { name } = e;\n const camelName = camelCase(name);\n const pluralName = pluralize(camelName);\n const type = imp(`${name}@${entitiesPath}`);\n const paginate = imp(\"paginate@src/resolvers/utils.ts\");\n const resolverConst = imp(`${pluralName}@src/resolvers/${camelName}/${pluralName}Query.ts`);\n return [\n {\n name: `resolvers/${camelName}/${pluralName}Query.ts`,\n overwrite: false,\n contents: code`\n export const ${pluralName}: Pick<${queryResolvers}, \"${pluralName}\"> = {\n async ${pluralName}(_, args, ctx) {\n return ${paginate}(ctx, ${type}, args);\n },\n };\n `,\n },\n {\n name: `resolvers/${camelName}/${pluralName}Query.test.ts`,\n overwrite: false,\n contents: code`\n describe(\"${pluralName}\", () => {\n it.withCtx(\"returns ${pluralName}\", async (ctx) => {\n const result = await run(ctx);\n expect(result).toBeDefined();\n });\n });\n\n const run = ${makeRunQuery}(${resolverConst});\n `,\n },\n ];\n });\n}\n"],"mappings":";;;;;;AAOA,MAAM,iBAAiB,IAAI,iDAAiD;AAC5E,MAAM,eAAe,IAAI,yCAAyC;;AAGlE,SAAgB,2BAA2B,QAAgB,IAA+B;CACxF,MAAM,eAAe,sBAAsB,MAAM;CACjD,OAAO,GAAG,SAAS,SAAS,MAAM;EAChC,MAAM,EAAE,SAAS;EACjB,MAAM,YAAY,UAAU,IAAI;EAChC,MAAM,aAAa,UAAU,SAAS;EACtC,MAAM,OAAO,IAAI,GAAG,KAAK,GAAG,cAAc;EAC1C,MAAM,WAAW,IAAI,iCAAiC;EACtD,MAAM,gBAAgB,IAAI,GAAG,WAAW,iBAAiB,UAAU,GAAG,WAAW,SAAS;EAC1F,OAAO,CACL;GACE,MAAM,aAAa,UAAU,GAAG,WAAW;GAC3C,WAAW;GACX,UAAU,IAAI;yBACG,WAAW,SAAS,eAAe,KAAK,WAAW;oBACxD,WAAW;uBACR,SAAS,QAAQ,KAAK;;;;EAIvC,GACA;GACE,MAAM,aAAa,UAAU,GAAG,WAAW;GAC3C,WAAW;GACX,UAAU,IAAI;sBACA,WAAW;kCACC,WAAW;;;;;;wBAMrB,aAAa,GAAG,cAAc;;EAEhD,CACF;CACF,CAAC;AACH"}
@@ -0,0 +1,55 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_utils = require("./utils.cjs");
3
+ let change_case = require("change-case");
4
+ require("joist-codegen");
5
+ let ts_poet = require("ts-poet");
6
+ //#region src/generateQueryResolvers.ts
7
+ const queryResolvers = (0, ts_poet.imp)("t:QueryResolvers@src/generated/graphql-types.ts");
8
+ const makeRunQuery = (0, ts_poet.imp)("makeRunQuery@src/resolvers/testUtils.ts");
9
+ /**
10
+ * Generates top-level query resolvers.
11
+ */
12
+ function generateQueryResolvers(config, db) {
13
+ const entitiesPath = require_utils.getEntitiesImportPath(config);
14
+ const resolvers = db.entities.map((e) => {
15
+ const { name } = e;
16
+ const camelName = (0, change_case.camelCase)(name);
17
+ const type = (0, ts_poet.imp)(`${name}@${entitiesPath}`);
18
+ return {
19
+ name: `resolvers/${camelName}/${camelName}Query.ts`,
20
+ overwrite: false,
21
+ contents: ts_poet.code`
22
+ export const ${camelName}: Pick<${queryResolvers}, "${camelName}"> = {
23
+ async ${camelName}(_, args, ctx) {
24
+ return ctx.em.load(${type}, args.id);
25
+ },
26
+ };
27
+ `
28
+ };
29
+ });
30
+ const testFiles = db.entities.map((e) => {
31
+ const { name, tagName } = e;
32
+ const camelName = (0, change_case.camelCase)(name);
33
+ const resolverConst = (0, ts_poet.imp)(`${camelName}@src/resolvers/${camelName}/${camelName}Query.ts`);
34
+ return {
35
+ name: `resolvers/${camelName}/${camelName}Query.test.ts`,
36
+ overwrite: false,
37
+ contents: ts_poet.code`
38
+ describe("${camelName}", () => {
39
+ it.withCtx("returns a ${(0, change_case.sentenceCase)(name)}", async (ctx) => {
40
+ const ${tagName} = ${(0, ts_poet.imp)(`new${name}@${entitiesPath}`)}(ctx.em);
41
+ const result = await run(ctx, () => ({ id: ${tagName}.id }));
42
+ expect(result).toMatchEntity(${tagName});
43
+ });
44
+ });
45
+
46
+ const run = ${makeRunQuery}(${resolverConst});
47
+ `
48
+ };
49
+ });
50
+ return [...resolvers, ...testFiles];
51
+ }
52
+ //#endregion
53
+ exports.generateQueryResolvers = generateQueryResolvers;
54
+
55
+ //# sourceMappingURL=generateQueryResolvers.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateQueryResolvers.cjs","names":["imp","getEntitiesImportPath","camelCase","sentenceCase"],"sources":["../src/generateQueryResolvers.ts"],"sourcesContent":["import { camelCase, sentenceCase } from \"change-case\";\nimport { type Config, type DbMetadata } from \"joist-codegen\";\nimport { type CodegenFile, code, imp } from \"ts-poet\";\n\nimport { getEntitiesImportPath } from \"./utils.ts\";\n\nconst queryResolvers = imp(\"t:QueryResolvers@src/generated/graphql-types.ts\");\nconst makeRunQuery = imp(\"makeRunQuery@src/resolvers/testUtils.ts\");\n\n/**\n * Generates top-level query resolvers.\n */\nexport function generateQueryResolvers(config: Config, db: DbMetadata): CodegenFile[] {\n const entitiesPath = getEntitiesImportPath(config);\n const resolvers = db.entities.map((e) => {\n const { name } = e;\n const camelName = camelCase(name);\n const type = imp(`${name}@${entitiesPath}`);\n return {\n name: `resolvers/${camelName}/${camelName}Query.ts`,\n overwrite: false,\n contents: code`\n export const ${camelName}: Pick<${queryResolvers}, \"${camelName}\"> = {\n async ${camelName}(_, args, ctx) {\n return ctx.em.load(${type}, args.id);\n },\n };\n `,\n };\n });\n\n const testFiles = db.entities.map((e) => {\n const { name, tagName } = e;\n const camelName = camelCase(name);\n const resolverConst = imp(`${camelName}@src/resolvers/${camelName}/${camelName}Query.ts`);\n return {\n name: `resolvers/${camelName}/${camelName}Query.test.ts`,\n overwrite: false,\n contents: code`\n describe(\"${camelName}\", () => {\n it.withCtx(\"returns a ${sentenceCase(name)}\", async (ctx) => {\n const ${tagName} = ${imp(`new${name}@${entitiesPath}`)}(ctx.em);\n const result = await run(ctx, () => ({ id: ${tagName}.id }));\n expect(result).toMatchEntity(${tagName});\n });\n });\n\n const run = ${makeRunQuery}(${resolverConst});\n `,\n };\n });\n\n return [...resolvers, ...testFiles];\n}\n"],"mappings":";;;;;;AAMA,MAAM,kBAAA,GAAiBA,QAAAA,IAAAA,CAAI,iDAAiD;AAC5E,MAAM,gBAAA,GAAeA,QAAAA,IAAAA,CAAI,yCAAyC;;;;AAKlE,SAAgB,uBAAuB,QAAgB,IAA+B;CACpF,MAAM,eAAeC,cAAAA,sBAAsB,MAAM;CACjD,MAAM,YAAY,GAAG,SAAS,KAAK,MAAM;EACvC,MAAM,EAAE,SAAS;EACjB,MAAM,aAAA,GAAYC,YAAAA,UAAAA,CAAU,IAAI;EAChC,MAAM,QAAA,GAAOF,QAAAA,IAAAA,CAAI,GAAG,KAAK,GAAG,cAAc;EAC1C,OAAO;GACL,MAAM,aAAa,UAAU,GAAG,UAAU;GAC1C,WAAW;GACX,UAAU,QAAA,IAAI;yBACK,UAAU,SAAS,eAAe,KAAK,UAAU;oBACtD,UAAU;mCACK,KAAK;;;;EAIpC;CACF,CAAC;CAED,MAAM,YAAY,GAAG,SAAS,KAAK,MAAM;EACvC,MAAM,EAAE,MAAM,YAAY;EAC1B,MAAM,aAAA,GAAYE,YAAAA,UAAAA,CAAU,IAAI;EAChC,MAAM,iBAAA,GAAgBF,QAAAA,IAAAA,CAAI,GAAG,UAAU,iBAAiB,UAAU,GAAG,UAAU,SAAS;EACxF,OAAO;GACL,MAAM,aAAa,UAAU,GAAG,UAAU;GAC1C,WAAW;GACX,UAAU,QAAA,IAAI;oBACA,UAAU;mCACIG,GAAAA,YAAAA,aAAAA,CAAa,IAAI,EAAE;oBACjC,QAAQ,MAAA,GAAKH,QAAAA,IAAAA,CAAI,MAAM,KAAK,GAAG,cAAc,EAAE;yDACV,QAAQ;2CACtB,QAAQ;;;;sBAI7B,aAAa,GAAG,cAAc;;EAEhD;CACF,CAAC;CAED,OAAO,CAAC,GAAG,WAAW,GAAG,SAAS;AACpC"}
@@ -0,0 +1,10 @@
1
+ import { Config, DbMetadata } from "joist-codegen";
2
+ import { CodegenFile } from "ts-poet";
3
+ //#region src/generateQueryResolvers.d.ts
4
+ /**
5
+ * Generates top-level query resolvers.
6
+ */
7
+ declare function generateQueryResolvers(config: Config, db: DbMetadata): CodegenFile[];
8
+ //#endregion
9
+ export { generateQueryResolvers };
10
+ //# sourceMappingURL=generateQueryResolvers.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateQueryResolvers.d.cts","names":[],"sources":["../src/generateQueryResolvers.ts"],"mappings":";;;;;;iBAYgB,uBAAuB,QAAQ,QAAQ,IAAI,aAAa"}