@sanity/cli 6.0.0-alpha.17 → 6.0.0-alpha.18

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 (148) hide show
  1. package/README.md +833 -912
  2. package/dist/SanityHelp.js +74 -21
  3. package/dist/SanityHelp.js.map +1 -1
  4. package/dist/actions/build/buildApp.js +42 -15
  5. package/dist/actions/build/buildApp.js.map +1 -1
  6. package/dist/actions/build/buildStudio.js +21 -9
  7. package/dist/actions/build/buildStudio.js.map +1 -1
  8. package/dist/actions/build/buildVendorDependencies.js +3 -16
  9. package/dist/actions/build/buildVendorDependencies.js.map +1 -1
  10. package/dist/actions/build/checkStudioDependencyVersions.js +7 -7
  11. package/dist/actions/build/checkStudioDependencyVersions.js.map +1 -1
  12. package/dist/actions/build/createExternalFromImportMap.js +1 -1
  13. package/dist/actions/build/createExternalFromImportMap.js.map +1 -1
  14. package/dist/actions/build/determineBasePath.js +5 -2
  15. package/dist/actions/build/determineBasePath.js.map +1 -1
  16. package/dist/actions/build/handlePrereleaseVersions.js +44 -0
  17. package/dist/actions/build/handlePrereleaseVersions.js.map +1 -0
  18. package/dist/actions/build/types.js.map +1 -1
  19. package/dist/actions/dataset/create.js +7 -1
  20. package/dist/actions/dataset/create.js.map +1 -1
  21. package/dist/actions/dataset/resolveDataset.js +26 -0
  22. package/dist/actions/dataset/resolveDataset.js.map +1 -0
  23. package/dist/actions/deploy/deployApp.js +1 -8
  24. package/dist/actions/deploy/deployApp.js.map +1 -1
  25. package/dist/actions/deploy/deployStudio.js +1 -0
  26. package/dist/actions/deploy/deployStudio.js.map +1 -1
  27. package/dist/actions/dev/getDevServerConfig.js +5 -2
  28. package/dist/actions/dev/getDevServerConfig.js.map +1 -1
  29. package/dist/actions/dev/startStudioDevServer.js +8 -3
  30. package/dist/actions/dev/startStudioDevServer.js.map +1 -1
  31. package/dist/actions/documents/types.js.map +1 -1
  32. package/dist/actions/documents/validate.js +11 -2
  33. package/dist/actions/documents/validate.js.map +1 -1
  34. package/dist/actions/documents/validateDocuments.worker.js +2 -2
  35. package/dist/actions/documents/validateDocuments.worker.js.map +1 -1
  36. package/dist/actions/documents/validation/reporters/jsonReporter.js +1 -1
  37. package/dist/actions/documents/validation/reporters/jsonReporter.js.map +1 -1
  38. package/dist/actions/documents/validation/reporters/ndjsonReporter.js +1 -1
  39. package/dist/actions/documents/validation/reporters/ndjsonReporter.js.map +1 -1
  40. package/dist/actions/graphql/SchemaError.js +1 -1
  41. package/dist/actions/graphql/SchemaError.js.map +1 -1
  42. package/dist/actions/graphql/__tests__/fixtures/many-self-refs.js +540 -0
  43. package/dist/actions/graphql/__tests__/fixtures/many-self-refs.js.map +1 -0
  44. package/dist/actions/graphql/__tests__/fixtures/test-studio.js +1143 -0
  45. package/dist/actions/graphql/__tests__/fixtures/test-studio.js.map +1 -0
  46. package/dist/actions/graphql/__tests__/fixtures/union-refs.js +591 -0
  47. package/dist/actions/graphql/__tests__/fixtures/union-refs.js.map +1 -0
  48. package/dist/actions/graphql/__tests__/helpers.js +23 -0
  49. package/dist/actions/graphql/__tests__/helpers.js.map +1 -0
  50. package/dist/actions/graphql/extractFromSanitySchema.js +2 -1
  51. package/dist/actions/graphql/extractFromSanitySchema.js.map +1 -1
  52. package/dist/actions/graphql/gen1/generateTypeFilters.js +1 -1
  53. package/dist/actions/graphql/gen1/generateTypeFilters.js.map +1 -1
  54. package/dist/actions/graphql/gen1/generateTypeQueries.js +2 -1
  55. package/dist/actions/graphql/gen1/generateTypeQueries.js.map +1 -1
  56. package/dist/actions/graphql/gen2/generateTypeQueries.js +1 -1
  57. package/dist/actions/graphql/gen2/generateTypeQueries.js.map +1 -1
  58. package/dist/actions/graphql/gen3/generateTypeQueries.js +1 -1
  59. package/dist/actions/graphql/gen3/generateTypeQueries.js.map +1 -1
  60. package/dist/actions/graphql/getGraphQLAPIs.js +2 -10
  61. package/dist/actions/graphql/getGraphQLAPIs.js.map +1 -1
  62. package/dist/actions/graphql/getGraphQLAPIs.worker.js +1 -1
  63. package/dist/actions/graphql/getGraphQLAPIs.worker.js.map +1 -1
  64. package/dist/actions/graphql/types.js.map +1 -1
  65. package/dist/actions/init/bootstrapLocalTemplate.js +1 -1
  66. package/dist/actions/init/bootstrapLocalTemplate.js.map +1 -1
  67. package/dist/actions/manifest/extractAppManifest.js.map +1 -1
  68. package/dist/actions/manifest/extractManifest.js +1 -22
  69. package/dist/actions/manifest/extractManifest.js.map +1 -1
  70. package/dist/actions/manifest/types.js.map +1 -1
  71. package/dist/actions/schema/deploySchemas.js +57 -80
  72. package/dist/actions/schema/deploySchemas.js.map +1 -1
  73. package/dist/actions/schema/extractSanityWorkspace.worker.js +24 -0
  74. package/dist/actions/schema/extractSanityWorkspace.worker.js.map +1 -0
  75. package/dist/actions/schema/extractSchemaWatcher.js +1 -1
  76. package/dist/actions/schema/extractSchemaWatcher.js.map +1 -1
  77. package/dist/actions/schema/types.js +4 -0
  78. package/dist/actions/schema/types.js.map +1 -1
  79. package/dist/actions/schema/utils/schemaStoreValidation.js +1 -7
  80. package/dist/actions/schema/utils/schemaStoreValidation.js.map +1 -1
  81. package/dist/actions/schema/utils/uniqByProjectIdDataset.js +1 -1
  82. package/dist/actions/schema/utils/uniqByProjectIdDataset.js.map +1 -1
  83. package/dist/actions/schema/watchExtractSchema.js +2 -1
  84. package/dist/actions/schema/watchExtractSchema.js.map +1 -1
  85. package/dist/actions/versions/getFormatters.js +1 -1
  86. package/dist/actions/versions/getFormatters.js.map +1 -1
  87. package/dist/commands/backup/list.js +4 -1
  88. package/dist/commands/backup/list.js.map +1 -1
  89. package/dist/commands/dataset/copy.js +3 -1
  90. package/dist/commands/dataset/copy.js.map +1 -1
  91. package/dist/commands/dataset/create.js +12 -0
  92. package/dist/commands/dataset/create.js.map +1 -1
  93. package/dist/commands/dataset/embeddings/disable.js +62 -0
  94. package/dist/commands/dataset/embeddings/disable.js.map +1 -0
  95. package/dist/commands/dataset/embeddings/enable.js +128 -0
  96. package/dist/commands/dataset/embeddings/enable.js.map +1 -0
  97. package/dist/commands/dataset/embeddings/status.js +61 -0
  98. package/dist/commands/dataset/embeddings/status.js.map +1 -0
  99. package/dist/commands/debug.js +2 -1
  100. package/dist/commands/debug.js.map +1 -1
  101. package/dist/commands/documents/create.js +2 -1
  102. package/dist/commands/documents/create.js.map +1 -1
  103. package/dist/commands/graphql/deploy.js +1 -1
  104. package/dist/commands/graphql/deploy.js.map +1 -1
  105. package/dist/commands/hook/logs.js +1 -1
  106. package/dist/commands/hook/logs.js.map +1 -1
  107. package/dist/commands/init.js +13 -7
  108. package/dist/commands/init.js.map +1 -1
  109. package/dist/commands/manage.js +0 -1
  110. package/dist/commands/manage.js.map +1 -1
  111. package/dist/commands/media/create-aspect.js +1 -1
  112. package/dist/commands/media/create-aspect.js.map +1 -1
  113. package/dist/commands/projects/list.js +2 -1
  114. package/dist/commands/projects/list.js.map +1 -1
  115. package/dist/commands/schema/deploy.js +11 -27
  116. package/dist/commands/schema/deploy.js.map +1 -1
  117. package/dist/commands/users/list.js +1 -1
  118. package/dist/commands/users/list.js.map +1 -1
  119. package/dist/commands/versions.js +1 -1
  120. package/dist/commands/versions.js.map +1 -1
  121. package/dist/exports/index.d.ts +62 -2
  122. package/dist/exports/index.js.map +1 -1
  123. package/dist/prompts/selectMediaLibrary.js +1 -1
  124. package/dist/prompts/selectMediaLibrary.js.map +1 -1
  125. package/dist/services/datasets.js +7 -5
  126. package/dist/services/datasets.js.map +1 -1
  127. package/dist/services/embeddings.js +25 -0
  128. package/dist/services/embeddings.js.map +1 -0
  129. package/dist/services/graphql.js.map +1 -1
  130. package/dist/services/schemas.js +1 -1
  131. package/dist/services/schemas.js.map +1 -1
  132. package/dist/types.js.map +1 -1
  133. package/dist/util/compareDependencyVersions.js +28 -7
  134. package/dist/util/compareDependencyVersions.js.map +1 -1
  135. package/dist/util/errorMessages.js +0 -1
  136. package/dist/util/errorMessages.js.map +1 -1
  137. package/dist/util/packageManager/getPeerDependencies.js +44 -0
  138. package/dist/util/packageManager/getPeerDependencies.js.map +1 -0
  139. package/oclif.manifest.json +283 -149
  140. package/package.json +12 -13
  141. package/dist/actions/schema/schemaStoreTypes.js +0 -19
  142. package/dist/actions/schema/schemaStoreTypes.js.map +0 -1
  143. package/dist/actions/schema/utils/manifestExtractor.js +0 -29
  144. package/dist/actions/schema/utils/manifestExtractor.js.map +0 -1
  145. package/dist/actions/schema/utils/manifestReader.js +0 -71
  146. package/dist/actions/schema/utils/manifestReader.js.map +0 -1
  147. package/dist/util/workerChannels.js +0 -172
  148. package/dist/util/workerChannels.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/actions/graphql/__tests__/fixtures/union-refs.ts"],"sourcesContent":["import {Schema} from '@sanity/schema'\n\nconst root = {\n name: 'title',\n of: [\n {\n to: [{type: 'union'}, {type: 'a'}],\n type: 'reference',\n },\n ],\n type: 'array',\n}\n\nconst union = {\n fields: [\n {\n name: 'body',\n of: [\n {\n to: [{type: 'a'}, {type: 'b'}, {type: 'union'}],\n type: 'reference',\n },\n {type: 'a'},\n ],\n type: 'array',\n },\n ],\n name: 'union',\n type: 'document',\n}\n\nconst a = {\n fields: [{name: 'title', type: 'string'}],\n name: 'a',\n type: 'document',\n}\nconst b = {\n fields: [{name: 'title', type: 'string'}],\n name: 'b',\n type: 'document',\n}\n\nexport default Schema.compile({\n types: [\n root,\n union,\n a,\n b,\n {\n fields: [\n {\n name: 'lat',\n title: 'Latitude',\n type: 'number',\n },\n {\n name: 'lng',\n title: 'Longitude',\n type: 'number',\n },\n {\n name: 'alt',\n title: 'Altitude',\n type: 'number',\n },\n ],\n name: 'geopoint',\n title: 'Geographical Point',\n type: 'object',\n },\n {\n fields: [\n {\n name: 'originalFilename',\n readOnly: true,\n title: 'Original file name',\n type: 'string',\n },\n {\n name: 'label',\n title: 'Label',\n type: 'string',\n },\n {\n name: 'title',\n title: 'Title',\n type: 'string',\n },\n {\n name: 'description',\n title: 'Description',\n type: 'string',\n },\n {\n name: 'altText',\n title: 'Alternative text',\n type: 'string',\n },\n {\n fieldset: 'system',\n name: 'sha1hash',\n readOnly: true,\n title: 'SHA1 hash',\n type: 'string',\n },\n {\n fieldset: 'system',\n name: 'extension',\n readOnly: true,\n title: 'File extension',\n type: 'string',\n },\n {\n fieldset: 'system',\n name: 'mimeType',\n readOnly: true,\n title: 'Mime type',\n type: 'string',\n },\n {\n fieldset: 'system',\n name: 'size',\n readOnly: true,\n title: 'File size in bytes',\n type: 'number',\n },\n {\n fieldset: 'system',\n name: 'assetId',\n readOnly: true,\n title: 'Asset ID',\n type: 'string',\n },\n {\n fieldset: 'system',\n name: 'path',\n readOnly: true,\n title: 'Path',\n type: 'string',\n },\n {\n fieldset: 'system',\n name: 'url',\n readOnly: true,\n title: 'Url',\n type: 'string',\n },\n {\n fieldset: 'system',\n name: 'source',\n readOnly: true,\n title: 'Source',\n type: 'sanity.assetSourceData',\n },\n ],\n fieldsets: [\n {\n description: 'These fields are managed by the system and not editable',\n name: 'system',\n title: 'System fields',\n },\n ],\n name: 'sanity.fileAsset',\n orderings: [\n {\n by: [{direction: 'desc', field: 'size'}],\n name: 'fileSizeDesc',\n title: 'File size',\n },\n ],\n preview: {\n prepare(doc: Record<string, unknown>) {\n return {\n subtitle: `${doc.mimeType} (${((doc.size as number) / 1024 / 1024).toFixed(2)} MB)`,\n title: (doc.title as string) || ((doc.path as string) ?? '').split('/').at(-1),\n }\n },\n select: {\n mimeType: 'mimeType',\n path: 'path',\n size: 'size',\n title: 'originalFilename',\n },\n },\n title: 'File',\n type: 'document',\n },\n {\n fields: [\n {\n name: 'x',\n type: 'number',\n },\n {\n name: 'y',\n type: 'number',\n },\n {\n name: 'height',\n type: 'number',\n },\n {\n name: 'width',\n type: 'number',\n },\n ],\n name: 'sanity.imageHotspot',\n title: 'Image hotspot',\n type: 'object',\n },\n {\n fields: [\n {\n name: 'location',\n type: 'geopoint',\n },\n {\n fieldset: 'extra',\n name: 'dimensions',\n title: 'Dimensions',\n type: 'sanity.imageDimensions',\n },\n {\n fieldset: 'extra',\n name: 'palette',\n title: 'Palette',\n type: 'sanity.imagePalette',\n },\n {\n name: 'lqip',\n readOnly: true,\n title: 'LQIP (Low-Quality Image Placeholder)',\n type: 'string',\n },\n {\n name: 'blurHash',\n readOnly: true,\n title: 'BlurHash',\n type: 'string',\n },\n {\n name: 'thumbHash',\n readOnly: true,\n title: 'ThumbHash',\n type: 'string',\n },\n {\n name: 'hasAlpha',\n readOnly: true,\n title: 'Has alpha channel',\n type: 'boolean',\n },\n {\n name: 'isOpaque',\n readOnly: true,\n title: 'Is opaque',\n type: 'boolean',\n },\n ],\n fieldsets: [\n {\n name: 'extra',\n options: {\n collapsable: true,\n },\n title: 'Extra metadata…',\n },\n ],\n name: 'sanity.imageMetadata',\n title: 'Image metadata',\n type: 'object',\n },\n {\n fields: [\n {\n description: 'A canonical name for the source this asset is originating from',\n name: 'name',\n title: 'Source name',\n type: 'string',\n },\n {\n description:\n 'The unique ID for the asset within the originating source so you can programatically find back to it',\n name: 'id',\n title: 'Asset Source ID',\n type: 'string',\n },\n {\n description: 'A URL to find more information about this asset in the originating source',\n name: 'url',\n title: 'Asset information URL',\n type: 'string',\n },\n ],\n name: 'sanity.assetSourceData',\n title: 'Asset Source Data',\n type: 'object',\n },\n {\n fields: [\n {\n name: 'top',\n type: 'number',\n },\n {\n name: 'bottom',\n type: 'number',\n },\n {\n name: 'left',\n type: 'number',\n },\n {\n name: 'right',\n type: 'number',\n },\n ],\n name: 'sanity.imageCrop',\n title: 'Image crop',\n type: 'object',\n },\n {\n fields: [\n {name: 'height', readOnly: true, title: 'Height', type: 'number'},\n {name: 'width', readOnly: true, title: 'Width', type: 'number'},\n {name: 'aspectRatio', readOnly: true, title: 'Aspect ratio', type: 'number'},\n ],\n name: 'sanity.imageDimensions',\n title: 'Image dimensions',\n type: 'object',\n },\n {\n fields: [\n {name: 'darkMuted', title: 'Dark Muted', type: 'sanity.imagePaletteSwatch'},\n {name: 'lightVibrant', title: 'Light Vibrant', type: 'sanity.imagePaletteSwatch'},\n {name: 'darkVibrant', title: 'Dark Vibrant', type: 'sanity.imagePaletteSwatch'},\n {name: 'vibrant', title: 'Vibrant', type: 'sanity.imagePaletteSwatch'},\n {name: 'dominant', title: 'Dominant', type: 'sanity.imagePaletteSwatch'},\n {name: 'lightMuted', title: 'Light Muted', type: 'sanity.imagePaletteSwatch'},\n {name: 'muted', title: 'Muted', type: 'sanity.imagePaletteSwatch'},\n ],\n name: 'sanity.imagePalette',\n title: 'Image palette',\n type: 'object',\n },\n {\n fields: [\n {name: 'background', readOnly: true, title: 'Background', type: 'string'},\n {name: 'foreground', readOnly: true, title: 'Foreground', type: 'string'},\n {name: 'population', readOnly: true, title: 'Population', type: 'number'},\n {name: 'title', readOnly: true, title: 'String', type: 'string'},\n ],\n name: 'sanity.imagePaletteSwatch',\n title: 'Image palette swatch',\n type: 'object',\n },\n {\n fields: [\n {\n name: 'originalFilename',\n readOnly: true,\n title: 'Original file name',\n type: 'string',\n },\n {\n name: 'label',\n title: 'Label',\n type: 'string',\n },\n {\n name: 'title',\n title: 'Title',\n type: 'string',\n },\n {\n name: 'description',\n title: 'Description',\n type: 'string',\n },\n {\n name: 'altText',\n title: 'Alternative text',\n type: 'string',\n },\n {\n fieldset: 'system',\n name: 'sha1hash',\n readOnly: true,\n title: 'SHA1 hash',\n type: 'string',\n },\n {\n fieldset: 'system',\n name: 'extension',\n readOnly: true,\n title: 'File extension',\n type: 'string',\n },\n {\n fieldset: 'system',\n name: 'mimeType',\n readOnly: true,\n title: 'Mime type',\n type: 'string',\n },\n {\n fieldset: 'system',\n name: 'size',\n readOnly: true,\n title: 'File size in bytes',\n type: 'number',\n },\n {\n fieldset: 'system',\n name: 'assetId',\n readOnly: true,\n title: 'Asset ID',\n type: 'string',\n },\n {\n fieldset: 'system',\n hidden: true,\n name: 'uploadId',\n readOnly: true,\n type: 'string',\n },\n {\n fieldset: 'system',\n name: 'path',\n readOnly: true,\n title: 'Path',\n type: 'string',\n },\n {\n fieldset: 'system',\n name: 'url',\n readOnly: true,\n title: 'Url',\n type: 'string',\n },\n {\n name: 'metadata',\n title: 'Metadata',\n type: 'sanity.imageMetadata',\n },\n {\n fieldset: 'system',\n name: 'source',\n readOnly: true,\n title: 'Source',\n type: 'sanity.assetSourceData',\n },\n ],\n fieldsets: [\n {\n description: 'These fields are managed by the system and not editable',\n name: 'system',\n title: 'System fields',\n },\n ],\n name: 'sanity.imageAsset',\n orderings: [\n {\n by: [{direction: 'desc', field: 'size'}],\n name: 'fileSizeDesc',\n title: 'File size',\n },\n ],\n preview: {\n prepare(doc: Record<string, unknown>) {\n return {\n media: {asset: {_ref: doc.id}},\n subtitle: `${doc.mimeType} (${((doc.size as number) / 1024 / 1024).toFixed(2)} MB)`,\n title: (doc.title as string) || ((doc.path as string) ?? '').split('/').at(-1),\n }\n },\n select: {\n id: '_id',\n mimeType: 'mimeType',\n size: 'size',\n title: 'originalFilename',\n },\n },\n title: 'Image',\n type: 'document',\n },\n ],\n})\n"],"names":["Schema","root","name","of","to","type","union","fields","a","b","compile","types","title","readOnly","fieldset","fieldsets","description","orderings","by","direction","field","preview","prepare","doc","subtitle","mimeType","size","toFixed","path","split","at","select","options","collapsable","hidden","media","asset","_ref","id"],"mappings":"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BACR;gBACA;oBACEH,MAAM;oBACNG,MAAM;gBACR;aACD;YACDH,MAAM;YACNU,OAAO;YACPP,MAAM;QACR;QACA;YACEE,QAAQ;gBACN;oBACEL,MAAM;oBACNG,MAAM;gBACR;gBACA;oBACES,UAAU;oBACVZ,MAAM;oBACNU,OAAO;oBACPP,MAAM;gBACR;gBACA;oBACES,UAAU;oBACVZ,MAAM;oBACNU,OAAO;oBACPP,MAAM;gBACR;gBACA;oBACEH,MAAM;oBACNW,UAAU;oBACVD,OAAO;oBACPP,MAAM;gBACR;gBACA;oBACEH,MAAM;oBACNW,UAAU;oBACVD,OAAO;oBACPP,MAAM;gBACR;gBACA;oBACEH,MAAM;oBACNW,UAAU;oBACVD,OAAO;oBACPP,MAAM;gBACR;gBACA;oBACEH,MAAM;oBACNW,UAAU;oBACVD,OAAO;oBACPP,MAAM;gBACR;gBACA;oBACEH,MAAM;oBACNW,UAAU;oBACVD,OAAO;oBACPP,MAAM;gBACR;aACD;YACDU,WAAW;gBACT;oBACEb,MAAM;oBACN8B,SAAS;wBACPC,aAAa;oBACf;oBACArB,OAAO;gBACT;aACD;YACDV,MAAM;YACNU,OAAO;YACPP,MAAM;QACR;QACA;YACEE,QAAQ;gBACN;oBACES,aAAa;oBACbd,MAAM;oBACNU,OAAO;oBACPP,MAAM;gBACR;gBACA;oBACEW,aACE;oBACFd,MAAM;oBACNU,OAAO;oBACPP,MAAM;gBACR;gBACA;oBACEW,aAAa;oBACbd,MAAM;oBACNU,OAAO;oBACPP,MAAM;gBACR;aACD;YACDH,MAAM;YACNU,OAAO;YACPP,MAAM;QACR;QACA;YACEE,QAAQ;gBACN;oBACEL,MAAM;oBACNG,MAAM;gBACR;gBACA;oBACEH,MAAM;oBACNG,MAAM;gBACR;gBACA;oBACEH,MAAM;oBACNG,MAAM;gBACR;gBACA;oBACEH,MAAM;oBACNG,MAAM;gBACR;aACD;YACDH,MAAM;YACNU,OAAO;YACPP,MAAM;QACR;QACA;YACEE,QAAQ;gBACN;oBAACL,MAAM;oBAAUW,UAAU;oBAAMD,OAAO;oBAAUP,MAAM;gBAAQ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"}
