@knapsack/types 4.89.2 → 4.89.3
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/CHANGELOG.md +19 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/renderers.d.ts +2 -0
- package/dist/renderers.d.ts.map +1 -1
- package/dist/renderers.js +1 -1
- package/dist/renderers.js.map +1 -1
- package/dist/renderers.mjs +1 -1
- package/dist/renderers.mjs.map +1 -1
- package/dist/renderers.vitest.js +51 -51
- package/dist/renderers.vitest.js.map +1 -1
- package/dist/renderers.vitest.mjs +51 -51
- package/dist/renderers.vitest.mjs.map +1 -1
- package/package.json +7 -7
package/dist/renderers.d.ts
CHANGED
|
@@ -209,4 +209,6 @@ export type PathWithTemplates = {
|
|
|
209
209
|
suggestion: TemplateSuggestion;
|
|
210
210
|
}[];
|
|
211
211
|
};
|
|
212
|
+
export declare const metaForIosRenderer: TemplateRendererMeta;
|
|
213
|
+
export declare const metaForAndroidRenderer: TemplateRendererMeta;
|
|
212
214
|
//# sourceMappingURL=renderers.d.ts.map
|
package/dist/renderers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderers.d.ts","sourceRoot":"","sources":["../src/renderers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"renderers.d.ts","sourceRoot":"","sources":["../src/renderers.ts"],"names":[],"mappings":"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"}
|
package/dist/renderers.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var zod=require('zod');var
|
|
1
|
+
'use strict';var zod=require('zod');var p=Object.defineProperty;var a=(e,t)=>p(e,"name",{value:t,configurable:true});var o={react:"react",vue:"vue","web-components":"web-components",twig:"twig",hbs:"hbs",angular:"angular",html:"html",ios:"ios",android:"android"},c=zod.z.strictObject({path:zod.z.string().describe("Can contain glob patterns, relative paths, absolute paths, package paths, or package sub-paths"),filter:zod.z.custom(e=>typeof e=="function").optional().describe("A function that takes a path and returns a boolean")});function h(e){return "codeSrcPath"in e}a(h,"isTemplateInfoWithCodeSrcPath");function s(e){switch(e.rendererId){case "angular":case "react":return `${e.rendererId}---${e.codeSrcPath}---${e.exportName||"default"}`;case "web-components":return `${e.rendererId}---${e.elementName}`;case "twig":return `${e.rendererId}---${e.namespacePath}`;case "vue":case "hbs":case "html":return `${e.rendererId}---${e.codeSrcPath}`;case "ios":return `${e.rendererId}---${e.moduleName}---${e.symbolName}`;case "android":return `${e.rendererId}---${e.packageName}---${e.componentName}`;default:{throw new Error(`Invalid template info: ${JSON.stringify(e)}`)}}}a(s,"createTemplateInfoId");function I(e){return {...e,id:s(e)}}a(I,"addIdToTemplateInfo");function u({rendererId:e,alias:t,path:r}){return (()=>{switch(e){case "react":case "angular":return {rendererId:e,codeSrcPath:r,exportName:t||"default"};case "vue":case "hbs":case "html":return {rendererId:e,codeSrcPath:r};case "twig":return {rendererId:e,namespacePath:t};case "web-components":return {rendererId:e,elementName:t};case "ios":return {rendererId:e,moduleName:r,symbolName:t};case "android":return {rendererId:e,packageName:r,componentName:t};default:{throw new Error(`Invalid renderer ID: ${e}`)}}})()}a(u,"normalizeTemplateInfo");function g(e){switch(e.rendererId){case "react":case "angular":return {path:e.codeSrcPath,alias:e.exportName};case "hbs":case "html":case "vue":return {path:e.codeSrcPath};case "twig":return {alias:e.namespacePath};case "web-components":return {alias:e.elementName};case "ios":return {path:e.moduleName,alias:e.symbolName};case "android":return {path:e.packageName,alias:e.componentName};default:{throw new Error(`Invalid template info: ${JSON.stringify(e)}`)}}}a(g,"convertTemplateInfoToOldWay");var T={id:o.ios,title:"Native iOS",aliasUse:"required",aliasTitle:"Symbol Name",aliasDescription:"The synchronized name of the iOS symbol.",enableDataDemos:true,enableTemplateDemos:false,hasTemplateImgSupport:true,hasSlotsSupport:false,hasSlotOptionsSupport:false,hasInferSpecSupport:true,hasTemplateSuggestionsSupport:true},f={id:o.android,title:"Native Android",aliasUse:"required",aliasTitle:"Component Name",aliasDescription:"The synchronized name of the Android component.",enableDataDemos:true,enableTemplateDemos:false,hasSlotsSupport:false,hasSlotOptionsSupport:false,hasTemplateImgSupport:true,hasInferSpecSupport:true,hasTemplateSuggestionsSupport:true};exports.CodeSrcUserConfigSchema=c;exports.addIdToTemplateInfo=I;exports.convertTemplateInfoToOldWay=g;exports.createTemplateInfoId=s;exports.isTemplateInfoWithCodeSrcPath=h;exports.metaForAndroidRenderer=f;exports.metaForIosRenderer=T;exports.normalizeTemplateInfo=u;exports.rendererIds=o;//# sourceMappingURL=renderers.js.map
|
|
2
2
|
//# sourceMappingURL=renderers.js.map
|
package/dist/renderers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/renderers.ts"],"names":["rendererIds","CodeSrcUserConfigSchema","z","val","isTemplateInfoWithCodeSrcPath","info","__name","createTemplateInfoId","t","addIdToTemplateInfo","normalizeTemplateInfo","rendererId","alias","path","convertTemplateInfoToOldWay"],"mappings":"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","file":"renderers.js","sourcesContent":["import { z } from 'zod';\nimport type {\n PathPackage,\n PathPackageSubPath,\n PathRelative,\n Branded,\n} from './re-exports';\nimport type {\n KnapsackPatternTemplate,\n TemplateDemo,\n TemplateRendererMeta,\n KsSpecMeta,\n KsTemplateSpec,\n} from './app-client-data/patterns';\nimport type { Simplify } from './type-utils';\n\nexport const rendererIds = {\n react: 'react',\n vue: 'vue',\n 'web-components': 'web-components',\n twig: 'twig',\n hbs: 'hbs',\n angular: 'angular',\n html: 'html',\n ios: 'ios',\n android: 'android',\n} as const;\n\n/**\n * The ID of a renderer, e.g. 'react', 'vue', 'angular', etc.\n * On Pattern Templates, this will match up to `templateLanguageId` to identify which renderer to use.\n * @see {KnapsackPatternTemplate['templateLanguageId']}\n */\nexport type RendererId = keyof typeof rendererIds;\nexport type CodeSrc =\n | {\n type: 'package';\n path: PathPackage;\n pathFromOutputDir: PathPackage;\n pkgName: PathPackage;\n rendererId: RendererId;\n }\n | {\n type: 'package-sub-path';\n path: PathPackageSubPath;\n pathFromOutputDir: PathPackageSubPath;\n pkgName: PathPackage;\n subPath: PathRelative;\n rendererId: RendererId;\n }\n | {\n type: 'relative-from-data-dir';\n rendererId: RendererId;\n path: PathRelative;\n pathFromOutputDir: PathRelative;\n };\n\nexport type CodeSrcUserConfig = {\n /**\n * Can contain glob patterns, relative paths, absolute paths, package paths, or package sub-paths\n */\n path: string;\n filter?: (path: string) => boolean;\n};\n\nexport const CodeSrcUserConfigSchema = z.strictObject({\n path: z\n .string()\n .describe(\n 'Can contain glob patterns, relative paths, absolute paths, package paths, or package sub-paths',\n ),\n filter: z\n .custom<(path: string) => boolean>((val) => {\n return typeof val === 'function';\n })\n .optional()\n .describe('A function that takes a path and returns a boolean'),\n});\n\nexport type TemplateInfoId = Branded<string, 'TemplateInfoId'>;\n\nexport type TemplateInfo<TheRendererId extends RendererId = RendererId> =\n Extract<\n | {\n rendererId: 'react';\n codeSrcPath: CodeSrc['path'];\n /**\n * Name of the export. If it's the default export, this will be `'default'`.\n */\n exportName: string;\n }\n | {\n rendererId: 'vue';\n codeSrcPath: CodeSrc['path'];\n }\n | {\n rendererId: 'web-components';\n elementName: string;\n }\n | {\n rendererId: 'angular';\n codeSrcPath: CodeSrc['path'];\n /**\n * Name of the export. If it's the default export, this will be `'default'`.\n */\n exportName: string;\n }\n | {\n rendererId: 'html';\n codeSrcPath: CodeSrc['path'];\n }\n | {\n rendererId: 'twig';\n namespacePath: string;\n }\n | {\n rendererId: 'hbs';\n codeSrcPath: CodeSrc['path'];\n }\n | {\n rendererId: 'ios';\n /** The library name that exports out several symbols/components */\n moduleName: PathPackage;\n /** The exported name of the component */\n symbolName: string;\n }\n | {\n rendererId: 'android';\n /**\n * The library name that exports out several classes/components\n * Example: `com.google.android.material`\n */\n packageName: PathPackage;\n /** The exported name of the component */\n componentName: string;\n },\n { rendererId: TheRendererId }\n >;\n\nexport type TemplateInfoWithId<TheRendererId extends RendererId = RendererId> =\n Extract<\n Simplify<\n TemplateInfo<TheRendererId> & {\n id: TemplateInfoId;\n }\n >,\n { rendererId: TheRendererId }\n >;\n\nexport type TemplateInfoWithCodeSrcPath = Extract<\n TemplateInfo,\n { codeSrcPath: string }\n>;\n\nexport function isTemplateInfoWithCodeSrcPath(\n info: TemplateInfo,\n): info is TemplateInfoWithCodeSrcPath {\n return 'codeSrcPath' in info;\n}\n\n/**\n * Create a unique ID for a template info\n * This is used to identify the template info by a single unique string\n * @returns A unique ID for the template info\n */\nexport function createTemplateInfoId(t: TemplateInfo): TemplateInfoId {\n switch (t.rendererId) {\n case 'angular':\n case 'react':\n return `${t.rendererId}---${t.codeSrcPath}---${\n t.exportName || 'default'\n }` as TemplateInfoId;\n case 'web-components':\n return `${t.rendererId}---${t.elementName}` as TemplateInfoId;\n case 'twig':\n return `${t.rendererId}---${t.namespacePath}` as TemplateInfoId;\n case 'vue':\n case 'hbs':\n case 'html':\n return `${t.rendererId}---${t.codeSrcPath}` as TemplateInfoId;\n case 'ios':\n return `${t.rendererId}---${t.moduleName}---${t.symbolName}` as TemplateInfoId;\n case 'android':\n return `${t.rendererId}---${t.packageName}---${t.componentName}` as TemplateInfoId;\n default: {\n const _: never = t;\n throw new Error(`Invalid template info: ${JSON.stringify(t)}`);\n }\n }\n}\n\nexport function addIdToTemplateInfo<TheRendererId extends RendererId>(\n t: TemplateInfo<TheRendererId>,\n): TemplateInfoWithId<TheRendererId> {\n return {\n ...t,\n id: createTemplateInfoId(t),\n };\n}\n\n/**\n * Converts old way of specifying template info (`path` & `alias`) to new way {@link TemplateInfo}\n * @see {@link convertTemplateInfoToOldWay} for the reverse\n */\nexport function normalizeTemplateInfo<TheRendererId extends RendererId>({\n rendererId,\n alias,\n path,\n}: {\n rendererId: TheRendererId;\n path?: CodeSrc['path'];\n alias?: string;\n}): TemplateInfo<TheRendererId> {\n const info = ((): TemplateInfo => {\n switch (rendererId) {\n case 'react':\n case 'angular':\n return {\n rendererId,\n codeSrcPath: path,\n exportName: alias || 'default',\n };\n case 'vue':\n case 'hbs':\n case 'html':\n return {\n rendererId,\n codeSrcPath: path,\n };\n case 'twig':\n return {\n rendererId,\n namespacePath: alias,\n };\n case 'web-components':\n return {\n rendererId,\n elementName: alias,\n };\n // @TOOD: Just speculation for ios/android for now\n case 'ios':\n return {\n rendererId,\n moduleName: path as PathPackage,\n symbolName: alias,\n };\n case 'android':\n return {\n rendererId,\n packageName: path as PathPackage,\n componentName: alias,\n };\n default: {\n const _: never = rendererId;\n throw new Error(`Invalid renderer ID: ${rendererId}`);\n }\n }\n })();\n\n return info as TemplateInfo<TheRendererId>;\n}\n\nexport type RendererTemplateConfig = {\n templateInfo: TemplateInfo;\n /**\n * If it's stored here, it's never inferred\n */\n spec?: KsTemplateSpec<false | undefined>;\n specMeta?: KsSpecMeta;\n};\n\n/**\n * Converts new way of specifying template info {@link TemplateInfo} to old way (`path` & `alias`)\n * @see {@link normalizeTemplateInfo} for the reverse\n */\nexport function convertTemplateInfoToOldWay(info: TemplateInfo): {\n path?: string;\n alias?: string;\n} {\n switch (info.rendererId) {\n case 'react':\n case 'angular':\n return {\n path: info.codeSrcPath,\n alias: info.exportName,\n };\n case 'hbs':\n case 'html':\n case 'vue':\n return {\n path: info.codeSrcPath,\n };\n case 'twig':\n return {\n alias: info.namespacePath,\n };\n case 'web-components':\n return {\n alias: info.elementName,\n };\n case 'ios':\n return {\n path: info.moduleName,\n alias: info.symbolName,\n };\n case 'android':\n return {\n path: info.packageName,\n alias: info.componentName,\n };\n default: {\n const _: never = info;\n throw new Error(`Invalid template info: ${JSON.stringify(info)}`);\n }\n }\n}\n\nexport type RendererDiscovery<TheRendererId extends RendererId> = {\n rendererId: TheRendererId;\n meta: TemplateRendererMeta;\n codeSrcsByPath: Record<CodeSrc['path'], CodeSrc>;\n templates: TemplateInfoWithId<TheRendererId>[];\n};\n\n/**\n * Results of rendering a pattern\n */\nexport type KsRenderResults = {\n ok: boolean;\n html: string;\n usage?: string;\n templateLanguage?: string;\n message?: string;\n};\n\nexport type KsRenderApiResults = KsRenderResults & {\n wrappedHtml: string;\n};\nexport type TemplateSuggestion = {\n path: string;\n alias?: string;\n connected?: boolean;\n};\n\nexport type TemplateSuggestionsGetFn = (opt: {\n rendererId: RendererId;\n newPath?: string;\n state: ContentStateForRendering;\n}) => Promise<{\n suggestions: TemplateSuggestion[];\n}>;\n\n/**\n * Aliases for package paths\n * Example:\n * ```js\n * {\n * 'my-pkg': '../path/to/my-pkg',\n * }\n * ```\n */\nexport type PkgPathAliases = Record<string, string>;\n\nexport type ContentStateForRendering = {\n /**\n * Patterns by ID\n */\n patterns: {\n [patternId: string]: {\n id: string;\n templates: Pick<\n KnapsackPatternTemplate,\n 'alias' | 'path' | 'templateLanguageId' | 'spec' | 'id' | 'title'\n >[];\n templateDemos: Array<\n TemplateDemo & {\n templateId: string;\n templateLanguageId: RendererId;\n }\n >;\n };\n };\n};\n\nexport type TemplateUse = {\n patternId: string;\n patternTitle: string;\n templateId: string;\n templateTitle: string;\n};\n\nexport type PathWithTemplates = {\n path: string;\n templates: {\n id: TemplateInfoId;\n templateInfo: TemplateInfoWithId;\n use: TemplateUse;\n suggestion: TemplateSuggestion;\n }[];\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/renderers.ts"],"names":["rendererIds","CodeSrcUserConfigSchema","z","val","isTemplateInfoWithCodeSrcPath","info","__name","createTemplateInfoId","t","addIdToTemplateInfo","normalizeTemplateInfo","rendererId","alias","path","convertTemplateInfoToOldWay","metaForIosRenderer","metaForAndroidRenderer"],"mappings":"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","file":"renderers.js","sourcesContent":["import { z } from 'zod';\nimport type {\n PathPackage,\n PathPackageSubPath,\n PathRelative,\n Branded,\n} from './re-exports';\nimport type {\n KnapsackPatternTemplate,\n TemplateDemo,\n TemplateRendererMeta,\n KsSpecMeta,\n KsTemplateSpec,\n} from './app-client-data/patterns';\nimport type { Simplify } from './type-utils';\n\nexport const rendererIds = {\n react: 'react',\n vue: 'vue',\n 'web-components': 'web-components',\n twig: 'twig',\n hbs: 'hbs',\n angular: 'angular',\n html: 'html',\n ios: 'ios',\n android: 'android',\n} as const;\n\n/**\n * The ID of a renderer, e.g. 'react', 'vue', 'angular', etc.\n * On Pattern Templates, this will match up to `templateLanguageId` to identify which renderer to use.\n * @see {KnapsackPatternTemplate['templateLanguageId']}\n */\nexport type RendererId = keyof typeof rendererIds;\nexport type CodeSrc =\n | {\n type: 'package';\n path: PathPackage;\n pathFromOutputDir: PathPackage;\n pkgName: PathPackage;\n rendererId: RendererId;\n }\n | {\n type: 'package-sub-path';\n path: PathPackageSubPath;\n pathFromOutputDir: PathPackageSubPath;\n pkgName: PathPackage;\n subPath: PathRelative;\n rendererId: RendererId;\n }\n | {\n type: 'relative-from-data-dir';\n rendererId: RendererId;\n path: PathRelative;\n pathFromOutputDir: PathRelative;\n };\n\nexport type CodeSrcUserConfig = {\n /**\n * Can contain glob patterns, relative paths, absolute paths, package paths, or package sub-paths\n */\n path: string;\n filter?: (path: string) => boolean;\n};\n\nexport const CodeSrcUserConfigSchema = z.strictObject({\n path: z\n .string()\n .describe(\n 'Can contain glob patterns, relative paths, absolute paths, package paths, or package sub-paths',\n ),\n filter: z\n .custom<(path: string) => boolean>((val) => {\n return typeof val === 'function';\n })\n .optional()\n .describe('A function that takes a path and returns a boolean'),\n});\n\nexport type TemplateInfoId = Branded<string, 'TemplateInfoId'>;\n\nexport type TemplateInfo<TheRendererId extends RendererId = RendererId> =\n Extract<\n | {\n rendererId: 'react';\n codeSrcPath: CodeSrc['path'];\n /**\n * Name of the export. If it's the default export, this will be `'default'`.\n */\n exportName: string;\n }\n | {\n rendererId: 'vue';\n codeSrcPath: CodeSrc['path'];\n }\n | {\n rendererId: 'web-components';\n elementName: string;\n }\n | {\n rendererId: 'angular';\n codeSrcPath: CodeSrc['path'];\n /**\n * Name of the export. If it's the default export, this will be `'default'`.\n */\n exportName: string;\n }\n | {\n rendererId: 'html';\n codeSrcPath: CodeSrc['path'];\n }\n | {\n rendererId: 'twig';\n namespacePath: string;\n }\n | {\n rendererId: 'hbs';\n codeSrcPath: CodeSrc['path'];\n }\n | {\n rendererId: 'ios';\n /** The library name that exports out several symbols/components */\n moduleName: PathPackage;\n /** The exported name of the component */\n symbolName: string;\n }\n | {\n rendererId: 'android';\n /**\n * The library name that exports out several classes/components\n * Example: `com.google.android.material`\n */\n packageName: PathPackage;\n /** The exported name of the component */\n componentName: string;\n },\n { rendererId: TheRendererId }\n >;\n\nexport type TemplateInfoWithId<TheRendererId extends RendererId = RendererId> =\n Extract<\n Simplify<\n TemplateInfo<TheRendererId> & {\n id: TemplateInfoId;\n }\n >,\n { rendererId: TheRendererId }\n >;\n\nexport type TemplateInfoWithCodeSrcPath = Extract<\n TemplateInfo,\n { codeSrcPath: string }\n>;\n\nexport function isTemplateInfoWithCodeSrcPath(\n info: TemplateInfo,\n): info is TemplateInfoWithCodeSrcPath {\n return 'codeSrcPath' in info;\n}\n\n/**\n * Create a unique ID for a template info\n * This is used to identify the template info by a single unique string\n * @returns A unique ID for the template info\n */\nexport function createTemplateInfoId(t: TemplateInfo): TemplateInfoId {\n switch (t.rendererId) {\n case 'angular':\n case 'react':\n return `${t.rendererId}---${t.codeSrcPath}---${\n t.exportName || 'default'\n }` as TemplateInfoId;\n case 'web-components':\n return `${t.rendererId}---${t.elementName}` as TemplateInfoId;\n case 'twig':\n return `${t.rendererId}---${t.namespacePath}` as TemplateInfoId;\n case 'vue':\n case 'hbs':\n case 'html':\n return `${t.rendererId}---${t.codeSrcPath}` as TemplateInfoId;\n case 'ios':\n return `${t.rendererId}---${t.moduleName}---${t.symbolName}` as TemplateInfoId;\n case 'android':\n return `${t.rendererId}---${t.packageName}---${t.componentName}` as TemplateInfoId;\n default: {\n const _: never = t;\n throw new Error(`Invalid template info: ${JSON.stringify(t)}`);\n }\n }\n}\n\nexport function addIdToTemplateInfo<TheRendererId extends RendererId>(\n t: TemplateInfo<TheRendererId>,\n): TemplateInfoWithId<TheRendererId> {\n return {\n ...t,\n id: createTemplateInfoId(t),\n };\n}\n\n/**\n * Converts old way of specifying template info (`path` & `alias`) to new way {@link TemplateInfo}\n * @see {@link convertTemplateInfoToOldWay} for the reverse\n */\nexport function normalizeTemplateInfo<TheRendererId extends RendererId>({\n rendererId,\n alias,\n path,\n}: {\n rendererId: TheRendererId;\n path?: CodeSrc['path'];\n alias?: string;\n}): TemplateInfo<TheRendererId> {\n const info = ((): TemplateInfo => {\n switch (rendererId) {\n case 'react':\n case 'angular':\n return {\n rendererId,\n codeSrcPath: path,\n exportName: alias || 'default',\n };\n case 'vue':\n case 'hbs':\n case 'html':\n return {\n rendererId,\n codeSrcPath: path,\n };\n case 'twig':\n return {\n rendererId,\n namespacePath: alias,\n };\n case 'web-components':\n return {\n rendererId,\n elementName: alias,\n };\n // @TOOD: Just speculation for ios/android for now\n case 'ios':\n return {\n rendererId,\n moduleName: path as PathPackage,\n symbolName: alias,\n };\n case 'android':\n return {\n rendererId,\n packageName: path as PathPackage,\n componentName: alias,\n };\n default: {\n const _: never = rendererId;\n throw new Error(`Invalid renderer ID: ${rendererId}`);\n }\n }\n })();\n\n return info as TemplateInfo<TheRendererId>;\n}\n\nexport type RendererTemplateConfig = {\n templateInfo: TemplateInfo;\n /**\n * If it's stored here, it's never inferred\n */\n spec?: KsTemplateSpec<false | undefined>;\n specMeta?: KsSpecMeta;\n};\n\n/**\n * Converts new way of specifying template info {@link TemplateInfo} to old way (`path` & `alias`)\n * @see {@link normalizeTemplateInfo} for the reverse\n */\nexport function convertTemplateInfoToOldWay(info: TemplateInfo): {\n path?: string;\n alias?: string;\n} {\n switch (info.rendererId) {\n case 'react':\n case 'angular':\n return {\n path: info.codeSrcPath,\n alias: info.exportName,\n };\n case 'hbs':\n case 'html':\n case 'vue':\n return {\n path: info.codeSrcPath,\n };\n case 'twig':\n return {\n alias: info.namespacePath,\n };\n case 'web-components':\n return {\n alias: info.elementName,\n };\n case 'ios':\n return {\n path: info.moduleName,\n alias: info.symbolName,\n };\n case 'android':\n return {\n path: info.packageName,\n alias: info.componentName,\n };\n default: {\n const _: never = info;\n throw new Error(`Invalid template info: ${JSON.stringify(info)}`);\n }\n }\n}\n\nexport type RendererDiscovery<TheRendererId extends RendererId> = {\n rendererId: TheRendererId;\n meta: TemplateRendererMeta;\n codeSrcsByPath: Record<CodeSrc['path'], CodeSrc>;\n templates: TemplateInfoWithId<TheRendererId>[];\n};\n\n/**\n * Results of rendering a pattern\n */\nexport type KsRenderResults = {\n ok: boolean;\n html: string;\n usage?: string;\n templateLanguage?: string;\n message?: string;\n};\n\nexport type KsRenderApiResults = KsRenderResults & {\n wrappedHtml: string;\n};\nexport type TemplateSuggestion = {\n path: string;\n alias?: string;\n connected?: boolean;\n};\n\nexport type TemplateSuggestionsGetFn = (opt: {\n rendererId: RendererId;\n newPath?: string;\n state: ContentStateForRendering;\n}) => Promise<{\n suggestions: TemplateSuggestion[];\n}>;\n\n/**\n * Aliases for package paths\n * Example:\n * ```js\n * {\n * 'my-pkg': '../path/to/my-pkg',\n * }\n * ```\n */\nexport type PkgPathAliases = Record<string, string>;\n\nexport type ContentStateForRendering = {\n /**\n * Patterns by ID\n */\n patterns: {\n [patternId: string]: {\n id: string;\n templates: Pick<\n KnapsackPatternTemplate,\n 'alias' | 'path' | 'templateLanguageId' | 'spec' | 'id' | 'title'\n >[];\n templateDemos: Array<\n TemplateDemo & {\n templateId: string;\n templateLanguageId: RendererId;\n }\n >;\n };\n };\n};\n\nexport type TemplateUse = {\n patternId: string;\n patternTitle: string;\n templateId: string;\n templateTitle: string;\n};\n\nexport type PathWithTemplates = {\n path: string;\n templates: {\n id: TemplateInfoId;\n templateInfo: TemplateInfoWithId;\n use: TemplateUse;\n suggestion: TemplateSuggestion;\n }[];\n};\n\nexport const metaForIosRenderer: TemplateRendererMeta = {\n id: rendererIds.ios,\n title: 'Native iOS',\n aliasUse: 'required',\n aliasTitle: 'Symbol Name',\n aliasDescription: 'The synchronized name of the iOS symbol.',\n enableDataDemos: true,\n enableTemplateDemos: false,\n hasTemplateImgSupport: true,\n hasSlotsSupport: false,\n hasSlotOptionsSupport: false,\n hasInferSpecSupport: true,\n hasTemplateSuggestionsSupport: true,\n};\n\nexport const metaForAndroidRenderer: TemplateRendererMeta = {\n id: rendererIds.android,\n title: 'Native Android',\n aliasUse: 'required',\n aliasTitle: 'Component Name',\n aliasDescription: 'The synchronized name of the Android component.',\n enableDataDemos: true,\n enableTemplateDemos: false,\n hasSlotsSupport: false,\n hasSlotOptionsSupport: false,\n hasTemplateImgSupport: true,\n hasInferSpecSupport: true,\n hasTemplateSuggestionsSupport: true,\n};\n"]}
|
package/dist/renderers.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {z}from'zod';var
|
|
1
|
+
import {z}from'zod';var p=Object.defineProperty;var a=(e,t)=>p(e,"name",{value:t,configurable:true});var o={react:"react",vue:"vue","web-components":"web-components",twig:"twig",hbs:"hbs",angular:"angular",html:"html",ios:"ios",android:"android"},c=z.strictObject({path:z.string().describe("Can contain glob patterns, relative paths, absolute paths, package paths, or package sub-paths"),filter:z.custom(e=>typeof e=="function").optional().describe("A function that takes a path and returns a boolean")});function h(e){return "codeSrcPath"in e}a(h,"isTemplateInfoWithCodeSrcPath");function s(e){switch(e.rendererId){case "angular":case "react":return `${e.rendererId}---${e.codeSrcPath}---${e.exportName||"default"}`;case "web-components":return `${e.rendererId}---${e.elementName}`;case "twig":return `${e.rendererId}---${e.namespacePath}`;case "vue":case "hbs":case "html":return `${e.rendererId}---${e.codeSrcPath}`;case "ios":return `${e.rendererId}---${e.moduleName}---${e.symbolName}`;case "android":return `${e.rendererId}---${e.packageName}---${e.componentName}`;default:{throw new Error(`Invalid template info: ${JSON.stringify(e)}`)}}}a(s,"createTemplateInfoId");function I(e){return {...e,id:s(e)}}a(I,"addIdToTemplateInfo");function u({rendererId:e,alias:t,path:r}){return (()=>{switch(e){case "react":case "angular":return {rendererId:e,codeSrcPath:r,exportName:t||"default"};case "vue":case "hbs":case "html":return {rendererId:e,codeSrcPath:r};case "twig":return {rendererId:e,namespacePath:t};case "web-components":return {rendererId:e,elementName:t};case "ios":return {rendererId:e,moduleName:r,symbolName:t};case "android":return {rendererId:e,packageName:r,componentName:t};default:{throw new Error(`Invalid renderer ID: ${e}`)}}})()}a(u,"normalizeTemplateInfo");function g(e){switch(e.rendererId){case "react":case "angular":return {path:e.codeSrcPath,alias:e.exportName};case "hbs":case "html":case "vue":return {path:e.codeSrcPath};case "twig":return {alias:e.namespacePath};case "web-components":return {alias:e.elementName};case "ios":return {path:e.moduleName,alias:e.symbolName};case "android":return {path:e.packageName,alias:e.componentName};default:{throw new Error(`Invalid template info: ${JSON.stringify(e)}`)}}}a(g,"convertTemplateInfoToOldWay");var T={id:o.ios,title:"Native iOS",aliasUse:"required",aliasTitle:"Symbol Name",aliasDescription:"The synchronized name of the iOS symbol.",enableDataDemos:true,enableTemplateDemos:false,hasTemplateImgSupport:true,hasSlotsSupport:false,hasSlotOptionsSupport:false,hasInferSpecSupport:true,hasTemplateSuggestionsSupport:true},f={id:o.android,title:"Native Android",aliasUse:"required",aliasTitle:"Component Name",aliasDescription:"The synchronized name of the Android component.",enableDataDemos:true,enableTemplateDemos:false,hasSlotsSupport:false,hasSlotOptionsSupport:false,hasTemplateImgSupport:true,hasInferSpecSupport:true,hasTemplateSuggestionsSupport:true};export{c as CodeSrcUserConfigSchema,I as addIdToTemplateInfo,g as convertTemplateInfoToOldWay,s as createTemplateInfoId,h as isTemplateInfoWithCodeSrcPath,f as metaForAndroidRenderer,T as metaForIosRenderer,u as normalizeTemplateInfo,o as rendererIds};//# sourceMappingURL=renderers.mjs.map
|
|
2
2
|
//# sourceMappingURL=renderers.mjs.map
|
package/dist/renderers.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/renderers.ts"],"names":["rendererIds","CodeSrcUserConfigSchema","z","val","isTemplateInfoWithCodeSrcPath","info","__name","createTemplateInfoId","t","addIdToTemplateInfo","normalizeTemplateInfo","rendererId","alias","path","convertTemplateInfoToOldWay"],"mappings":"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","file":"renderers.mjs","sourcesContent":["import { z } from 'zod';\nimport type {\n PathPackage,\n PathPackageSubPath,\n PathRelative,\n Branded,\n} from './re-exports';\nimport type {\n KnapsackPatternTemplate,\n TemplateDemo,\n TemplateRendererMeta,\n KsSpecMeta,\n KsTemplateSpec,\n} from './app-client-data/patterns';\nimport type { Simplify } from './type-utils';\n\nexport const rendererIds = {\n react: 'react',\n vue: 'vue',\n 'web-components': 'web-components',\n twig: 'twig',\n hbs: 'hbs',\n angular: 'angular',\n html: 'html',\n ios: 'ios',\n android: 'android',\n} as const;\n\n/**\n * The ID of a renderer, e.g. 'react', 'vue', 'angular', etc.\n * On Pattern Templates, this will match up to `templateLanguageId` to identify which renderer to use.\n * @see {KnapsackPatternTemplate['templateLanguageId']}\n */\nexport type RendererId = keyof typeof rendererIds;\nexport type CodeSrc =\n | {\n type: 'package';\n path: PathPackage;\n pathFromOutputDir: PathPackage;\n pkgName: PathPackage;\n rendererId: RendererId;\n }\n | {\n type: 'package-sub-path';\n path: PathPackageSubPath;\n pathFromOutputDir: PathPackageSubPath;\n pkgName: PathPackage;\n subPath: PathRelative;\n rendererId: RendererId;\n }\n | {\n type: 'relative-from-data-dir';\n rendererId: RendererId;\n path: PathRelative;\n pathFromOutputDir: PathRelative;\n };\n\nexport type CodeSrcUserConfig = {\n /**\n * Can contain glob patterns, relative paths, absolute paths, package paths, or package sub-paths\n */\n path: string;\n filter?: (path: string) => boolean;\n};\n\nexport const CodeSrcUserConfigSchema = z.strictObject({\n path: z\n .string()\n .describe(\n 'Can contain glob patterns, relative paths, absolute paths, package paths, or package sub-paths',\n ),\n filter: z\n .custom<(path: string) => boolean>((val) => {\n return typeof val === 'function';\n })\n .optional()\n .describe('A function that takes a path and returns a boolean'),\n});\n\nexport type TemplateInfoId = Branded<string, 'TemplateInfoId'>;\n\nexport type TemplateInfo<TheRendererId extends RendererId = RendererId> =\n Extract<\n | {\n rendererId: 'react';\n codeSrcPath: CodeSrc['path'];\n /**\n * Name of the export. If it's the default export, this will be `'default'`.\n */\n exportName: string;\n }\n | {\n rendererId: 'vue';\n codeSrcPath: CodeSrc['path'];\n }\n | {\n rendererId: 'web-components';\n elementName: string;\n }\n | {\n rendererId: 'angular';\n codeSrcPath: CodeSrc['path'];\n /**\n * Name of the export. If it's the default export, this will be `'default'`.\n */\n exportName: string;\n }\n | {\n rendererId: 'html';\n codeSrcPath: CodeSrc['path'];\n }\n | {\n rendererId: 'twig';\n namespacePath: string;\n }\n | {\n rendererId: 'hbs';\n codeSrcPath: CodeSrc['path'];\n }\n | {\n rendererId: 'ios';\n /** The library name that exports out several symbols/components */\n moduleName: PathPackage;\n /** The exported name of the component */\n symbolName: string;\n }\n | {\n rendererId: 'android';\n /**\n * The library name that exports out several classes/components\n * Example: `com.google.android.material`\n */\n packageName: PathPackage;\n /** The exported name of the component */\n componentName: string;\n },\n { rendererId: TheRendererId }\n >;\n\nexport type TemplateInfoWithId<TheRendererId extends RendererId = RendererId> =\n Extract<\n Simplify<\n TemplateInfo<TheRendererId> & {\n id: TemplateInfoId;\n }\n >,\n { rendererId: TheRendererId }\n >;\n\nexport type TemplateInfoWithCodeSrcPath = Extract<\n TemplateInfo,\n { codeSrcPath: string }\n>;\n\nexport function isTemplateInfoWithCodeSrcPath(\n info: TemplateInfo,\n): info is TemplateInfoWithCodeSrcPath {\n return 'codeSrcPath' in info;\n}\n\n/**\n * Create a unique ID for a template info\n * This is used to identify the template info by a single unique string\n * @returns A unique ID for the template info\n */\nexport function createTemplateInfoId(t: TemplateInfo): TemplateInfoId {\n switch (t.rendererId) {\n case 'angular':\n case 'react':\n return `${t.rendererId}---${t.codeSrcPath}---${\n t.exportName || 'default'\n }` as TemplateInfoId;\n case 'web-components':\n return `${t.rendererId}---${t.elementName}` as TemplateInfoId;\n case 'twig':\n return `${t.rendererId}---${t.namespacePath}` as TemplateInfoId;\n case 'vue':\n case 'hbs':\n case 'html':\n return `${t.rendererId}---${t.codeSrcPath}` as TemplateInfoId;\n case 'ios':\n return `${t.rendererId}---${t.moduleName}---${t.symbolName}` as TemplateInfoId;\n case 'android':\n return `${t.rendererId}---${t.packageName}---${t.componentName}` as TemplateInfoId;\n default: {\n const _: never = t;\n throw new Error(`Invalid template info: ${JSON.stringify(t)}`);\n }\n }\n}\n\nexport function addIdToTemplateInfo<TheRendererId extends RendererId>(\n t: TemplateInfo<TheRendererId>,\n): TemplateInfoWithId<TheRendererId> {\n return {\n ...t,\n id: createTemplateInfoId(t),\n };\n}\n\n/**\n * Converts old way of specifying template info (`path` & `alias`) to new way {@link TemplateInfo}\n * @see {@link convertTemplateInfoToOldWay} for the reverse\n */\nexport function normalizeTemplateInfo<TheRendererId extends RendererId>({\n rendererId,\n alias,\n path,\n}: {\n rendererId: TheRendererId;\n path?: CodeSrc['path'];\n alias?: string;\n}): TemplateInfo<TheRendererId> {\n const info = ((): TemplateInfo => {\n switch (rendererId) {\n case 'react':\n case 'angular':\n return {\n rendererId,\n codeSrcPath: path,\n exportName: alias || 'default',\n };\n case 'vue':\n case 'hbs':\n case 'html':\n return {\n rendererId,\n codeSrcPath: path,\n };\n case 'twig':\n return {\n rendererId,\n namespacePath: alias,\n };\n case 'web-components':\n return {\n rendererId,\n elementName: alias,\n };\n // @TOOD: Just speculation for ios/android for now\n case 'ios':\n return {\n rendererId,\n moduleName: path as PathPackage,\n symbolName: alias,\n };\n case 'android':\n return {\n rendererId,\n packageName: path as PathPackage,\n componentName: alias,\n };\n default: {\n const _: never = rendererId;\n throw new Error(`Invalid renderer ID: ${rendererId}`);\n }\n }\n })();\n\n return info as TemplateInfo<TheRendererId>;\n}\n\nexport type RendererTemplateConfig = {\n templateInfo: TemplateInfo;\n /**\n * If it's stored here, it's never inferred\n */\n spec?: KsTemplateSpec<false | undefined>;\n specMeta?: KsSpecMeta;\n};\n\n/**\n * Converts new way of specifying template info {@link TemplateInfo} to old way (`path` & `alias`)\n * @see {@link normalizeTemplateInfo} for the reverse\n */\nexport function convertTemplateInfoToOldWay(info: TemplateInfo): {\n path?: string;\n alias?: string;\n} {\n switch (info.rendererId) {\n case 'react':\n case 'angular':\n return {\n path: info.codeSrcPath,\n alias: info.exportName,\n };\n case 'hbs':\n case 'html':\n case 'vue':\n return {\n path: info.codeSrcPath,\n };\n case 'twig':\n return {\n alias: info.namespacePath,\n };\n case 'web-components':\n return {\n alias: info.elementName,\n };\n case 'ios':\n return {\n path: info.moduleName,\n alias: info.symbolName,\n };\n case 'android':\n return {\n path: info.packageName,\n alias: info.componentName,\n };\n default: {\n const _: never = info;\n throw new Error(`Invalid template info: ${JSON.stringify(info)}`);\n }\n }\n}\n\nexport type RendererDiscovery<TheRendererId extends RendererId> = {\n rendererId: TheRendererId;\n meta: TemplateRendererMeta;\n codeSrcsByPath: Record<CodeSrc['path'], CodeSrc>;\n templates: TemplateInfoWithId<TheRendererId>[];\n};\n\n/**\n * Results of rendering a pattern\n */\nexport type KsRenderResults = {\n ok: boolean;\n html: string;\n usage?: string;\n templateLanguage?: string;\n message?: string;\n};\n\nexport type KsRenderApiResults = KsRenderResults & {\n wrappedHtml: string;\n};\nexport type TemplateSuggestion = {\n path: string;\n alias?: string;\n connected?: boolean;\n};\n\nexport type TemplateSuggestionsGetFn = (opt: {\n rendererId: RendererId;\n newPath?: string;\n state: ContentStateForRendering;\n}) => Promise<{\n suggestions: TemplateSuggestion[];\n}>;\n\n/**\n * Aliases for package paths\n * Example:\n * ```js\n * {\n * 'my-pkg': '../path/to/my-pkg',\n * }\n * ```\n */\nexport type PkgPathAliases = Record<string, string>;\n\nexport type ContentStateForRendering = {\n /**\n * Patterns by ID\n */\n patterns: {\n [patternId: string]: {\n id: string;\n templates: Pick<\n KnapsackPatternTemplate,\n 'alias' | 'path' | 'templateLanguageId' | 'spec' | 'id' | 'title'\n >[];\n templateDemos: Array<\n TemplateDemo & {\n templateId: string;\n templateLanguageId: RendererId;\n }\n >;\n };\n };\n};\n\nexport type TemplateUse = {\n patternId: string;\n patternTitle: string;\n templateId: string;\n templateTitle: string;\n};\n\nexport type PathWithTemplates = {\n path: string;\n templates: {\n id: TemplateInfoId;\n templateInfo: TemplateInfoWithId;\n use: TemplateUse;\n suggestion: TemplateSuggestion;\n }[];\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/renderers.ts"],"names":["rendererIds","CodeSrcUserConfigSchema","z","val","isTemplateInfoWithCodeSrcPath","info","__name","createTemplateInfoId","t","addIdToTemplateInfo","normalizeTemplateInfo","rendererId","alias","path","convertTemplateInfoToOldWay","metaForIosRenderer","metaForAndroidRenderer"],"mappings":"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","file":"renderers.mjs","sourcesContent":["import { z } from 'zod';\nimport type {\n PathPackage,\n PathPackageSubPath,\n PathRelative,\n Branded,\n} from './re-exports';\nimport type {\n KnapsackPatternTemplate,\n TemplateDemo,\n TemplateRendererMeta,\n KsSpecMeta,\n KsTemplateSpec,\n} from './app-client-data/patterns';\nimport type { Simplify } from './type-utils';\n\nexport const rendererIds = {\n react: 'react',\n vue: 'vue',\n 'web-components': 'web-components',\n twig: 'twig',\n hbs: 'hbs',\n angular: 'angular',\n html: 'html',\n ios: 'ios',\n android: 'android',\n} as const;\n\n/**\n * The ID of a renderer, e.g. 'react', 'vue', 'angular', etc.\n * On Pattern Templates, this will match up to `templateLanguageId` to identify which renderer to use.\n * @see {KnapsackPatternTemplate['templateLanguageId']}\n */\nexport type RendererId = keyof typeof rendererIds;\nexport type CodeSrc =\n | {\n type: 'package';\n path: PathPackage;\n pathFromOutputDir: PathPackage;\n pkgName: PathPackage;\n rendererId: RendererId;\n }\n | {\n type: 'package-sub-path';\n path: PathPackageSubPath;\n pathFromOutputDir: PathPackageSubPath;\n pkgName: PathPackage;\n subPath: PathRelative;\n rendererId: RendererId;\n }\n | {\n type: 'relative-from-data-dir';\n rendererId: RendererId;\n path: PathRelative;\n pathFromOutputDir: PathRelative;\n };\n\nexport type CodeSrcUserConfig = {\n /**\n * Can contain glob patterns, relative paths, absolute paths, package paths, or package sub-paths\n */\n path: string;\n filter?: (path: string) => boolean;\n};\n\nexport const CodeSrcUserConfigSchema = z.strictObject({\n path: z\n .string()\n .describe(\n 'Can contain glob patterns, relative paths, absolute paths, package paths, or package sub-paths',\n ),\n filter: z\n .custom<(path: string) => boolean>((val) => {\n return typeof val === 'function';\n })\n .optional()\n .describe('A function that takes a path and returns a boolean'),\n});\n\nexport type TemplateInfoId = Branded<string, 'TemplateInfoId'>;\n\nexport type TemplateInfo<TheRendererId extends RendererId = RendererId> =\n Extract<\n | {\n rendererId: 'react';\n codeSrcPath: CodeSrc['path'];\n /**\n * Name of the export. If it's the default export, this will be `'default'`.\n */\n exportName: string;\n }\n | {\n rendererId: 'vue';\n codeSrcPath: CodeSrc['path'];\n }\n | {\n rendererId: 'web-components';\n elementName: string;\n }\n | {\n rendererId: 'angular';\n codeSrcPath: CodeSrc['path'];\n /**\n * Name of the export. If it's the default export, this will be `'default'`.\n */\n exportName: string;\n }\n | {\n rendererId: 'html';\n codeSrcPath: CodeSrc['path'];\n }\n | {\n rendererId: 'twig';\n namespacePath: string;\n }\n | {\n rendererId: 'hbs';\n codeSrcPath: CodeSrc['path'];\n }\n | {\n rendererId: 'ios';\n /** The library name that exports out several symbols/components */\n moduleName: PathPackage;\n /** The exported name of the component */\n symbolName: string;\n }\n | {\n rendererId: 'android';\n /**\n * The library name that exports out several classes/components\n * Example: `com.google.android.material`\n */\n packageName: PathPackage;\n /** The exported name of the component */\n componentName: string;\n },\n { rendererId: TheRendererId }\n >;\n\nexport type TemplateInfoWithId<TheRendererId extends RendererId = RendererId> =\n Extract<\n Simplify<\n TemplateInfo<TheRendererId> & {\n id: TemplateInfoId;\n }\n >,\n { rendererId: TheRendererId }\n >;\n\nexport type TemplateInfoWithCodeSrcPath = Extract<\n TemplateInfo,\n { codeSrcPath: string }\n>;\n\nexport function isTemplateInfoWithCodeSrcPath(\n info: TemplateInfo,\n): info is TemplateInfoWithCodeSrcPath {\n return 'codeSrcPath' in info;\n}\n\n/**\n * Create a unique ID for a template info\n * This is used to identify the template info by a single unique string\n * @returns A unique ID for the template info\n */\nexport function createTemplateInfoId(t: TemplateInfo): TemplateInfoId {\n switch (t.rendererId) {\n case 'angular':\n case 'react':\n return `${t.rendererId}---${t.codeSrcPath}---${\n t.exportName || 'default'\n }` as TemplateInfoId;\n case 'web-components':\n return `${t.rendererId}---${t.elementName}` as TemplateInfoId;\n case 'twig':\n return `${t.rendererId}---${t.namespacePath}` as TemplateInfoId;\n case 'vue':\n case 'hbs':\n case 'html':\n return `${t.rendererId}---${t.codeSrcPath}` as TemplateInfoId;\n case 'ios':\n return `${t.rendererId}---${t.moduleName}---${t.symbolName}` as TemplateInfoId;\n case 'android':\n return `${t.rendererId}---${t.packageName}---${t.componentName}` as TemplateInfoId;\n default: {\n const _: never = t;\n throw new Error(`Invalid template info: ${JSON.stringify(t)}`);\n }\n }\n}\n\nexport function addIdToTemplateInfo<TheRendererId extends RendererId>(\n t: TemplateInfo<TheRendererId>,\n): TemplateInfoWithId<TheRendererId> {\n return {\n ...t,\n id: createTemplateInfoId(t),\n };\n}\n\n/**\n * Converts old way of specifying template info (`path` & `alias`) to new way {@link TemplateInfo}\n * @see {@link convertTemplateInfoToOldWay} for the reverse\n */\nexport function normalizeTemplateInfo<TheRendererId extends RendererId>({\n rendererId,\n alias,\n path,\n}: {\n rendererId: TheRendererId;\n path?: CodeSrc['path'];\n alias?: string;\n}): TemplateInfo<TheRendererId> {\n const info = ((): TemplateInfo => {\n switch (rendererId) {\n case 'react':\n case 'angular':\n return {\n rendererId,\n codeSrcPath: path,\n exportName: alias || 'default',\n };\n case 'vue':\n case 'hbs':\n case 'html':\n return {\n rendererId,\n codeSrcPath: path,\n };\n case 'twig':\n return {\n rendererId,\n namespacePath: alias,\n };\n case 'web-components':\n return {\n rendererId,\n elementName: alias,\n };\n // @TOOD: Just speculation for ios/android for now\n case 'ios':\n return {\n rendererId,\n moduleName: path as PathPackage,\n symbolName: alias,\n };\n case 'android':\n return {\n rendererId,\n packageName: path as PathPackage,\n componentName: alias,\n };\n default: {\n const _: never = rendererId;\n throw new Error(`Invalid renderer ID: ${rendererId}`);\n }\n }\n })();\n\n return info as TemplateInfo<TheRendererId>;\n}\n\nexport type RendererTemplateConfig = {\n templateInfo: TemplateInfo;\n /**\n * If it's stored here, it's never inferred\n */\n spec?: KsTemplateSpec<false | undefined>;\n specMeta?: KsSpecMeta;\n};\n\n/**\n * Converts new way of specifying template info {@link TemplateInfo} to old way (`path` & `alias`)\n * @see {@link normalizeTemplateInfo} for the reverse\n */\nexport function convertTemplateInfoToOldWay(info: TemplateInfo): {\n path?: string;\n alias?: string;\n} {\n switch (info.rendererId) {\n case 'react':\n case 'angular':\n return {\n path: info.codeSrcPath,\n alias: info.exportName,\n };\n case 'hbs':\n case 'html':\n case 'vue':\n return {\n path: info.codeSrcPath,\n };\n case 'twig':\n return {\n alias: info.namespacePath,\n };\n case 'web-components':\n return {\n alias: info.elementName,\n };\n case 'ios':\n return {\n path: info.moduleName,\n alias: info.symbolName,\n };\n case 'android':\n return {\n path: info.packageName,\n alias: info.componentName,\n };\n default: {\n const _: never = info;\n throw new Error(`Invalid template info: ${JSON.stringify(info)}`);\n }\n }\n}\n\nexport type RendererDiscovery<TheRendererId extends RendererId> = {\n rendererId: TheRendererId;\n meta: TemplateRendererMeta;\n codeSrcsByPath: Record<CodeSrc['path'], CodeSrc>;\n templates: TemplateInfoWithId<TheRendererId>[];\n};\n\n/**\n * Results of rendering a pattern\n */\nexport type KsRenderResults = {\n ok: boolean;\n html: string;\n usage?: string;\n templateLanguage?: string;\n message?: string;\n};\n\nexport type KsRenderApiResults = KsRenderResults & {\n wrappedHtml: string;\n};\nexport type TemplateSuggestion = {\n path: string;\n alias?: string;\n connected?: boolean;\n};\n\nexport type TemplateSuggestionsGetFn = (opt: {\n rendererId: RendererId;\n newPath?: string;\n state: ContentStateForRendering;\n}) => Promise<{\n suggestions: TemplateSuggestion[];\n}>;\n\n/**\n * Aliases for package paths\n * Example:\n * ```js\n * {\n * 'my-pkg': '../path/to/my-pkg',\n * }\n * ```\n */\nexport type PkgPathAliases = Record<string, string>;\n\nexport type ContentStateForRendering = {\n /**\n * Patterns by ID\n */\n patterns: {\n [patternId: string]: {\n id: string;\n templates: Pick<\n KnapsackPatternTemplate,\n 'alias' | 'path' | 'templateLanguageId' | 'spec' | 'id' | 'title'\n >[];\n templateDemos: Array<\n TemplateDemo & {\n templateId: string;\n templateLanguageId: RendererId;\n }\n >;\n };\n };\n};\n\nexport type TemplateUse = {\n patternId: string;\n patternTitle: string;\n templateId: string;\n templateTitle: string;\n};\n\nexport type PathWithTemplates = {\n path: string;\n templates: {\n id: TemplateInfoId;\n templateInfo: TemplateInfoWithId;\n use: TemplateUse;\n suggestion: TemplateSuggestion;\n }[];\n};\n\nexport const metaForIosRenderer: TemplateRendererMeta = {\n id: rendererIds.ios,\n title: 'Native iOS',\n aliasUse: 'required',\n aliasTitle: 'Symbol Name',\n aliasDescription: 'The synchronized name of the iOS symbol.',\n enableDataDemos: true,\n enableTemplateDemos: false,\n hasTemplateImgSupport: true,\n hasSlotsSupport: false,\n hasSlotOptionsSupport: false,\n hasInferSpecSupport: true,\n hasTemplateSuggestionsSupport: true,\n};\n\nexport const metaForAndroidRenderer: TemplateRendererMeta = {\n id: rendererIds.android,\n title: 'Native Android',\n aliasUse: 'required',\n aliasTitle: 'Component Name',\n aliasDescription: 'The synchronized name of the Android component.',\n enableDataDemos: true,\n enableTemplateDemos: false,\n hasSlotsSupport: false,\n hasSlotOptionsSupport: false,\n hasTemplateImgSupport: true,\n hasInferSpecSupport: true,\n hasTemplateSuggestionsSupport: true,\n};\n"]}
|