prismic-ts-codegen 0.1.11 → 0.1.13

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 (202) hide show
  1. package/dist/_node_modules/quick-lru/index.cjs +234 -0
  2. package/dist/_node_modules/quick-lru/index.cjs.map +1 -0
  3. package/dist/_node_modules/quick-lru/index.js +235 -0
  4. package/dist/_node_modules/quick-lru/index.js.map +1 -0
  5. package/dist/constants.cjs +19 -21
  6. package/dist/constants.cjs.map +1 -1
  7. package/dist/constants.d.ts +2 -3
  8. package/dist/constants.js +19 -21
  9. package/dist/constants.js.map +1 -1
  10. package/dist/generateTypes.cjs +71 -90
  11. package/dist/generateTypes.cjs.map +1 -1
  12. package/dist/generateTypes.d.ts +2 -1
  13. package/dist/generateTypes.js +71 -90
  14. package/dist/generateTypes.js.map +1 -1
  15. package/dist/lib/addBlankLine.cjs +12 -0
  16. package/dist/lib/addBlankLine.cjs.map +1 -0
  17. package/dist/lib/addBlankLine.d.ts +5 -0
  18. package/dist/lib/addBlankLine.js +12 -0
  19. package/dist/lib/addBlankLine.js.map +1 -0
  20. package/dist/lib/addLine.cjs +8 -0
  21. package/dist/lib/addLine.cjs.map +1 -0
  22. package/dist/lib/addLine.d.ts +1 -0
  23. package/dist/lib/addLine.js +8 -0
  24. package/dist/lib/addLine.js.map +1 -0
  25. package/dist/lib/addSection.cjs +8 -0
  26. package/dist/lib/addSection.cjs.map +1 -0
  27. package/dist/lib/addSection.d.ts +1 -0
  28. package/dist/lib/addSection.js +8 -0
  29. package/dist/lib/addSection.js.map +1 -0
  30. package/dist/lib/addTrailingNewLine.cjs +11 -0
  31. package/dist/lib/addTrailingNewLine.cjs.map +1 -0
  32. package/dist/lib/addTrailingNewLine.d.ts +5 -0
  33. package/dist/lib/addTrailingNewLine.js +11 -0
  34. package/dist/lib/addTrailingNewLine.js.map +1 -0
  35. package/dist/lib/buildCustomTypeDataType.cjs +51 -0
  36. package/dist/lib/buildCustomTypeDataType.cjs.map +1 -0
  37. package/dist/lib/buildCustomTypeDataType.d.ts +13 -0
  38. package/dist/lib/buildCustomTypeDataType.js +51 -0
  39. package/dist/lib/buildCustomTypeDataType.js.map +1 -0
  40. package/dist/lib/buildCustomTypeType.cjs +60 -0
  41. package/dist/lib/buildCustomTypeType.cjs.map +1 -0
  42. package/dist/lib/buildCustomTypeType.d.ts +17 -0
  43. package/dist/lib/buildCustomTypeType.js +60 -0
  44. package/dist/lib/buildCustomTypeType.js.map +1 -0
  45. package/dist/lib/buildFieldDocs.cjs +67 -35
  46. package/dist/lib/buildFieldDocs.cjs.map +1 -1
  47. package/dist/lib/buildFieldDocs.d.ts +7 -11
  48. package/dist/lib/buildFieldDocs.js +67 -35
  49. package/dist/lib/buildFieldDocs.js.map +1 -1
  50. package/dist/lib/buildFieldProperties.cjs +300 -0
  51. package/dist/lib/buildFieldProperties.cjs.map +1 -0
  52. package/dist/lib/buildFieldProperties.d.ts +14 -0
  53. package/dist/lib/buildFieldProperties.js +300 -0
  54. package/dist/lib/buildFieldProperties.js.map +1 -0
  55. package/dist/lib/buildSharedSliceType.cjs +140 -0
  56. package/dist/lib/buildSharedSliceType.cjs.map +1 -0
  57. package/dist/lib/buildSharedSliceType.d.ts +16 -0
  58. package/dist/lib/buildSharedSliceType.js +140 -0
  59. package/dist/lib/buildSharedSliceType.js.map +1 -0
  60. package/dist/lib/buildTypeName.cjs +4 -2
  61. package/dist/lib/buildTypeName.cjs.map +1 -1
  62. package/dist/lib/buildTypeName.js +4 -2
  63. package/dist/lib/buildTypeName.js.map +1 -1
  64. package/dist/lib/buildUnion.cjs +7 -0
  65. package/dist/lib/buildUnion.cjs.map +1 -0
  66. package/dist/lib/buildUnion.d.ts +1 -0
  67. package/dist/lib/buildUnion.js +7 -0
  68. package/dist/lib/buildUnion.js.map +1 -0
  69. package/dist/lib/checkHasUIDFIeld.cjs +7 -0
  70. package/dist/lib/checkHasUIDFIeld.cjs.map +1 -0
  71. package/dist/lib/checkHasUIDFIeld.d.ts +2 -0
  72. package/dist/lib/checkHasUIDFIeld.js +7 -0
  73. package/dist/lib/checkHasUIDFIeld.js.map +1 -0
  74. package/dist/lib/getAPIIDPath.cjs +18 -14
  75. package/dist/lib/getAPIIDPath.cjs.map +1 -1
  76. package/dist/lib/getAPIIDPath.d.ts +4 -8
  77. package/dist/lib/getAPIIDPath.js +18 -14
  78. package/dist/lib/getAPIIDPath.js.map +1 -1
  79. package/dist/lib/getCacheKey.cjs +25 -0
  80. package/dist/lib/getCacheKey.cjs.map +1 -0
  81. package/dist/lib/getCacheKey.d.ts +9 -0
  82. package/dist/lib/getCacheKey.js +8 -0
  83. package/dist/lib/getCacheKey.js.map +1 -0
  84. package/dist/lib/getHumanReadableModelName.cjs +13 -17
  85. package/dist/lib/getHumanReadableModelName.cjs.map +1 -1
  86. package/dist/lib/getHumanReadableModelName.d.ts +3 -3
  87. package/dist/lib/getHumanReadableModelName.js +13 -17
  88. package/dist/lib/getHumanReadableModelName.js.map +1 -1
  89. package/dist/lib/{getHumanReadableFieldPath.cjs → getHumanReadablePath.cjs} +8 -8
  90. package/dist/lib/getHumanReadablePath.cjs.map +1 -0
  91. package/dist/lib/getHumanReadablePath.d.ts +6 -0
  92. package/dist/lib/{getHumanReadableFieldPath.js → getHumanReadablePath.js} +8 -8
  93. package/dist/lib/getHumanReadablePath.js.map +1 -0
  94. package/dist/types.d.ts +9 -1
  95. package/package.json +18 -17
  96. package/src/constants.ts +19 -22
  97. package/src/generateTypes.ts +109 -108
  98. package/src/lib/addBlankLine.ts +13 -0
  99. package/src/lib/addLine.ts +5 -0
  100. package/src/lib/addSection.ts +5 -0
  101. package/src/lib/addTrailingNewLine.ts +14 -0
  102. package/src/lib/buildCustomTypeDataType.ts +74 -0
  103. package/src/lib/buildCustomTypeType.ts +101 -0
  104. package/src/lib/buildFieldDocs.ts +128 -68
  105. package/src/lib/buildFieldProperties.ts +513 -0
  106. package/src/lib/buildSharedSliceType.ts +213 -0
  107. package/src/lib/buildTypeName.ts +4 -2
  108. package/src/lib/buildUnion.ts +3 -0
  109. package/src/lib/checkHasUIDFIeld.ts +5 -0
  110. package/src/lib/getAPIIDPath.ts +40 -41
  111. package/src/lib/getCacheKey.ts +13 -0
  112. package/src/lib/getHumanReadableModelName.ts +23 -20
  113. package/src/lib/getHumanReadablePath.ts +24 -0
  114. package/src/types.ts +11 -1
  115. package/dist/lib/addInterfacePropertiesForFields.cjs +0 -489
  116. package/dist/lib/addInterfacePropertiesForFields.cjs.map +0 -1
  117. package/dist/lib/addInterfacePropertiesForFields.d.ts +0 -21
  118. package/dist/lib/addInterfacePropertiesForFields.js +0 -489
  119. package/dist/lib/addInterfacePropertiesForFields.js.map +0 -1
  120. package/dist/lib/addTypeAliasForCustomType.cjs +0 -81
  121. package/dist/lib/addTypeAliasForCustomType.cjs.map +0 -1
  122. package/dist/lib/addTypeAliasForCustomType.d.ts +0 -11
  123. package/dist/lib/addTypeAliasForCustomType.js +0 -81
  124. package/dist/lib/addTypeAliasForCustomType.js.map +0 -1
  125. package/dist/lib/addTypeAliasForSharedSlice.cjs +0 -149
  126. package/dist/lib/addTypeAliasForSharedSlice.cjs.map +0 -1
  127. package/dist/lib/addTypeAliasForSharedSlice.d.ts +0 -10
  128. package/dist/lib/addTypeAliasForSharedSlice.js +0 -149
  129. package/dist/lib/addTypeAliasForSharedSlice.js.map +0 -1
  130. package/dist/lib/buildSharedSliceInterfaceNamePart.cjs +0 -8
  131. package/dist/lib/buildSharedSliceInterfaceNamePart.cjs.map +0 -1
  132. package/dist/lib/buildSharedSliceInterfaceNamePart.d.ts +0 -5
  133. package/dist/lib/buildSharedSliceInterfaceNamePart.js +0 -8
  134. package/dist/lib/buildSharedSliceInterfaceNamePart.js.map +0 -1
  135. package/dist/lib/getFieldDocumentationURL.cjs +0 -8
  136. package/dist/lib/getFieldDocumentationURL.cjs.map +0 -1
  137. package/dist/lib/getFieldDocumentationURL.d.ts +0 -6
  138. package/dist/lib/getFieldDocumentationURL.js +0 -8
  139. package/dist/lib/getFieldDocumentationURL.js.map +0 -1
  140. package/dist/lib/getHumanReadableFieldPath.cjs.map +0 -1
  141. package/dist/lib/getHumanReadableFieldPath.d.ts +0 -10
  142. package/dist/lib/getHumanReadableFieldPath.js.map +0 -1
  143. package/dist/lib/getHumanReadableFieldType.cjs +0 -36
  144. package/dist/lib/getHumanReadableFieldType.cjs.map +0 -1
  145. package/dist/lib/getHumanReadableFieldType.d.ts +0 -6
  146. package/dist/lib/getHumanReadableFieldType.js +0 -36
  147. package/dist/lib/getHumanReadableFieldType.js.map +0 -1
  148. package/dist/lib/getSourceFileText.cjs +0 -9
  149. package/dist/lib/getSourceFileText.cjs.map +0 -1
  150. package/dist/lib/getSourceFileText.d.ts +0 -2
  151. package/dist/lib/getSourceFileText.js +0 -9
  152. package/dist/lib/getSourceFileText.js.map +0 -1
  153. package/dist/lib/hasOwnProperty.cjs +0 -7
  154. package/dist/lib/hasOwnProperty.cjs.map +0 -1
  155. package/dist/lib/hasOwnProperty.d.ts +0 -10
  156. package/dist/lib/hasOwnProperty.js +0 -7
  157. package/dist/lib/hasOwnProperty.js.map +0 -1
  158. package/dist/lib/isCustomTypeModel.cjs +0 -7
  159. package/dist/lib/isCustomTypeModel.cjs.map +0 -1
  160. package/dist/lib/isCustomTypeModel.d.ts +0 -2
  161. package/dist/lib/isCustomTypeModel.js +0 -7
  162. package/dist/lib/isCustomTypeModel.js.map +0 -1
  163. package/dist/lib/isCustomTypeModelField.cjs +0 -7
  164. package/dist/lib/isCustomTypeModelField.cjs.map +0 -1
  165. package/dist/lib/isCustomTypeModelField.d.ts +0 -2
  166. package/dist/lib/isCustomTypeModelField.js +0 -7
  167. package/dist/lib/isCustomTypeModelField.js.map +0 -1
  168. package/dist/lib/isCustomTypeModelSlice.cjs +0 -8
  169. package/dist/lib/isCustomTypeModelSlice.cjs.map +0 -1
  170. package/dist/lib/isCustomTypeModelSlice.d.ts +0 -2
  171. package/dist/lib/isCustomTypeModelSlice.js +0 -8
  172. package/dist/lib/isCustomTypeModelSlice.js.map +0 -1
  173. package/dist/lib/isSharedSliceModel.cjs +0 -8
  174. package/dist/lib/isSharedSliceModel.cjs.map +0 -1
  175. package/dist/lib/isSharedSliceModel.d.ts +0 -2
  176. package/dist/lib/isSharedSliceModel.js +0 -8
  177. package/dist/lib/isSharedSliceModel.js.map +0 -1
  178. package/dist/lib/pascalCase.cjs +0 -8
  179. package/dist/lib/pascalCase.cjs.map +0 -1
  180. package/dist/lib/pascalCase.d.ts +0 -1
  181. package/dist/lib/pascalCase.js +0 -8
  182. package/dist/lib/pascalCase.js.map +0 -1
  183. package/dist/lib/writeFieldDocsDescription.cjs +0 -29
  184. package/dist/lib/writeFieldDocsDescription.cjs.map +0 -1
  185. package/dist/lib/writeFieldDocsDescription.d.ts +0 -13
  186. package/dist/lib/writeFieldDocsDescription.js +0 -29
  187. package/dist/lib/writeFieldDocsDescription.js.map +0 -1
  188. package/src/lib/addInterfacePropertiesForFields.ts +0 -665
  189. package/src/lib/addTypeAliasForCustomType.ts +0 -120
  190. package/src/lib/addTypeAliasForSharedSlice.ts +0 -201
  191. package/src/lib/buildSharedSliceInterfaceNamePart.ts +0 -11
  192. package/src/lib/getFieldDocumentationURL.ts +0 -15
  193. package/src/lib/getHumanReadableFieldPath.ts +0 -36
  194. package/src/lib/getHumanReadableFieldType.ts +0 -55
  195. package/src/lib/getSourceFileText.ts +0 -14
  196. package/src/lib/hasOwnProperty.ts +0 -15
  197. package/src/lib/isCustomTypeModel.ts +0 -5
  198. package/src/lib/isCustomTypeModelField.ts +0 -7
  199. package/src/lib/isCustomTypeModelSlice.ts +0 -14
  200. package/src/lib/isSharedSliceModel.ts +0 -14
  201. package/src/lib/pascalCase.ts +0 -9
  202. package/src/lib/writeFieldDocsDescription.ts +0 -51
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const crypto = require("node:crypto");
4
+ function _interopNamespaceDefault(e) {
5
+ const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
6
+ if (e) {
7
+ for (const k in e) {
8
+ if (k !== "default") {
9
+ const d = Object.getOwnPropertyDescriptor(e, k);
10
+ Object.defineProperty(n, k, d.get ? d : {
11
+ enumerable: true,
12
+ get: () => e[k]
13
+ });
14
+ }
15
+ }
16
+ }
17
+ n.default = e;
18
+ return Object.freeze(n);
19
+ }
20
+ const crypto__namespace = /* @__PURE__ */ _interopNamespaceDefault(crypto);
21
+ const getCacheKey = (input) => {
22
+ return crypto__namespace.createHash("sha1").update(JSON.stringify(input)).digest("hex");
23
+ };
24
+ exports.getCacheKey = getCacheKey;
25
+ //# sourceMappingURL=getCacheKey.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getCacheKey.cjs","sources":["../../../src/lib/getCacheKey.ts"],"sourcesContent":["import * as crypto from \"node:crypto\";\n\n/**\n * Returns a key based on the provided input that can be used as a cache\n * identifier.\n *\n * @param input - The value used to create a key.\n *\n * @returns The cache key.\n */\nexport const getCacheKey = (input: unknown): string => {\n\treturn crypto.createHash(\"sha1\").update(JSON.stringify(input)).digest(\"hex\");\n};\n"],"names":["crypto"],"mappings":";;;;;;;;;;;;;;;;;;;;AAUa,MAAA,cAAc,CAAC,UAA0B;AAC9C,SAAAA,kBAAO,WAAW,MAAM,EAAE,OAAO,KAAK,UAAU,KAAK,CAAC,EAAE,OAAO,KAAK;AAC5E;;"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Returns a key based on the provided input that can be used as a cache
3
+ * identifier.
4
+ *
5
+ * @param input - The value used to create a key.
6
+ *
7
+ * @returns The cache key.
8
+ */
9
+ export declare const getCacheKey: (input: unknown) => string;
@@ -0,0 +1,8 @@
1
+ import * as crypto from "node:crypto";
2
+ const getCacheKey = (input) => {
3
+ return crypto.createHash("sha1").update(JSON.stringify(input)).digest("hex");
4
+ };
5
+ export {
6
+ getCacheKey
7
+ };
8
+ //# sourceMappingURL=getCacheKey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getCacheKey.js","sources":["../../../src/lib/getCacheKey.ts"],"sourcesContent":["import * as crypto from \"node:crypto\";\n\n/**\n * Returns a key based on the provided input that can be used as a cache\n * identifier.\n *\n * @param input - The value used to create a key.\n *\n * @returns The cache key.\n */\nexport const getCacheKey = (input: unknown): string => {\n\treturn crypto.createHash(\"sha1\").update(JSON.stringify(input)).digest(\"hex\");\n};\n"],"names":[],"mappings":";AAUa,MAAA,cAAc,CAAC,UAA0B;AAC9C,SAAA,OAAO,WAAW,MAAM,EAAE,OAAO,KAAK,UAAU,KAAK,CAAC,EAAE,OAAO,KAAK;AAC5E;"}
@@ -1,24 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const isCustomTypeModel = require("./isCustomTypeModel.cjs");
4
- const isCustomTypeModelField = require("./isCustomTypeModelField.cjs");
5
- const isCustomTypeModelSlice = require("./isCustomTypeModelSlice.cjs");
6
- const isSharedSliceModel = require("./isSharedSliceModel.cjs");
7
- const getHumanReadableModelName = (config) => {
8
- if (isCustomTypeModel.isCustomTypeModel(config.model)) {
9
- return config.model.label || config.model.id;
10
- } else if (isSharedSliceModel.isSharedSliceModel(config.model)) {
11
- return config.model.name;
12
- } else if (isCustomTypeModelField.isCustomTypeModelField(config.model)) {
13
- if (config.model.config && "label" in config.model.config) {
14
- return config.model.config.label || config.id;
15
- } else if (config.model.config && "fieldset" in config.model) {
16
- return config.model.fieldset || config.id;
3
+ const getHumanReadableModelName = (args) => {
4
+ if ("json" in args.model) {
5
+ return args.model.label || args.model.id;
6
+ } else if ("type" in args.model && args.model.type === "SharedSlice") {
7
+ return args.model.name;
8
+ } else if ("type" in args.model && args.model.type === "Slice") {
9
+ return args.model.fieldset || args.name;
10
+ } else if ("type" in args.model) {
11
+ if (args.model.config && "label" in args.model.config) {
12
+ return args.model.config.label || args.name;
13
+ } else if (args.model.config && "fieldset" in args.model) {
14
+ return args.model.fieldset || args.name;
17
15
  }
18
- } else if (isCustomTypeModelSlice.isCustomTypeModelSlice(config.model)) {
19
- return config.model.fieldset || config.id;
20
16
  }
21
- return `\`${config.id}\``;
17
+ return `\`${args.name}\``;
22
18
  };
23
19
  exports.getHumanReadableModelName = getHumanReadableModelName;
24
20
  //# sourceMappingURL=getHumanReadableModelName.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"getHumanReadableModelName.cjs","sources":["../../../src/lib/getHumanReadableModelName.ts"],"sourcesContent":["import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/client\";\n\nimport { isCustomTypeModel } from \"./isCustomTypeModel\";\nimport { isCustomTypeModelField } from \"./isCustomTypeModelField\";\nimport { isCustomTypeModelSlice } from \"./isCustomTypeModelSlice\";\nimport { isSharedSliceModel } from \"./isSharedSliceModel\";\n\ntype GetModelHumanNameConfig = {\n\tid: string;\n\tmodel:\n\t\t| CustomTypeModel\n\t\t| SharedSliceModel\n\t\t| CustomTypeModelField\n\t\t| CustomTypeModelSlice;\n};\n\nexport const getHumanReadableModelName = (\n\tconfig: GetModelHumanNameConfig,\n): string => {\n\tif (isCustomTypeModel(config.model)) {\n\t\treturn config.model.label || config.model.id;\n\t} else if (isSharedSliceModel(config.model)) {\n\t\treturn config.model.name;\n\t} else if (isCustomTypeModelField(config.model)) {\n\t\tif (config.model.config && \"label\" in config.model.config) {\n\t\t\t// Non-Slice Zone fields\n\t\t\treturn config.model.config.label || config.id;\n\t\t} else if (config.model.config && \"fieldset\" in config.model) {\n\t\t\t// Slice Zone\n\t\t\treturn config.model.fieldset || config.id;\n\t\t}\n\t} else if (isCustomTypeModelSlice(config.model)) {\n\t\treturn config.model.fieldset || config.id;\n\t}\n\n\treturn `\\`${config.id}\\``;\n};\n"],"names":["isCustomTypeModel","isSharedSliceModel","isCustomTypeModelField","isCustomTypeModelSlice"],"mappings":";;;;;;AAqBa,MAAA,4BAA4B,CACxC,WACW;AACP,MAAAA,kBAAA,kBAAkB,OAAO,KAAK,GAAG;AACpC,WAAO,OAAO,MAAM,SAAS,OAAO,MAAM;AAAA,EAChC,WAAAC,mBAAA,mBAAmB,OAAO,KAAK,GAAG;AAC5C,WAAO,OAAO,MAAM;AAAA,EACV,WAAAC,uBAAA,uBAAuB,OAAO,KAAK,GAAG;AAChD,QAAI,OAAO,MAAM,UAAU,WAAW,OAAO,MAAM,QAAQ;AAE1D,aAAO,OAAO,MAAM,OAAO,SAAS,OAAO;AAAA,IAAA,WACjC,OAAO,MAAM,UAAU,cAAc,OAAO,OAAO;AAEtD,aAAA,OAAO,MAAM,YAAY,OAAO;AAAA,IACvC;AAAA,EACS,WAAAC,uBAAA,uBAAuB,OAAO,KAAK,GAAG;AACzC,WAAA,OAAO,MAAM,YAAY,OAAO;AAAA,EACvC;AAED,SAAO,KAAK,OAAO;AACpB;;"}
1
+ {"version":3,"file":"getHumanReadableModelName.cjs","sources":["../../../src/lib/getHumanReadableModelName.ts"],"sourcesContent":["import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/client\";\n\ntype GetModelHumanNameArgs = {\n\tname: string;\n\tmodel:\n\t\t| CustomTypeModel\n\t\t| SharedSliceModel\n\t\t| CustomTypeModelField\n\t\t| CustomTypeModelSlice;\n};\n\nexport const getHumanReadableModelName = (\n\targs: GetModelHumanNameArgs,\n): string => {\n\tif (\"json\" in args.model) {\n\t\t// Custom type model\n\n\t\treturn args.model.label || args.model.id;\n\t} else if (\"type\" in args.model && args.model.type === \"SharedSlice\") {\n\t\t// Shared Slice model\n\n\t\treturn args.model.name;\n\t} else if (\"type\" in args.model && args.model.type === \"Slice\") {\n\t\t// Legacy Slice model\n\n\t\treturn args.model.fieldset || args.name;\n\t} else if (\"type\" in args.model) {\n\t\t// Field model\n\n\t\tif (args.model.config && \"label\" in args.model.config) {\n\t\t\t// Non-Slice Zone fields\n\t\t\treturn args.model.config.label || args.name;\n\t\t} else if (args.model.config && \"fieldset\" in args.model) {\n\t\t\t// Slice Zone\n\t\t\treturn args.model.fieldset || args.name;\n\t\t}\n\t}\n\n\treturn `\\`${args.name}\\``;\n};\n"],"names":[],"mappings":";;AAgBa,MAAA,4BAA4B,CACxC,SACW;AACP,MAAA,UAAU,KAAK,OAAO;AAGzB,WAAO,KAAK,MAAM,SAAS,KAAK,MAAM;AAAA,EAAA,WAC5B,UAAU,KAAK,SAAS,KAAK,MAAM,SAAS,eAAe;AAGrE,WAAO,KAAK,MAAM;AAAA,EAAA,WACR,UAAU,KAAK,SAAS,KAAK,MAAM,SAAS,SAAS;AAGxD,WAAA,KAAK,MAAM,YAAY,KAAK;AAAA,EAAA,WACzB,UAAU,KAAK,OAAO;AAGhC,QAAI,KAAK,MAAM,UAAU,WAAW,KAAK,MAAM,QAAQ;AAEtD,aAAO,KAAK,MAAM,OAAO,SAAS,KAAK;AAAA,IAAA,WAC7B,KAAK,MAAM,UAAU,cAAc,KAAK,OAAO;AAElD,aAAA,KAAK,MAAM,YAAY,KAAK;AAAA,IACnC;AAAA,EACD;AAED,SAAO,KAAK,KAAK;AAClB;;"}
@@ -1,7 +1,7 @@
1
1
  import type { CustomTypeModel, CustomTypeModelField, CustomTypeModelSlice, SharedSliceModel } from "@prismicio/client";
2
- type GetModelHumanNameConfig = {
3
- id: string;
2
+ type GetModelHumanNameArgs = {
3
+ name: string;
4
4
  model: CustomTypeModel | SharedSliceModel | CustomTypeModelField | CustomTypeModelSlice;
5
5
  };
6
- export declare const getHumanReadableModelName: (config: GetModelHumanNameConfig) => string;
6
+ export declare const getHumanReadableModelName: (args: GetModelHumanNameArgs) => string;
7
7
  export {};
@@ -1,22 +1,18 @@
1
- import { isCustomTypeModel } from "./isCustomTypeModel.js";
2
- import { isCustomTypeModelField } from "./isCustomTypeModelField.js";
3
- import { isCustomTypeModelSlice } from "./isCustomTypeModelSlice.js";
4
- import { isSharedSliceModel } from "./isSharedSliceModel.js";
5
- const getHumanReadableModelName = (config) => {
6
- if (isCustomTypeModel(config.model)) {
7
- return config.model.label || config.model.id;
8
- } else if (isSharedSliceModel(config.model)) {
9
- return config.model.name;
10
- } else if (isCustomTypeModelField(config.model)) {
11
- if (config.model.config && "label" in config.model.config) {
12
- return config.model.config.label || config.id;
13
- } else if (config.model.config && "fieldset" in config.model) {
14
- return config.model.fieldset || config.id;
1
+ const getHumanReadableModelName = (args) => {
2
+ if ("json" in args.model) {
3
+ return args.model.label || args.model.id;
4
+ } else if ("type" in args.model && args.model.type === "SharedSlice") {
5
+ return args.model.name;
6
+ } else if ("type" in args.model && args.model.type === "Slice") {
7
+ return args.model.fieldset || args.name;
8
+ } else if ("type" in args.model) {
9
+ if (args.model.config && "label" in args.model.config) {
10
+ return args.model.config.label || args.name;
11
+ } else if (args.model.config && "fieldset" in args.model) {
12
+ return args.model.fieldset || args.name;
15
13
  }
16
- } else if (isCustomTypeModelSlice(config.model)) {
17
- return config.model.fieldset || config.id;
18
14
  }
19
- return `\`${config.id}\``;
15
+ return `\`${args.name}\``;
20
16
  };
21
17
  export {
22
18
  getHumanReadableModelName
@@ -1 +1 @@
1
- {"version":3,"file":"getHumanReadableModelName.js","sources":["../../../src/lib/getHumanReadableModelName.ts"],"sourcesContent":["import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/client\";\n\nimport { isCustomTypeModel } from \"./isCustomTypeModel\";\nimport { isCustomTypeModelField } from \"./isCustomTypeModelField\";\nimport { isCustomTypeModelSlice } from \"./isCustomTypeModelSlice\";\nimport { isSharedSliceModel } from \"./isSharedSliceModel\";\n\ntype GetModelHumanNameConfig = {\n\tid: string;\n\tmodel:\n\t\t| CustomTypeModel\n\t\t| SharedSliceModel\n\t\t| CustomTypeModelField\n\t\t| CustomTypeModelSlice;\n};\n\nexport const getHumanReadableModelName = (\n\tconfig: GetModelHumanNameConfig,\n): string => {\n\tif (isCustomTypeModel(config.model)) {\n\t\treturn config.model.label || config.model.id;\n\t} else if (isSharedSliceModel(config.model)) {\n\t\treturn config.model.name;\n\t} else if (isCustomTypeModelField(config.model)) {\n\t\tif (config.model.config && \"label\" in config.model.config) {\n\t\t\t// Non-Slice Zone fields\n\t\t\treturn config.model.config.label || config.id;\n\t\t} else if (config.model.config && \"fieldset\" in config.model) {\n\t\t\t// Slice Zone\n\t\t\treturn config.model.fieldset || config.id;\n\t\t}\n\t} else if (isCustomTypeModelSlice(config.model)) {\n\t\treturn config.model.fieldset || config.id;\n\t}\n\n\treturn `\\`${config.id}\\``;\n};\n"],"names":[],"mappings":";;;;AAqBa,MAAA,4BAA4B,CACxC,WACW;AACP,MAAA,kBAAkB,OAAO,KAAK,GAAG;AACpC,WAAO,OAAO,MAAM,SAAS,OAAO,MAAM;AAAA,EAChC,WAAA,mBAAmB,OAAO,KAAK,GAAG;AAC5C,WAAO,OAAO,MAAM;AAAA,EACV,WAAA,uBAAuB,OAAO,KAAK,GAAG;AAChD,QAAI,OAAO,MAAM,UAAU,WAAW,OAAO,MAAM,QAAQ;AAE1D,aAAO,OAAO,MAAM,OAAO,SAAS,OAAO;AAAA,IAAA,WACjC,OAAO,MAAM,UAAU,cAAc,OAAO,OAAO;AAEtD,aAAA,OAAO,MAAM,YAAY,OAAO;AAAA,IACvC;AAAA,EACS,WAAA,uBAAuB,OAAO,KAAK,GAAG;AACzC,WAAA,OAAO,MAAM,YAAY,OAAO;AAAA,EACvC;AAED,SAAO,KAAK,OAAO;AACpB;"}
1
+ {"version":3,"file":"getHumanReadableModelName.js","sources":["../../../src/lib/getHumanReadableModelName.ts"],"sourcesContent":["import type {\n\tCustomTypeModel,\n\tCustomTypeModelField,\n\tCustomTypeModelSlice,\n\tSharedSliceModel,\n} from \"@prismicio/client\";\n\ntype GetModelHumanNameArgs = {\n\tname: string;\n\tmodel:\n\t\t| CustomTypeModel\n\t\t| SharedSliceModel\n\t\t| CustomTypeModelField\n\t\t| CustomTypeModelSlice;\n};\n\nexport const getHumanReadableModelName = (\n\targs: GetModelHumanNameArgs,\n): string => {\n\tif (\"json\" in args.model) {\n\t\t// Custom type model\n\n\t\treturn args.model.label || args.model.id;\n\t} else if (\"type\" in args.model && args.model.type === \"SharedSlice\") {\n\t\t// Shared Slice model\n\n\t\treturn args.model.name;\n\t} else if (\"type\" in args.model && args.model.type === \"Slice\") {\n\t\t// Legacy Slice model\n\n\t\treturn args.model.fieldset || args.name;\n\t} else if (\"type\" in args.model) {\n\t\t// Field model\n\n\t\tif (args.model.config && \"label\" in args.model.config) {\n\t\t\t// Non-Slice Zone fields\n\t\t\treturn args.model.config.label || args.name;\n\t\t} else if (args.model.config && \"fieldset\" in args.model) {\n\t\t\t// Slice Zone\n\t\t\treturn args.model.fieldset || args.name;\n\t\t}\n\t}\n\n\treturn `\\`${args.name}\\``;\n};\n"],"names":[],"mappings":"AAgBa,MAAA,4BAA4B,CACxC,SACW;AACP,MAAA,UAAU,KAAK,OAAO;AAGzB,WAAO,KAAK,MAAM,SAAS,KAAK,MAAM;AAAA,EAAA,WAC5B,UAAU,KAAK,SAAS,KAAK,MAAM,SAAS,eAAe;AAGrE,WAAO,KAAK,MAAM;AAAA,EAAA,WACR,UAAU,KAAK,SAAS,KAAK,MAAM,SAAS,SAAS;AAGxD,WAAA,KAAK,MAAM,YAAY,KAAK;AAAA,EAAA,WACzB,UAAU,KAAK,OAAO;AAGhC,QAAI,KAAK,MAAM,UAAU,WAAW,KAAK,MAAM,QAAQ;AAEtD,aAAO,KAAK,MAAM,OAAO,SAAS,KAAK;AAAA,IAAA,WAC7B,KAAK,MAAM,UAAU,cAAc,KAAK,OAAO;AAElD,aAAA,KAAK,MAAM,YAAY,KAAK;AAAA,IACnC;AAAA,EACD;AAED,SAAO,KAAK,KAAK;AAClB;"}
@@ -1,19 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const getHumanReadableModelName = require("./getHumanReadableModelName.cjs");
4
- const getHumanReadableFieldPath = (config) => {
5
- return config.path.map((element) => {
4
+ function getHumanReadablePath(args) {
5
+ return args.path.map((element) => {
6
6
  if (element.label) {
7
7
  return element.label;
8
8
  } else if (element.model) {
9
9
  return getHumanReadableModelName.getHumanReadableModelName({
10
- id: element.id,
11
- model: element.model
10
+ model: element.model,
11
+ name: element.name
12
12
  });
13
13
  } else {
14
- return element.id;
14
+ return element.name;
15
15
  }
16
16
  }).join(" → ");
17
- };
18
- exports.getHumanReadableFieldPath = getHumanReadableFieldPath;
19
- //# sourceMappingURL=getHumanReadableFieldPath.cjs.map
17
+ }
18
+ exports.getHumanReadablePath = getHumanReadablePath;
19
+ //# sourceMappingURL=getHumanReadablePath.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getHumanReadablePath.cjs","sources":["../../../src/lib/getHumanReadablePath.ts"],"sourcesContent":["import { FieldPath } from \"../types\";\n\nimport { getHumanReadableModelName } from \"./getHumanReadableModelName\";\n\ntype GetHumanReadablePathArgs = {\n\tpath: FieldPath;\n};\n\nexport function getHumanReadablePath(args: GetHumanReadablePathArgs) {\n\treturn args.path\n\t\t.map((element) => {\n\t\t\tif (element.label) {\n\t\t\t\treturn element.label;\n\t\t\t} else if (element.model) {\n\t\t\t\treturn getHumanReadableModelName({\n\t\t\t\t\tmodel: element.model,\n\t\t\t\t\tname: element.name,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn element.name;\n\t\t\t}\n\t\t})\n\t\t.join(\" → \");\n}\n"],"names":["getHumanReadableModelName"],"mappings":";;;AAQM,SAAU,qBAAqB,MAA8B;AAClE,SAAO,KAAK,KACV,IAAI,CAAC,YAAW;AAChB,QAAI,QAAQ,OAAO;AAClB,aAAO,QAAQ;AAAA,IAAA,WACL,QAAQ,OAAO;AACzB,aAAOA,oDAA0B;AAAA,QAChC,OAAO,QAAQ;AAAA,QACf,MAAM,QAAQ;AAAA,MAAA,CACd;AAAA,IAAA,OACK;AACN,aAAO,QAAQ;AAAA,IACf;AAAA,EAAA,CACD,EACA,KAAK,KAAK;AACb;;"}
@@ -0,0 +1,6 @@
1
+ import { FieldPath } from "../types";
2
+ type GetHumanReadablePathArgs = {
3
+ path: FieldPath;
4
+ };
5
+ export declare function getHumanReadablePath(args: GetHumanReadablePathArgs): string;
6
+ export {};
@@ -1,19 +1,19 @@
1
1
  import { getHumanReadableModelName } from "./getHumanReadableModelName.js";
2
- const getHumanReadableFieldPath = (config) => {
3
- return config.path.map((element) => {
2
+ function getHumanReadablePath(args) {
3
+ return args.path.map((element) => {
4
4
  if (element.label) {
5
5
  return element.label;
6
6
  } else if (element.model) {
7
7
  return getHumanReadableModelName({
8
- id: element.id,
9
- model: element.model
8
+ model: element.model,
9
+ name: element.name
10
10
  });
11
11
  } else {
12
- return element.id;
12
+ return element.name;
13
13
  }
14
14
  }).join(" → ");
15
- };
15
+ }
16
16
  export {
17
- getHumanReadableFieldPath
17
+ getHumanReadablePath
18
18
  };
19
- //# sourceMappingURL=getHumanReadableFieldPath.js.map
19
+ //# sourceMappingURL=getHumanReadablePath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getHumanReadablePath.js","sources":["../../../src/lib/getHumanReadablePath.ts"],"sourcesContent":["import { FieldPath } from \"../types\";\n\nimport { getHumanReadableModelName } from \"./getHumanReadableModelName\";\n\ntype GetHumanReadablePathArgs = {\n\tpath: FieldPath;\n};\n\nexport function getHumanReadablePath(args: GetHumanReadablePathArgs) {\n\treturn args.path\n\t\t.map((element) => {\n\t\t\tif (element.label) {\n\t\t\t\treturn element.label;\n\t\t\t} else if (element.model) {\n\t\t\t\treturn getHumanReadableModelName({\n\t\t\t\t\tmodel: element.model,\n\t\t\t\t\tname: element.name,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn element.name;\n\t\t\t}\n\t\t})\n\t\t.join(\" → \");\n}\n"],"names":[],"mappings":";AAQM,SAAU,qBAAqB,MAA8B;AAClE,SAAO,KAAK,KACV,IAAI,CAAC,YAAW;AAChB,QAAI,QAAQ,OAAO;AAClB,aAAO,QAAQ;AAAA,IAAA,WACL,QAAQ,OAAO;AACzB,aAAO,0BAA0B;AAAA,QAChC,OAAO,QAAQ;AAAA,QACf,MAAM,QAAQ;AAAA,MAAA,CACd;AAAA,IAAA,OACK;AACN,aAAO,QAAQ;AAAA,IACf;AAAA,EAAA,CACD,EACA,KAAK,KAAK;AACb;"}
package/dist/types.d.ts CHANGED
@@ -1,9 +1,17 @@
1
1
  import type { CustomTypeModel, CustomTypeModelField, CustomTypeModelSlice, SharedSliceModel } from "@prismicio/client";
2
2
  export type PathElement<Model extends CustomTypeModel | SharedSliceModel | CustomTypeModelField | CustomTypeModelSlice> = {
3
- id: string;
3
+ name: string;
4
4
  model?: Model;
5
5
  label?: string;
6
6
  };
7
+ export type FieldPath = [
8
+ PathElement<CustomTypeModel | SharedSliceModel>,
9
+ ...PathElement<CustomTypeModelField | CustomTypeModelSlice>[]
10
+ ];
11
+ export type AuxiliaryType = {
12
+ code: string;
13
+ name: string;
14
+ };
7
15
  export type FieldConfigs = {
8
16
  embed?: {
9
17
  providerTypes?: Record<string, string>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prismic-ts-codegen",
3
- "version": "0.1.11",
3
+ "version": "0.1.13",
4
4
  "description": "An experimental Prismic model-to-TypeScript-type generator",
5
5
  "keywords": [
6
6
  "typescript",
@@ -44,7 +44,9 @@
44
44
  "unit": "vitest run --coverage",
45
45
  "unit:watch": "vitest watch",
46
46
  "size": "size-limit",
47
- "test": "npm run lint && npm run types && npm run unit && npm run build && npm run size"
47
+ "test": "npm run lint && npm run types && npm run unit && npm run build && npm run size",
48
+ "bench": "vitest bench --watch=false",
49
+ "bench:watch": "vitest bench"
48
50
  },
49
51
  "dependencies": {
50
52
  "@prismicio/custom-types-client": "^1.1.0",
@@ -55,31 +57,30 @@
55
57
  "meow": "^12.0.1",
56
58
  "node-fetch": "^3.3.1",
57
59
  "pascal-case": "^3.1.2",
58
- "prettier": "^2.8.8",
59
- "ts-morph": "^18.0.0"
60
+ "quick-lru": "^6.1.1"
60
61
  },
61
62
  "devDependencies": {
62
- "@prismicio/client": "^7.0.0",
63
- "@prismicio/mock": "^0.2.0",
64
- "@prismicio/types": "^0.2.8",
65
- "@size-limit/preset-small-lib": "^8.2.4",
63
+ "@prismicio/client": "^7.1.0",
64
+ "@prismicio/mock": "^0.3.1",
65
+ "@size-limit/preset-small-lib": "^8.2.6",
66
66
  "@trivago/prettier-plugin-sort-imports": "^4.1.1",
67
67
  "@types/common-tags": "^1.8.1",
68
- "@types/prettier": "^2.7.2",
69
- "@typescript-eslint/eslint-plugin": "^5.59.6",
70
- "@typescript-eslint/parser": "^5.59.6",
71
- "@vitest/coverage-c8": "^0.31.1",
72
- "eslint": "^8.40.0",
68
+ "@typescript-eslint/eslint-plugin": "^5.60.1",
69
+ "@typescript-eslint/parser": "^5.60.1",
70
+ "@vitest/coverage-c8": "^0.33.0",
71
+ "eslint": "^8.43.0",
73
72
  "eslint-config-prettier": "^8.8.0",
74
73
  "eslint-plugin-prettier": "^4.2.1",
75
74
  "eslint-plugin-tsdoc": "^0.2.17",
75
+ "prettier": "^2.8.8",
76
76
  "prettier-plugin-jsdoc": "^0.4.2",
77
- "size-limit": "^8.2.4",
77
+ "prismic-ts-codegen-v0-1-11": "npm:prismic-ts-codegen@0.1.11",
78
+ "size-limit": "^8.2.6",
78
79
  "standard-version": "^9.5.0",
79
- "typescript": "^5.0.4",
80
- "vite": "^4.3.7",
80
+ "typescript": "^5.1.3",
81
+ "vite": "^4.3.9",
81
82
  "vite-plugin-sdk": "^0.1.1",
82
- "vitest": "^0.31.1"
83
+ "vitest": "^0.33.0"
83
84
  },
84
85
  "peerDependencies": {
85
86
  "@prismicio/client": "^6.6 || ^7",
package/src/constants.ts CHANGED
@@ -1,12 +1,9 @@
1
1
  import type { CustomTypeModelFieldType } from "@prismicio/client";
2
2
 
3
- export const BLANK_LINE_IDENTIFIER = "// ___BLANK_LINE_TO_BE_REPLACED___";
4
-
5
3
  export const CUSTOM_TYPES_DOCUMENTATION_URL =
6
- "https://prismic.io/docs/core-concepts/custom-types";
4
+ "https://prismic.io/docs/custom-types";
7
5
 
8
- export const SHARED_SLICES_DOCUMENTATION_URL =
9
- "https://prismic.io/docs/core-concepts/reusing-slices";
6
+ export const SHARED_SLICES_DOCUMENTATION_URL = "https://prismic.io/docs/slice";
10
7
 
11
8
  export const FIELD_DOCUMENTATION_URLS: Record<
12
9
  Exclude<
@@ -15,21 +12,21 @@ export const FIELD_DOCUMENTATION_URLS: Record<
15
12
  >,
16
13
  string
17
14
  > = {
18
- UID: "https://prismic.io/docs/core-concepts/uid",
19
- Boolean: "https://prismic.io/docs/core-concepts/boolean",
20
- Color: "https://prismic.io/docs/core-concepts/color",
21
- Date: "https://prismic.io/docs/core-concepts/date",
22
- Timestamp: "https://prismic.io/docs/core-concepts/timestamp",
23
- Number: "https://prismic.io/docs/core-concepts/number",
24
- Text: "https://prismic.io/docs/core-concepts/key-text",
25
- Select: "https://prismic.io/docs/core-concepts/select",
26
- StructuredText: "https://prismic.io/docs/core-concepts/rich-text-title",
27
- Image: "https://prismic.io/docs/core-concepts/image",
28
- Link: "https://prismic.io/docs/core-concepts/link-content-relationship",
29
- Embed: "https://prismic.io/docs/core-concepts/embed",
30
- GeoPoint: "https://prismic.io/docs/core-concepts/geopoint",
31
- Group: "https://prismic.io/docs/core-concepts/group",
32
- IntegrationFields: "https://prismic.io/docs/core-concepts/integration-fields",
33
- Slices: "https://prismic.io/docs/core-concepts/slices",
34
- Choice: "https://prismic.io/docs/core-concepts/slices",
15
+ UID: "https://prismic.io/docs/field#uid",
16
+ Boolean: "https://prismic.io/docs/field#boolean",
17
+ Color: "https://prismic.io/docs/field#color",
18
+ Date: "https://prismic.io/docs/field#date",
19
+ Timestamp: "https://prismic.io/docs/field#timestamp",
20
+ Number: "https://prismic.io/docs/field#number",
21
+ Text: "https://prismic.io/docs/field#key-text",
22
+ Select: "https://prismic.io/docs/field#select",
23
+ StructuredText: "https://prismic.io/docs/field#rich-text-title",
24
+ Image: "https://prismic.io/docs/field#image",
25
+ Link: "https://prismic.io/docs/field#link-content-relationship",
26
+ Embed: "https://prismic.io/docs/field#embed",
27
+ GeoPoint: "https://prismic.io/docs/field#geopoint",
28
+ Group: "https://prismic.io/docs/field#group",
29
+ IntegrationFields: "https://prismic.io/docs/field#integration",
30
+ Slices: "https://prismic.io/docs/field#slices",
31
+ Choice: "https://prismic.io/docs/field#slices",
35
32
  };