@@ -0,0 +1,23 @@
1
+ import orderBy from 'lodash-es/orderBy.js';
2
+ export function sortGraphQLSchema(schema) {
3
+ const interfaces = orderBy(schema.interfaces, (iface)=>iface.name).map((iface)=>({
4
+ ...iface,
5
+ fields: orderBy(iface.fields, (field)=>field.fieldName)
6
+ }));
7
+ const queries = orderBy(schema.queries, (query)=>query.fieldName).map((query)=>({
8
+ ...query,
9
+ args: orderBy(query.args, (arg)=>arg.name)
10
+ }));
11
+ const types = orderBy(schema.types, (type)=>type.name).map((type)=>({
12
+ ...type,
13
+ fields: orderBy('fields' in type ? type.fields : [], (field)=>field.fieldName)
14
+ }));
15
+ return {
16
+ generation: schema.generation,
17
+ interfaces,
18
+ queries,
19
+ types
20
+ };
21
+ }
22
+
23
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/actions/graphql/__tests__/helpers.ts"],"sourcesContent":["import orderBy from 'lodash-es/orderBy.js'\n\nimport {type GeneratedApiSpecification} from '../types.js'\n\nexport function sortGraphQLSchema(schema: GeneratedApiSpecification) {\n const interfaces = orderBy(schema.interfaces, (iface) => iface.name).map((iface) => ({\n ...iface,\n fields: orderBy(iface.fields, (field) => field.fieldName),\n }))\n const queries = orderBy(schema.queries, (query) => query.fieldName).map((query) => ({\n ...query,\n args: orderBy(query.args, (arg) => arg.name),\n }))\n\n const types = orderBy(schema.types, (type) => type.name).map((type) => ({\n ...type,\n fields: orderBy(\n 'fields' in type ? (type.fields as {fieldName: string}[]) : [],\n (field) => field.fieldName,\n ),\n }))\n\n return {generation: schema.generation, interfaces, queries, types}\n}\n"],"names":["orderBy","sortGraphQLSchema","schema","interfaces","iface","name","map","fields","field","fieldName","queries","query","args","arg","types","type","generation"],"mappings":"AAAA,OAAOA,aAAa,uBAAsB;AAI1C,OAAO,SAASC,kBAAkBC,MAAiC;IACjE,MAAMC,aAAaH,QAAQE,OAAOC,UAAU,EAAE,CAACC,QAAUA,MAAMC,IAAI,EAAEC,GAAG,CAAC,CAACF,QAAW,CAAA;YACnF,GAAGA,KAAK;YACRG,QAAQP,QAAQI,MAAMG,MAAM,EAAE,CAACC,QAAUA,MAAMC,SAAS;QAC1D,CAAA;IACA,MAAMC,UAAUV,QAAQE,OAAOQ,OAAO,EAAE,CAACC,QAAUA,MAAMF,SAAS,EAAEH,GAAG,CAAC,CAACK,QAAW,CAAA;YAClF,GAAGA,KAAK;YACRC,MAAMZ,QAAQW,MAAMC,IAAI,EAAE,CAACC,MAAQA,IAAIR,IAAI;QAC7C,CAAA;IAEA,MAAMS,QAAQd,QAAQE,OAAOY,KAAK,EAAE,CAACC,OAASA,KAAKV,IAAI,EAAEC,GAAG,CAAC,CAACS,OAAU,CAAA;YACtE,GAAGA,IAAI;YACPR,QAAQP,QACN,YAAYe,OAAQA,KAAKR,MAAM,GAA6B,EAAE,EAC9D,CAACC,QAAUA,MAAMC,SAAS;QAE9B,CAAA;IAEA,OAAO;QAACO,YAAYd,OAAOc,UAAU;QAAEb;QAAYO;QAASI;IAAK;AACnE"}
@@ -1,7 +1,8 @@
1
1
  /* eslint-disable unicorn/consistent-function-scoping */ import { generateHelpUrl } from '@sanity/generate-help-url';
2
2
  import { Schema } from '@sanity/schema';
3
3
  import { isDeprecationConfiguration } from '@sanity/types';
4
- import { startCase, uniqBy } from 'lodash-es';
4
+ import startCase from 'lodash-es/startCase.js';
5
+ import uniqBy from 'lodash-es/uniqBy.js';
5
6
  import { oneline } from 'oneline';
6
7
  import { SCHEMA_LIFT_ANONYMOUS_OBJECT_TYPE } from './helpUrls.js';
