prismic-ts-codegen 0.1.19 → 0.1.21-alpha.0
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.
- package/dist/_node_modules/@babel/helper-validator-identifier/lib/index.cjs +1 -1
- package/dist/_node_modules/@babel/helper-validator-identifier/lib/index.js +1 -1
- package/dist/_node_modules/@babel/highlight/lib/index.cjs +2 -2
- package/dist/_node_modules/@babel/highlight/lib/index.js +2 -2
- package/dist/_node_modules/@prismicio/client/dist/createClient.cjs +41 -3
- package/dist/_node_modules/@prismicio/client/dist/createClient.cjs.map +1 -1
- package/dist/_node_modules/@prismicio/client/dist/createClient.js +41 -3
- package/dist/_node_modules/@prismicio/client/dist/createClient.js.map +1 -1
- package/dist/_node_modules/@prismicio/client/dist/errors/PreviewTokenExpired.cjs +7 -0
- package/dist/_node_modules/@prismicio/client/dist/errors/PreviewTokenExpired.cjs.map +1 -0
- package/dist/_node_modules/@prismicio/client/dist/errors/PreviewTokenExpired.js +7 -0
- package/dist/_node_modules/@prismicio/client/dist/errors/PreviewTokenExpired.js.map +1 -0
- package/dist/_node_modules/@prismicio/client/dist/errors/RefExpiredError.cjs +7 -0
- package/dist/_node_modules/@prismicio/client/dist/errors/RefExpiredError.cjs.map +1 -0
- package/dist/_node_modules/@prismicio/client/dist/errors/RefExpiredError.js +7 -0
- package/dist/_node_modules/@prismicio/client/dist/errors/RefExpiredError.js.map +1 -0
- package/dist/_node_modules/@prismicio/client/dist/errors/RefNotFoundError.cjs +7 -0
- package/dist/_node_modules/@prismicio/client/dist/errors/RefNotFoundError.cjs.map +1 -0
- package/dist/_node_modules/@prismicio/client/dist/errors/RefNotFoundError.js +7 -0
- package/dist/_node_modules/@prismicio/client/dist/errors/RefNotFoundError.js.map +1 -0
- package/dist/_node_modules/@prismicio/client/dist/errors/RepositoryNotFoundError.cjs +7 -0
- package/dist/_node_modules/@prismicio/client/dist/errors/RepositoryNotFoundError.cjs.map +1 -0
- package/dist/_node_modules/@prismicio/client/dist/errors/RepositoryNotFoundError.js +7 -0
- package/dist/_node_modules/@prismicio/client/dist/errors/RepositoryNotFoundError.js.map +1 -0
- package/dist/_node_modules/@prismicio/client/dist/package.json.cjs +1 -1
- package/dist/_node_modules/@prismicio/client/dist/package.json.cjs.map +1 -1
- package/dist/_node_modules/@prismicio/client/dist/package.json.js +1 -1
- package/dist/_node_modules/@prismicio/client/dist/package.json.js.map +1 -1
- package/dist/_node_modules/@prismicio/client/dist/types/model/types.cjs +38 -0
- package/dist/_node_modules/@prismicio/client/dist/types/model/types.cjs.map +1 -0
- package/dist/_node_modules/@prismicio/client/dist/types/model/types.js +38 -0
- package/dist/_node_modules/@prismicio/client/dist/types/model/types.js.map +1 -0
- package/dist/_node_modules/js-tokens/index.cjs +1 -1
- package/dist/_node_modules/js-tokens/index.js +1 -1
- package/dist/_node_modules/read-pkg/_node_modules/hosted-git-info/index.cjs +1 -1
- package/dist/_node_modules/read-pkg/_node_modules/hosted-git-info/index.js +1 -1
- package/dist/_virtual/index7.cjs +2 -2
- package/dist/_virtual/index7.js +2 -2
- package/dist/_virtual/index8.cjs +2 -2
- package/dist/_virtual/index8.js +2 -2
- package/dist/_virtual/index9.cjs +2 -2
- package/dist/_virtual/index9.js +2 -2
- package/dist/generateTypes.cjs +3 -0
- package/dist/generateTypes.cjs.map +1 -1
- package/dist/generateTypes.js +3 -0
- package/dist/generateTypes.js.map +1 -1
- package/dist/lib/buildFieldProperties.cjs +21 -2
- package/dist/lib/buildFieldProperties.cjs.map +1 -1
- package/dist/lib/buildFieldProperties.d.ts +1 -1
- package/dist/lib/buildFieldProperties.js +21 -2
- package/dist/lib/buildFieldProperties.js.map +1 -1
- package/dist/lib/buildSharedSliceType.cjs +8 -0
- package/dist/lib/buildSharedSliceType.cjs.map +1 -1
- package/dist/lib/buildSharedSliceType.d.ts +2 -1
- package/dist/lib/buildSharedSliceType.js +8 -0
- package/dist/lib/buildSharedSliceType.js.map +1 -1
- package/package.json +8 -5
- package/src/generateTypes.ts +4 -0
- package/src/lib/buildFieldProperties.ts +53 -11
- package/src/lib/buildSharedSliceType.ts +13 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildSharedSliceType.js","sources":["../../../src/lib/buildSharedSliceType.ts"],"sourcesContent":["import type { SharedSliceModel } from \"@prismicio/client\";\nimport { source, stripIndent } from \"common-tags\";\nimport QuickLRU from \"quick-lru\";\n\nimport { FieldConfigs, FieldPath } from \"../types\";\n\nimport { SHARED_SLICES_DOCUMENTATION_URL } from \"../constants\";\n\nimport { addSection } from \"./addSection\";\nimport { buildFieldProperties } from \"./buildFieldProperties\";\nimport { buildTypeName } from \"./buildTypeName\";\nimport { buildUnion } from \"./buildUnion\";\nimport { getCacheKey } from \"./getCacheKey\";\nimport { getHumanReadableModelName } from \"./getHumanReadableModelName\";\nimport { getHumanReadablePath } from \"./getHumanReadablePath\";\n\ntype BuildSharedSliceTypeArgs = {\n\tmodel: SharedSliceModel;\n\tfieldConfigs: FieldConfigs;\n\tcache?: QuickLRU<string, unknown>;\n};\n\ntype BuildSharedSliceTypeReturnValue = {\n\tname: string;\n\tvariationNames: string[];\n\tcode: string;\n\tcontentTypeNames: string[];\n};\n\nexport function buildSharedSliceType(\n\targs: BuildSharedSliceTypeArgs,\n): BuildSharedSliceTypeReturnValue {\n\tif (args.cache) {\n\t\tconst key = getCacheKey([args.model, args.fieldConfigs]);\n\t\tconst cached = args.cache.get(key);\n\n\t\tif (cached) {\n\t\t\treturn cached as BuildSharedSliceTypeReturnValue;\n\t\t}\n\t}\n\n\tlet code = \"\";\n\tconst contentTypeNames: string[] = [];\n\n\tconst name = buildTypeName(args.model.id, \"Slice\");\n\tconst humanReadableName = getHumanReadableModelName({\n\t\tname: args.model.id,\n\t\tmodel: args.model,\n\t});\n\n\tconst variationNames: string[] = [];\n\tfor (const variationModel of args.model.variations) {\n\t\tconst variationName = buildTypeName(name, variationModel.id);\n\n\t\tlet primaryInterfaceName: string | undefined;\n\t\tif (\n\t\t\tvariationModel.primary &&\n\t\t\tObject.keys(variationModel.primary).length > 0\n\t\t) {\n\t\t\tprimaryInterfaceName = buildTypeName(variationName, \"Primary\");\n\n\t\t\tconst path: FieldPath = [\n\t\t\t\t{\n\t\t\t\t\tname: args.model.id,\n\t\t\t\t\tmodel: args.model,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"primary\",\n\t\t\t\t\tlabel: \"Primary\",\n\t\t\t\t},\n\t\t\t];\n\t\t\tconst humanReadablePath = getHumanReadablePath({ path });\n\n\t\t\tconst primaryFieldProperties = buildFieldProperties({\n\t\t\t\tfields: variationModel.primary,\n\t\t\t\tfieldConfigs: args.fieldConfigs,\n\t\t\t\tpath,\n\t\t\t});\n\n\t\t\tcontentTypeNames.push(...primaryFieldProperties.contentTypeNames);\n\t\t\tcontentTypeNames.push(primaryInterfaceName);\n\n\t\t\tconst docs = stripIndent`\n\t\t\t\t/**\n\t\t\t\t * Primary content in *${humanReadablePath}*\n\t\t\t\t */\n\t\t\t`;\n\n\t\t\tcode = addSection(\n\t\t\t\tprimaryFieldProperties.code\n\t\t\t\t\t? source`\n\t\t\t\t\t\t${docs}\n\t\t\t\t\t\texport interface ${primaryInterfaceName} {\n\t\t\t\t\t\t\t${primaryFieldProperties.code}\n\t\t\t\t\t\t}\n\t\t\t\t\t`\n\t\t\t\t\t: source`\n\t\t\t\t\t\t${docs}\n\t\t\t\t\t\texport interface ${primaryInterfaceName} {}\n\t\t\t\t\t`,\n\t\t\t\tcode,\n\t\t\t);\n\t\t}\n\n\t\tlet itemInterfaceName: string | undefined;\n\t\tif (variationModel.items && Object.keys(variationModel.items).length > 0) {\n\t\t\titemInterfaceName = buildTypeName(variationName, \"Item\");\n\n\t\t\tconst path: FieldPath = [\n\t\t\t\t{\n\t\t\t\t\tname: args.model.id,\n\t\t\t\t\tmodel: args.model,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"items\",\n\t\t\t\t\tlabel: \"Items\",\n\t\t\t\t},\n\t\t\t];\n\t\t\tconst humanReadablePath = getHumanReadablePath({ path });\n\n\t\t\tconst itemFieldProperties = buildFieldProperties({\n\t\t\t\tfields: variationModel.items,\n\t\t\t\tfieldConfigs: args.fieldConfigs,\n\t\t\t\tpath,\n\t\t\t});\n\n\t\t\tcontentTypeNames.push(...itemFieldProperties.contentTypeNames);\n\t\t\tcontentTypeNames.push(itemInterfaceName);\n\n\t\t\tconst docs = stripIndent`\n\t\t\t\t/**\n\t\t\t\t * Primary content in *${humanReadablePath}*\n\t\t\t\t */\n\t\t\t`;\n\n\t\t\tcode = addSection(\n\t\t\t\titemFieldProperties.code\n\t\t\t\t\t? source`\n\t\t\t\t\t\t${docs}\n\t\t\t\t\t\texport interface ${itemInterfaceName} {\n\t\t\t\t\t\t\t${itemFieldProperties.code}\n\t\t\t\t\t\t}\n\t\t\t\t\t`\n\t\t\t\t\t: source`\n\t\t\t\t\t\t${docs}\n\t\t\t\t\t\texport interface ${itemInterfaceName} {}\n\t\t\t\t\t`,\n\t\t\t\tcode,\n\t\t\t);\n\t\t}\n\n\t\tcode = addSection(\n\t\t\tsource`\n\t\t\t\t/**\n\t\t\t\t * ${variationModel.name} variation for ${humanReadableName} Slice\n\t\t\t\t *\n\t\t\t\t * - **API ID**: \\`${variationModel.id}\\`\n\t\t\t\t * - **Description**: ${variationModel.description || \"*None*\"}\n\t\t\t\t * - **Documentation**: ${SHARED_SLICES_DOCUMENTATION_URL}\n\t\t\t\t */\n\t\t\t\texport type ${variationName} = prismic.SharedSliceVariation<\"${\n\t\t\t\tvariationModel.id\n\t\t\t}\", ${\n\t\t\t\tprimaryInterfaceName\n\t\t\t\t\t? `Simplify<${primaryInterfaceName}>`\n\t\t\t\t\t: `Record<string, never>`\n\t\t\t}, ${itemInterfaceName ? `Simplify<${itemInterfaceName}>` : `never`}>;\n\t\t\t`,\n\t\t\tcode,\n\t\t);\n\n\t\tvariationNames.push(variationName);\n\t}\n\n\tconst variationUnionName = buildTypeName(name, \"Variation\");\n\tconst variationsUnion = buildUnion(variationNames);\n\n\tcontentTypeNames.push(variationUnionName);\n\tcontentTypeNames.push(...variationNames);\n\n\tcode = addSection(\n\t\tsource`\n\t\t\t/**\n\t\t\t * Slice variation for *${humanReadableName}*\n\t\t\t */\n\t\t\ttype ${variationUnionName} = ${\n\t\t\tvariationNames.length > 0 ? variationsUnion : \"never\"\n\t\t}\n\t\t`,\n\t\tcode,\n\t);\n\n\tcode = addSection(\n\t\tsource`\n\t\t\t/**\n\t\t\t * ${humanReadableName} Shared Slice\n\t\t\t *\n\t\t\t * - **API ID**: \\`${args.model.id}\\`\n\t\t\t * - **Description**: ${args.model.description || \"*None*\"}\n\t\t\t * - **Documentation**: ${SHARED_SLICES_DOCUMENTATION_URL}\n\t\t\t */\n\t\t\texport type ${name} = prismic.SharedSlice<\"${\n\t\t\targs.model.id\n\t\t}\", ${variationUnionName}>;\n\t\t`,\n\t\tcode,\n\t);\n\n\tconst result = {\n\t\tname,\n\t\tvariationNames,\n\t\tcode,\n\t\tcontentTypeNames,\n\t};\n\n\tif (args.cache) {\n\t\tconst key = getCacheKey([args.model, args.fieldConfigs]);\n\n\t\targs.cache.set(key, result);\n\t}\n\n\treturn result;\n}\n"],"names":[],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"file":"buildSharedSliceType.js","sources":["../../../src/lib/buildSharedSliceType.ts"],"sourcesContent":["import type { SharedSliceModel } from \"@prismicio/client\";\nimport { source, stripIndent } from \"common-tags\";\nimport QuickLRU from \"quick-lru\";\n\nimport { AuxiliaryType, FieldConfigs, FieldPath } from \"../types\";\n\nimport { SHARED_SLICES_DOCUMENTATION_URL } from \"../constants\";\n\nimport { addSection } from \"./addSection\";\nimport { buildFieldProperties } from \"./buildFieldProperties\";\nimport { buildTypeName } from \"./buildTypeName\";\nimport { buildUnion } from \"./buildUnion\";\nimport { getCacheKey } from \"./getCacheKey\";\nimport { getHumanReadableModelName } from \"./getHumanReadableModelName\";\nimport { getHumanReadablePath } from \"./getHumanReadablePath\";\n\ntype BuildSharedSliceTypeArgs = {\n\tmodel: SharedSliceModel;\n\tfieldConfigs: FieldConfigs;\n\tcache?: QuickLRU<string, unknown>;\n};\n\ntype BuildSharedSliceTypeReturnValue = {\n\tname: string;\n\tvariationNames: string[];\n\tcode: string;\n\tauxiliaryTypes: AuxiliaryType[];\n\tcontentTypeNames: string[];\n};\n\nexport function buildSharedSliceType(\n\targs: BuildSharedSliceTypeArgs,\n): BuildSharedSliceTypeReturnValue {\n\tif (args.cache) {\n\t\tconst key = getCacheKey([args.model, args.fieldConfigs]);\n\t\tconst cached = args.cache.get(key);\n\n\t\tif (cached) {\n\t\t\treturn cached as BuildSharedSliceTypeReturnValue;\n\t\t}\n\t}\n\n\tlet code = \"\";\n\n\tconst auxiliaryTypes: AuxiliaryType[] = [];\n\tconst contentTypeNames: string[] = [];\n\n\tconst name = buildTypeName(args.model.id, \"Slice\");\n\tconst humanReadableName = getHumanReadableModelName({\n\t\tname: args.model.id,\n\t\tmodel: args.model,\n\t});\n\n\tconst variationNames: string[] = [];\n\tfor (const variationModel of args.model.variations) {\n\t\tconst variationName = buildTypeName(name, variationModel.id);\n\n\t\tlet primaryInterfaceName: string | undefined;\n\t\tif (\n\t\t\tvariationModel.primary &&\n\t\t\tObject.keys(variationModel.primary).length > 0\n\t\t) {\n\t\t\tprimaryInterfaceName = buildTypeName(variationName, \"Primary\");\n\n\t\t\tconst path: FieldPath = [\n\t\t\t\t{\n\t\t\t\t\tname: args.model.id,\n\t\t\t\t\tmodel: args.model,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: variationModel.id,\n\t\t\t\t\tlabel: variationModel.name,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"primary\",\n\t\t\t\t\tlabel: \"Primary\",\n\t\t\t\t},\n\t\t\t];\n\t\t\tconst humanReadablePath = getHumanReadablePath({ path });\n\n\t\t\tconst primaryFieldProperties = buildFieldProperties({\n\t\t\t\tfields: variationModel.primary,\n\t\t\t\tfieldConfigs: args.fieldConfigs,\n\t\t\t\tpath,\n\t\t\t});\n\t\t\tauxiliaryTypes.push(...primaryFieldProperties.auxiliaryTypes);\n\t\t\tcontentTypeNames.push(...primaryFieldProperties.contentTypeNames);\n\n\t\t\tcontentTypeNames.push(primaryInterfaceName);\n\n\t\t\tconst docs = stripIndent`\n\t\t\t\t/**\n\t\t\t\t * Primary content in *${humanReadablePath}*\n\t\t\t\t */\n\t\t\t`;\n\n\t\t\tcode = addSection(\n\t\t\t\tprimaryFieldProperties.code\n\t\t\t\t\t? source`\n\t\t\t\t\t\t${docs}\n\t\t\t\t\t\texport interface ${primaryInterfaceName} {\n\t\t\t\t\t\t\t${primaryFieldProperties.code}\n\t\t\t\t\t\t}\n\t\t\t\t\t`\n\t\t\t\t\t: source`\n\t\t\t\t\t\t${docs}\n\t\t\t\t\t\texport interface ${primaryInterfaceName} {}\n\t\t\t\t\t`,\n\t\t\t\tcode,\n\t\t\t);\n\t\t}\n\n\t\tlet itemInterfaceName: string | undefined;\n\t\tif (variationModel.items && Object.keys(variationModel.items).length > 0) {\n\t\t\titemInterfaceName = buildTypeName(variationName, \"Item\");\n\n\t\t\tconst path: FieldPath = [\n\t\t\t\t{\n\t\t\t\t\tname: args.model.id,\n\t\t\t\t\tmodel: args.model,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: \"items\",\n\t\t\t\t\tlabel: \"Items\",\n\t\t\t\t},\n\t\t\t];\n\t\t\tconst humanReadablePath = getHumanReadablePath({ path });\n\n\t\t\tconst itemFieldProperties = buildFieldProperties({\n\t\t\t\tfields: variationModel.items,\n\t\t\t\tfieldConfigs: args.fieldConfigs,\n\t\t\t\tpath,\n\t\t\t});\n\t\t\tauxiliaryTypes.push(...itemFieldProperties.auxiliaryTypes);\n\t\t\tcontentTypeNames.push(...itemFieldProperties.contentTypeNames);\n\n\t\t\tcontentTypeNames.push(itemInterfaceName);\n\n\t\t\tconst docs = stripIndent`\n\t\t\t\t/**\n\t\t\t\t * Primary content in *${humanReadablePath}*\n\t\t\t\t */\n\t\t\t`;\n\n\t\t\tcode = addSection(\n\t\t\t\titemFieldProperties.code\n\t\t\t\t\t? source`\n\t\t\t\t\t\t${docs}\n\t\t\t\t\t\texport interface ${itemInterfaceName} {\n\t\t\t\t\t\t\t${itemFieldProperties.code}\n\t\t\t\t\t\t}\n\t\t\t\t\t`\n\t\t\t\t\t: source`\n\t\t\t\t\t\t${docs}\n\t\t\t\t\t\texport interface ${itemInterfaceName} {}\n\t\t\t\t\t`,\n\t\t\t\tcode,\n\t\t\t);\n\t\t}\n\n\t\tcode = addSection(\n\t\t\tsource`\n\t\t\t\t/**\n\t\t\t\t * ${variationModel.name} variation for ${humanReadableName} Slice\n\t\t\t\t *\n\t\t\t\t * - **API ID**: \\`${variationModel.id}\\`\n\t\t\t\t * - **Description**: ${variationModel.description || \"*None*\"}\n\t\t\t\t * - **Documentation**: ${SHARED_SLICES_DOCUMENTATION_URL}\n\t\t\t\t */\n\t\t\t\texport type ${variationName} = prismic.SharedSliceVariation<\"${\n\t\t\t\tvariationModel.id\n\t\t\t}\", ${\n\t\t\t\tprimaryInterfaceName\n\t\t\t\t\t? `Simplify<${primaryInterfaceName}>`\n\t\t\t\t\t: `Record<string, never>`\n\t\t\t}, ${itemInterfaceName ? `Simplify<${itemInterfaceName}>` : `never`}>;\n\t\t\t`,\n\t\t\tcode,\n\t\t);\n\n\t\tvariationNames.push(variationName);\n\t}\n\n\tconst variationUnionName = buildTypeName(name, \"Variation\");\n\tconst variationsUnion = buildUnion(variationNames);\n\n\tcontentTypeNames.push(variationUnionName);\n\tcontentTypeNames.push(...variationNames);\n\n\tcode = addSection(\n\t\tsource`\n\t\t\t/**\n\t\t\t * Slice variation for *${humanReadableName}*\n\t\t\t */\n\t\t\ttype ${variationUnionName} = ${\n\t\t\tvariationNames.length > 0 ? variationsUnion : \"never\"\n\t\t}\n\t\t`,\n\t\tcode,\n\t);\n\n\tcode = addSection(\n\t\tsource`\n\t\t\t/**\n\t\t\t * ${humanReadableName} Shared Slice\n\t\t\t *\n\t\t\t * - **API ID**: \\`${args.model.id}\\`\n\t\t\t * - **Description**: ${args.model.description || \"*None*\"}\n\t\t\t * - **Documentation**: ${SHARED_SLICES_DOCUMENTATION_URL}\n\t\t\t */\n\t\t\texport type ${name} = prismic.SharedSlice<\"${\n\t\t\targs.model.id\n\t\t}\", ${variationUnionName}>;\n\t\t`,\n\t\tcode,\n\t);\n\n\tconst result = {\n\t\tname,\n\t\tvariationNames,\n\t\tcode,\n\t\tauxiliaryTypes,\n\t\tcontentTypeNames,\n\t};\n\n\tif (args.cache) {\n\t\tconst key = getCacheKey([args.model, args.fieldConfigs]);\n\n\t\targs.cache.set(key, result);\n\t}\n\n\treturn result;\n}\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prismic-ts-codegen",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.21-alpha.0",
|
|
4
4
|
"description": "An experimental Prismic model-to-TypeScript-type generator",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"typescript",
|
|
@@ -37,8 +37,8 @@
|
|
|
37
37
|
"prepare": "npm run build",
|
|
38
38
|
"release": "npm run test && standard-version && git push --follow-tags && npm run build && npm publish",
|
|
39
39
|
"release:dry": "standard-version --dry-run",
|
|
40
|
-
"release:alpha": "npm run test && standard-version --release-as
|
|
41
|
-
"release:alpha:dry": "standard-version --release-as
|
|
40
|
+
"release:alpha": "npm run test && standard-version --release-as patch --prerelease alpha && git push --follow-tags && npm run build && npm publish --tag alpha",
|
|
41
|
+
"release:alpha:dry": "standard-version --release-as patch --prerelease alpha --dry-run",
|
|
42
42
|
"lint": "eslint --ext .js,.ts .",
|
|
43
43
|
"types": "tsc --noEmit",
|
|
44
44
|
"unit": "vitest run --coverage",
|
|
@@ -60,8 +60,8 @@
|
|
|
60
60
|
"quick-lru": "^6.1.1"
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|
|
63
|
-
"@prismicio/client": "^7.
|
|
64
|
-
"@prismicio/mock": "^0.3.1",
|
|
63
|
+
"@prismicio/client": "^7.6.0-alpha.0",
|
|
64
|
+
"@prismicio/mock": "^0.3.7-alpha.1",
|
|
65
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",
|
|
@@ -99,5 +99,8 @@
|
|
|
99
99
|
},
|
|
100
100
|
"publishConfig": {
|
|
101
101
|
"access": "public"
|
|
102
|
+
},
|
|
103
|
+
"overrides": {
|
|
104
|
+
"@prismicio/client": "^7.6.0-alpha.0"
|
|
102
105
|
}
|
|
103
106
|
}
|
package/src/generateTypes.ts
CHANGED
|
@@ -105,6 +105,10 @@ export function generateTypes(config: GenerateTypesConfig = {}): string {
|
|
|
105
105
|
cache: shouldUseCache ? cache : undefined,
|
|
106
106
|
});
|
|
107
107
|
|
|
108
|
+
for (const auxiliaryType of sharedSliceType.auxiliaryTypes) {
|
|
109
|
+
code = addSection(auxiliaryType.code, code);
|
|
110
|
+
}
|
|
111
|
+
|
|
108
112
|
code = addSection(sharedSliceType.code, code);
|
|
109
113
|
|
|
110
114
|
contentTypeNames.push(sharedSliceType.name);
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import {
|
|
2
|
+
type CustomTypeModelField,
|
|
3
|
+
CustomTypeModelFieldType,
|
|
4
|
+
} from "@prismicio/client";
|
|
2
5
|
import { source, stripIndent } from "common-tags";
|
|
3
6
|
|
|
4
7
|
import { AuxiliaryType, FieldConfigs, FieldPath } from "../types";
|
|
@@ -235,13 +238,31 @@ function buildFieldProperty(
|
|
|
235
238
|
}
|
|
236
239
|
|
|
237
240
|
case "Group": {
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
"
|
|
242
|
-
args.
|
|
243
|
-
|
|
244
|
-
|
|
241
|
+
let itemName;
|
|
242
|
+
if (
|
|
243
|
+
args.path[0].model &&
|
|
244
|
+
"type" in args.path[0].model &&
|
|
245
|
+
args.path[0].model.type === "SharedSlice"
|
|
246
|
+
) {
|
|
247
|
+
const [slicePathPart, variationPathPart, zonePathPart] = args.path;
|
|
248
|
+
|
|
249
|
+
itemName = buildTypeName(
|
|
250
|
+
slicePathPart.name,
|
|
251
|
+
"Slice",
|
|
252
|
+
variationPathPart.name,
|
|
253
|
+
zonePathPart.name,
|
|
254
|
+
args.name,
|
|
255
|
+
"Item",
|
|
256
|
+
);
|
|
257
|
+
} else {
|
|
258
|
+
itemName = buildTypeName(
|
|
259
|
+
args.path[0].name,
|
|
260
|
+
"Document",
|
|
261
|
+
"Data",
|
|
262
|
+
args.name,
|
|
263
|
+
"Item",
|
|
264
|
+
);
|
|
265
|
+
}
|
|
245
266
|
|
|
246
267
|
const path: FieldPath = [
|
|
247
268
|
...args.path,
|
|
@@ -257,6 +278,8 @@ function buildFieldProperty(
|
|
|
257
278
|
fieldConfigs: args.fieldConfigs,
|
|
258
279
|
path,
|
|
259
280
|
});
|
|
281
|
+
auxiliaryTypes.push(...itemFieldProperties.auxiliaryTypes);
|
|
282
|
+
contentTypeNames.push(...itemFieldProperties.contentTypeNames);
|
|
260
283
|
|
|
261
284
|
auxiliaryTypes.push({
|
|
262
285
|
name: itemName,
|
|
@@ -271,10 +294,25 @@ function buildFieldProperty(
|
|
|
271
294
|
});
|
|
272
295
|
contentTypeNames.push(itemName);
|
|
273
296
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
297
|
+
const indexOfFirstGroupInPath = path.findIndex(
|
|
298
|
+
(pathElement) =>
|
|
299
|
+
pathElement.model &&
|
|
300
|
+
"type" in pathElement.model &&
|
|
301
|
+
pathElement.model.type === CustomTypeModelFieldType.Group,
|
|
277
302
|
);
|
|
303
|
+
const isNestedGroup = indexOfFirstGroupInPath < path.length - 1;
|
|
304
|
+
|
|
305
|
+
if (isNestedGroup) {
|
|
306
|
+
code = addLine(
|
|
307
|
+
`${name}: prismic.NestedGroupField<Simplify<${itemName}>>;`,
|
|
308
|
+
code,
|
|
309
|
+
);
|
|
310
|
+
} else {
|
|
311
|
+
code = addLine(
|
|
312
|
+
`${name}: prismic.GroupField<Simplify<${itemName}>>;`,
|
|
313
|
+
code,
|
|
314
|
+
);
|
|
315
|
+
}
|
|
278
316
|
|
|
279
317
|
break;
|
|
280
318
|
}
|
|
@@ -337,6 +375,8 @@ function buildFieldProperty(
|
|
|
337
375
|
fieldConfigs: args.fieldConfigs,
|
|
338
376
|
path,
|
|
339
377
|
});
|
|
378
|
+
auxiliaryTypes.push(...primaryFieldProperties.auxiliaryTypes);
|
|
379
|
+
contentTypeNames.push(...primaryFieldProperties.contentTypeNames);
|
|
340
380
|
|
|
341
381
|
let primaryCode = stripIndent`
|
|
342
382
|
/**
|
|
@@ -390,6 +430,8 @@ function buildFieldProperty(
|
|
|
390
430
|
fieldConfigs: args.fieldConfigs,
|
|
391
431
|
path,
|
|
392
432
|
});
|
|
433
|
+
auxiliaryTypes.push(...itemFieldProperties.auxiliaryTypes);
|
|
434
|
+
contentTypeNames.push(...itemFieldProperties.contentTypeNames);
|
|
393
435
|
|
|
394
436
|
let itemCode = stripIndent`
|
|
395
437
|
/**
|
|
@@ -2,7 +2,7 @@ import type { SharedSliceModel } from "@prismicio/client";
|
|
|
2
2
|
import { source, stripIndent } from "common-tags";
|
|
3
3
|
import QuickLRU from "quick-lru";
|
|
4
4
|
|
|
5
|
-
import { FieldConfigs, FieldPath } from "../types";
|
|
5
|
+
import { AuxiliaryType, FieldConfigs, FieldPath } from "../types";
|
|
6
6
|
|
|
7
7
|
import { SHARED_SLICES_DOCUMENTATION_URL } from "../constants";
|
|
8
8
|
|
|
@@ -24,6 +24,7 @@ type BuildSharedSliceTypeReturnValue = {
|
|
|
24
24
|
name: string;
|
|
25
25
|
variationNames: string[];
|
|
26
26
|
code: string;
|
|
27
|
+
auxiliaryTypes: AuxiliaryType[];
|
|
27
28
|
contentTypeNames: string[];
|
|
28
29
|
};
|
|
29
30
|
|
|
@@ -40,6 +41,8 @@ export function buildSharedSliceType(
|
|
|
40
41
|
}
|
|
41
42
|
|
|
42
43
|
let code = "";
|
|
44
|
+
|
|
45
|
+
const auxiliaryTypes: AuxiliaryType[] = [];
|
|
43
46
|
const contentTypeNames: string[] = [];
|
|
44
47
|
|
|
45
48
|
const name = buildTypeName(args.model.id, "Slice");
|
|
@@ -64,6 +67,10 @@ export function buildSharedSliceType(
|
|
|
64
67
|
name: args.model.id,
|
|
65
68
|
model: args.model,
|
|
66
69
|
},
|
|
70
|
+
{
|
|
71
|
+
name: variationModel.id,
|
|
72
|
+
label: variationModel.name,
|
|
73
|
+
},
|
|
67
74
|
{
|
|
68
75
|
name: "primary",
|
|
69
76
|
label: "Primary",
|
|
@@ -76,8 +83,9 @@ export function buildSharedSliceType(
|
|
|
76
83
|
fieldConfigs: args.fieldConfigs,
|
|
77
84
|
path,
|
|
78
85
|
});
|
|
79
|
-
|
|
86
|
+
auxiliaryTypes.push(...primaryFieldProperties.auxiliaryTypes);
|
|
80
87
|
contentTypeNames.push(...primaryFieldProperties.contentTypeNames);
|
|
88
|
+
|
|
81
89
|
contentTypeNames.push(primaryInterfaceName);
|
|
82
90
|
|
|
83
91
|
const docs = stripIndent`
|
|
@@ -123,8 +131,9 @@ export function buildSharedSliceType(
|
|
|
123
131
|
fieldConfigs: args.fieldConfigs,
|
|
124
132
|
path,
|
|
125
133
|
});
|
|
126
|
-
|
|
134
|
+
auxiliaryTypes.push(...itemFieldProperties.auxiliaryTypes);
|
|
127
135
|
contentTypeNames.push(...itemFieldProperties.contentTypeNames);
|
|
136
|
+
|
|
128
137
|
contentTypeNames.push(itemInterfaceName);
|
|
129
138
|
|
|
130
139
|
const docs = stripIndent`
|
|
@@ -210,6 +219,7 @@ export function buildSharedSliceType(
|
|
|
210
219
|
name,
|
|
211
220
|
variationNames,
|
|
212
221
|
code,
|
|
222
|
+
auxiliaryTypes,
|
|
213
223
|
contentTypeNames,
|
|
214
224
|
};
|
|
215
225
|
|