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
@@ -1,7 +1,9 @@
1
- import { pascalCase } from "./pascalCase";
1
+ import { pascalCase, pascalCaseTransformMerge } from "pascal-case";
2
2
 
3
3
  export const buildTypeName = (...parts: string[]) => {
4
- let name = pascalCase(parts.filter(Boolean).join(" "));
4
+ let name = pascalCase(parts.filter(Boolean).join(" "), {
5
+ transform: pascalCaseTransformMerge,
6
+ });
5
7
 
6
8
  if (/^[0-9]/.test(name) ? "_" : "") {
7
9
  name = `_${name}`;
@@ -0,0 +1,3 @@
1
+ export function buildUnion(types: string[]) {
2
+ return types.filter(Boolean).join(" | ");
3
+ }
@@ -0,0 +1,5 @@
1
+ import { CustomTypeModel } from "@prismicio/client";
2
+
3
+ export function checkHasUIDField(model: CustomTypeModel): boolean {
4
+ return "uid" in Object.assign({}, ...Object.values(model.json));
5
+ }
@@ -1,45 +1,44 @@
1
- import type {
2
- CustomTypeModel,
3
- CustomTypeModelField,
4
- CustomTypeModelSlice,
5
- SharedSliceModel,
6
- } from "@prismicio/client";
7
-
8
- import { PathElement } from "../types";
9
-
10
- import { isCustomTypeModelField } from "./isCustomTypeModelField";
11
- import { isCustomTypeModelSlice } from "./isCustomTypeModelSlice";
12
- import { isSharedSliceModel } from "./isSharedSliceModel";
13
-
14
- type GetAPIIDPathConfig = {
15
- path: [
16
- PathElement<CustomTypeModel | SharedSliceModel>,
17
- ...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],
18
- ];
1
+ import { FieldPath } from "../types";
2
+
3
+ type GetAPIIDPathArgs = {
4
+ path: FieldPath;
19
5
  };
20
6
 
21
- export const getAPIIDPath = (config: GetAPIIDPathConfig): string => {
22
- return config.path
23
- .map((element, i) => {
24
- if (
25
- isCustomTypeModelField(element.model) &&
26
- (element.model.type === "Group" || element.model.type === "Slices")
27
- ) {
28
- return `${element.id}[]`;
29
- } else {
30
- if (element.id === "items") {
31
- const previousElement = config.path[i - 1];
32
-
33
- if (
34
- isCustomTypeModelSlice(previousElement.model) ||
35
- isSharedSliceModel(previousElement.model)
36
- ) {
37
- return `${element.id}[]`;
38
- }
39
- }
7
+ export function getAPIIDPath(args: GetAPIIDPathArgs) {
8
+ let result = "";
9
+
10
+ for (let i = 0; i < args.path.length; i++) {
11
+ if (i > 0) {
12
+ result += ".";
13
+ }
14
+
15
+ const element = args.path[i];
16
+
17
+ if (
18
+ element.model &&
19
+ "type" in element.model &&
20
+ (element.model.type === "Group" || element.model.type === "Slices")
21
+ ) {
22
+ result += `${element.name}[]`;
23
+ } else {
24
+ if (element.name === "items") {
25
+ const previousElement = args.path[i - 1];
40
26
 
41
- return element.id;
27
+ if (
28
+ (previousElement.model && "json" in previousElement.model) ||
29
+ (previousElement.model &&
30
+ "type" in previousElement.model &&
31
+ previousElement.model.type === "SharedSlice")
32
+ ) {
33
+ result += `${element.name}[]`;
34
+
35
+ continue;
36
+ }
42
37
  }
43
- })
44
- .join(".");
45
- };
38
+
39
+ result += element.name;
40
+ }
41
+ }
42
+
43
+ return result;
44
+ }
@@ -0,0 +1,13 @@
1
+ import * as crypto from "node:crypto";
2
+
3
+ /**
4
+ * Returns a key based on the provided input that can be used as a cache
5
+ * identifier.
6
+ *
7
+ * @param input - The value used to create a key.
8
+ *
9
+ * @returns The cache key.
10
+ */
11
+ export const getCacheKey = (input: unknown): string => {
12
+ return crypto.createHash("sha1").update(JSON.stringify(input)).digest("hex");
13
+ };
@@ -5,13 +5,8 @@ import type {
5
5
  SharedSliceModel,
6
6
  } from "@prismicio/client";
7
7
 
8
- import { isCustomTypeModel } from "./isCustomTypeModel";
9
- import { isCustomTypeModelField } from "./isCustomTypeModelField";
10
- import { isCustomTypeModelSlice } from "./isCustomTypeModelSlice";
11
- import { isSharedSliceModel } from "./isSharedSliceModel";
12
-
13
- type GetModelHumanNameConfig = {
14
- id: string;
8
+ type GetModelHumanNameArgs = {
9
+ name: string;
15
10
  model:
16
11
  | CustomTypeModel
17
12
  | SharedSliceModel
@@ -20,23 +15,31 @@ type GetModelHumanNameConfig = {
20
15
  };
21
16
 
22
17
  export const getHumanReadableModelName = (
23
- config: GetModelHumanNameConfig,
18
+ args: GetModelHumanNameArgs,
24
19
  ): string => {
25
- if (isCustomTypeModel(config.model)) {
26
- return config.model.label || config.model.id;
27
- } else if (isSharedSliceModel(config.model)) {
28
- return config.model.name;
29
- } else if (isCustomTypeModelField(config.model)) {
30
- if (config.model.config && "label" in config.model.config) {
20
+ if ("json" in args.model) {
21
+ // Custom type model
22
+
23
+ return args.model.label || args.model.id;
24
+ } else if ("type" in args.model && args.model.type === "SharedSlice") {
25
+ // Shared Slice model
26
+
27
+ return args.model.name;
28
+ } else if ("type" in args.model && args.model.type === "Slice") {
29
+ // Legacy Slice model
30
+
31
+ return args.model.fieldset || args.name;
32
+ } else if ("type" in args.model) {
33
+ // Field model
34
+
35
+ if (args.model.config && "label" in args.model.config) {
31
36
  // Non-Slice Zone fields
32
- return config.model.config.label || config.id;
33
- } else if (config.model.config && "fieldset" in config.model) {
37
+ return args.model.config.label || args.name;
38
+ } else if (args.model.config && "fieldset" in args.model) {
34
39
  // Slice Zone
35
- return config.model.fieldset || config.id;
40
+ return args.model.fieldset || args.name;
36
41
  }
37
- } else if (isCustomTypeModelSlice(config.model)) {
38
- return config.model.fieldset || config.id;
39
42
  }
40
43
 
41
- return `\`${config.id}\``;
44
+ return `\`${args.name}\``;
42
45
  };
@@ -0,0 +1,24 @@
1
+ import { FieldPath } from "../types";
2
+
3
+ import { getHumanReadableModelName } from "./getHumanReadableModelName";
4
+
5
+ type GetHumanReadablePathArgs = {
6
+ path: FieldPath;
7
+ };
8
+
9
+ export function getHumanReadablePath(args: GetHumanReadablePathArgs) {
10
+ return args.path
11
+ .map((element) => {
12
+ if (element.label) {
13
+ return element.label;
14
+ } else if (element.model) {
15
+ return getHumanReadableModelName({
16
+ model: element.model,
17
+ name: element.name,
18
+ });
19
+ } else {
20
+ return element.name;
21
+ }
22
+ })
23
+ .join(" → ");
24
+ }
package/src/types.ts CHANGED
@@ -12,11 +12,21 @@ export type PathElement<
12
12
  | CustomTypeModelField
13
13
  | CustomTypeModelSlice,
14
14
  > = {
15
- id: string;
15
+ name: string;
16
16
  model?: Model;
17
17
  label?: string;
18
18
  };
19
19
 
20
+ export type FieldPath = [
21
+ PathElement<CustomTypeModel | SharedSliceModel>,
22
+ ...PathElement<CustomTypeModelField | CustomTypeModelSlice>[],
23
+ ];
24
+
25
+ export type AuxiliaryType = {
26
+ code: string;
27
+ name: string;
28
+ };
29
+
20
30
  export type FieldConfigs = {
21
31
  embed?: {
22
32
  providerTypes?: Record<string, string>;