7
8
  import { SchemaError } from './SchemaError.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/actions/graphql/extractFromSanitySchema.ts"],"sourcesContent":["/* eslint-disable unicorn/consistent-function-scoping */\nimport {generateHelpUrl} from '@sanity/generate-help-url'\nimport {Schema} from '@sanity/schema'\nimport {\n type ArraySchemaType,\n type Schema as CompiledSchema,\n type CrossDatasetReferenceSchemaType,\n type IntrinsicTypeName,\n isDeprecationConfiguration,\n type ObjectField,\n type ObjectFieldType,\n type ObjectSchemaType,\n type ReferenceSchemaType,\n type SchemaType,\n} from '@sanity/types'\nimport {startCase, uniqBy} from 'lodash-es'\nimport {oneline} from 'oneline'\n\nimport {SCHEMA_LIFT_ANONYMOUS_OBJECT_TYPE} from './helpUrls.js'\nimport {SchemaError} from './SchemaError.js'\nimport {\n type ApiSpecification,\n type ConvertedFieldDefinition,\n type ConvertedInterface,\n type ConvertedType,\n type ConvertedUnion,\n type Deprecation,\n internal,\n} from './types.js'\n\nconst skipTypes = new Set(['document', 'reference'])\nconst allowedJsonTypes = new Set(['array', 'object'])\nconst disallowedCustomizedMembers = new Set(['array', 'block', 'file', 'image', 'object'])\nconst disabledBlockFields = new Set(['markDefs'])\nconst scalars = new Set(['boolean', 'number', 'string'])\n\nfunction getBaseType(baseSchema: CompiledSchema, typeName: IntrinsicTypeName): SchemaType {\n if (typeName === 'crossDatasetReference') {\n return Schema.compile({\n parent: baseSchema,\n types: [\n {\n name: `__placeholder__`,\n // Just needs _something_ to refer to, doesn't matter what\n to: [{type: 'sanity.imageAsset'}],\n type: 'crossDatasetReference',\n },\n ],\n }).get('__placeholder__')\n }\n if (typeName === 'globalDocumentReference') {\n return Schema.compile({\n parent: baseSchema,\n types: [\n {\n name: `__placeholder__`,\n // Just needs _something_ to refer to, doesn't matter what\n to: [{type: 'sanity.imageAsset'}],\n type: 'globalDocumentReference',\n },\n ],\n }).get('__placeholder__')\n }\n\n return Schema.compile({\n parent: baseSchema,\n types: [{name: `__placeholder__`, options: {hotspot: true}, type: typeName}],\n }).get('__placeholder__')\n}\n\nfunction getTypeName(str: string): string {\n const name = startCase(str).replaceAll(/\\s+/g, '')\n return name === 'Number' ? 'Float' : name\n}\n\nfunction isBaseType(type: SchemaType): boolean {\n return (\n type.name !== type.jsonType &&\n allowedJsonTypes.has(type.jsonType) &&\n !skipTypes.has(type.name) &&\n !isReference(type)\n )\n}\n\nfunction isBlockType(typeDef: ObjectField | SchemaType): boolean {\n if (typeDef.name === 'block') {\n return true\n }\n\n if (typeDef.type) {\n return isBlockType(typeDef.type)\n }\n\n return false\n}\n\nfunction hasBlockParent(typeDef: SchemaType): boolean {\n if (typeDef.type && typeDef.type.name === 'block' && !typeDef.type.type) {\n return true\n }\n\n return Boolean(typeDef.type && hasBlockParent(typeDef.type))\n}\n\nfunction isArrayOfBlocks(typeDef: ObjectField | SchemaType): boolean {\n const type = typeDef.type || typeDef\n if (!('jsonType' in type) || type.jsonType !== 'array') {\n return false\n }\n\n return (type.of || []).some((item) => hasBlockParent(item))\n}\n\nfunction isType(typeDef: ObjectField | ObjectFieldType | SchemaType, typeName: string): boolean {\n let type: ObjectField | ObjectFieldType | SchemaType | undefined = typeDef\n while (type) {\n if (type.name === typeName || (type.type && type.type.name === typeName)) {\n return true\n }\n\n type = type.type\n }\n return false\n}\n\nfunction isReference(\n typeDef: ObjectField | ObjectFieldType | SchemaType,\n): typeDef is ReferenceSchemaType {\n return isType(typeDef, 'reference')\n}\n\nfunction isCrossDatasetReference(\n typeDef: CrossDatasetReferenceSchemaType | ObjectField | ObjectFieldType | SchemaType,\n) {\n return isType(typeDef, 'crossDatasetReference')\n}\n\nfunction getCrossDatasetReferenceMetadata(\n typeDef: CrossDatasetReferenceSchemaType | ObjectField | ObjectFieldType | SchemaType,\n) {\n if (!isCrossDatasetReference(typeDef)) return\n\n function getTypeNames(\n type: CrossDatasetReferenceSchemaType | ObjectField | ObjectFieldType | SchemaType | undefined,\n ) {\n if (!type) return\n if (!('to' in type)) return getTypeNames(type.type)\n return type.to.map((t) => t.type).filter((t): t is string => typeof t === 'string')\n }\n\n function getDataset(\n type: CrossDatasetReferenceSchemaType | ObjectField | ObjectFieldType | SchemaType | undefined,\n ) {\n if (!type) return\n if ('dataset' in type && typeof type.dataset === 'string') return type.dataset\n if (type.type) return getDataset(type.type)\n }\n\n const typeNames = getTypeNames(typeDef)\n if (!typeNames) return\n\n const dataset = getDataset(typeDef)\n if (typeof dataset !== 'string') return\n\n return {dataset, typeNames}\n}\n\nexport function extractFromSanitySchema(\n sanitySchema: CompiledSchema,\n extractOptions: {nonNullDocumentFields?: boolean; withUnionCache?: boolean} = {},\n): ApiSpecification {\n const {nonNullDocumentFields, withUnionCache} = extractOptions\n const unionRecursionGuards = new Set<string>()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const unionDefinitionCache = new Map<string, any>()\n const hasErrors =\n sanitySchema._validation &&\n sanitySchema._validation.some((group) =>\n group.problems.some((problem) => problem.severity === 'error'),\n )\n\n if (hasErrors && Array.isArray(sanitySchema._validation)) {\n throw new SchemaError(sanitySchema._validation)\n }\n\n const sanityTypes = sanitySchema._original?.types || []\n const typeNames = sanitySchema.getTypeNames()\n const unionTypes: ConvertedUnion[] = []\n const types: ConvertedType[] = []\n\n for (const typeName of typeNames) {\n const schemaType = sanitySchema.get(typeName)\n if (schemaType === undefined) {\n continue\n }\n if (!isBaseType(schemaType)) {\n continue\n }\n\n const convertedType = convertType(schemaType)\n types.push(convertedType)\n }\n\n const withUnions = [...types, ...unionTypes]\n return {interfaces: [getDocumentInterfaceDefinition()], types: withUnions}\n\n function isTopLevelType(typeName: string): boolean {\n return typeNames.includes(typeName)\n }\n\n function mapFieldType(field: ObjectField | ObjectFieldType | SchemaType): string {\n if (!field.type) {\n throw new Error('Field has no type!')\n }\n\n const jsonType = 'jsonType' in field ? field.jsonType : ''\n const isScalar = scalars.has(jsonType)\n if (isScalar && jsonType === 'number') {\n return hasValidationFlag(field, 'integer') ? 'Int' : 'Float'\n } else if (isScalar) {\n return getTypeName(jsonType)\n }\n\n const type = field.type.type || field.type\n\n // In the case of nested scalars, recurse (markdown -> longText -> text -> string)\n if (type.type) {\n return mapFieldType(type)\n }\n\n switch (type.name) {\n case 'number': {\n return hasValidationFlag(field, 'integer') ? 'Int' : 'Float'\n }\n default: {\n return getTypeName(type.name)\n }\n }\n }\n\n function isArrayType(type: ObjectField | SchemaType): type is ArraySchemaType {\n return Boolean(\n ('jsonType' in type && type.jsonType === 'array') ||\n (type.type && type.type.jsonType === 'array'),\n )\n }\n\n function _convertType(\n type: ObjectField | SchemaType,\n parent: string,\n options: {isField?: boolean},\n ): ConvertedType {\n let name: string | undefined\n if (type.type) {\n name = type.type.name\n } else if ('jsonType' in type) {\n name = type.jsonType\n }\n\n if (isReference(type)) {\n return getReferenceDefinition(type)\n }\n\n if (isArrayType(type)) {\n return getArrayDefinition(type, parent, options)\n }\n\n if (name === 'document') {\n return getDocumentDefinition(type as ObjectSchemaType)\n }\n\n if (name === 'block' || name === 'object') {\n return getObjectDefinition(type, parent)\n }\n\n if (hasFields(type)) {\n return getObjectDefinition(type, parent)\n }\n\n return {\n description: getDescription(type),\n type: mapFieldType(type),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } as any\n }\n\n function convertType(\n type: ObjectField | SchemaType,\n parent?: string,\n props: Partial<Deprecation> & {fieldName?: string} = {},\n ): ConvertedType {\n const mapped = _convertType(type, parent || '', {isField: Boolean(props.fieldName)})\n const gqlName = props.fieldName || mapped.name\n const originalName = type.name\n const original = gqlName === originalName ? {} : {originalName: originalName}\n const crossDatasetReferenceMetadata = getCrossDatasetReferenceMetadata(type)\n\n return {\n ...getDeprecation(type.type),\n ...props,\n ...mapped,\n ...original,\n ...(crossDatasetReferenceMetadata && {crossDatasetReferenceMetadata}),\n }\n }\n\n function isField(def: ObjectField | SchemaType): def is ObjectField {\n return !('jsonType' in def) || !def.jsonType\n }\n\n function getObjectDefinition(def: ObjectField | SchemaType, parent?: string): ConvertedType {\n const isInline = isField(def)\n const isDocument = def.type ? def.type.name === 'document' : false\n const actualType = isInline ? def.type : def\n\n if (typeNeedsHoisting(actualType)) {\n throw createLiftTypeError(def.name, parent || '', actualType.name)\n }\n\n if (isInline && parent && def.type.name === 'object') {\n throw createLiftTypeError(def.name, parent)\n }\n\n if (parent && def.type && isTopLevelType(def.type.name)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return {type: getTypeName(def.type.name)} as any\n }\n\n const name = `${parent || ''}${getTypeName(def.name)}`\n const fields = collectFields(def)\n const firstUnprefixed = Math.max(\n 0,\n fields.findIndex((field) => field.name[0] !== '_'),\n )\n\n const keyField = createStringField('_key')\n\n fields.splice(firstUnprefixed, 0, keyField)\n\n if (!isDocument) {\n fields.splice(firstUnprefixed + 1, 0, createStringField('_type'))\n }\n\n const objectIsBlock = isBlockType(def)\n const objectFields = objectIsBlock\n ? fields.filter((field) => !disabledBlockFields.has(field.name))\n : fields\n\n return {\n description: getDescription(def),\n fields: objectFields.map((field) =>\n isArrayOfBlocks(field)\n ? buildRawField(field, name)\n : (convertType(field, name, {\n fieldName: field.name,\n ...getDeprecation(def),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }) as any),\n ),\n [internal]: {\n ...getDeprecation(def),\n },\n kind: 'Type',\n name,\n type: 'Object',\n }\n }\n\n function buildRawField(field: ObjectField, parentName: string) {\n return {\n ...convertType(field, parentName, {fieldName: `${field.name}Raw`}),\n isRawAlias: true,\n type: 'JSON',\n }\n }\n\n function createStringField(name: string): ObjectField {\n return {\n name,\n type: {\n jsonType: 'string',\n name: 'string',\n type: {jsonType: 'string', name: 'string', type: undefined},\n },\n }\n }\n\n function collectFields(def: ObjectField | SchemaType) {\n const fields = gatherAllFields(def)\n if (fields.length > 0) {\n return fields\n }\n\n const extended = getBaseType(sanitySchema, def.name as IntrinsicTypeName)\n return gatherAllFields(extended)\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function getReferenceDefinition(def: SchemaType): any {\n const base = {description: getDescription(def), isReference: true}\n const candidates = arrayify(gatherAllReferenceCandidates(def))\n if (candidates.length === 0) {\n throw new Error('No candidates for reference')\n }\n\n if (candidates.length === 1) {\n return {type: getTypeName(candidates[0].type.name), ...base}\n }\n\n const allTypeNames = candidates.map((c) => getTypeName(c.type.name))\n const targetTypes = [...new Set(allTypeNames)].toSorted()\n const name = targetTypes.join('Or')\n\n // Register the union type if we haven't seen it before\n if (!unionTypes.some((item) => item.name === name)) {\n unionTypes.push({\n kind: 'Union',\n name,\n types: targetTypes,\n })\n }\n\n return {\n type: name,\n ...base,\n }\n }\n\n function getArrayDefinition(\n def: ArraySchemaType,\n parent: string,\n options: {isField?: boolean} = {},\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): any {\n const base = {description: getDescription(def), kind: 'List'}\n const name = !options.isField && def.name ? {name: getTypeName(def.name)} : {}\n const candidates = def.type?.type && 'of' in def.type ? arrayify(def.type.of) : def.of\n\n return candidates.length === 1\n ? {\n children: getArrayChildDefinition(candidates[0], def),\n ...base,\n ...name,\n }\n : {\n children: getUnionDefinition(candidates, def, {grandParent: parent}),\n ...base,\n ...name,\n }\n }\n\n function getArrayChildDefinition(child: SchemaType, arrayDef: SchemaType) {\n if (typeNeedsHoisting(child)) {\n // Seems to be inline? Should be hoisted?\n throw createLiftTypeError(child.name, arrayDef.name)\n }\n\n if (isReference(child)) {\n return getReferenceDefinition(child)\n }\n\n // In the case of nested scalars, recurse (markdown -> longText -> text -> string)\n if (scalars.has(child.jsonType) && !scalars.has(child.name)) {\n return {type: mapFieldType(child)}\n }\n\n return {type: getTypeName(child.name)}\n }\n\n function typeNeedsHoisting(type: SchemaType & {isCustomized?: boolean}): boolean {\n if (type.name === 'object') {\n return true\n }\n\n if (type.jsonType === 'object' && !isTopLevelType(type.name)) {\n return true\n }\n\n if (type.isCustomized && !isTopLevelType(type.name)) {\n return true\n }\n\n if (type.isCustomized && disallowedCustomizedMembers.has(type.name)) {\n return true\n }\n\n return false\n }\n\n function getUnionDefinition(\n candidates: ObjectSchemaType[],\n parent: SchemaType,\n options: {grandParent?: string} = {},\n ) {\n if (candidates.length < 2) {\n throw new Error('Not enough candidates for a union type')\n }\n\n // #1482: When creating union definition do not get caught in recursion loop\n // for types that reference themselves\n const guardPathName = `${typeof parent === 'object' ? parent.name : parent}`\n if (unionRecursionGuards.has(guardPathName)) {\n return {}\n }\n\n const unionCacheKey = `${options.grandParent}-${guardPathName}-${candidates\n .map((c) => c.type?.name)\n .join('-')}`\n if (withUnionCache && unionDefinitionCache.has(unionCacheKey)) {\n return unionDefinitionCache.get(unionCacheKey)\n }\n\n try {\n unionRecursionGuards.add(guardPathName)\n\n for (const [i, def] of candidates.entries()) {\n if (typeNeedsHoisting(def)) {\n throw createLiftTypeArrayError(\n i,\n parent.name,\n def.type ? def.type.name : def.name,\n options.grandParent,\n )\n }\n }\n\n const converted = candidates.map((def) => convertType(def))\n\n const getName = (def: {type: string | {name: string}}): string =>\n typeof def.type === 'string' ? def.type : def.type.name\n\n // We might end up with union types being returned - these needs to be flattened\n // so that an ImageOr(PersonOrPet) becomes ImageOrPersonOrPet\n // eslint-disable-next-line unicorn/no-array-reduce\n const flattened = converted.reduce(\n (acc, candidate) => {\n const union = unionTypes.find((item) => item.name === candidate.type)\n return union\n ? // eslint-disable-next-line unicorn/prefer-spread\n acc.concat(union.types.map((type) => ({isReference: candidate.isReference, type})))\n : [...acc, candidate]\n },\n [] as {isReference?: boolean; name?: string; type: string | {name: string}}[],\n )\n\n let allCandidatesAreDocuments = true\n const refs: (string | {name: string})[] = []\n const inlineObjs: string[] = []\n const allTypeNames: string[] = []\n for (const def of flattened) {\n if (def.isReference) {\n refs.push(def.type)\n }\n if (!isReference) {\n inlineObjs.push(def.name || '')\n }\n\n const typeName = typeof def.type === 'string' ? def.type : def.type.name\n\n // Here we remove duplicates, as they might appear twice due to in-line usage of types as well as references\n if (def.name || def.type) {\n allTypeNames.push(def.isReference ? typeName : def.name || '')\n }\n\n const typeDef = sanityTypes.find((type) => type.name === getName(def))\n if (!typeDef || typeDef.type !== 'document') {\n allCandidatesAreDocuments = false\n }\n }\n\n const interfaces = allCandidatesAreDocuments ? ['Document'] : undefined\n const possibleTypes = [...new Set(allTypeNames)].toSorted()\n\n if (possibleTypes.length < 2) {\n throw new Error(`Not enough types for a union type. Parent: ${parent.name}`)\n }\n\n const name = possibleTypes.join('Or')\n\n if (!unionTypes.some((item) => item.name === name)) {\n unionTypes.push({\n interfaces,\n kind: 'Union',\n name,\n types: possibleTypes,\n })\n }\n\n const references = refs.length > 0 ? refs : undefined\n const inlineObjects = inlineObjs.length > 0 ? inlineObjs : undefined\n\n const unionDefinition = isReference(parent)\n ? {references, type: name}\n : {inlineObjects, references, type: name}\n\n unionDefinitionCache.set(unionCacheKey, unionDefinition)\n return unionDefinition\n } finally {\n unionRecursionGuards.delete(guardPathName)\n }\n }\n\n function getDocumentDefinition(def: ObjectSchemaType) {\n const objectDef = getObjectDefinition(def)\n const fields = [...getDocumentInterfaceFields(def), ...objectDef.fields]\n\n return {...objectDef, fields, interfaces: ['Document']}\n }\n\n function getDocumentInterfaceDefinition(): ConvertedInterface {\n return {\n description: 'A Sanity document',\n fields: getDocumentInterfaceFields(),\n kind: 'Interface',\n name: 'Document',\n }\n }\n\n function getDocumentInterfaceFields(type?: ObjectSchemaType): ConvertedFieldDefinition[] {\n const isNullable = typeof nonNullDocumentFields === 'boolean' ? !nonNullDocumentFields : true\n return [\n {\n description: 'Document ID',\n fieldName: '_id',\n isNullable,\n type: 'ID',\n ...getDeprecation(type),\n },\n {\n description: 'Document type',\n fieldName: '_type',\n isNullable,\n type: 'String',\n ...getDeprecation(type),\n },\n {\n description: 'Date the document was created',\n fieldName: '_createdAt',\n isNullable,\n type: 'Datetime',\n ...getDeprecation(type),\n },\n {\n description: 'Date the document was last modified',\n fieldName: '_updatedAt',\n isNullable,\n type: 'Datetime',\n ...getDeprecation(type),\n },\n {\n description: 'Current document revision',\n fieldName: '_rev',\n isNullable,\n type: 'String',\n ...getDeprecation(type),\n },\n ]\n }\n\n function arrayify(thing: unknown) {\n if (Array.isArray(thing)) {\n return thing\n }\n\n return thing === null || thing === undefined ? [] : [thing]\n }\n\n function hasValidationFlag(\n field: ObjectField | ObjectFieldType | SchemaType,\n flag: string,\n ): boolean {\n return (\n 'validation' in field &&\n Array.isArray(field.validation) &&\n field.validation.some(\n (rule) => rule && '_rules' in rule && rule._rules.some((item) => item.flag === flag),\n )\n )\n }\n\n function getDescription(type: ObjectField | SchemaType): string | undefined {\n const description = type.type && type.type.description\n return typeof description === 'string' ? description : undefined\n }\n\n function gatherAllReferenceCandidates(type: SchemaType): ObjectSchemaType[] {\n const allFields = gatherReferenceCandidates(type)\n return uniqBy(allFields, 'name')\n }\n\n function gatherReferenceCandidates(type: SchemaType): ObjectSchemaType[] {\n const refTo = 'to' in type ? type.to : []\n return 'type' in type && type.type ? [...gatherReferenceCandidates(type.type), ...refTo] : refTo\n }\n\n function gatherAllFields(type: ObjectField | SchemaType) {\n const allFields = gatherFields(type)\n return uniqBy(allFields, 'name')\n }\n\n function gatherFields(type: ObjectField | SchemaType): ObjectField[] {\n if ('fields' in type) {\n return type.type ? [...gatherFields(type.type), ...type.fields] : type.fields\n }\n\n return []\n }\n\n function hasFieldsLikeShape(type: unknown): type is {fields: unknown} {\n return typeof type === 'object' && type !== null && 'fields' in type\n }\n\n function hasArrayOfFields(type: unknown): type is {fields: ObjectField[]} {\n return hasFieldsLikeShape(type) && Array.isArray(type.fields)\n }\n\n function hasFields(type: ObjectField | SchemaType): boolean {\n if (hasArrayOfFields(type)) {\n return gatherAllFields(type).length > 0\n }\n\n return 'type' in type && type.type ? hasFields(type.type) : false\n }\n}\n\nfunction createLiftTypeArrayError(\n index: number,\n parent: string,\n inlineType = 'object',\n grandParent = '',\n) {\n const helpUrl = generateHelpUrl(SCHEMA_LIFT_ANONYMOUS_OBJECT_TYPE)\n const context = [grandParent, parent].filter(Boolean).join('/')\n return new HelpfulError(\n oneline`\n Encountered anonymous inline ${inlineType} at index ${index} for type/field ${context}.\n To use this type with GraphQL you will need to create a top-level schema type for it.\n See ${helpUrl}`,\n helpUrl,\n )\n}\n\nfunction createLiftTypeError(typeName: string, parent: string, inlineType = 'object') {\n const helpUrl = generateHelpUrl(SCHEMA_LIFT_ANONYMOUS_OBJECT_TYPE)\n return new HelpfulError(\n oneline`\n Encountered anonymous inline ${inlineType} \"${typeName}\" for field/type \"${parent}\".\n To use this field with GraphQL you will need to create a top-level schema type for it.\n See ${helpUrl}`,\n helpUrl,\n )\n}\n\nclass HelpfulError extends Error {\n helpUrl?: string\n\n constructor(message: string, helpUrl?: string) {\n super(message)\n this.name = 'HelpfulError'\n this.helpUrl = helpUrl\n }\n}\n\nfunction getDeprecation(type?: ObjectField | ObjectFieldType | SchemaType): Partial<Deprecation> {\n return isDeprecationConfiguration(type)\n ? {\n deprecationReason: type.deprecated.reason,\n }\n : {}\n}\n"],"names":["generateHelpUrl","Schema","isDeprecationConfiguration","startCase","uniqBy","oneline","SCHEMA_LIFT_ANONYMOUS_OBJECT_TYPE","SchemaError","internal","skipTypes","Set","allowedJsonTypes","disallowedCustomizedMembers","disabledBlockFields","scalars","getBaseType","baseSchema","typeName","compile","parent","types","name","to","type","get","options","hotspot","getTypeName","str","replaceAll","isBaseType","jsonType","has","isReference","isBlockType","typeDef","hasBlockParent","Boolean","isArrayOfBlocks","of","some","item","isType","isCrossDatasetReference","getCrossDatasetReferenceMetadata","getTypeNames","map","t","filter","getDataset","dataset","typeNames","extractFromSanitySchema","sanitySchema","extractOptions","nonNullDocumentFields","withUnionCache","unionRecursionGuards","unionDefinitionCache","Map","hasErrors","_validation","group","problems","problem","severity","Array","isArray","sanityTypes","_original","unionTypes","schemaType","undefined","convertedType","convertType","push","withUnions","interfaces","getDocumentInterfaceDefinition","isTopLevelType","includes","mapFieldType","field","Error","isScalar","hasValidationFlag","isArrayType","_convertType","getReferenceDefinition","getArrayDefinition","getDocumentDefinition","getObjectDefinition","hasFields","description","getDescription","props","mapped","isField","fieldName","gqlName","originalName","original","crossDatasetReferenceMetadata","getDeprecation","def","isInline","isDocument","actualType","typeNeedsHoisting","createLiftTypeError","fields","collectFields","firstUnprefixed","Math","max","findIndex","keyField","createStringField","splice","objectIsBlock","objectFields","buildRawField","kind","parentName","isRawAlias","gatherAllFields","length","extended","base","candidates","arrayify","gatherAllReferenceCandidates","allTypeNames","c","targetTypes","toSorted","join","children","getArrayChildDefinition","getUnionDefinition","grandParent","child","arrayDef","isCustomized","guardPathName","unionCacheKey","add","i","entries","createLiftTypeArrayError","converted","getName","flattened","reduce","acc","candidate","union","find","concat","allCandidatesAreDocuments","refs","inlineObjs","possibleTypes","references","inlineObjects","unionDefinition","set","delete","objectDef","getDocumentInterfaceFields","isNullable","thing","flag","validation","rule","_rules","allFields","gatherReferenceCandidates","refTo","gatherFields","hasFieldsLikeShape","hasArrayOfFields","index","inlineType","helpUrl","context","HelpfulError","message","deprecationReason","deprecated","reason"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/actions/graphql/extractFromSanitySchema.ts"],"sourcesContent":["/* eslint-disable unicorn/consistent-function-scoping */\nimport {generateHelpUrl} from '@sanity/generate-help-url'\nimport {Schema} from '@sanity/schema'\nimport {\n type ArraySchemaType,\n type Schema as CompiledSchema,\n type CrossDatasetReferenceSchemaType,\n type IntrinsicTypeName,\n isDeprecationConfiguration,\n type ObjectField,\n type ObjectFieldType,\n type ObjectSchemaType,\n type ReferenceSchemaType,\n type SchemaType,\n} from '@sanity/types'\nimport startCase from 'lodash-es/startCase.js'\nimport uniqBy from 'lodash-es/uniqBy.js'\nimport {oneline} from 'oneline'\n\nimport {SCHEMA_LIFT_ANONYMOUS_OBJECT_TYPE} from './helpUrls.js'\nimport {SchemaError} from './SchemaError.js'\nimport {\n type ApiSpecification,\n type ConvertedFieldDefinition,\n type ConvertedInterface,\n type ConvertedType,\n type ConvertedUnion,\n type Deprecation,\n internal,\n} from './types.js'\n\nconst skipTypes = new Set(['document', 'reference'])\nconst allowedJsonTypes = new Set(['array', 'object'])\nconst disallowedCustomizedMembers = new Set(['array', 'block', 'file', 'image', 'object'])\nconst disabledBlockFields = new Set(['markDefs'])\nconst scalars = new Set(['boolean', 'number', 'string'])\n\nfunction getBaseType(baseSchema: CompiledSchema, typeName: IntrinsicTypeName): SchemaType {\n if (typeName === 'crossDatasetReference') {\n return Schema.compile({\n parent: baseSchema,\n types: [\n {\n name: `__placeholder__`,\n // Just needs _something_ to refer to, doesn't matter what\n to: [{type: 'sanity.imageAsset'}],\n type: 'crossDatasetReference',\n },\n ],\n }).get('__placeholder__')\n }\n if (typeName === 'globalDocumentReference') {\n return Schema.compile({\n parent: baseSchema,\n types: [\n {\n name: `__placeholder__`,\n // Just needs _something_ to refer to, doesn't matter what\n to: [{type: 'sanity.imageAsset'}],\n type: 'globalDocumentReference',\n },\n ],\n }).get('__placeholder__')\n }\n\n return Schema.compile({\n parent: baseSchema,\n types: [{name: `__placeholder__`, options: {hotspot: true}, type: typeName}],\n }).get('__placeholder__')\n}\n\nfunction getTypeName(str: string): string {\n const name = startCase(str).replaceAll(/\\s+/g, '')\n return name === 'Number' ? 'Float' : name\n}\n\nfunction isBaseType(type: SchemaType): boolean {\n return (\n type.name !== type.jsonType &&\n allowedJsonTypes.has(type.jsonType) &&\n !skipTypes.has(type.name) &&\n !isReference(type)\n )\n}\n\nfunction isBlockType(typeDef: ObjectField | SchemaType): boolean {\n if (typeDef.name === 'block') {\n return true\n }\n\n if (typeDef.type) {\n return isBlockType(typeDef.type)\n }\n\n return false\n}\n\nfunction hasBlockParent(typeDef: SchemaType): boolean {\n if (typeDef.type && typeDef.type.name === 'block' && !typeDef.type.type) {\n return true\n }\n\n return Boolean(typeDef.type && hasBlockParent(typeDef.type))\n}\n\nfunction isArrayOfBlocks(typeDef: ObjectField | SchemaType): boolean {\n const type = typeDef.type || typeDef\n if (!('jsonType' in type) || type.jsonType !== 'array') {\n return false\n }\n\n return (type.of || []).some((item) => hasBlockParent(item))\n}\n\nfunction isType(typeDef: ObjectField | ObjectFieldType | SchemaType, typeName: string): boolean {\n let type: ObjectField | ObjectFieldType | SchemaType | undefined = typeDef\n while (type) {\n if (type.name === typeName || (type.type && type.type.name === typeName)) {\n return true\n }\n\n type = type.type\n }\n return false\n}\n\nfunction isReference(\n typeDef: ObjectField | ObjectFieldType | SchemaType,\n): typeDef is ReferenceSchemaType {\n return isType(typeDef, 'reference')\n}\n\nfunction isCrossDatasetReference(\n typeDef: CrossDatasetReferenceSchemaType | ObjectField | ObjectFieldType | SchemaType,\n) {\n return isType(typeDef, 'crossDatasetReference')\n}\n\nfunction getCrossDatasetReferenceMetadata(\n typeDef: CrossDatasetReferenceSchemaType | ObjectField | ObjectFieldType | SchemaType,\n) {\n if (!isCrossDatasetReference(typeDef)) return\n\n function getTypeNames(\n type: CrossDatasetReferenceSchemaType | ObjectField | ObjectFieldType | SchemaType | undefined,\n ) {\n if (!type) return\n if (!('to' in type)) return getTypeNames(type.type)\n return type.to.map((t) => t.type).filter((t): t is string => typeof t === 'string')\n }\n\n function getDataset(\n type: CrossDatasetReferenceSchemaType | ObjectField | ObjectFieldType | SchemaType | undefined,\n ) {\n if (!type) return\n if ('dataset' in type && typeof type.dataset === 'string') return type.dataset\n if (type.type) return getDataset(type.type)\n }\n\n const typeNames = getTypeNames(typeDef)\n if (!typeNames) return\n\n const dataset = getDataset(typeDef)\n if (typeof dataset !== 'string') return\n\n return {dataset, typeNames}\n}\n\nexport function extractFromSanitySchema(\n sanitySchema: CompiledSchema,\n extractOptions: {nonNullDocumentFields?: boolean; withUnionCache?: boolean} = {},\n): ApiSpecification {\n const {nonNullDocumentFields, withUnionCache} = extractOptions\n const unionRecursionGuards = new Set<string>()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const unionDefinitionCache = new Map<string, any>()\n const hasErrors =\n sanitySchema._validation &&\n sanitySchema._validation.some((group) =>\n group.problems.some((problem) => problem.severity === 'error'),\n )\n\n if (hasErrors && Array.isArray(sanitySchema._validation)) {\n throw new SchemaError(sanitySchema._validation)\n }\n\n const sanityTypes = sanitySchema._original?.types || []\n const typeNames = sanitySchema.getTypeNames()\n const unionTypes: ConvertedUnion[] = []\n const types: ConvertedType[] = []\n\n for (const typeName of typeNames) {\n const schemaType = sanitySchema.get(typeName)\n if (schemaType === undefined) {\n continue\n }\n if (!isBaseType(schemaType)) {\n continue\n }\n\n const convertedType = convertType(schemaType)\n types.push(convertedType)\n }\n\n const withUnions = [...types, ...unionTypes]\n return {interfaces: [getDocumentInterfaceDefinition()], types: withUnions}\n\n function isTopLevelType(typeName: string): boolean {\n return typeNames.includes(typeName)\n }\n\n function mapFieldType(field: ObjectField | ObjectFieldType | SchemaType): string {\n if (!field.type) {\n throw new Error('Field has no type!')\n }\n\n const jsonType = 'jsonType' in field ? field.jsonType : ''\n const isScalar = scalars.has(jsonType)\n if (isScalar && jsonType === 'number') {\n return hasValidationFlag(field, 'integer') ? 'Int' : 'Float'\n } else if (isScalar) {\n return getTypeName(jsonType)\n }\n\n const type = field.type.type || field.type\n\n // In the case of nested scalars, recurse (markdown -> longText -> text -> string)\n if (type.type) {\n return mapFieldType(type)\n }\n\n switch (type.name) {\n case 'number': {\n return hasValidationFlag(field, 'integer') ? 'Int' : 'Float'\n }\n default: {\n return getTypeName(type.name)\n }\n }\n }\n\n function isArrayType(type: ObjectField | SchemaType): type is ArraySchemaType {\n return Boolean(\n ('jsonType' in type && type.jsonType === 'array') ||\n (type.type && type.type.jsonType === 'array'),\n )\n }\n\n function _convertType(\n type: ObjectField | SchemaType,\n parent: string,\n options: {isField?: boolean},\n ): ConvertedType {\n let name: string | undefined\n if (type.type) {\n name = type.type.name\n } else if ('jsonType' in type) {\n name = type.jsonType\n }\n\n if (isReference(type)) {\n return getReferenceDefinition(type)\n }\n\n if (isArrayType(type)) {\n return getArrayDefinition(type, parent, options)\n }\n\n if (name === 'document') {\n return getDocumentDefinition(type as ObjectSchemaType)\n }\n\n if (name === 'block' || name === 'object') {\n return getObjectDefinition(type, parent)\n }\n\n if (hasFields(type)) {\n return getObjectDefinition(type, parent)\n }\n\n return {\n description: getDescription(type),\n type: mapFieldType(type),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } as any\n }\n\n function convertType(\n type: ObjectField | SchemaType,\n parent?: string,\n props: Partial<Deprecation> & {fieldName?: string} = {},\n ): ConvertedType {\n const mapped = _convertType(type, parent || '', {isField: Boolean(props.fieldName)})\n const gqlName = props.fieldName || mapped.name\n const originalName = type.name\n const original = gqlName === originalName ? {} : {originalName: originalName}\n const crossDatasetReferenceMetadata = getCrossDatasetReferenceMetadata(type)\n\n return {\n ...getDeprecation(type.type),\n ...props,\n ...mapped,\n ...original,\n ...(crossDatasetReferenceMetadata && {crossDatasetReferenceMetadata}),\n }\n }\n\n function isField(def: ObjectField | SchemaType): def is ObjectField {\n return !('jsonType' in def) || !def.jsonType\n }\n\n function getObjectDefinition(def: ObjectField | SchemaType, parent?: string): ConvertedType {\n const isInline = isField(def)\n const isDocument = def.type ? def.type.name === 'document' : false\n const actualType = isInline ? def.type : def\n\n if (typeNeedsHoisting(actualType)) {\n throw createLiftTypeError(def.name, parent || '', actualType.name)\n }\n\n if (isInline && parent && def.type.name === 'object') {\n throw createLiftTypeError(def.name, parent)\n }\n\n if (parent && def.type && isTopLevelType(def.type.name)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return {type: getTypeName(def.type.name)} as any\n }\n\n const name = `${parent || ''}${getTypeName(def.name)}`\n const fields = collectFields(def)\n const firstUnprefixed = Math.max(\n 0,\n fields.findIndex((field) => field.name[0] !== '_'),\n )\n\n const keyField = createStringField('_key')\n\n fields.splice(firstUnprefixed, 0, keyField)\n\n if (!isDocument) {\n fields.splice(firstUnprefixed + 1, 0, createStringField('_type'))\n }\n\n const objectIsBlock = isBlockType(def)\n const objectFields = objectIsBlock\n ? fields.filter((field) => !disabledBlockFields.has(field.name))\n : fields\n\n return {\n description: getDescription(def),\n fields: objectFields.map((field) =>\n isArrayOfBlocks(field)\n ? buildRawField(field, name)\n : (convertType(field, name, {\n fieldName: field.name,\n ...getDeprecation(def),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }) as any),\n ),\n [internal]: {\n ...getDeprecation(def),\n },\n kind: 'Type',\n name,\n type: 'Object',\n }\n }\n\n function buildRawField(field: ObjectField, parentName: string) {\n return {\n ...convertType(field, parentName, {fieldName: `${field.name}Raw`}),\n isRawAlias: true,\n type: 'JSON',\n }\n }\n\n function createStringField(name: string): ObjectField {\n return {\n name,\n type: {\n jsonType: 'string',\n name: 'string',\n type: {jsonType: 'string', name: 'string', type: undefined},\n },\n }\n }\n\n function collectFields(def: ObjectField | SchemaType) {\n const fields = gatherAllFields(def)\n if (fields.length > 0) {\n return fields\n }\n\n const extended = getBaseType(sanitySchema, def.name as IntrinsicTypeName)\n return gatherAllFields(extended)\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function getReferenceDefinition(def: SchemaType): any {\n const base = {description: getDescription(def), isReference: true}\n const candidates = arrayify(gatherAllReferenceCandidates(def))\n if (candidates.length === 0) {\n throw new Error('No candidates for reference')\n }\n\n if (candidates.length === 1) {\n return {type: getTypeName(candidates[0].type.name), ...base}\n }\n\n const allTypeNames = candidates.map((c) => getTypeName(c.type.name))\n const targetTypes = [...new Set(allTypeNames)].toSorted()\n const name = targetTypes.join('Or')\n\n // Register the union type if we haven't seen it before\n if (!unionTypes.some((item) => item.name === name)) {\n unionTypes.push({\n kind: 'Union',\n name,\n types: targetTypes,\n })\n }\n\n return {\n type: name,\n ...base,\n }\n }\n\n function getArrayDefinition(\n def: ArraySchemaType,\n parent: string,\n options: {isField?: boolean} = {},\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): any {\n const base = {description: getDescription(def), kind: 'List'}\n const name = !options.isField && def.name ? {name: getTypeName(def.name)} : {}\n const candidates = def.type?.type && 'of' in def.type ? arrayify(def.type.of) : def.of\n\n return candidates.length === 1\n ? {\n children: getArrayChildDefinition(candidates[0], def),\n ...base,\n ...name,\n }\n : {\n children: getUnionDefinition(candidates, def, {grandParent: parent}),\n ...base,\n ...name,\n }\n }\n\n function getArrayChildDefinition(child: SchemaType, arrayDef: SchemaType) {\n if (typeNeedsHoisting(child)) {\n // Seems to be inline? Should be hoisted?\n throw createLiftTypeError(child.name, arrayDef.name)\n }\n\n if (isReference(child)) {\n return getReferenceDefinition(child)\n }\n\n // In the case of nested scalars, recurse (markdown -> longText -> text -> string)\n if (scalars.has(child.jsonType) && !scalars.has(child.name)) {\n return {type: mapFieldType(child)}\n }\n\n return {type: getTypeName(child.name)}\n }\n\n function typeNeedsHoisting(type: SchemaType & {isCustomized?: boolean}): boolean {\n if (type.name === 'object') {\n return true\n }\n\n if (type.jsonType === 'object' && !isTopLevelType(type.name)) {\n return true\n }\n\n if (type.isCustomized && !isTopLevelType(type.name)) {\n return true\n }\n\n if (type.isCustomized && disallowedCustomizedMembers.has(type.name)) {\n return true\n }\n\n return false\n }\n\n function getUnionDefinition(\n candidates: ObjectSchemaType[],\n parent: SchemaType,\n options: {grandParent?: string} = {},\n ) {\n if (candidates.length < 2) {\n throw new Error('Not enough candidates for a union type')\n }\n\n // #1482: When creating union definition do not get caught in recursion loop\n // for types that reference themselves\n const guardPathName = `${typeof parent === 'object' ? parent.name : parent}`\n if (unionRecursionGuards.has(guardPathName)) {\n return {}\n }\n\n const unionCacheKey = `${options.grandParent}-${guardPathName}-${candidates\n .map((c) => c.type?.name)\n .join('-')}`\n if (withUnionCache && unionDefinitionCache.has(unionCacheKey)) {\n return unionDefinitionCache.get(unionCacheKey)\n }\n\n try {\n unionRecursionGuards.add(guardPathName)\n\n for (const [i, def] of candidates.entries()) {\n if (typeNeedsHoisting(def)) {\n throw createLiftTypeArrayError(\n i,\n parent.name,\n def.type ? def.type.name : def.name,\n options.grandParent,\n )\n }\n }\n\n const converted = candidates.map((def) => convertType(def))\n\n const getName = (def: {type: string | {name: string}}): string =>\n typeof def.type === 'string' ? def.type : def.type.name\n\n // We might end up with union types being returned - these needs to be flattened\n // so that an ImageOr(PersonOrPet) becomes ImageOrPersonOrPet\n // eslint-disable-next-line unicorn/no-array-reduce\n const flattened = converted.reduce(\n (acc, candidate) => {\n const union = unionTypes.find((item) => item.name === candidate.type)\n return union\n ? // eslint-disable-next-line unicorn/prefer-spread\n acc.concat(union.types.map((type) => ({isReference: candidate.isReference, type})))\n : [...acc, candidate]\n },\n [] as {isReference?: boolean; name?: string; type: string | {name: string}}[],\n )\n\n let allCandidatesAreDocuments = true\n const refs: (string | {name: string})[] = []\n const inlineObjs: string[] = []\n const allTypeNames: string[] = []\n for (const def of flattened) {\n if (def.isReference) {\n refs.push(def.type)\n }\n if (!isReference) {\n inlineObjs.push(def.name || '')\n }\n\n const typeName = typeof def.type === 'string' ? def.type : def.type.name\n\n // Here we remove duplicates, as they might appear twice due to in-line usage of types as well as references\n if (def.name || def.type) {\n allTypeNames.push(def.isReference ? typeName : def.name || '')\n }\n\n const typeDef = sanityTypes.find((type) => type.name === getName(def))\n if (!typeDef || typeDef.type !== 'document') {\n allCandidatesAreDocuments = false\n }\n }\n\n const interfaces = allCandidatesAreDocuments ? ['Document'] : undefined\n const possibleTypes = [...new Set(allTypeNames)].toSorted()\n\n if (possibleTypes.length < 2) {\n throw new Error(`Not enough types for a union type. Parent: ${parent.name}`)\n }\n\n const name = possibleTypes.join('Or')\n\n if (!unionTypes.some((item) => item.name === name)) {\n unionTypes.push({\n interfaces,\n kind: 'Union',\n name,\n types: possibleTypes,\n })\n }\n\n const references = refs.length > 0 ? refs : undefined\n const inlineObjects = inlineObjs.length > 0 ? inlineObjs : undefined\n\n const unionDefinition = isReference(parent)\n ? {references, type: name}\n : {inlineObjects, references, type: name}\n\n unionDefinitionCache.set(unionCacheKey, unionDefinition)\n return unionDefinition\n } finally {\n unionRecursionGuards.delete(guardPathName)\n }\n }\n\n function getDocumentDefinition(def: ObjectSchemaType) {\n const objectDef = getObjectDefinition(def)\n const fields = [...getDocumentInterfaceFields(def), ...objectDef.fields]\n\n return {...objectDef, fields, interfaces: ['Document']}\n }\n\n function getDocumentInterfaceDefinition(): ConvertedInterface {\n return {\n description: 'A Sanity document',\n fields: getDocumentInterfaceFields(),\n kind: 'Interface',\n name: 'Document',\n }\n }\n\n function getDocumentInterfaceFields(type?: ObjectSchemaType): ConvertedFieldDefinition[] {\n const isNullable = typeof nonNullDocumentFields === 'boolean' ? !nonNullDocumentFields : true\n return [\n {\n description: 'Document ID',\n fieldName: '_id',\n isNullable,\n type: 'ID',\n ...getDeprecation(type),\n },\n {\n description: 'Document type',\n fieldName: '_type',\n isNullable,\n type: 'String',\n ...getDeprecation(type),\n },\n {\n description: 'Date the document was created',\n fieldName: '_createdAt',\n isNullable,\n type: 'Datetime',\n ...getDeprecation(type),\n },\n {\n description: 'Date the document was last modified',\n fieldName: '_updatedAt',\n isNullable,\n type: 'Datetime',\n ...getDeprecation(type),\n },\n {\n description: 'Current document revision',\n fieldName: '_rev',\n isNullable,\n type: 'String',\n ...getDeprecation(type),\n },\n ]\n }\n\n function arrayify(thing: unknown) {\n if (Array.isArray(thing)) {\n return thing\n }\n\n return thing === null || thing === undefined ? [] : [thing]\n }\n\n function hasValidationFlag(\n field: ObjectField | ObjectFieldType | SchemaType,\n flag: string,\n ): boolean {\n return (\n 'validation' in field &&\n Array.isArray(field.validation) &&\n field.validation.some(\n (rule) => rule && '_rules' in rule && rule._rules.some((item) => item.flag === flag),\n )\n )\n }\n\n function getDescription(type: ObjectField | SchemaType): string | undefined {\n const description = type.type && type.type.description\n return typeof description === 'string' ? description : undefined\n }\n\n function gatherAllReferenceCandidates(type: SchemaType): ObjectSchemaType[] {\n const allFields = gatherReferenceCandidates(type)\n return uniqBy(allFields, 'name')\n }\n\n function gatherReferenceCandidates(type: SchemaType): ObjectSchemaType[] {\n const refTo = 'to' in type ? type.to : []\n return 'type' in type && type.type ? [...gatherReferenceCandidates(type.type), ...refTo] : refTo\n }\n\n function gatherAllFields(type: ObjectField | SchemaType) {\n const allFields = gatherFields(type)\n return uniqBy(allFields, 'name')\n }\n\n function gatherFields(type: ObjectField | SchemaType): ObjectField[] {\n if ('fields' in type) {\n return type.type ? [...gatherFields(type.type), ...type.fields] : type.fields\n }\n\n return []\n }\n\n function hasFieldsLikeShape(type: unknown): type is {fields: unknown} {\n return typeof type === 'object' && type !== null && 'fields' in type\n }\n\n function hasArrayOfFields(type: unknown): type is {fields: ObjectField[]} {\n return hasFieldsLikeShape(type) && Array.isArray(type.fields)\n }\n\n function hasFields(type: ObjectField | SchemaType): boolean {\n if (hasArrayOfFields(type)) {\n return gatherAllFields(type).length > 0\n }\n\n return 'type' in type && type.type ? hasFields(type.type) : false\n }\n}\n\nfunction createLiftTypeArrayError(\n index: number,\n parent: string,\n inlineType = 'object',\n grandParent = '',\n) {\n const helpUrl = generateHelpUrl(SCHEMA_LIFT_ANONYMOUS_OBJECT_TYPE)\n const context = [grandParent, parent].filter(Boolean).join('/')\n return new HelpfulError(\n oneline`\n Encountered anonymous inline ${inlineType} at index ${index} for type/field ${context}.\n To use this type with GraphQL you will need to create a top-level schema type for it.\n See ${helpUrl}`,\n helpUrl,\n )\n}\n\nfunction createLiftTypeError(typeName: string, parent: string, inlineType = 'object') {\n const helpUrl = generateHelpUrl(SCHEMA_LIFT_ANONYMOUS_OBJECT_TYPE)\n return new HelpfulError(\n oneline`\n Encountered anonymous inline ${inlineType} \"${typeName}\" for field/type \"${parent}\".\n To use this field with GraphQL you will need to create a top-level schema type for it.\n See ${helpUrl}`,\n helpUrl,\n )\n}\n\nclass HelpfulError extends Error {\n helpUrl?: string\n\n constructor(message: string, helpUrl?: string) {\n super(message)\n this.name = 'HelpfulError'\n this.helpUrl = helpUrl\n }\n}\n\nfunction getDeprecation(type?: ObjectField | ObjectFieldType | SchemaType): Partial<Deprecation> {\n return isDeprecationConfiguration(type)\n ? {\n deprecationReason: type.deprecated.reason,\n }\n : {}\n}\n"],"names":["generateHelpUrl","Schema","isDeprecationConfiguration","startCase","uniqBy","oneline","SCHEMA_LIFT_ANONYMOUS_OBJECT_TYPE","SchemaError","internal","skipTypes","Set","allowedJsonTypes","disallowedCustomizedMembers","disabledBlockFields","scalars","getBaseType","baseSchema","typeName","compile","parent","types","name","to","type","get","options","hotspot","getTypeName","str","replaceAll","isBaseType","jsonType","has","isReference","isBlockType","typeDef","hasBlockParent","Boolean","isArrayOfBlocks","of","some","item","isType","isCrossDatasetReference","getCrossDatasetReferenceMetadata","getTypeNames","map","t","filter","getDataset","dataset","typeNames","extractFromSanitySchema","sanitySchema","extractOptions","nonNullDocumentFields","withUnionCache","unionRecursionGuards","unionDefinitionCache","Map","hasErrors","_validation","group","problems","problem","severity","Array","isArray","sanityTypes","_original","unionTypes","schemaType","undefined","convertedType","convertType","push","withUnions","interfaces","getDocumentInterfaceDefinition","isTopLevelType","includes","mapFieldType","field","Error","isScalar","hasValidationFlag","isArrayType","_convertType","getReferenceDefinition","getArrayDefinition","getDocumentDefinition","getObjectDefinition","hasFields","description","getDescription","props","mapped","isField","fieldName","gqlName","originalName","original","crossDatasetReferenceMetadata","getDeprecation","def","isInline","isDocument","actualType","typeNeedsHoisting","createLiftTypeError","fields","collectFields","firstUnprefixed","Math","max","findIndex","keyField","createStringField","splice","objectIsBlock","objectFields","buildRawField","kind","parentName","isRawAlias","gatherAllFields","length","extended","base","candidates","arrayify","gatherAllReferenceCandidates","allTypeNames","c","targetTypes","toSorted","join","children","getArrayChildDefinition","getUnionDefinition","grandParent","child","arrayDef","isCustomized","guardPathName","unionCacheKey","add","i","entries","createLiftTypeArrayError","converted","getName","flattened","reduce","acc","candidate","union","find","concat","allCandidatesAreDocuments","refs","inlineObjs","possibleTypes","references","inlineObjects","unionDefinition","set","delete","objectDef","getDocumentInterfaceFields","isNullable","thing","flag","validation","rule","_rules","allFields","gatherReferenceCandidates","refTo","gatherFields","hasFieldsLikeShape","hasArrayOfFields","index","inlineType","helpUrl","context","HelpfulError","message","deprecationReason","deprecated","reason"],"mappings":"AAAA,sDAAsD,GACtD,SAAQA,eAAe,QAAO,4BAA2B;AACzD,SAAQC,MAAM,QAAO,iBAAgB;AACrC,SAKEC,0BAA0B,QAMrB,gBAAe;AACtB,OAAOC,eAAe,yBAAwB;AAC9C,OAAOC,YAAY,sBAAqB;AACxC,SAAQC,OAAO,QAAO,UAAS;AAE/B,SAAQC,iCAAiC,QAAO,gBAAe;AAC/D,SAAQC,WAAW,QAAO,mBAAkB;AAC5C,SAOEC,QAAQ,QACH,aAAY;AAEnB,MAAMC,YAAY,IAAIC,IAAI;IAAC;IAAY;CAAY;AACnD,MAAMC,mBAAmB,IAAID,IAAI;IAAC;IAAS;CAAS;AACpD,MAAME,8BAA8B,IAAIF,IAAI;IAAC;IAAS;IAAS;IAAQ;IAAS;CAAS;AACzF,MAAMG,sBAAsB,IAAIH,IAAI;IAAC;CAAW;AAChD,MAAMI,UAAU,IAAIJ,IAAI;IAAC;IAAW;IAAU;CAAS;AAEvD,SAASK,YAAYC,UAA0B,EAAEC,QAA2B;IAC1E,IAAIA,aAAa,yBAAyB;QACxC,OAAOhB,OAAOiB,OAAO,CAAC;YACpBC,QAAQH;YACRI,OAAO;gBACL;oBACEC,MAAM,CAAC,eAAe,CAAC;oBACvB,0DAA0D;oBAC1DC,IAAI;wBAAC;4BAACC,MAAM;wBAAmB;qBAAE;oBACjCA,MAAM;gBACR;aACD;QACH,GAAGC,GAAG,CAAC;IACT;IACA,IAAIP,aAAa,2BAA2B;QAC1C,OAAOhB,OAAOiB,OAAO,CAAC;YACpBC,QAAQH;YACRI,OAAO;gBACL;oBACEC,MAAM,CAAC,eAAe,CAAC;oBACvB,0DAA0D;oBAC1DC,IAAI;wBAAC;4BAACC,MAAM;wBAAmB;qBAAE;oBACjCA,MAAM;gBACR;aACD;QACH,GAAGC,GAAG,CAAC;IACT;IAEA,OAAOvB,OAAOiB,OAAO,CAAC;QACpBC,QAAQH;QACRI,OAAO;YAAC;gBAACC,MAAM,CAAC,eAAe,CAAC;gBAAEI,SAAS;oBAACC,SAAS;gBAAI;gBAAGH,MAAMN;YAAQ;SAAE;IAC9E,GAAGO,GAAG,CAAC;AACT;AAEA,SAASG,YAAYC,GAAW;IAC9B,MAAMP,OAAOlB,UAAUyB,KAAKC,UAAU,CAAC,QAAQ;IAC/C,OAAOR,SAAS,WAAW,UAAUA;AACvC;AAEA,SAASS,WAAWP,IAAgB;IAClC,OACEA,KAAKF,IAAI,KAAKE,KAAKQ,QAAQ,IAC3BpB,iBAAiBqB,GAAG,CAACT,KAAKQ,QAAQ,KAClC,CAACtB,UAAUuB,GAAG,CAACT,KAAKF,IAAI,KACxB,CAACY,YAAYV;AAEjB;AAEA,SAASW,YAAYC,OAAiC;IACpD,IAAIA,QAAQd,IAAI,KAAK,SAAS;QAC5B,OAAO;IACT;IAEA,IAAIc,QAAQZ,IAAI,EAAE;QAChB,OAAOW,YAAYC,QAAQZ,IAAI;IACjC;IAEA,OAAO;AACT;AAEA,SAASa,eAAeD,OAAmB;IACzC,IAAIA,QAAQZ,IAAI,IAAIY,QAAQZ,IAAI,CAACF,IAAI,KAAK,WAAW,CAACc,QAAQZ,IAAI,CAACA,IAAI,EAAE;QACvE,OAAO;IACT;IAEA,OAAOc,QAAQF,QAAQZ,IAAI,IAAIa,eAAeD,QAAQZ,IAAI;AAC5D;AAEA,SAASe,gBAAgBH,OAAiC;IACxD,MAAMZ,OAAOY,QAAQZ,IAAI,IAAIY;IAC7B,IAAI,CAAE,CAAA,cAAcZ,IAAG,KAAMA,KAAKQ,QAAQ,KAAK,SAAS;QACtD,OAAO;IACT;IAEA,OAAO,AAACR,CAAAA,KAAKgB,EAAE,IAAI,EAAE,AAAD,EAAGC,IAAI,CAAC,CAACC,OAASL,eAAeK;AACvD;AAEA,SAASC,OAAOP,OAAmD,EAAElB,QAAgB;IACnF,IAAIM,OAA+DY;IACnE,MAAOZ,KAAM;QACX,IAAIA,KAAKF,IAAI,KAAKJ,YAAaM,KAAKA,IAAI,IAAIA,KAAKA,IAAI,CAACF,IAAI,KAAKJ,UAAW;YACxE,OAAO;QACT;QAEAM,OAAOA,KAAKA,IAAI;IAClB;IACA,OAAO;AACT;AAEA,SAASU,YACPE,OAAmD;IAEnD,OAAOO,OAAOP,SAAS;AACzB;AAEA,SAASQ,wBACPR,OAAqF;IAErF,OAAOO,OAAOP,SAAS;AACzB;AAEA,SAASS,iCACPT,OAAqF;IAErF,IAAI,CAACQ,wBAAwBR,UAAU;IAEvC,SAASU,aACPtB,IAA8F;QAE9F,IAAI,CAACA,MAAM;QACX,IAAI,CAAE,CAAA,QAAQA,IAAG,GAAI,OAAOsB,aAAatB,KAAKA,IAAI;QAClD,OAAOA,KAAKD,EAAE,CAACwB,GAAG,CAAC,CAACC,IAAMA,EAAExB,IAAI,EAAEyB,MAAM,CAAC,CAACD,IAAmB,OAAOA,MAAM;IAC5E;IAEA,SAASE,WACP1B,IAA8F;QAE9F,IAAI,CAACA,MAAM;QACX,IAAI,aAAaA,QAAQ,OAAOA,KAAK2B,OAAO,KAAK,UAAU,OAAO3B,KAAK2B,OAAO;QAC9E,IAAI3B,KAAKA,IAAI,EAAE,OAAO0B,WAAW1B,KAAKA,IAAI;IAC5C;IAEA,MAAM4B,YAAYN,aAAaV;IAC/B,IAAI,CAACgB,WAAW;IAEhB,MAAMD,UAAUD,WAAWd;IAC3B,IAAI,OAAOe,YAAY,UAAU;IAEjC,OAAO;QAACA;QAASC;IAAS;AAC5B;AAEA,OAAO,SAASC,wBACdC,YAA4B,EAC5BC,iBAA8E,CAAC,CAAC;IAEhF,MAAM,EAACC,qBAAqB,EAAEC,cAAc,EAAC,GAAGF;IAChD,MAAMG,uBAAuB,IAAI/C;IACjC,8DAA8D;IAC9D,MAAMgD,uBAAuB,IAAIC;IACjC,MAAMC,YACJP,aAAaQ,WAAW,IACxBR,aAAaQ,WAAW,CAACrB,IAAI,CAAC,CAACsB,QAC7BA,MAAMC,QAAQ,CAACvB,IAAI,CAAC,CAACwB,UAAYA,QAAQC,QAAQ,KAAK;IAG1D,IAAIL,aAAaM,MAAMC,OAAO,CAACd,aAAaQ,WAAW,GAAG;QACxD,MAAM,IAAItD,YAAY8C,aAAaQ,WAAW;IAChD;IAEA,MAAMO,cAAcf,aAAagB,SAAS,EAAEjD,SAAS,EAAE;IACvD,MAAM+B,YAAYE,aAAaR,YAAY;IAC3C,MAAMyB,aAA+B,EAAE;IACvC,MAAMlD,QAAyB,EAAE;IAEjC,KAAK,MAAMH,YAAYkC,UAAW;QAChC,MAAMoB,aAAalB,aAAa7B,GAAG,CAACP;QACpC,IAAIsD,eAAeC,WAAW;YAC5B;QACF;QACA,IAAI,CAAC1C,WAAWyC,aAAa;YAC3B;QACF;QAEA,MAAME,gBAAgBC,YAAYH;QAClCnD,MAAMuD,IAAI,CAACF;IACb;IAEA,MAAMG,aAAa;WAAIxD;WAAUkD;KAAW;IAC5C,OAAO;QAACO,YAAY;YAACC;SAAiC;QAAE1D,OAAOwD;IAAU;IAEzE,SAASG,eAAe9D,QAAgB;QACtC,OAAOkC,UAAU6B,QAAQ,CAAC/D;IAC5B;IAEA,SAASgE,aAAaC,KAAiD;QACrE,IAAI,CAACA,MAAM3D,IAAI,EAAE;YACf,MAAM,IAAI4D,MAAM;QAClB;QAEA,MAAMpD,WAAW,cAAcmD,QAAQA,MAAMnD,QAAQ,GAAG;QACxD,MAAMqD,WAAWtE,QAAQkB,GAAG,CAACD;QAC7B,IAAIqD,YAAYrD,aAAa,UAAU;YACrC,OAAOsD,kBAAkBH,OAAO,aAAa,QAAQ;QACvD,OAAO,IAAIE,UAAU;YACnB,OAAOzD,YAAYI;QACrB;QAEA,MAAMR,OAAO2D,MAAM3D,IAAI,CAACA,IAAI,IAAI2D,MAAM3D,IAAI;QAE1C,kFAAkF;QAClF,IAAIA,KAAKA,IAAI,EAAE;YACb,OAAO0D,aAAa1D;QACtB;QAEA,OAAQA,KAAKF,IAAI;YACf,KAAK;gBAAU;oBACb,OAAOgE,kBAAkBH,OAAO,aAAa,QAAQ;gBACvD;YACA;gBAAS;oBACP,OAAOvD,YAAYJ,KAAKF,IAAI;gBAC9B;QACF;IACF;IAEA,SAASiE,YAAY/D,IAA8B;QACjD,OAAOc,QACL,AAAC,cAAcd,QAAQA,KAAKQ,QAAQ,KAAK,WACxCR,KAAKA,IAAI,IAAIA,KAAKA,IAAI,CAACQ,QAAQ,KAAK;IAEzC;IAEA,SAASwD,aACPhE,IAA8B,EAC9BJ,MAAc,EACdM,OAA4B;QAE5B,IAAIJ;QACJ,IAAIE,KAAKA,IAAI,EAAE;YACbF,OAAOE,KAAKA,IAAI,CAACF,IAAI;QACvB,OAAO,IAAI,cAAcE,MAAM;YAC7BF,OAAOE,KAAKQ,QAAQ;QACtB;QAEA,IAAIE,YAAYV,OAAO;YACrB,OAAOiE,uBAAuBjE;QAChC;QAEA,IAAI+D,YAAY/D,OAAO;YACrB,OAAOkE,mBAAmBlE,MAAMJ,QAAQM;QAC1C;QAEA,IAAIJ,SAAS,YAAY;YACvB,OAAOqE,sBAAsBnE;QAC/B;QAEA,IAAIF,SAAS,WAAWA,SAAS,UAAU;YACzC,OAAOsE,oBAAoBpE,MAAMJ;QACnC;QAEA,IAAIyE,UAAUrE,OAAO;YACnB,OAAOoE,oBAAoBpE,MAAMJ;QACnC;QAEA,OAAO;YACL0E,aAAaC,eAAevE;YAC5BA,MAAM0D,aAAa1D;QAErB;IACF;IAEA,SAASmD,YACPnD,IAA8B,EAC9BJ,MAAe,EACf4E,QAAqD,CAAC,CAAC;QAEvD,MAAMC,SAAST,aAAahE,MAAMJ,UAAU,IAAI;YAAC8E,SAAS5D,QAAQ0D,MAAMG,SAAS;QAAC;QAClF,MAAMC,UAAUJ,MAAMG,SAAS,IAAIF,OAAO3E,IAAI;QAC9C,MAAM+E,eAAe7E,KAAKF,IAAI;QAC9B,MAAMgF,WAAWF,YAAYC,eAAe,CAAC,IAAI;YAACA,cAAcA;QAAY;QAC5E,MAAME,gCAAgC1D,iCAAiCrB;QAEvE,OAAO;YACL,GAAGgF,eAAehF,KAAKA,IAAI,CAAC;YAC5B,GAAGwE,KAAK;YACR,GAAGC,MAAM;YACT,GAAGK,QAAQ;YACX,GAAIC,iCAAiC;gBAACA;YAA6B,CAAC;QACtE;IACF;IAEA,SAASL,QAAQO,GAA6B;QAC5C,OAAO,CAAE,CAAA,cAAcA,GAAE,KAAM,CAACA,IAAIzE,QAAQ;IAC9C;IAEA,SAAS4D,oBAAoBa,GAA6B,EAAErF,MAAe;QACzE,MAAMsF,WAAWR,QAAQO;QACzB,MAAME,aAAaF,IAAIjF,IAAI,GAAGiF,IAAIjF,IAAI,CAACF,IAAI,KAAK,aAAa;QAC7D,MAAMsF,aAAaF,WAAWD,IAAIjF,IAAI,GAAGiF;QAEzC,IAAII,kBAAkBD,aAAa;YACjC,MAAME,oBAAoBL,IAAInF,IAAI,EAAEF,UAAU,IAAIwF,WAAWtF,IAAI;QACnE;QAEA,IAAIoF,YAAYtF,UAAUqF,IAAIjF,IAAI,CAACF,IAAI,KAAK,UAAU;YACpD,MAAMwF,oBAAoBL,IAAInF,IAAI,EAAEF;QACtC;QAEA,IAAIA,UAAUqF,IAAIjF,IAAI,IAAIwD,eAAeyB,IAAIjF,IAAI,CAACF,IAAI,GAAG;YACvD,8DAA8D;YAC9D,OAAO;gBAACE,MAAMI,YAAY6E,IAAIjF,IAAI,CAACF,IAAI;YAAC;QAC1C;QAEA,MAAMA,OAAO,GAAGF,UAAU,KAAKQ,YAAY6E,IAAInF,IAAI,GAAG;QACtD,MAAMyF,SAASC,cAAcP;QAC7B,MAAMQ,kBAAkBC,KAAKC,GAAG,CAC9B,GACAJ,OAAOK,SAAS,CAAC,CAACjC,QAAUA,MAAM7D,IAAI,CAAC,EAAE,KAAK;QAGhD,MAAM+F,WAAWC,kBAAkB;QAEnCP,OAAOQ,MAAM,CAACN,iBAAiB,GAAGI;QAElC,IAAI,CAACV,YAAY;YACfI,OAAOQ,MAAM,CAACN,kBAAkB,GAAG,GAAGK,kBAAkB;QAC1D;QAEA,MAAME,gBAAgBrF,YAAYsE;QAClC,MAAMgB,eAAeD,gBACjBT,OAAO9D,MAAM,CAAC,CAACkC,QAAU,CAACrE,oBAAoBmB,GAAG,CAACkD,MAAM7D,IAAI,KAC5DyF;QAEJ,OAAO;YACLjB,aAAaC,eAAeU;YAC5BM,QAAQU,aAAa1E,GAAG,CAAC,CAACoC,QACxB5C,gBAAgB4C,SACZuC,cAAcvC,OAAO7D,QACpBqD,YAAYQ,OAAO7D,MAAM;oBACxB6E,WAAWhB,MAAM7D,IAAI;oBACrB,GAAGkF,eAAeC,IAAI;gBAExB;YAEN,CAAChG,SAAS,EAAE;gBACV,GAAG+F,eAAeC,IAAI;YACxB;YACAkB,MAAM;YACNrG;YACAE,MAAM;QACR;IACF;IAEA,SAASkG,cAAcvC,KAAkB,EAAEyC,UAAkB;QAC3D,OAAO;YACL,GAAGjD,YAAYQ,OAAOyC,YAAY;gBAACzB,WAAW,GAAGhB,MAAM7D,IAAI,CAAC,GAAG,CAAC;YAAA,EAAE;YAClEuG,YAAY;YACZrG,MAAM;QACR;IACF;IAEA,SAAS8F,kBAAkBhG,IAAY;QACrC,OAAO;YACLA;YACAE,MAAM;gBACJQ,UAAU;gBACVV,MAAM;gBACNE,MAAM;oBAACQ,UAAU;oBAAUV,MAAM;oBAAUE,MAAMiD;gBAAS;YAC5D;QACF;IACF;IAEA,SAASuC,cAAcP,GAA6B;QAClD,MAAMM,SAASe,gBAAgBrB;QAC/B,IAAIM,OAAOgB,MAAM,GAAG,GAAG;YACrB,OAAOhB;QACT;QAEA,MAAMiB,WAAWhH,YAAYsC,cAAcmD,IAAInF,IAAI;QACnD,OAAOwG,gBAAgBE;IACzB;IAEA,8DAA8D;IAC9D,SAASvC,uBAAuBgB,GAAe;QAC7C,MAAMwB,OAAO;YAACnC,aAAaC,eAAeU;YAAMvE,aAAa;QAAI;QACjE,MAAMgG,aAAaC,SAASC,6BAA6B3B;QACzD,IAAIyB,WAAWH,MAAM,KAAK,GAAG;YAC3B,MAAM,IAAI3C,MAAM;QAClB;QAEA,IAAI8C,WAAWH,MAAM,KAAK,GAAG;YAC3B,OAAO;gBAACvG,MAAMI,YAAYsG,UAAU,CAAC,EAAE,CAAC1G,IAAI,CAACF,IAAI;gBAAG,GAAG2G,IAAI;YAAA;QAC7D;QAEA,MAAMI,eAAeH,WAAWnF,GAAG,CAAC,CAACuF,IAAM1G,YAAY0G,EAAE9G,IAAI,CAACF,IAAI;QAClE,MAAMiH,cAAc;eAAI,IAAI5H,IAAI0H;SAAc,CAACG,QAAQ;QACvD,MAAMlH,OAAOiH,YAAYE,IAAI,CAAC;QAE9B,uDAAuD;QACvD,IAAI,CAAClE,WAAW9B,IAAI,CAAC,CAACC,OAASA,KAAKpB,IAAI,KAAKA,OAAO;YAClDiD,WAAWK,IAAI,CAAC;gBACd+C,MAAM;gBACNrG;gBACAD,OAAOkH;YACT;QACF;QAEA,OAAO;YACL/G,MAAMF;YACN,GAAG2G,IAAI;QACT;IACF;IAEA,SAASvC,mBACPe,GAAoB,EACpBrF,MAAc,EACdM,UAA+B,CAAC,CAAC;QAGjC,MAAMuG,OAAO;YAACnC,aAAaC,eAAeU;YAAMkB,MAAM;QAAM;QAC5D,MAAMrG,OAAO,CAACI,QAAQwE,OAAO,IAAIO,IAAInF,IAAI,GAAG;YAACA,MAAMM,YAAY6E,IAAInF,IAAI;QAAC,IAAI,CAAC;QAC7E,MAAM4G,aAAazB,IAAIjF,IAAI,EAAEA,QAAQ,QAAQiF,IAAIjF,IAAI,GAAG2G,SAAS1B,IAAIjF,IAAI,CAACgB,EAAE,IAAIiE,IAAIjE,EAAE;QAEtF,OAAO0F,WAAWH,MAAM,KAAK,IACzB;YACEW,UAAUC,wBAAwBT,UAAU,CAAC,EAAE,EAAEzB;YACjD,GAAGwB,IAAI;YACP,GAAG3G,IAAI;QACT,IACA;YACEoH,UAAUE,mBAAmBV,YAAYzB,KAAK;gBAACoC,aAAazH;YAAM;YAClE,GAAG6G,IAAI;YACP,GAAG3G,IAAI;QACT;IACN;IAEA,SAASqH,wBAAwBG,KAAiB,EAAEC,QAAoB;QACtE,IAAIlC,kBAAkBiC,QAAQ;YAC5B,yCAAyC;YACzC,MAAMhC,oBAAoBgC,MAAMxH,IAAI,EAAEyH,SAASzH,IAAI;QACrD;QAEA,IAAIY,YAAY4G,QAAQ;YACtB,OAAOrD,uBAAuBqD;QAChC;QAEA,kFAAkF;QAClF,IAAI/H,QAAQkB,GAAG,CAAC6G,MAAM9G,QAAQ,KAAK,CAACjB,QAAQkB,GAAG,CAAC6G,MAAMxH,IAAI,GAAG;YAC3D,OAAO;gBAACE,MAAM0D,aAAa4D;YAAM;QACnC;QAEA,OAAO;YAACtH,MAAMI,YAAYkH,MAAMxH,IAAI;QAAC;IACvC;IAEA,SAASuF,kBAAkBrF,IAA2C;QACpE,IAAIA,KAAKF,IAAI,KAAK,UAAU;YAC1B,OAAO;QACT;QAEA,IAAIE,KAAKQ,QAAQ,KAAK,YAAY,CAACgD,eAAexD,KAAKF,IAAI,GAAG;YAC5D,OAAO;QACT;QAEA,IAAIE,KAAKwH,YAAY,IAAI,CAAChE,eAAexD,KAAKF,IAAI,GAAG;YACnD,OAAO;QACT;QAEA,IAAIE,KAAKwH,YAAY,IAAInI,4BAA4BoB,GAAG,CAACT,KAAKF,IAAI,GAAG;YACnE,OAAO;QACT;QAEA,OAAO;IACT;IAEA,SAASsH,mBACPV,UAA8B,EAC9B9G,MAAkB,EAClBM,UAAkC,CAAC,CAAC;QAEpC,IAAIwG,WAAWH,MAAM,GAAG,GAAG;YACzB,MAAM,IAAI3C,MAAM;QAClB;QAEA,4EAA4E;QAC5E,sCAAsC;QACtC,MAAM6D,gBAAgB,GAAG,OAAO7H,WAAW,WAAWA,OAAOE,IAAI,GAAGF,QAAQ;QAC5E,IAAIsC,qBAAqBzB,GAAG,CAACgH,gBAAgB;YAC3C,OAAO,CAAC;QACV;QAEA,MAAMC,gBAAgB,GAAGxH,QAAQmH,WAAW,CAAC,CAAC,EAAEI,cAAc,CAAC,EAAEf,WAC9DnF,GAAG,CAAC,CAACuF,IAAMA,EAAE9G,IAAI,EAAEF,MACnBmH,IAAI,CAAC,MAAM;QACd,IAAIhF,kBAAkBE,qBAAqB1B,GAAG,CAACiH,gBAAgB;YAC7D,OAAOvF,qBAAqBlC,GAAG,CAACyH;QAClC;QAEA,IAAI;YACFxF,qBAAqByF,GAAG,CAACF;YAEzB,KAAK,MAAM,CAACG,GAAG3C,IAAI,IAAIyB,WAAWmB,OAAO,GAAI;gBAC3C,IAAIxC,kBAAkBJ,MAAM;oBAC1B,MAAM6C,yBACJF,GACAhI,OAAOE,IAAI,EACXmF,IAAIjF,IAAI,GAAGiF,IAAIjF,IAAI,CAACF,IAAI,GAAGmF,IAAInF,IAAI,EACnCI,QAAQmH,WAAW;gBAEvB;YACF;YAEA,MAAMU,YAAYrB,WAAWnF,GAAG,CAAC,CAAC0D,MAAQ9B,YAAY8B;YAEtD,MAAM+C,UAAU,CAAC/C,MACf,OAAOA,IAAIjF,IAAI,KAAK,WAAWiF,IAAIjF,IAAI,GAAGiF,IAAIjF,IAAI,CAACF,IAAI;YAEzD,gFAAgF;YAChF,6DAA6D;YAC7D,mDAAmD;YACnD,MAAMmI,YAAYF,UAAUG,MAAM,CAChC,CAACC,KAAKC;gBACJ,MAAMC,QAAQtF,WAAWuF,IAAI,CAAC,CAACpH,OAASA,KAAKpB,IAAI,KAAKsI,UAAUpI,IAAI;gBACpE,OAAOqI,QAEHF,IAAII,MAAM,CAACF,MAAMxI,KAAK,CAAC0B,GAAG,CAAC,CAACvB,OAAU,CAAA;wBAACU,aAAa0H,UAAU1H,WAAW;wBAAEV;oBAAI,CAAA,MAC/E;uBAAImI;oBAAKC;iBAAU;YACzB,GACA,EAAE;YAGJ,IAAII,4BAA4B;YAChC,MAAMC,OAAoC,EAAE;YAC5C,MAAMC,aAAuB,EAAE;YAC/B,MAAM7B,eAAyB,EAAE;YACjC,KAAK,MAAM5B,OAAOgD,UAAW;gBAC3B,IAAIhD,IAAIvE,WAAW,EAAE;oBACnB+H,KAAKrF,IAAI,CAAC6B,IAAIjF,IAAI;gBACpB;gBACA,IAAI,CAACU,aAAa;oBAChBgI,WAAWtF,IAAI,CAAC6B,IAAInF,IAAI,IAAI;gBAC9B;gBAEA,MAAMJ,WAAW,OAAOuF,IAAIjF,IAAI,KAAK,WAAWiF,IAAIjF,IAAI,GAAGiF,IAAIjF,IAAI,CAACF,IAAI;gBAExE,4GAA4G;gBAC5G,IAAImF,IAAInF,IAAI,IAAImF,IAAIjF,IAAI,EAAE;oBACxB6G,aAAazD,IAAI,CAAC6B,IAAIvE,WAAW,GAAGhB,WAAWuF,IAAInF,IAAI,IAAI;gBAC7D;gBAEA,MAAMc,UAAUiC,YAAYyF,IAAI,CAAC,CAACtI,OAASA,KAAKF,IAAI,KAAKkI,QAAQ/C;gBACjE,IAAI,CAACrE,WAAWA,QAAQZ,IAAI,KAAK,YAAY;oBAC3CwI,4BAA4B;gBAC9B;YACF;YAEA,MAAMlF,aAAakF,4BAA4B;gBAAC;aAAW,GAAGvF;YAC9D,MAAM0F,gBAAgB;mBAAI,IAAIxJ,IAAI0H;aAAc,CAACG,QAAQ;YAEzD,IAAI2B,cAAcpC,MAAM,GAAG,GAAG;gBAC5B,MAAM,IAAI3C,MAAM,CAAC,2CAA2C,EAAEhE,OAAOE,IAAI,EAAE;YAC7E;YAEA,MAAMA,OAAO6I,cAAc1B,IAAI,CAAC;YAEhC,IAAI,CAAClE,WAAW9B,IAAI,CAAC,CAACC,OAASA,KAAKpB,IAAI,KAAKA,OAAO;gBAClDiD,WAAWK,IAAI,CAAC;oBACdE;oBACA6C,MAAM;oBACNrG;oBACAD,OAAO8I;gBACT;YACF;YAEA,MAAMC,aAAaH,KAAKlC,MAAM,GAAG,IAAIkC,OAAOxF;YAC5C,MAAM4F,gBAAgBH,WAAWnC,MAAM,GAAG,IAAImC,aAAazF;YAE3D,MAAM6F,kBAAkBpI,YAAYd,UAChC;gBAACgJ;gBAAY5I,MAAMF;YAAI,IACvB;gBAAC+I;gBAAeD;gBAAY5I,MAAMF;YAAI;YAE1CqC,qBAAqB4G,GAAG,CAACrB,eAAeoB;YACxC,OAAOA;QACT,SAAU;YACR5G,qBAAqB8G,MAAM,CAACvB;QAC9B;IACF;IAEA,SAAStD,sBAAsBc,GAAqB;QAClD,MAAMgE,YAAY7E,oBAAoBa;QACtC,MAAMM,SAAS;eAAI2D,2BAA2BjE;eAASgE,UAAU1D,MAAM;SAAC;QAExE,OAAO;YAAC,GAAG0D,SAAS;YAAE1D;YAAQjC,YAAY;gBAAC;aAAW;QAAA;IACxD;IAEA,SAASC;QACP,OAAO;YACLe,aAAa;YACbiB,QAAQ2D;YACR/C,MAAM;YACNrG,MAAM;QACR;IACF;IAEA,SAASoJ,2BAA2BlJ,IAAuB;QACzD,MAAMmJ,aAAa,OAAOnH,0BAA0B,YAAY,CAACA,wBAAwB;QACzF,OAAO;YACL;gBACEsC,aAAa;gBACbK,WAAW;gBACXwE;gBACAnJ,MAAM;gBACN,GAAGgF,eAAehF,KAAK;YACzB;YACA;gBACEsE,aAAa;gBACbK,WAAW;gBACXwE;gBACAnJ,MAAM;gBACN,GAAGgF,eAAehF,KAAK;YACzB;YACA;gBACEsE,aAAa;gBACbK,WAAW;gBACXwE;gBACAnJ,MAAM;gBACN,GAAGgF,eAAehF,KAAK;YACzB;YACA;gBACEsE,aAAa;gBACbK,WAAW;gBACXwE;gBACAnJ,MAAM;gBACN,GAAGgF,eAAehF,KAAK;YACzB;YACA;gBACEsE,aAAa;gBACbK,WAAW;gBACXwE;gBACAnJ,MAAM;gBACN,GAAGgF,eAAehF,KAAK;YACzB;SACD;IACH;IAEA,SAAS2G,SAASyC,KAAc;QAC9B,IAAIzG,MAAMC,OAAO,CAACwG,QAAQ;YACxB,OAAOA;QACT;QAEA,OAAOA,UAAU,QAAQA,UAAUnG,YAAY,EAAE,GAAG;YAACmG;SAAM;IAC7D;IAEA,SAAStF,kBACPH,KAAiD,EACjD0F,IAAY;QAEZ,OACE,gBAAgB1F,SAChBhB,MAAMC,OAAO,CAACe,MAAM2F,UAAU,KAC9B3F,MAAM2F,UAAU,CAACrI,IAAI,CACnB,CAACsI,OAASA,QAAQ,YAAYA,QAAQA,KAAKC,MAAM,CAACvI,IAAI,CAAC,CAACC,OAASA,KAAKmI,IAAI,KAAKA;IAGrF;IAEA,SAAS9E,eAAevE,IAA8B;QACpD,MAAMsE,cAActE,KAAKA,IAAI,IAAIA,KAAKA,IAAI,CAACsE,WAAW;QACtD,OAAO,OAAOA,gBAAgB,WAAWA,cAAcrB;IACzD;IAEA,SAAS2D,6BAA6B5G,IAAgB;QACpD,MAAMyJ,YAAYC,0BAA0B1J;QAC5C,OAAOnB,OAAO4K,WAAW;IAC3B;IAEA,SAASC,0BAA0B1J,IAAgB;QACjD,MAAM2J,QAAQ,QAAQ3J,OAAOA,KAAKD,EAAE,GAAG,EAAE;QACzC,OAAO,UAAUC,QAAQA,KAAKA,IAAI,GAAG;eAAI0J,0BAA0B1J,KAAKA,IAAI;eAAM2J;SAAM,GAAGA;IAC7F;IAEA,SAASrD,gBAAgBtG,IAA8B;QACrD,MAAMyJ,YAAYG,aAAa5J;QAC/B,OAAOnB,OAAO4K,WAAW;IAC3B;IAEA,SAASG,aAAa5J,IAA8B;QAClD,IAAI,YAAYA,MAAM;YACpB,OAAOA,KAAKA,IAAI,GAAG;mBAAI4J,aAAa5J,KAAKA,IAAI;mBAAMA,KAAKuF,MAAM;aAAC,GAAGvF,KAAKuF,MAAM;QAC/E;QAEA,OAAO,EAAE;IACX;IAEA,SAASsE,mBAAmB7J,IAAa;QACvC,OAAO,OAAOA,SAAS,YAAYA,SAAS,QAAQ,YAAYA;IAClE;IAEA,SAAS8J,iBAAiB9J,IAAa;QACrC,OAAO6J,mBAAmB7J,SAAS2C,MAAMC,OAAO,CAAC5C,KAAKuF,MAAM;IAC9D;IAEA,SAASlB,UAAUrE,IAA8B;QAC/C,IAAI8J,iBAAiB9J,OAAO;YAC1B,OAAOsG,gBAAgBtG,MAAMuG,MAAM,GAAG;QACxC;QAEA,OAAO,UAAUvG,QAAQA,KAAKA,IAAI,GAAGqE,UAAUrE,KAAKA,IAAI,IAAI;IAC9D;AACF;AAEA,SAAS8H,yBACPiC,KAAa,EACbnK,MAAc,EACdoK,aAAa,QAAQ,EACrB3C,cAAc,EAAE;IAEhB,MAAM4C,UAAUxL,gBAAgBM;IAChC,MAAMmL,UAAU;QAAC7C;QAAazH;KAAO,CAAC6B,MAAM,CAACX,SAASmG,IAAI,CAAC;IAC3D,OAAO,IAAIkD,aACTrL,OAAO,CAAC;iCACqB,EAAEkL,WAAW,UAAU,EAAED,MAAM,gBAAgB,EAAEG,QAAQ;;QAElF,EAAED,QAAQ,CAAC,EACfA;AAEJ;AAEA,SAAS3E,oBAAoB5F,QAAgB,EAAEE,MAAc,EAAEoK,aAAa,QAAQ;IAClF,MAAMC,UAAUxL,gBAAgBM;IAChC,OAAO,IAAIoL,aACTrL,OAAO,CAAC;iCACqB,EAAEkL,WAAW,EAAE,EAAEtK,SAAS,kBAAkB,EAAEE,OAAO;;QAE9E,EAAEqK,QAAQ,CAAC,EACfA;AAEJ;AAEA,MAAME,qBAAqBvG;IACzBqG,QAAgB;IAEhB,YAAYG,OAAe,EAAEH,OAAgB,CAAE;QAC7C,KAAK,CAACG;QACN,IAAI,CAACtK,IAAI,GAAG;QACZ,IAAI,CAACmK,OAAO,GAAGA;IACjB;AACF;AAEA,SAASjF,eAAehF,IAAiD;IACvE,OAAOrB,2BAA2BqB,QAC9B;QACEqK,mBAAmBrK,KAAKsK,UAAU,CAACC,MAAM;IAC3C,IACA,CAAC;AACP"}
@@ -1,4 +1,4 @@
1
- import { flatten } from 'lodash-es';
1
+ import flatten from 'lodash-es/flatten.js';
2
2
  import { isNonUnion } from '../helpers.js';
3
3
  const filterCreators = {
4
4
  Boolean: createBooleanFilters,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/actions/graphql/gen1/generateTypeFilters.ts"],"sourcesContent":["import {flatten} from 'lodash-es'\n\nimport {isNonUnion} from '../helpers.js'\nimport {\n type ConvertedField,\n type ConvertedFieldDefinition,\n type ConvertedType,\n type ConvertedUnion,\n type InputFilterField,\n type InputObjectType,\n} from '../types.js'\n\ntype FilterCreator = (field: ConvertedField) => InputFilterField[]\n\nconst filterCreators: Record<string, FilterCreator> = {\n Boolean: createBooleanFilters,\n Date: createDateFilters,\n Datetime: createDateFilters,\n Float: createNumberFilters,\n ID: createIdFilters,\n Integer: createNumberFilters,\n Object: createObjectFilters,\n String: createStringFilters,\n Url: createStringFilters,\n}\n\nexport function generateTypeFilters(types: (ConvertedType | ConvertedUnion)[]): InputObjectType[] {\n const queryable = types\n .filter((type) => isNonUnion(type))\n .filter(\n (type) => type.type === 'Object' && type.interfaces && type.interfaces.includes('Document'),\n )\n\n return queryable.map((type) => {\n const name = `${type.name}Filter`\n const fields = flatten(type.fields.map((field) => createFieldFilters(field))).filter(Boolean)\n return {fields: [...fields, ...getDocumentFilters()], kind: 'InputObject', name}\n })\n}\n\nfunction createFieldFilters(field: ConvertedField) {\n if (filterCreators[field.type]) {\n return filterCreators[field.type](field)\n }\n\n if (field.kind === 'List') {\n return createListFilters()\n }\n\n if (field.isReference) {\n return createReferenceFilters(field)\n }\n\n return createInlineTypeFilters()\n}\n\nfunction getFieldName(field: ConvertedField, modifier = '') {\n const suffix = modifier ? `_${modifier}` : ''\n return `${field.fieldName}${suffix}`\n}\n\nfunction getDocumentFilters(): InputFilterField[] {\n return [\n {\n constraint: {\n comparator: 'REFERENCES',\n },\n description: 'All documents references the given document ID',\n fieldName: 'references',\n type: 'ID',\n },\n {\n constraint: {\n comparator: 'IS_DRAFT',\n field: '_id',\n },\n description: 'All documents that are drafts',\n fieldName: 'is_draft',\n type: 'Boolean',\n },\n ]\n}\n\nfunction createIsDefinedFilter(field: ConvertedFieldDefinition): InputFilterField {\n return {\n constraint: {\n comparator: 'IS_DEFINED',\n field: field.fieldName,\n },\n description: 'All documents that have a value for this field',\n fieldName: getFieldName(field, 'is_defined'),\n type: 'Boolean',\n }\n}\n\nfunction createEqualityFilter(field: ConvertedFieldDefinition): InputFilterField {\n return {\n constraint: {\n comparator: 'EQUALS',\n field: field.fieldName,\n },\n description: 'All documents that are equal to given value',\n fieldName: getFieldName(field),\n type: field.type,\n }\n}\n\nfunction createInequalityFilter(field: ConvertedFieldDefinition): InputFilterField {\n return {\n constraint: {\n comparator: 'NOT_EQUALS',\n field: field.fieldName,\n },\n description: 'All documents that are not equal to given value',\n fieldName: getFieldName(field, 'not'),\n type: field.type,\n }\n}\n\nfunction createDefaultFilters(field: ConvertedFieldDefinition): InputFilterField[] {\n return [createEqualityFilter(field), createInequalityFilter(field), createIsDefinedFilter(field)]\n}\n\nfunction createGtLtFilters(field: ConvertedFieldDefinition): InputFilterField[] {\n return [\n {\n constraint: {\n comparator: 'LT',\n field: field.fieldName,\n },\n description: 'All documents are less than given value',\n fieldName: getFieldName(field, 'lt'),\n type: field.type,\n },\n {\n constraint: {\n comparator: 'LTE',\n field: field.fieldName,\n },\n description: 'All documents are less than or equal to given value',\n fieldName: getFieldName(field, 'lte'),\n type: field.type,\n },\n {\n constraint: {\n comparator: 'GT',\n field: field.fieldName,\n },\n description: 'All documents are greater than given value',\n fieldName: getFieldName(field, 'gt'),\n type: field.type,\n },\n {\n constraint: {\n comparator: 'GTE',\n field: field.fieldName,\n },\n description: 'All documents are greater than or equal to given value',\n fieldName: getFieldName(field, 'gte'),\n type: field.type,\n },\n ]\n}\n\nfunction createBooleanFilters(field: ConvertedFieldDefinition): InputFilterField[] {\n return createDefaultFilters(field)\n}\n\nfunction createIdFilters(field: ConvertedFieldDefinition): InputFilterField[] {\n return createStringFilters(field)\n}\n\nfunction createDateFilters(field: ConvertedFieldDefinition): InputFilterField[] {\n return [...createDefaultFilters(field), ...createGtLtFilters(field)]\n}\n\nfunction createStringFilters(field: ConvertedFieldDefinition): InputFilterField[] {\n return [\n ...createDefaultFilters(field),\n {\n constraint: {\n comparator: 'MATCHES',\n field: field.fieldName,\n },\n description: 'All documents contain (match) the given word/words',\n fieldName: getFieldName(field, 'matches'),\n type: 'String',\n },\n {\n children: {\n isNullable: false,\n type: 'String',\n },\n constraint: {\n comparator: 'IN',\n field: field.fieldName,\n },\n description: 'All documents match one of the given values',\n fieldName: getFieldName(field, 'in'),\n kind: 'List',\n },\n {\n children: {\n isNullable: false,\n type: 'String',\n },\n constraint: {\n comparator: 'NOT_IN',\n field: field.fieldName,\n },\n description: 'None of the values match any of the given values',\n fieldName: getFieldName(field, 'not_in'),\n kind: 'List',\n },\n ]\n}\n\nfunction createNumberFilters(field: ConvertedFieldDefinition): InputFilterField[] {\n return [...createDefaultFilters(field), ...createGtLtFilters(field)]\n}\n\nfunction createObjectFilters(_field: ConvertedFieldDefinition): InputFilterField[] {\n return []\n}\n\nfunction createListFilters(): InputFilterField[] {\n return []\n}\n\nfunction createInlineTypeFilters(): InputFilterField[] {\n return []\n}\n\nfunction createReferenceFilters(field: ConvertedFieldDefinition): InputFilterField[] {\n return [\n {\n constraint: {\n comparator: 'EQUALS',\n field: `${field.fieldName}._ref`,\n },\n fieldName: getFieldName(field),\n type: 'ID',\n },\n ]\n}\n"],"names":["flatten","isNonUnion","filterCreators","Boolean","createBooleanFilters","Date","createDateFilters","Datetime","Float","createNumberFilters","ID","createIdFilters","Integer","Object","createObjectFilters","String","createStringFilters","Url","generateTypeFilters","types","queryable","filter","type","interfaces","includes","map","name","fields","field","createFieldFilters","getDocumentFilters","kind","createListFilters","isReference","createReferenceFilters","createInlineTypeFilters","getFieldName","modifier","suffix","fieldName","constraint","comparator","description","createIsDefinedFilter","createEqualityFilter","createInequalityFilter","createDefaultFilters","createGtLtFilters","children","isNullable","_field"],"mappings":"AAAA,SAAQA,OAAO,QAAO,YAAW;AAEjC,SAAQC,UAAU,QAAO,gBAAe;AAYxC,MAAMC,iBAAgD;IACpDC,SAASC;IACTC,MAAMC;IACNC,UAAUD;IACVE,OAAOC;IACPC,IAAIC;IACJC,SAASH;IACTI,QAAQC;IACRC,QAAQC;IACRC,KAAKD;AACP;AAEA,OAAO,SAASE,oBAAoBC,KAAyC;IAC3E,MAAMC,YAAYD,MACfE,MAAM,CAAC,CAACC,OAASrB,WAAWqB,OAC5BD,MAAM,CACL,CAACC,OAASA,KAAKA,IAAI,KAAK,YAAYA,KAAKC,UAAU,IAAID,KAAKC,UAAU,CAACC,QAAQ,CAAC;IAGpF,OAAOJ,UAAUK,GAAG,CAAC,CAACH;QACpB,MAAMI,OAAO,GAAGJ,KAAKI,IAAI,CAAC,MAAM,CAAC;QACjC,MAAMC,SAAS3B,QAAQsB,KAAKK,MAAM,CAACF,GAAG,CAAC,CAACG,QAAUC,mBAAmBD,SAASP,MAAM,CAAClB;QACrF,OAAO;YAACwB,QAAQ;mBAAIA;mBAAWG;aAAqB;YAAEC,MAAM;YAAeL;QAAI;IACjF;AACF;AAEA,SAASG,mBAAmBD,KAAqB;IAC/C,IAAI1B,cAAc,CAAC0B,MAAMN,IAAI,CAAC,EAAE;QAC9B,OAAOpB,cAAc,CAAC0B,MAAMN,IAAI,CAAC,CAACM;IACpC;IAEA,IAAIA,MAAMG,IAAI,KAAK,QAAQ;QACzB,OAAOC;IACT;IAEA,IAAIJ,MAAMK,WAAW,EAAE;QACrB,OAAOC,uBAAuBN;IAChC;IAEA,OAAOO;AACT;AAEA,SAASC,aAAaR,KAAqB,EAAES,WAAW,EAAE;IACxD,MAAMC,SAASD,WAAW,CAAC,CAAC,EAAEA,UAAU,GAAG;IAC3C,OAAO,GAAGT,MAAMW,SAAS,GAAGD,QAAQ;AACtC;AAEA,SAASR;IACP,OAAO;QACL;YACEU,YAAY;gBACVC,YAAY;YACd;YACAC,aAAa;YACbH,WAAW;YACXjB,MAAM;QACR;QACA;YACEkB,YAAY;gBACVC,YAAY;gBACZb,OAAO;YACT;YACAc,aAAa;YACbH,WAAW;YACXjB,MAAM;QACR;KACD;AACH;AAEA,SAASqB,sBAAsBf,KAA+B;IAC5D,OAAO;QACLY,YAAY;YACVC,YAAY;YACZb,OAAOA,MAAMW,SAAS;QACxB;QACAG,aAAa;QACbH,WAAWH,aAAaR,OAAO;QAC/BN,MAAM;IACR;AACF;AAEA,SAASsB,qBAAqBhB,KAA+B;IAC3D,OAAO;QACLY,YAAY;YACVC,YAAY;YACZb,OAAOA,MAAMW,SAAS;QACxB;QACAG,aAAa;QACbH,WAAWH,aAAaR;QACxBN,MAAMM,MAAMN,IAAI;IAClB;AACF;AAEA,SAASuB,uBAAuBjB,KAA+B;IAC7D,OAAO;QACLY,YAAY;YACVC,YAAY;YACZb,OAAOA,MAAMW,SAAS;QACxB;QACAG,aAAa;QACbH,WAAWH,aAAaR,OAAO;QAC/BN,MAAMM,MAAMN,IAAI;IAClB;AACF;AAEA,SAASwB,qBAAqBlB,KAA+B;IAC3D,OAAO;QAACgB,qBAAqBhB;QAAQiB,uBAAuBjB;QAAQe,sBAAsBf;KAAO;AACnG;AAEA,SAASmB,kBAAkBnB,KAA+B;IACxD,OAAO;QACL;YACEY,YAAY;gBACVC,YAAY;gBACZb,OAAOA,MAAMW,SAAS;YACxB;YACAG,aAAa;YACbH,WAAWH,aAAaR,OAAO;YAC/BN,MAAMM,MAAMN,IAAI;QAClB;QACA;YACEkB,YAAY;gBACVC,YAAY;gBACZb,OAAOA,MAAMW,SAAS;YACxB;YACAG,aAAa;YACbH,WAAWH,aAAaR,OAAO;YAC/BN,MAAMM,MAAMN,IAAI;QAClB;QACA;YACEkB,YAAY;gBACVC,YAAY;gBACZb,OAAOA,MAAMW,SAAS;YACxB;YACAG,aAAa;YACbH,WAAWH,aAAaR,OAAO;YAC/BN,MAAMM,MAAMN,IAAI;QAClB;QACA;YACEkB,YAAY;gBACVC,YAAY;gBACZb,OAAOA,MAAMW,SAAS;YACxB;YACAG,aAAa;YACbH,WAAWH,aAAaR,OAAO;YAC/BN,MAAMM,MAAMN,IAAI;QAClB;KACD;AACH;AAEA,SAASlB,qBAAqBwB,KAA+B;IAC3D,OAAOkB,qBAAqBlB;AAC9B;AAEA,SAASjB,gBAAgBiB,KAA+B;IACtD,OAAOZ,oBAAoBY;AAC7B;AAEA,SAAStB,kBAAkBsB,KAA+B;IACxD,OAAO;WAAIkB,qBAAqBlB;WAAWmB,kBAAkBnB;KAAO;AACtE;AAEA,SAASZ,oBAAoBY,KAA+B;IAC1D,OAAO;WACFkB,qBAAqBlB;QACxB;YACEY,YAAY;gBACVC,YAAY;gBACZb,OAAOA,MAAMW,SAAS;YACxB;YACAG,aAAa;YACbH,WAAWH,aAAaR,OAAO;YAC/BN,MAAM;QACR;QACA;YACE0B,UAAU;gBACRC,YAAY;gBACZ3B,MAAM;YACR;YACAkB,YAAY;gBACVC,YAAY;gBACZb,OAAOA,MAAMW,SAAS;YACxB;YACAG,aAAa;YACbH,WAAWH,aAAaR,OAAO;YAC/BG,MAAM;QACR;QACA;YACEiB,UAAU;gBACRC,YAAY;gBACZ3B,MAAM;YACR;YACAkB,YAAY;gBACVC,YAAY;gBACZb,OAAOA,MAAMW,SAAS;YACxB;YACAG,aAAa;YACbH,WAAWH,aAAaR,OAAO;YAC/BG,MAAM;QACR;KACD;AACH;AAEA,SAAStB,oBAAoBmB,KAA+B;IAC1D,OAAO;WAAIkB,qBAAqBlB;WAAWmB,kBAAkBnB;KAAO;AACtE;AAEA,SAASd,oBAAoBoC,MAAgC;IAC3D,OAAO,EAAE;AACX;AAEA,SAASlB;IACP,OAAO,EAAE;AACX;AAEA,SAASG;IACP,OAAO,EAAE;AACX;AAEA,SAASD,uBAAuBN,KAA+B;IAC7D,OAAO;QACL;YACEY,YAAY;gBACVC,YAAY;gBACZb,OAAO,GAAGA,MAAMW,SAAS,CAAC,KAAK,CAAC;YAClC;YACAA,WAAWH,aAAaR;YACxBN,MAAM;QACR;KACD;AACH"}
1
+ {"version":3,"sources":["../../../../src/actions/graphql/gen1/generateTypeFilters.ts"],"sourcesContent":["import flatten from 'lodash-es/flatten.js'\n\nimport {isNonUnion} from '../helpers.js'\nimport {\n type ConvertedField,\n type ConvertedFieldDefinition,\n type ConvertedType,\n type ConvertedUnion,\n type InputFilterField,\n type InputObjectType,\n} from '../types.js'\n\ntype FilterCreator = (field: ConvertedField) => InputFilterField[]\n\nconst filterCreators: Record<string, FilterCreator> = {\n Boolean: createBooleanFilters,\n Date: createDateFilters,\n Datetime: createDateFilters,\n Float: createNumberFilters,\n ID: createIdFilters,\n Integer: createNumberFilters,\n Object: createObjectFilters,\n String: createStringFilters,\n Url: createStringFilters,\n}\n\nexport function generateTypeFilters(types: (ConvertedType | ConvertedUnion)[]): InputObjectType[] {\n const queryable = types\n .filter((type) => isNonUnion(type))\n .filter(\n (type) => type.type === 'Object' && type.interfaces && type.interfaces.includes('Document'),\n )\n\n return queryable.map((type) => {\n const name = `${type.name}Filter`\n const fields = flatten(type.fields.map((field) => createFieldFilters(field))).filter(Boolean)\n return {fields: [...fields, ...getDocumentFilters()], kind: 'InputObject', name}\n })\n}\n\nfunction createFieldFilters(field: ConvertedField) {\n if (filterCreators[field.type]) {\n return filterCreators[field.type](field)\n }\n\n if (field.kind === 'List') {\n return createListFilters()\n }\n\n if (field.isReference) {\n return createReferenceFilters(field)\n }\n\n return createInlineTypeFilters()\n}\n\nfunction getFieldName(field: ConvertedField, modifier = '') {\n const suffix = modifier ? `_${modifier}` : ''\n return `${field.fieldName}${suffix}`\n}\n\nfunction getDocumentFilters(): InputFilterField[] {\n return [\n {\n constraint: {\n comparator: 'REFERENCES',\n },\n description: 'All documents references the given document ID',\n fieldName: 'references',\n type: 'ID',\n },\n {\n constraint: {\n comparator: 'IS_DRAFT',\n field: '_id',\n },\n description: 'All documents that are drafts',\n fieldName: 'is_draft',\n type: 'Boolean',\n },\n ]\n}\n\nfunction createIsDefinedFilter(field: ConvertedFieldDefinition): InputFilterField {\n return {\n constraint: {\n comparator: 'IS_DEFINED',\n field: field.fieldName,\n },\n description: 'All documents that have a value for this field',\n fieldName: getFieldName(field, 'is_defined'),\n type: 'Boolean',\n }\n}\n\nfunction createEqualityFilter(field: ConvertedFieldDefinition): InputFilterField {\n return {\n constraint: {\n comparator: 'EQUALS',\n field: field.fieldName,\n },\n description: 'All documents that are equal to given value',\n fieldName: getFieldName(field),\n type: field.type,\n }\n}\n\nfunction createInequalityFilter(field: ConvertedFieldDefinition): InputFilterField {\n return {\n constraint: {\n comparator: 'NOT_EQUALS',\n field: field.fieldName,\n },\n description: 'All documents that are not equal to given value',\n fieldName: getFieldName(field, 'not'),\n type: field.type,\n }\n}\n\nfunction createDefaultFilters(field: ConvertedFieldDefinition): InputFilterField[] {\n return [createEqualityFilter(field), createInequalityFilter(field), createIsDefinedFilter(field)]\n}\n\nfunction createGtLtFilters(field: ConvertedFieldDefinition): InputFilterField[] {\n return [\n {\n constraint: {\n comparator: 'LT',\n field: field.fieldName,\n },\n description: 'All documents are less than given value',\n fieldName: getFieldName(field, 'lt'),\n type: field.type,\n },\n {\n constraint: {\n comparator: 'LTE',\n field: field.fieldName,\n },\n description: 'All documents are less than or equal to given value',\n fieldName: getFieldName(field, 'lte'),\n type: field.type,\n },\n {\n constraint: {\n comparator: 'GT',\n field: field.fieldName,\n },\n description: 'All documents are greater than given value',\n fieldName: getFieldName(field, 'gt'),\n type: field.type,\n },\n {\n constraint: {\n comparator: 'GTE',\n field: field.fieldName,\n },\n description: 'All documents are greater than or equal to given value',\n fieldName: getFieldName(field, 'gte'),\n type: field.type,\n },\n ]\n}\n\nfunction createBooleanFilters(field: ConvertedFieldDefinition): InputFilterField[] {\n return createDefaultFilters(field)\n}\n\nfunction createIdFilters(field: ConvertedFieldDefinition): InputFilterField[] {\n return createStringFilters(field)\n}\n\nfunction createDateFilters(field: ConvertedFieldDefinition): InputFilterField[] {\n return [...createDefaultFilters(field), ...createGtLtFilters(field)]\n}\n\nfunction createStringFilters(field: ConvertedFieldDefinition): InputFilterField[] {\n return [\n ...createDefaultFilters(field),\n {\n constraint: {\n comparator: 'MATCHES',\n field: field.fieldName,\n },\n description: 'All documents contain (match) the given word/words',\n fieldName: getFieldName(field, 'matches'),\n type: 'String',\n },\n {\n children: {\n isNullable: false,\n type: 'String',\n },\n constraint: {\n comparator: 'IN',\n field: field.fieldName,\n },\n description: 'All documents match one of the given values',\n fieldName: getFieldName(field, 'in'),\n kind: 'List',\n },\n {\n children: {\n isNullable: false,\n type: 'String',\n },\n constraint: {\n comparator: 'NOT_IN',\n field: field.fieldName,\n },\n description: 'None of the values match any of the given values',\n fieldName: getFieldName(field, 'not_in'),\n kind: 'List',\n },\n ]\n}\n\nfunction createNumberFilters(field: ConvertedFieldDefinition): InputFilterField[] {\n return [...createDefaultFilters(field), ...createGtLtFilters(field)]\n}\n\nfunction createObjectFilters(_field: ConvertedFieldDefinition): InputFilterField[] {\n return []\n}\n\nfunction createListFilters(): InputFilterField[] {\n return []\n}\n\nfunction createInlineTypeFilters(): InputFilterField[] {\n return []\n}\n\nfunction createReferenceFilters(field: ConvertedFieldDefinition): InputFilterField[] {\n return [\n {\n constraint: {\n comparator: 'EQUALS',\n field: `${field.fieldName}._ref`,\n },\n fieldName: getFieldName(field),\n type: 'ID',\n },\n ]\n}\n"],"names":["flatten","isNonUnion","filterCreators","Boolean","createBooleanFilters","Date","createDateFilters","Datetime","Float","createNumberFilters","ID","createIdFilters","Integer","Object","createObjectFilters","String","createStringFilters","Url","generateTypeFilters","types","queryable","filter","type","interfaces","includes","map","name","fields","field","createFieldFilters","getDocumentFilters","kind","createListFilters","isReference","createReferenceFilters","createInlineTypeFilters","getFieldName","modifier","suffix","fieldName","constraint","comparator","description","createIsDefinedFilter","createEqualityFilter","createInequalityFilter","createDefaultFilters","createGtLtFilters","children","isNullable","_field"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { startCase, upperFirst } from 'lodash-es';
1
+ import startCase from 'lodash-es/startCase.js';
2
+ import upperFirst from 'lodash-es/upperFirst.js';
2
3
  import pluralize from 'pluralize-esm';
3
4
  import { isNonUnion } from '../helpers.js';
4
5
  function pluralizeTypeName(name) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/actions/graphql/gen1/generateTypeQueries.ts"],"sourcesContent":["import {startCase, upperFirst} from 'lodash-es'\nimport pluralize from 'pluralize-esm'\n\nimport {isNonUnion} from '../helpers.js'\nimport {\n type ConvertedType,\n type ConvertedUnion,\n type InputObjectType,\n type QueryDefinition,\n} from '../types.js'\n\nfunction pluralizeTypeName(name: string): string {\n const words = startCase(name).split(' ')\n const last = words.at(-1)\n // `pluralize` previously incorrectly cased the S to uppercase after numbers,\n // which we need to maintain for backwards compatibility\n const plural = pluralize(last?.toLowerCase() ?? '').replaceAll(/(\\d)s$/g, '$1S')\n words[words.length - 1] = upperFirst(plural)\n return words.join('')\n}\n\nexport function generateTypeQueries(\n types: (ConvertedType | ConvertedUnion)[],\n filters: InputObjectType[],\n): QueryDefinition[] {\n const queries: QueryDefinition[] = []\n const queryable = types\n .filter((type) => isNonUnion(type))\n .filter(\n (type) => type.type === 'Object' && type.interfaces && type.interfaces.includes('Document'),\n )\n\n // Single ID-based result lookup queries\n for (const type of queryable) {\n queries.push({\n args: [\n {\n description: `${type.name} document ID`,\n isNullable: false,\n name: 'id',\n type: 'ID',\n },\n ],\n constraints: [\n {\n comparator: 'EQUALS',\n field: '_id',\n value: {argName: 'id', kind: 'argumentValue'},\n },\n ],\n fieldName: type.name,\n type: type.name,\n })\n }\n\n // Fetch all of type\n for (const type of queryable) {\n const filterName = `${type.name}Filter`\n const hasFilter = filters.find((filter) => filter.name === filterName)\n queries.push({\n args: hasFilter\n ? [{isFieldFilter: true, name: 'where', type: filterName}, ...getLimitOffsetArgs()]\n : getLimitOffsetArgs(),\n fieldName: `all${pluralizeTypeName(type.name)}`,\n filter: `_type == \"${type.originalName || type.name}\"`,\n type: {\n children: {isNullable: false, type: type.name},\n isNullable: false,\n kind: 'List',\n },\n })\n }\n\n return queries\n}\n\nfunction getLimitOffsetArgs(): QueryDefinition['args'] {\n return [\n {\n description: 'Max documents to return',\n isFieldFilter: false,\n name: 'limit',\n type: 'Int',\n },\n {\n description: 'Offset at which to start returning documents from',\n isFieldFilter: false,\n name: 'offset',\n type: 'Int',\n },\n ]\n}\n"],"names":["startCase","upperFirst","pluralize","isNonUnion","pluralizeTypeName","name","words","split","last","at","plural","toLowerCase","replaceAll","length","join","generateTypeQueries","types","filters","queries","queryable","filter","type","interfaces","includes","push","args","description","isNullable","constraints","comparator","field","value","argName","kind","fieldName","filterName","hasFilter","find","isFieldFilter","getLimitOffsetArgs","originalName","children"],"mappings":"AAAA,SAAQA,SAAS,EAAEC,UAAU,QAAO,YAAW;AAC/C,OAAOC,eAAe,gBAAe;AAErC,SAAQC,UAAU,QAAO,gBAAe;AAQxC,SAASC,kBAAkBC,IAAY;IACrC,MAAMC,QAAQN,UAAUK,MAAME,KAAK,CAAC;IACpC,MAAMC,OAAOF,MAAMG,EAAE,CAAC,CAAC;IACvB,6EAA6E;IAC7E,wDAAwD;IACxD,MAAMC,SAASR,UAAUM,MAAMG,iBAAiB,IAAIC,UAAU,CAAC,WAAW;IAC1EN,KAAK,CAACA,MAAMO,MAAM,GAAG,EAAE,GAAGZ,WAAWS;IACrC,OAAOJ,MAAMQ,IAAI,CAAC;AACpB;AAEA,OAAO,SAASC,oBACdC,KAAyC,EACzCC,OAA0B;IAE1B,MAAMC,UAA6B,EAAE;IACrC,MAAMC,YAAYH,MACfI,MAAM,CAAC,CAACC,OAASlB,WAAWkB,OAC5BD,MAAM,CACL,CAACC,OAASA,KAAKA,IAAI,KAAK,YAAYA,KAAKC,UAAU,IAAID,KAAKC,UAAU,CAACC,QAAQ,CAAC;IAGpF,wCAAwC;IACxC,KAAK,MAAMF,QAAQF,UAAW;QAC5BD,QAAQM,IAAI,CAAC;YACXC,MAAM;gBACJ;oBACEC,aAAa,GAAGL,KAAKhB,IAAI,CAAC,YAAY,CAAC;oBACvCsB,YAAY;oBACZtB,MAAM;oBACNgB,MAAM;gBACR;aACD;YACDO,aAAa;gBACX;oBACEC,YAAY;oBACZC,OAAO;oBACPC,OAAO;wBAACC,SAAS;wBAAMC,MAAM;oBAAe;gBAC9C;aACD;YACDC,WAAWb,KAAKhB,IAAI;YACpBgB,MAAMA,KAAKhB,IAAI;QACjB;IACF;IAEA,oBAAoB;IACpB,KAAK,MAAMgB,QAAQF,UAAW;QAC5B,MAAMgB,aAAa,GAAGd,KAAKhB,IAAI,CAAC,MAAM,CAAC;QACvC,MAAM+B,YAAYnB,QAAQoB,IAAI,CAAC,CAACjB,SAAWA,OAAOf,IAAI,KAAK8B;QAC3DjB,QAAQM,IAAI,CAAC;YACXC,MAAMW,YACF;gBAAC;oBAACE,eAAe;oBAAMjC,MAAM;oBAASgB,MAAMc;gBAAU;mBAAMI;aAAqB,GACjFA;YACJL,WAAW,CAAC,GAAG,EAAE9B,kBAAkBiB,KAAKhB,IAAI,GAAG;YAC/Ce,QAAQ,CAAC,UAAU,EAAEC,KAAKmB,YAAY,IAAInB,KAAKhB,IAAI,CAAC,CAAC,CAAC;YACtDgB,MAAM;gBACJoB,UAAU;oBAACd,YAAY;oBAAON,MAAMA,KAAKhB,IAAI;gBAAA;gBAC7CsB,YAAY;gBACZM,MAAM;YACR;QACF;IACF;IAEA,OAAOf;AACT;AAEA,SAASqB;IACP,OAAO;QACL;YACEb,aAAa;YACbY,eAAe;YACfjC,MAAM;YACNgB,MAAM;QACR;QACA;YACEK,aAAa;YACbY,eAAe;YACfjC,MAAM;YACNgB,MAAM;QACR;KACD;AACH"}
1
+ {"version":3,"sources":["../../../../src/actions/graphql/gen1/generateTypeQueries.ts"],"sourcesContent":["import startCase from 'lodash-es/startCase.js'\nimport upperFirst from 'lodash-es/upperFirst.js'\nimport pluralize from 'pluralize-esm'\n\nimport {isNonUnion} from '../helpers.js'\nimport {\n type ConvertedType,\n type ConvertedUnion,\n type InputObjectType,\n type QueryDefinition,\n} from '../types.js'\n\nfunction pluralizeTypeName(name: string): string {\n const words = startCase(name).split(' ')\n const last = words.at(-1)\n // `pluralize` previously incorrectly cased the S to uppercase after numbers,\n // which we need to maintain for backwards compatibility\n const plural = pluralize(last?.toLowerCase() ?? '').replaceAll(/(\\d)s$/g, '$1S')\n words[words.length - 1] = upperFirst(plural)\n return words.join('')\n}\n\nexport function generateTypeQueries(\n types: (ConvertedType | ConvertedUnion)[],\n filters: InputObjectType[],\n): QueryDefinition[] {\n const queries: QueryDefinition[] = []\n const queryable = types\n .filter((type) => isNonUnion(type))\n .filter(\n (type) => type.type === 'Object' && type.interfaces && type.interfaces.includes('Document'),\n )\n\n // Single ID-based result lookup queries\n for (const type of queryable) {\n queries.push({\n args: [\n {\n description: `${type.name} document ID`,\n isNullable: false,\n name: 'id',\n type: 'ID',\n },\n ],\n constraints: [\n {\n comparator: 'EQUALS',\n field: '_id',\n value: {argName: 'id', kind: 'argumentValue'},\n },\n ],\n fieldName: type.name,\n type: type.name,\n })\n }\n\n // Fetch all of type\n for (const type of queryable) {\n const filterName = `${type.name}Filter`\n const hasFilter = filters.find((filter) => filter.name === filterName)\n queries.push({\n args: hasFilter\n ? [{isFieldFilter: true, name: 'where', type: filterName}, ...getLimitOffsetArgs()]\n : getLimitOffsetArgs(),\n fieldName: `all${pluralizeTypeName(type.name)}`,\n filter: `_type == \"${type.originalName || type.name}\"`,\n type: {\n children: {isNullable: false, type: type.name},\n isNullable: false,\n kind: 'List',\n },\n })\n }\n\n return queries\n}\n\nfunction getLimitOffsetArgs(): QueryDefinition['args'] {\n return [\n {\n description: 'Max documents to return',\n isFieldFilter: false,\n name: 'limit',\n type: 'Int',\n },\n {\n description: 'Offset at which to start returning documents from',\n isFieldFilter: false,\n name: 'offset',\n type: 'Int',\n },\n ]\n}\n"],"names":["startCase","upperFirst","pluralize","isNonUnion","pluralizeTypeName","name","words","split","last","at","plural","toLowerCase","replaceAll","length","join","generateTypeQueries","types","filters","queries","queryable","filter","type","interfaces","includes","push","args","description","isNullable","constraints","comparator","field","value","argName","kind","fieldName","filterName","hasFilter","find","isFieldFilter","getLimitOffsetArgs","originalName","children"],"mappings":"AAAA,OAAOA,eAAe,yBAAwB;AAC9C,OAAOC,gBAAgB,0BAAyB;AAChD,OAAOC,eAAe,gBAAe;AAErC,SAAQC,UAAU,QAAO,gBAAe;AAQxC,SAASC,kBAAkBC,IAAY;IACrC,MAAMC,QAAQN,UAAUK,MAAME,KAAK,CAAC;IACpC,MAAMC,OAAOF,MAAMG,EAAE,CAAC,CAAC;IACvB,6EAA6E;IAC7E,wDAAwD;IACxD,MAAMC,SAASR,UAAUM,MAAMG,iBAAiB,IAAIC,UAAU,CAAC,WAAW;IAC1EN,KAAK,CAACA,MAAMO,MAAM,GAAG,EAAE,GAAGZ,WAAWS;IACrC,OAAOJ,MAAMQ,IAAI,CAAC;AACpB;AAEA,OAAO,SAASC,oBACdC,KAAyC,EACzCC,OAA0B;IAE1B,MAAMC,UAA6B,EAAE;IACrC,MAAMC,YAAYH,MACfI,MAAM,CAAC,CAACC,OAASlB,WAAWkB,OAC5BD,MAAM,CACL,CAACC,OAASA,KAAKA,IAAI,KAAK,YAAYA,KAAKC,UAAU,IAAID,KAAKC,UAAU,CAACC,QAAQ,CAAC;IAGpF,wCAAwC;IACxC,KAAK,MAAMF,QAAQF,UAAW;QAC5BD,QAAQM,IAAI,CAAC;YACXC,MAAM;gBACJ;oBACEC,aAAa,GAAGL,KAAKhB,IAAI,CAAC,YAAY,CAAC;oBACvCsB,YAAY;oBACZtB,MAAM;oBACNgB,MAAM;gBACR;aACD;YACDO,aAAa;gBACX;oBACEC,YAAY;oBACZC,OAAO;oBACPC,OAAO;wBAACC,SAAS;wBAAMC,MAAM;oBAAe;gBAC9C;aACD;YACDC,WAAWb,KAAKhB,IAAI;YACpBgB,MAAMA,KAAKhB,IAAI;QACjB;IACF;IAEA,oBAAoB;IACpB,KAAK,MAAMgB,QAAQF,UAAW;QAC5B,MAAMgB,aAAa,GAAGd,KAAKhB,IAAI,CAAC,MAAM,CAAC;QACvC,MAAM+B,YAAYnB,QAAQoB,IAAI,CAAC,CAACjB,SAAWA,OAAOf,IAAI,KAAK8B;QAC3DjB,QAAQM,IAAI,CAAC;YACXC,MAAMW,YACF;gBAAC;oBAACE,eAAe;oBAAMjC,MAAM;oBAASgB,MAAMc;gBAAU;mBAAMI;aAAqB,GACjFA;YACJL,WAAW,CAAC,GAAG,EAAE9B,kBAAkBiB,KAAKhB,IAAI,GAAG;YAC/Ce,QAAQ,CAAC,UAAU,EAAEC,KAAKmB,YAAY,IAAInB,KAAKhB,IAAI,CAAC,CAAC,CAAC;YACtDgB,MAAM;gBACJoB,UAAU;oBAACd,YAAY;oBAAON,MAAMA,KAAKhB,IAAI;gBAAA;gBAC7CsB,YAAY;gBACZM,MAAM;YACR;QACF;IACF;IAEA,OAAOf;AACT;AAEA,SAASqB;IACP,OAAO;QACL;YACEb,aAAa;YACbY,eAAe;YACfjC,MAAM;YACNgB,MAAM;QACR;QACA;YACEK,aAAa;YACbY,eAAe;YACfjC,MAAM;YACNgB,MAAM;QACR;KACD;AACH"}
@@ -1,4 +1,4 @@
1
- import { upperFirst } from 'lodash-es';
1
+ import upperFirst from 'lodash-es/upperFirst.js';
2
2
  import { isDocumentType } from '../helpers.js';
3
3
  export function generateTypeQueries(types, sortings) {
4
4
  const queries = [];
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/actions/graphql/gen2/generateTypeQueries.ts"],"sourcesContent":["import {upperFirst} from 'lodash-es'\n\nimport {isDocumentType} from '../helpers.js'\nimport {\n type ConvertedType,\n type ConvertedUnion,\n type InputObjectType,\n type QueryDefinition,\n} from '../types.js'\n\nexport function generateTypeQueries(\n types: (ConvertedType | ConvertedUnion)[],\n sortings: InputObjectType[],\n): QueryDefinition[] {\n const queries: QueryDefinition[] = []\n const queryable = types.filter((type) => isDocumentType(type))\n const isSortable = (type: ConvertedType) =>\n sortings.some((sorting) => sorting.name === `${type.name}Sorting`)\n\n // A document of any type\n queries.push({\n args: [\n {\n description: 'Document ID',\n isNullable: false,\n name: 'id',\n type: 'ID',\n },\n ],\n constraints: [\n {\n comparator: 'eq',\n field: '_id',\n value: {argName: 'id', kind: 'argumentValue'},\n },\n ],\n fieldName: 'Document',\n type: 'Document',\n })\n\n // Single ID-based result lookup queries\n for (const type of queryable) {\n queries.push({\n args: [\n {\n description: `${type.name} document ID`,\n isNullable: false,\n name: 'id',\n type: 'ID',\n },\n ],\n constraints: [\n {\n comparator: 'eq',\n field: '_id',\n value: {argName: 'id', kind: 'argumentValue'},\n },\n ],\n fieldName: type.name,\n type: type.name,\n })\n }\n\n // Fetch all of type\n for (const type of queryable) {\n const sorting: QueryDefinition['args'] = []\n if (isSortable(type)) {\n sorting.push({\n name: 'sort',\n type: {\n children: {\n isNullable: false,\n type: `${type.name}Sorting`,\n },\n isNullable: true,\n kind: 'List',\n },\n })\n }\n\n queries.push({\n args: [\n {\n isFieldFilter: true,\n name: 'where',\n type: `${type.name}Filter`,\n },\n ...sorting,\n {\n description: 'Max documents to return',\n isFieldFilter: false,\n name: 'limit',\n type: 'Int',\n },\n {\n description: 'Offset at which to start returning documents from',\n isFieldFilter: false,\n name: 'offset',\n type: 'Int',\n },\n ],\n fieldName: `all${upperFirst(type.name)}`,\n filter: `_type == \"${type.originalName || type.name}\"`,\n type: {\n children: {isNullable: false, type: type.name},\n isNullable: false,\n kind: 'List',\n },\n })\n }\n\n return queries\n}\n"],"names":["upperFirst","isDocumentType","generateTypeQueries","types","sortings","queries","queryable","filter","type","isSortable","some","sorting","name","push","args","description","isNullable","constraints","comparator","field","value","argName","kind","fieldName","children","isFieldFilter","originalName"],"mappings":"AAAA,SAAQA,UAAU,QAAO,YAAW;AAEpC,SAAQC,cAAc,QAAO,gBAAe;AAQ5C,OAAO,SAASC,oBACdC,KAAyC,EACzCC,QAA2B;IAE3B,MAAMC,UAA6B,EAAE;IACrC,MAAMC,YAAYH,MAAMI,MAAM,CAAC,CAACC,OAASP,eAAeO;IACxD,MAAMC,aAAa,CAACD,OAClBJ,SAASM,IAAI,CAAC,CAACC,UAAYA,QAAQC,IAAI,KAAK,GAAGJ,KAAKI,IAAI,CAAC,OAAO,CAAC;IAEnE,yBAAyB;IACzBP,QAAQQ,IAAI,CAAC;QACXC,MAAM;YACJ;gBACEC,aAAa;gBACbC,YAAY;gBACZJ,MAAM;gBACNJ,MAAM;YACR;SACD;QACDS,aAAa;YACX;gBACEC,YAAY;gBACZC,OAAO;gBACPC,OAAO;oBAACC,SAAS;oBAAMC,MAAM;gBAAe;YAC9C;SACD;QACDC,WAAW;QACXf,MAAM;IACR;IAEA,wCAAwC;IACxC,KAAK,MAAMA,QAAQF,UAAW;QAC5BD,QAAQQ,IAAI,CAAC;YACXC,MAAM;gBACJ;oBACEC,aAAa,GAAGP,KAAKI,IAAI,CAAC,YAAY,CAAC;oBACvCI,YAAY;oBACZJ,MAAM;oBACNJ,MAAM;gBACR;aACD;YACDS,aAAa;gBACX;oBACEC,YAAY;oBACZC,OAAO;oBACPC,OAAO;wBAACC,SAAS;wBAAMC,MAAM;oBAAe;gBAC9C;aACD;YACDC,WAAWf,KAAKI,IAAI;YACpBJ,MAAMA,KAAKI,IAAI;QACjB;IACF;IAEA,oBAAoB;IACpB,KAAK,MAAMJ,QAAQF,UAAW;QAC5B,MAAMK,UAAmC,EAAE;QAC3C,IAAIF,WAAWD,OAAO;YACpBG,QAAQE,IAAI,CAAC;gBACXD,MAAM;gBACNJ,MAAM;oBACJgB,UAAU;wBACRR,YAAY;wBACZR,MAAM,GAAGA,KAAKI,IAAI,CAAC,OAAO,CAAC;oBAC7B;oBACAI,YAAY;oBACZM,MAAM;gBACR;YACF;QACF;QAEAjB,QAAQQ,IAAI,CAAC;YACXC,MAAM;gBACJ;oBACEW,eAAe;oBACfb,MAAM;oBACNJ,MAAM,GAAGA,KAAKI,IAAI,CAAC,MAAM,CAAC;gBAC5B;mBACGD;gBACH;oBACEI,aAAa;oBACbU,eAAe;oBACfb,MAAM;oBACNJ,MAAM;gBACR;gBACA;oBACEO,aAAa;oBACbU,eAAe;oBACfb,MAAM;oBACNJ,MAAM;gBACR;aACD;YACDe,WAAW,CAAC,GAAG,EAAEvB,WAAWQ,KAAKI,IAAI,GAAG;YACxCL,QAAQ,CAAC,UAAU,EAAEC,KAAKkB,YAAY,IAAIlB,KAAKI,IAAI,CAAC,CAAC,CAAC;YACtDJ,MAAM;gBACJgB,UAAU;oBAACR,YAAY;oBAAOR,MAAMA,KAAKI,IAAI;gBAAA;gBAC7CI,YAAY;gBACZM,MAAM;YACR;QACF;IACF;IAEA,OAAOjB;AACT"}
1
+ {"version":3,"sources":["../../../../src/actions/graphql/gen2/generateTypeQueries.ts"],"sourcesContent":["import upperFirst from 'lodash-es/upperFirst.js'\n\nimport {isDocumentType} from '../helpers.js'\nimport {\n type ConvertedType,\n type ConvertedUnion,\n type InputObjectType,\n type QueryDefinition,\n} from '../types.js'\n\nexport function generateTypeQueries(\n types: (ConvertedType | ConvertedUnion)[],\n sortings: InputObjectType[],\n): QueryDefinition[] {\n const queries: QueryDefinition[] = []\n const queryable = types.filter((type) => isDocumentType(type))\n const isSortable = (type: ConvertedType) =>\n sortings.some((sorting) => sorting.name === `${type.name}Sorting`)\n\n // A document of any type\n queries.push({\n args: [\n {\n description: 'Document ID',\n isNullable: false,\n name: 'id',\n type: 'ID',\n },\n ],\n constraints: [\n {\n comparator: 'eq',\n field: '_id',\n value: {argName: 'id', kind: 'argumentValue'},\n },\n ],\n fieldName: 'Document',\n type: 'Document',\n })\n\n // Single ID-based result lookup queries\n for (const type of queryable) {\n queries.push({\n args: [\n {\n description: `${type.name} document ID`,\n isNullable: false,\n name: 'id',\n type: 'ID',\n },\n ],\n constraints: [\n {\n comparator: 'eq',\n field: '_id',\n value: {argName: 'id', kind: 'argumentValue'},\n },\n ],\n fieldName: type.name,\n type: type.name,\n })\n }\n\n // Fetch all of type\n for (const type of queryable) {\n const sorting: QueryDefinition['args'] = []\n if (isSortable(type)) {\n sorting.push({\n name: 'sort',\n type: {\n children: {\n isNullable: false,\n type: `${type.name}Sorting`,\n },\n isNullable: true,\n kind: 'List',\n },\n })\n }\n\n queries.push({\n args: [\n {\n isFieldFilter: true,\n name: 'where',\n type: `${type.name}Filter`,\n },\n ...sorting,\n {\n description: 'Max documents to return',\n isFieldFilter: false,\n name: 'limit',\n type: 'Int',\n },\n {\n description: 'Offset at which to start returning documents from',\n isFieldFilter: false,\n name: 'offset',\n type: 'Int',\n },\n ],\n fieldName: `all${upperFirst(type.name)}`,\n filter: `_type == \"${type.originalName || type.name}\"`,\n type: {\n children: {isNullable: false, type: type.name},\n isNullable: false,\n kind: 'List',\n },\n })\n }\n\n return queries\n}\n"],"names":["upperFirst","isDocumentType","generateTypeQueries","types","sortings","queries","queryable","filter","type","isSortable","some","sorting","name","push","args","description","isNullable","constraints","comparator","field","value","argName","kind","fieldName","children","isFieldFilter","originalName"],"mappings":"AAAA,OAAOA,gBAAgB,0BAAyB;AAEhD,SAAQC,cAAc,QAAO,gBAAe;AAQ5C,OAAO,SAASC,oBACdC,KAAyC,EACzCC,QAA2B;IAE3B,MAAMC,UAA6B,EAAE;IACrC,MAAMC,YAAYH,MAAMI,MAAM,CAAC,CAACC,OAASP,eAAeO;IACxD,MAAMC,aAAa,CAACD,OAClBJ,SAASM,IAAI,CAAC,CAACC,UAAYA,QAAQC,IAAI,KAAK,GAAGJ,KAAKI,IAAI,CAAC,OAAO,CAAC;IAEnE,yBAAyB;IACzBP,QAAQQ,IAAI,CAAC;QACXC,MAAM;YACJ;gBACEC,aAAa;gBACbC,YAAY;gBACZJ,MAAM;gBACNJ,MAAM;YACR;SACD;QACDS,aAAa;YACX;gBACEC,YAAY;gBACZC,OAAO;gBACPC,OAAO;oBAACC,SAAS;oBAAMC,MAAM;gBAAe;YAC9C;SACD;QACDC,WAAW;QACXf,MAAM;IACR;IAEA,wCAAwC;IACxC,KAAK,MAAMA,QAAQF,UAAW;QAC5BD,QAAQQ,IAAI,CAAC;YACXC,MAAM;gBACJ;oBACEC,aAAa,GAAGP,KAAKI,IAAI,CAAC,YAAY,CAAC;oBACvCI,YAAY;oBACZJ,MAAM;oBACNJ,MAAM;gBACR;aACD;YACDS,aAAa;gBACX;oBACEC,YAAY;oBACZC,OAAO;oBACPC,OAAO;wBAACC,SAAS;wBAAMC,MAAM;oBAAe;gBAC9C;aACD;YACDC,WAAWf,KAAKI,IAAI;YACpBJ,MAAMA,KAAKI,IAAI;QACjB;IACF;IAEA,oBAAoB;IACpB,KAAK,MAAMJ,QAAQF,UAAW;QAC5B,MAAMK,UAAmC,EAAE;QAC3C,IAAIF,WAAWD,OAAO;YACpBG,QAAQE,IAAI,CAAC;gBACXD,MAAM;gBACNJ,MAAM;oBACJgB,UAAU;wBACRR,YAAY;wBACZR,MAAM,GAAGA,KAAKI,IAAI,CAAC,OAAO,CAAC;oBAC7B;oBACAI,YAAY;oBACZM,MAAM;gBACR;YACF;QACF;QAEAjB,QAAQQ,IAAI,CAAC;YACXC,MAAM;gBACJ;oBACEW,eAAe;oBACfb,MAAM;oBACNJ,MAAM,GAAGA,KAAKI,IAAI,CAAC,MAAM,CAAC;gBAC5B;mBACGD;gBACH;oBACEI,aAAa;oBACbU,eAAe;oBACfb,MAAM;oBACNJ,MAAM;gBACR;gBACA;oBACEO,aAAa;oBACbU,eAAe;oBACfb,MAAM;oBACNJ,MAAM;gBACR;aACD;YACDe,WAAW,CAAC,GAAG,EAAEvB,WAAWQ,KAAKI,IAAI,GAAG;YACxCL,QAAQ,CAAC,UAAU,EAAEC,KAAKkB,YAAY,IAAIlB,KAAKI,IAAI,CAAC,CAAC,CAAC;YACtDJ,MAAM;gBACJgB,UAAU;oBAACR,YAAY;oBAAOR,MAAMA,KAAKI,IAAI;gBAAA;gBAC7CI,YAAY;gBACZM,MAAM;YACR;QACF;IACF;IAEA,OAAOjB;AACT"}
@@ -1,4 +1,4 @@
1
- import { upperFirst } from 'lodash-es';
1
+ import upperFirst from 'lodash-es/upperFirst.js';
2
2
  import { isDocumentType, isUnion } from '../helpers.js';
3
3
  import { internal } from '../types.js';
4
4
  import { getFilterFieldName } from './utils.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/actions/graphql/gen3/generateTypeQueries.ts"],"sourcesContent":["import {upperFirst} from 'lodash-es'\n\nimport {isDocumentType, isUnion} from '../helpers.js'\nimport {\n type ApiCustomizationOptions,\n type ConvertedType,\n type ConvertedUnion,\n type Deprecation,\n type InputObjectType,\n internal,\n type QueryDefinition,\n} from '../types.js'\nimport {getFilterFieldName} from './utils.js'\n\nexport function generateTypeQueries(\n types: (ConvertedType | ConvertedUnion)[],\n sortings: InputObjectType[],\n options?: ApiCustomizationOptions,\n): QueryDefinition[] {\n const {filterSuffix} = options || {}\n const queries: QueryDefinition[] = []\n const documentTypes = types.filter((type) => isDocumentType(type))\n\n const documentTypeNames = documentTypes.map((docType) =>\n JSON.stringify(docType.originalName || docType.name),\n )\n const documentsFilter = `_type in [${documentTypeNames.join(', ')}]`\n\n const documentInterface = types.find((type) => type.name === 'Document')\n if (!documentInterface || isUnion(documentInterface)) {\n throw new Error('Failed to find document interface')\n }\n\n const queryable = [...documentTypes, documentInterface]\n const isSortable = (type: ConvertedType) =>\n sortings.some((sorting) => sorting.name === `${type.name}Sorting`)\n\n // Single ID-based result lookup queries\n for (const type of queryable) {\n queries.push({\n args: [\n {\n description: `${type.name} document ID`,\n isNullable: false,\n name: 'id',\n type: 'ID',\n },\n ],\n constraints: [\n {\n comparator: 'eq',\n field: '_id',\n value: {argName: 'id', kind: 'argumentValue'},\n },\n ],\n fieldName: type.name,\n type: type.name,\n ...getDeprecation(type),\n })\n }\n\n // Fetch all of type\n for (const type of queryable) {\n const sorting: QueryDefinition['args'] = []\n if (isSortable(type)) {\n sorting.push({\n name: 'sort',\n type: {\n children: {\n isNullable: false,\n type: `${type.name}Sorting`,\n },\n isNullable: true,\n kind: 'List',\n },\n })\n }\n\n queries.push({\n args: [\n {\n isFieldFilter: true,\n name: 'where',\n type: getFilterFieldName(type.name, filterSuffix),\n },\n ...sorting,\n {\n description: 'Max documents to return',\n isFieldFilter: false,\n name: 'limit',\n type: 'Int',\n },\n {\n description: 'Offset at which to start returning documents from',\n isFieldFilter: false,\n name: 'offset',\n type: 'Int',\n },\n ],\n fieldName: `all${upperFirst(type.name)}`,\n filter:\n type.name === 'Document' && type.kind === 'Interface'\n ? documentsFilter\n : `_type == ${JSON.stringify(type.originalName || type.name)}`,\n type: {\n children: {isNullable: false, type: type.name},\n isNullable: false,\n kind: 'List',\n },\n ...getDeprecation(type),\n })\n }\n\n return queries\n}\n\nfunction getDeprecation(type: ConvertedType): Partial<Deprecation> {\n return type[internal]?.deprecationReason\n ? {\n deprecationReason: type[internal].deprecationReason,\n }\n : {}\n}\n"],"names":["upperFirst","isDocumentType","isUnion","internal","getFilterFieldName","generateTypeQueries","types","sortings","options","filterSuffix","queries","documentTypes","filter","type","documentTypeNames","map","docType","JSON","stringify","originalName","name","documentsFilter","join","documentInterface","find","Error","queryable","isSortable","some","sorting","push","args","description","isNullable","constraints","comparator","field","value","argName","kind","fieldName","getDeprecation","children","isFieldFilter","deprecationReason"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/actions/graphql/gen3/generateTypeQueries.ts"],"sourcesContent":["import upperFirst from 'lodash-es/upperFirst.js'\n\nimport {isDocumentType, isUnion} from '../helpers.js'\nimport {\n type ApiCustomizationOptions,\n type ConvertedType,\n type ConvertedUnion,\n type Deprecation,\n type InputObjectType,\n internal,\n type QueryDefinition,\n} from '../types.js'\nimport {getFilterFieldName} from './utils.js'\n\nexport function generateTypeQueries(\n types: (ConvertedType | ConvertedUnion)[],\n sortings: InputObjectType[],\n options?: ApiCustomizationOptions,\n): QueryDefinition[] {\n const {filterSuffix} = options || {}\n const queries: QueryDefinition[] = []\n const documentTypes = types.filter((type) => isDocumentType(type))\n\n const documentTypeNames = documentTypes.map((docType) =>\n JSON.stringify(docType.originalName || docType.name),\n )\n const documentsFilter = `_type in [${documentTypeNames.join(', ')}]`\n\n const documentInterface = types.find((type) => type.name === 'Document')\n if (!documentInterface || isUnion(documentInterface)) {\n throw new Error('Failed to find document interface')\n }\n\n const queryable = [...documentTypes, documentInterface]\n const isSortable = (type: ConvertedType) =>\n sortings.some((sorting) => sorting.name === `${type.name}Sorting`)\n\n // Single ID-based result lookup queries\n for (const type of queryable) {\n queries.push({\n args: [\n {\n description: `${type.name} document ID`,\n isNullable: false,\n name: 'id',\n type: 'ID',\n },\n ],\n constraints: [\n {\n comparator: 'eq',\n field: '_id',\n value: {argName: 'id', kind: 'argumentValue'},\n },\n ],\n fieldName: type.name,\n type: type.name,\n ...getDeprecation(type),\n })\n }\n\n // Fetch all of type\n for (const type of queryable) {\n const sorting: QueryDefinition['args'] = []\n if (isSortable(type)) {\n sorting.push({\n name: 'sort',\n type: {\n children: {\n isNullable: false,\n type: `${type.name}Sorting`,\n },\n isNullable: true,\n kind: 'List',\n },\n })\n }\n\n queries.push({\n args: [\n {\n isFieldFilter: true,\n name: 'where',\n type: getFilterFieldName(type.name, filterSuffix),\n },\n ...sorting,\n {\n description: 'Max documents to return',\n isFieldFilter: false,\n name: 'limit',\n type: 'Int',\n },\n {\n description: 'Offset at which to start returning documents from',\n isFieldFilter: false,\n name: 'offset',\n type: 'Int',\n },\n ],\n fieldName: `all${upperFirst(type.name)}`,\n filter:\n type.name === 'Document' && type.kind === 'Interface'\n ? documentsFilter\n : `_type == ${JSON.stringify(type.originalName || type.name)}`,\n type: {\n children: {isNullable: false, type: type.name},\n isNullable: false,\n kind: 'List',\n },\n ...getDeprecation(type),\n })\n }\n\n return queries\n}\n\nfunction getDeprecation(type: ConvertedType): Partial<Deprecation> {\n return type[internal]?.deprecationReason\n ? {\n deprecationReason: type[internal].deprecationReason,\n }\n : {}\n}\n"],"names":["upperFirst","isDocumentType","isUnion","internal","getFilterFieldName","generateTypeQueries","types","sortings","options","filterSuffix","queries","documentTypes","filter","type","documentTypeNames","map","docType","JSON","stringify","originalName","name","documentsFilter","join","documentInterface","find","Error","queryable","isSortable","some","sorting","push","args","description","isNullable","constraints","comparator","field","value","argName","kind","fieldName","getDeprecation","children","isFieldFilter","deprecationReason"],"mappings":"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"}
@@ -1,6 +1,5 @@
1
- import { isMainThread, Worker } from 'node:worker_threads';
1
+ import { isMainThread } from 'node:worker_threads';
2
2
  import { getCliConfig, getStudioConfig, promisifyWorker, resolveLocalPackage } from '@sanity/cli-core';
3
- import { packageDirectory } from 'package-directory';
4
3
  export async function getGraphQLAPIs(workDir) {
5
4
  if (!isMainThread) {
6
5
  throw new Error('getGraphQLAPIs() must be called from the main thread');
@@ -28,13 +27,7 @@ async function getApisWithSchemaTypes(workDir) {
28
27
  const workspaces = await getStudioConfig(workDir, {
29
28
  resolvePlugins: true
30
29
  });
31
- const cliPkgDir = await packageDirectory({
32
- cwd: import.meta.dirname
33
- });
34
- if (!cliPkgDir) {
35
- throw new Error('Unable to resolve @sanity/cli module root');
36
- }
37
- const worker = new Worker(new URL(`getGraphQLAPIs.worker.js`, import.meta.url), {
30
+ return promisifyWorker(new URL('getGraphQLAPIs.worker.js', import.meta.url), {
38
31
  env: process.env,
39
32
  workerData: {
40
33
  cliConfig: extractGraphQLConfig(cliConfig),
@@ -42,7 +35,6 @@ async function getApisWithSchemaTypes(workDir) {
42
35
  workspaces
43
36
  }
44
37
  });
45
- return promisifyWorker(worker);
46
38
  }
47
39
  function extractGraphQLConfig(config) {
48
40
  return structuredClone({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/actions/graphql/getGraphQLAPIs.ts"],"sourcesContent":["import {isMainThread, Worker} from 'node:worker_threads'\n\nimport {\n type CliConfig,\n getCliConfig,\n getStudioConfig,\n promisifyWorker,\n resolveLocalPackage,\n} from '@sanity/cli-core'\nimport {packageDirectory} from 'package-directory'\n\nimport {\n type ResolvedGraphQLAPI,\n type ResolvedSourceProperties,\n type SchemaDefinitionish,\n type TypeResolvedGraphQLAPI,\n} from './types.js'\n\nexport async function getGraphQLAPIs(workDir: string): Promise<ResolvedGraphQLAPI[]> {\n if (!isMainThread) {\n throw new Error('getGraphQLAPIs() must be called from the main thread')\n }\n\n // Resolve `sanity` local to the project in order to avoid using incompatible versions, and to avoid circular dependencies\n const {createSchema} = await resolveLocalPackage<typeof import('sanity')>('sanity', workDir)\n\n const defaultSchema = createSchema({name: 'default', types: []})\n const defaultTypes = defaultSchema.getTypeNames()\n const isCustomType = (type: SchemaDefinitionish) => !defaultTypes.includes(type.name)\n\n const apis = await getApisWithSchemaTypes(workDir)\n const resolved = apis.map(\n ({schemaTypes, ...api}): ResolvedSourceProperties => ({\n schema: createSchema({\n name: 'default',\n types: schemaTypes.filter((element) => isCustomType(element)),\n }),\n ...api,\n }),\n )\n\n return resolved\n}\n\nasync function getApisWithSchemaTypes(workDir: string): Promise<TypeResolvedGraphQLAPI[]> {\n const cliConfig = await getCliConfig(workDir)\n const workspaces = await getStudioConfig(workDir, {resolvePlugins: true})\n\n const cliPkgDir = await packageDirectory({cwd: import.meta.dirname})\n if (!cliPkgDir) {\n throw new Error('Unable to resolve @sanity/cli module root')\n }\n\n const worker = new Worker(new URL(`getGraphQLAPIs.worker.js`, import.meta.url), {\n env: process.env,\n workerData: {\n cliConfig: extractGraphQLConfig(cliConfig),\n workDir,\n workspaces,\n },\n })\n\n return promisifyWorker<TypeResolvedGraphQLAPI[]>(worker)\n}\n\nfunction extractGraphQLConfig(config: CliConfig) {\n return structuredClone({\n api: config.api,\n graphql: config.graphql,\n })\n}\n"],"names":["isMainThread","Worker","getCliConfig","getStudioConfig","promisifyWorker","resolveLocalPackage","packageDirectory","getGraphQLAPIs","workDir","Error","createSchema","defaultSchema","name","types","defaultTypes","getTypeNames","isCustomType","type","includes","apis","getApisWithSchemaTypes","resolved","map","schemaTypes","api","schema","filter","element","cliConfig","workspaces","resolvePlugins","cliPkgDir","cwd","dirname","worker","URL","url","env","process","workerData","extractGraphQLConfig","config","structuredClone","graphql"],"mappings":"AAAA,SAAQA,YAAY,EAAEC,MAAM,QAAO,sBAAqB;AAExD,SAEEC,YAAY,EACZC,eAAe,EACfC,eAAe,EACfC,mBAAmB,QACd,mBAAkB;AACzB,SAAQC,gBAAgB,QAAO,oBAAmB;AASlD,OAAO,eAAeC,eAAeC,OAAe;IAClD,IAAI,CAACR,cAAc;QACjB,MAAM,IAAIS,MAAM;IAClB;IAEA,0HAA0H;IAC1H,MAAM,EAACC,YAAY,EAAC,GAAG,MAAML,oBAA6C,UAAUG;IAEpF,MAAMG,gBAAgBD,aAAa;QAACE,MAAM;QAAWC,OAAO,EAAE;IAAA;IAC9D,MAAMC,eAAeH,cAAcI,YAAY;IAC/C,MAAMC,eAAe,CAACC,OAA8B,CAACH,aAAaI,QAAQ,CAACD,KAAKL,IAAI;IAEpF,MAAMO,OAAO,MAAMC,uBAAuBZ;IAC1C,MAAMa,WAAWF,KAAKG,GAAG,CACvB,CAAC,EAACC,WAAW,EAAE,GAAGC,KAAI,GAAgC,CAAA;YACpDC,QAAQf,aAAa;gBACnBE,MAAM;gBACNC,OAAOU,YAAYG,MAAM,CAAC,CAACC,UAAYX,aAAaW;YACtD;YACA,GAAGH,GAAG;QACR,CAAA;IAGF,OAAOH;AACT;AAEA,eAAeD,uBAAuBZ,OAAe;IACnD,MAAMoB,YAAY,MAAM1B,aAAaM;IACrC,MAAMqB,aAAa,MAAM1B,gBAAgBK,SAAS;QAACsB,gBAAgB;IAAI;IAEvE,MAAMC,YAAY,MAAMzB,iBAAiB;QAAC0B,KAAK,YAAYC,OAAO;IAAA;IAClE,IAAI,CAACF,WAAW;QACd,MAAM,IAAItB,MAAM;IAClB;IAEA,MAAMyB,SAAS,IAAIjC,OAAO,IAAIkC,IAAI,CAAC,wBAAwB,CAAC,EAAE,YAAYC,GAAG,GAAG;QAC9EC,KAAKC,QAAQD,GAAG;QAChBE,YAAY;YACVX,WAAWY,qBAAqBZ;YAChCpB;YACAqB;QACF;IACF;IAEA,OAAOzB,gBAA0C8B;AACnD;AAEA,SAASM,qBAAqBC,MAAiB;IAC7C,OAAOC,gBAAgB;QACrBlB,KAAKiB,OAAOjB,GAAG;QACfmB,SAASF,OAAOE,OAAO;IACzB;AACF"}
1
+ {"version":3,"sources":["../../../src/actions/graphql/getGraphQLAPIs.ts"],"sourcesContent":["import {isMainThread} from 'node:worker_threads'\n\nimport {\n type CliConfig,\n getCliConfig,\n getStudioConfig,\n promisifyWorker,\n resolveLocalPackage,\n} from '@sanity/cli-core'\n\nimport {\n type ResolvedGraphQLAPI,\n type ResolvedSourceProperties,\n type SchemaDefinitionish,\n type TypeResolvedGraphQLAPI,\n} from './types.js'\n\nexport async function getGraphQLAPIs(workDir: string): Promise<ResolvedGraphQLAPI[]> {\n if (!isMainThread) {\n throw new Error('getGraphQLAPIs() must be called from the main thread')\n }\n\n // Resolve `sanity` local to the project in order to avoid using incompatible versions, and to avoid circular dependencies\n const {createSchema} = await resolveLocalPackage<typeof import('sanity')>('sanity', workDir)\n\n const defaultSchema = createSchema({name: 'default', types: []})\n const defaultTypes = defaultSchema.getTypeNames()\n const isCustomType = (type: SchemaDefinitionish) => !defaultTypes.includes(type.name)\n\n const apis = await getApisWithSchemaTypes(workDir)\n const resolved = apis.map(\n ({schemaTypes, ...api}): ResolvedSourceProperties => ({\n schema: createSchema({\n name: 'default',\n types: schemaTypes.filter((element) => isCustomType(element)),\n }),\n ...api,\n }),\n )\n\n return resolved\n}\n\nasync function getApisWithSchemaTypes(workDir: string): Promise<TypeResolvedGraphQLAPI[]> {\n const cliConfig = await getCliConfig(workDir)\n const workspaces = await getStudioConfig(workDir, {resolvePlugins: true})\n\n return promisifyWorker<TypeResolvedGraphQLAPI[]>(\n new URL('getGraphQLAPIs.worker.js', import.meta.url),\n {\n env: process.env,\n workerData: {\n cliConfig: extractGraphQLConfig(cliConfig),\n workDir,\n workspaces,\n },\n },\n )\n}\n\nfunction extractGraphQLConfig(config: CliConfig) {\n return structuredClone({\n api: config.api,\n graphql: config.graphql,\n })\n}\n"],"names":["isMainThread","getCliConfig","getStudioConfig","promisifyWorker","resolveLocalPackage","getGraphQLAPIs","workDir","Error","createSchema","defaultSchema","name","types","defaultTypes","getTypeNames","isCustomType","type","includes","apis","getApisWithSchemaTypes","resolved","map","schemaTypes","api","schema","filter","element","cliConfig","workspaces","resolvePlugins","URL","url","env","process","workerData","extractGraphQLConfig","config","structuredClone","graphql"],"mappings":"AAAA,SAAQA,YAAY,QAAO,sBAAqB;AAEhD,SAEEC,YAAY,EACZC,eAAe,EACfC,eAAe,EACfC,mBAAmB,QACd,mBAAkB;AASzB,OAAO,eAAeC,eAAeC,OAAe;IAClD,IAAI,CAACN,cAAc;QACjB,MAAM,IAAIO,MAAM;IAClB;IAEA,0HAA0H;IAC1H,MAAM,EAACC,YAAY,EAAC,GAAG,MAAMJ,oBAA6C,UAAUE;IAEpF,MAAMG,gBAAgBD,aAAa;QAACE,MAAM;QAAWC,OAAO,EAAE;IAAA;IAC9D,MAAMC,eAAeH,cAAcI,YAAY;IAC/C,MAAMC,eAAe,CAACC,OAA8B,CAACH,aAAaI,QAAQ,CAACD,KAAKL,IAAI;IAEpF,MAAMO,OAAO,MAAMC,uBAAuBZ;IAC1C,MAAMa,WAAWF,KAAKG,GAAG,CACvB,CAAC,EAACC,WAAW,EAAE,GAAGC,KAAI,GAAgC,CAAA;YACpDC,QAAQf,aAAa;gBACnBE,MAAM;gBACNC,OAAOU,YAAYG,MAAM,CAAC,CAACC,UAAYX,aAAaW;YACtD;YACA,GAAGH,GAAG;QACR,CAAA;IAGF,OAAOH;AACT;AAEA,eAAeD,uBAAuBZ,OAAe;IACnD,MAAMoB,YAAY,MAAMzB,aAAaK;IACrC,MAAMqB,aAAa,MAAMzB,gBAAgBI,SAAS;QAACsB,gBAAgB;IAAI;IAEvE,OAAOzB,gBACL,IAAI0B,IAAI,4BAA4B,YAAYC,GAAG,GACnD;QACEC,KAAKC,QAAQD,GAAG;QAChBE,YAAY;YACVP,WAAWQ,qBAAqBR;YAChCpB;YACAqB;QACF;IACF;AAEJ;AAEA,SAASO,qBAAqBC,MAAiB;IAC7C,OAAOC,gBAAgB;QACrBd,KAAKa,OAAOb,GAAG;QACfe,SAASF,OAAOE,OAAO;IACzB;AACF"}
@@ -1,5 +1,5 @@
1
1
  import { isMainThread, parentPort, workerData } from 'node:worker_threads';
2
- import { isPlainObject } from 'lodash-es';
2
+ import isPlainObject from 'lodash-es/isPlainObject.js';
3
3
  import { oneline } from 'oneline';
4
4
  async function main() {
5
5
  if (isMainThread || !parentPort) {