@ankhorage/templates 8.0.0 → 9.0.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.
Files changed (36) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/assets/templates/capability-proof/checker.svg +1 -0
  3. package/dist/catalog.d.ts +4 -3
  4. package/dist/catalog.d.ts.map +1 -1
  5. package/dist/catalog.js +1 -1
  6. package/dist/catalog.js.map +1 -1
  7. package/dist/commands.d.ts +4 -6
  8. package/dist/commands.d.ts.map +1 -1
  9. package/dist/commands.js +16 -14
  10. package/dist/commands.js.map +1 -1
  11. package/dist/generators/create-category-app.js +1 -1
  12. package/dist/generators/create-category-app.js.map +1 -1
  13. package/dist/index.d.ts +1 -1
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +1 -1
  16. package/dist/index.js.map +1 -1
  17. package/dist/projectSeed.d.ts +4 -0
  18. package/dist/projectSeed.d.ts.map +1 -1
  19. package/dist/projectSeed.js +75 -5
  20. package/dist/projectSeed.js.map +1 -1
  21. package/dist/templates/starter/index.d.ts +2 -1
  22. package/dist/templates/starter/index.d.ts.map +1 -1
  23. package/dist/templates/starter/index.js +1 -0
  24. package/dist/templates/starter/index.js.map +1 -1
  25. package/dist/templates/starter/starter.assets.d.ts +22 -0
  26. package/dist/templates/starter/starter.assets.d.ts.map +1 -0
  27. package/dist/templates/starter/starter.assets.js +124 -0
  28. package/dist/templates/starter/starter.assets.js.map +1 -0
  29. package/dist/templates/starter/starter.template.d.ts +3 -4
  30. package/dist/templates/starter/starter.template.d.ts.map +1 -1
  31. package/dist/templates/starter/starter.template.js +4 -2
  32. package/dist/templates/starter/starter.template.js.map +1 -1
  33. package/dist/templates/starter/starter.types.d.ts +3 -0
  34. package/dist/templates/starter/starter.types.d.ts.map +1 -1
  35. package/dist/templates/starter/starter.types.js.map +1 -1
  36. package/package.json +3 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @ankhorage/templates
2
2
 
3
+ ## 9.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - 0dcc320: Return starter-template artifacts with verified bundled image descriptors and materialize their bytes into generated projects.
8
+
3
9
  ## 8.0.0
4
10
 
5
11
  ### Major Changes
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="2" height="2" viewBox="0 0 2 2"><path fill="#7c3aed" d="M0 0h1v1H0zM1 1h1v1H1z"/></svg>
package/dist/catalog.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import type { AppCategory, AppManifest } from '@ankhorage/contracts';
1
+ import type { AppCategory } from '@ankhorage/contracts';
2
+ import { type StarterTemplateArtifact } from './templates/starter/index.js';
2
3
  import type { ParsedTemplateSelector } from './templateSelector.js';
3
4
  export interface TemplateCatalogEntry {
4
5
  readonly selector: string;
@@ -9,9 +10,9 @@ export interface TemplateCatalogEntry {
9
10
  }
10
11
  export declare function listTemplateCatalog(category?: AppCategory): readonly TemplateCatalogEntry[];
11
12
  export declare function resolveTemplateCatalogEntry(selector: ParsedTemplateSelector): TemplateCatalogEntry;
12
- export declare function createManifestForSelector(args: {
13
+ export declare function createTemplateArtifactForSelector(args: {
13
14
  readonly selector: ParsedTemplateSelector;
14
15
  readonly projectSlug: string;
15
16
  readonly displayName: string;
16
- }): AppManifest;
17
+ }): StarterTemplateArtifact;
17
18
  //# sourceMappingURL=catalog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAUrE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAGpE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,SAAS,oBAAoB,EAAE,CAQ3F;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,sBAAsB,GAC/B,oBAAoB,CAoBtB;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;IAC1C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B,GAAG,WAAW,CAUd"}
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAIxD,OAAO,EAGL,KAAK,uBAAuB,EAG7B,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAGpE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,SAAS,oBAAoB,EAAE,CAQ3F;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,sBAAsB,GAC/B,oBAAoB,CAoBtB;AAED,wBAAgB,iCAAiC,CAAC,IAAI,EAAE;IACtD,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;IAC1C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B,GAAG,uBAAuB,CAU1B"}
package/dist/catalog.js CHANGED
@@ -20,7 +20,7 @@ export function resolveTemplateCatalogEntry(selector) {
20
20
  }
21
21
  throw new Error(`Unknown template selector "${selector.selector}". Available selectors: ${availableSelectors.join(', ')}.`);
22
22
  }
23
- export function createManifestForSelector(args) {
23
+ export function createTemplateArtifactForSelector(args) {
24
24
  const seed = createTemplateSeed({
25
25
  category: args.selector.category,
26
26
  displayName: args.displayName,
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import type { AppCategory } from '@ankhorage/contracts';
2
2
  import type { AnkhCapabilityId } from '@ankhorage/contracts/cli';
3
- import { createManifestForSelector, resolveTemplateCatalogEntry, type TemplateCatalogEntry } from './catalog.js';
3
+ import { createTemplateArtifactForSelector, resolveTemplateCatalogEntry, type TemplateCatalogEntry } from './catalog.js';
4
4
  import type { TemplatesCommandContext, TemplatesCommandRunResult } from './commandContext.js';
5
- import { type CreateProjectSeedRequest, type ProjectSeedDependencies } from './projectSeed.js';
5
+ import { type CreateProjectSeedRequest, type CreateProjectSeedResult, type ProjectSeedDependencies } from './projectSeed.js';
6
6
  type TemplatesCommandName = 'create' | 'inspect' | 'list';
7
7
  interface TemplatesCommandRunRequest {
8
8
  readonly context: TemplatesCommandContext;
@@ -21,10 +21,8 @@ export interface TemplatesCommandInvocation {
21
21
  readonly context: TemplatesCommandContext;
22
22
  }
23
23
  interface TemplatesCommandServices {
24
- readonly createManifestForSelector: typeof createManifestForSelector;
25
- readonly createProjectSeed: (request: CreateProjectSeedRequest, dependencies?: Partial<ProjectSeedDependencies>) => Promise<{
26
- readonly projectPath: string;
27
- }>;
24
+ readonly createTemplateArtifactForSelector: typeof createTemplateArtifactForSelector;
25
+ readonly createProjectSeed: (request: CreateProjectSeedRequest, dependencies?: Partial<ProjectSeedDependencies>) => Promise<CreateProjectSeedResult>;
28
26
  readonly listTemplateCatalog: (category?: AppCategory) => readonly TemplateCatalogEntry[];
29
27
  readonly resolveTemplateCatalogEntry: typeof resolveTemplateCatalogEntry;
30
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
package/dist/commands.js CHANGED
@@ -1,6 +1,7 @@
1
- import { createManifestForSelector, listTemplateCatalog, resolveTemplateCatalogEntry, } from './catalog.js';
1
+ import { createTemplateArtifactForSelector, listTemplateCatalog, resolveTemplateCatalogEntry, } from './catalog.js';
2
2
  import { TEMPLATES_CAPABILITIES, TEMPLATES_COMMAND_CATEGORY, TEMPLATES_PACKAGE_NAME, TEMPLATES_PACKAGE_VERSION, } from './packageMetadata.js';
3
3
  import { createProjectSeed, } from './projectSeed.js';
4
+ import { summarizeStarterTemplateAssets } from './templates/starter/index.js';
4
5
  import { deriveDisplayNameFromSlug, parseProjectSlug, parseTemplateCategory, parseTemplateSelector, } from './templateSelector.js';
5
6
  const COMMAND_CAPABILITIES = {
6
7
  list: TEMPLATES_CAPABILITIES[0],
@@ -103,7 +104,7 @@ function renderCommandHelp(command) {
103
104
  }
104
105
  function createTemplatesCommandServices(overrides = {}) {
105
106
  return {
106
- createManifestForSelector: overrides.createManifestForSelector ?? createManifestForSelector,
107
+ createTemplateArtifactForSelector: overrides.createTemplateArtifactForSelector ?? createTemplateArtifactForSelector,
107
108
  createProjectSeed: overrides.createProjectSeed ?? createProjectSeed,
108
109
  listTemplateCatalog: overrides.listTemplateCatalog ?? listTemplateCatalog,
109
110
  resolveTemplateCatalogEntry: overrides.resolveTemplateCatalogEntry ?? resolveTemplateCatalogEntry,
@@ -118,19 +119,19 @@ function runListCommand(request, services, argv) {
118
119
  function runInspectCommand(request, services, argv) {
119
120
  const selector = parseInspectArguments(argv);
120
121
  const entry = services.resolveTemplateCatalogEntry(selector);
121
- const manifest = services.createManifestForSelector({
122
+ const artifact = services.createTemplateArtifactForSelector({
122
123
  selector,
123
124
  projectSlug: 'template-preview',
124
125
  displayName: 'Template Preview',
125
126
  });
126
- request.context.writeStdout(renderTemplateInspection(entry, manifest));
127
+ request.context.writeStdout(renderTemplateInspection(entry, artifact));
127
128
  return Promise.resolve({ exitCode: 0 });
128
129
  }
129
130
  async function runCreateCommand(request, services, argv) {
130
131
  const { projectSlug, selector } = parseCreateArguments(argv);
131
132
  const entry = services.resolveTemplateCatalogEntry(selector);
132
133
  const displayName = deriveDisplayNameFromSlug(projectSlug);
133
- const manifest = services.createManifestForSelector({
134
+ const artifact = services.createTemplateArtifactForSelector({
134
135
  selector,
135
136
  projectSlug,
136
137
  displayName,
@@ -153,9 +154,10 @@ async function runCreateCommand(request, services, argv) {
153
154
  templateId: entry.templateId,
154
155
  selector: entry.selector,
155
156
  },
156
- manifest,
157
+ manifest: artifact.manifest,
158
+ assets: artifact.assets,
157
159
  });
158
- request.context.writeStdout(renderCreateSuccess(result.projectPath));
160
+ request.context.writeStdout(renderCreateSuccess(result.projectPath, result.createdFiles));
159
161
  return { exitCode: 0 };
160
162
  }
161
163
  function parseListArguments(argv) {
@@ -190,25 +192,25 @@ function renderTemplateList(entries) {
190
192
  const lines = entries.map((entry) => ` ${entry.selector} - ${entry.label}: ${entry.description}`);
191
193
  return ['Available templates:', '', ...lines, ''].join('\n');
192
194
  }
193
- function renderTemplateInspection(entry, manifest) {
195
+ function renderTemplateInspection(entry, artifact) {
194
196
  return `${JSON.stringify({
195
197
  selector: entry.selector,
196
198
  category: entry.category,
197
199
  templateId: entry.templateId,
198
200
  label: entry.label,
199
201
  description: entry.description,
200
- manifestVersion: manifest.metadata.version,
201
- manifest,
202
+ assetCount: artifact.assets.length,
203
+ assets: summarizeStarterTemplateAssets(artifact.assets),
204
+ manifestVersion: artifact.manifest.metadata.version,
205
+ manifest: artifact.manifest,
202
206
  }, null, 2)}\n`;
203
207
  }
204
- function renderCreateSuccess(projectPath) {
208
+ function renderCreateSuccess(projectPath, createdFiles) {
205
209
  return [
206
210
  `Created manifest-first project seed at ${projectPath}`,
207
211
  '',
208
212
  'Files:',
209
- ' ankh.config.json',
210
- ' ankh.template.json',
211
- ' README.md',
213
+ ...createdFiles.map((filePath) => ` ${filePath}`),
212
214
  '',
213
215
  ].join('\n');
214
216
  }
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
@@ -38,7 +38,7 @@ const TEMPLATE_FACTORIES = {
38
38
  ...(version ? { version } : {}),
39
39
  ...(themeId ? { themeId } : {}),
40
40
  ...(themeName ? { themeName } : {}),
41
- });
41
+ }).manifest;
42
42
  },
43
43
  };
44
44
  function createManifestFromTemplate(category, template, overrides) {
@@ -1 +1 @@
1
- {"version":3,"file":"create-category-app.js","sourceRoot":"","sources":["../../src/generators/create-category-app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-category-app.js","sourceRoot":"","sources":["../../src/generators/create-category-app.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -5,6 +5,6 @@ export { ACCENT_TONE_FAMILIES, ACCENT_TONE_TARGETS, type AccentToneFamily, FOUND
5
5
  export { createOAuthFixtureManifest, listOAuthFixtures, OAUTH_CALLBACK_ROUTE, OAUTH_FIXTURE_IDS, type OAuthFixtureDefinition, type OAuthFixtureId, resolveOAuthFixture, } from './fixtures/oauth';
6
6
  export { createCategoryAppManifest } from './generators/create-category-app';
7
7
  export { CATEGORY_PRESET_RECONCILIATION, CATEGORY_PRESETS, type CategoryPreset, type CategoryPresetFieldReconciliation, type CategoryPresetReconciliationDecision, type CategoryPresetReconciliationReport, } from './presets/category-presets';
8
- export { type CategoryStarterTemplateDefinition, createStarterTemplate, listStarterTemplates, listStarterTemplatesByCategory, listStarterTemplateSummaries, resolveStarterTemplate, type StarterTemplateFactory, type StarterTemplateId, type StarterTemplateOptions, type StarterTemplateSelection, type StarterTemplateSummary, TEMPLATE_KINDS, type TemplateKind, type TemplateSeed, } from './templates/starter';
8
+ export { type CategoryStarterTemplateDefinition, createStarterTemplate, createStarterTemplateArtifact, listStarterTemplates, listStarterTemplatesByCategory, listStarterTemplateSummaries, resolveStarterTemplate, type StarterTemplateArtifact, type StarterTemplateAsset, type StarterTemplateAssetSummary, type StarterTemplateFactory, type StarterTemplateId, type StarterTemplateOptions, type StarterTemplateResult, type StarterTemplateSelection, type StarterTemplateSummary, summarizeStarterTemplateAssets, TEMPLATE_IMAGE_CONTENT_TYPES, TEMPLATE_KINDS, type TemplateImageContentType, type TemplateKind, type TemplateSeed, validateStarterTemplateAssets, } from './templates/starter';
9
9
  export { APP_CATEGORIES, type AppCategory, type SplashScreenResizeMode, type SplashScreenSpec, } from '@ankhorage/contracts';
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,KAAK,8BAA8B,EACnC,0BAA0B,EAC1B,KAAK,+BAA+B,EACpC,KAAK,sBAAsB,EAC3B,KAAK,6BAA6B,EAClC,KAAK,iCAAiC,EACtC,KAAK,yBAAyB,EAC9B,wBAAwB,GACzB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,4BAA4B,EACjC,KAAK,uBAAuB,EAC5B,qBAAqB,EACrB,KAAK,sBAAsB,EAC3B,2BAA2B,EAC3B,KAAK,4BAA4B,GAClC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,KAAK,aAAa,EAClB,KAAK,WAAW,GACjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,KAAK,gBAAgB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,KAAK,oBAAoB,EACzB,eAAe,EACf,KAAK,SAAS,EACd,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,UAAU,GAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EACL,8BAA8B,EAC9B,gBAAgB,EAChB,KAAK,cAAc,EACnB,KAAK,iCAAiC,EACtC,KAAK,oCAAoC,EACzC,KAAK,kCAAkC,GACxC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,KAAK,iCAAiC,EACtC,qBAAqB,EACrB,oBAAoB,EACpB,8BAA8B,EAC9B,4BAA4B,EAC5B,sBAAsB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,cAAc,EACd,KAAK,YAAY,EACjB,KAAK,YAAY,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,cAAc,EACd,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,GACtB,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,KAAK,8BAA8B,EACnC,0BAA0B,EAC1B,KAAK,+BAA+B,EACpC,KAAK,sBAAsB,EAC3B,KAAK,6BAA6B,EAClC,KAAK,iCAAiC,EACtC,KAAK,yBAAyB,EAC9B,wBAAwB,GACzB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,4BAA4B,EACjC,KAAK,uBAAuB,EAC5B,qBAAqB,EACrB,KAAK,sBAAsB,EAC3B,2BAA2B,EAC3B,KAAK,4BAA4B,GAClC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,KAAK,aAAa,EAClB,KAAK,WAAW,GACjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,KAAK,gBAAgB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,KAAK,oBAAoB,EACzB,eAAe,EACf,KAAK,SAAS,EACd,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,UAAU,GAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EACL,8BAA8B,EAC9B,gBAAgB,EAChB,KAAK,cAAc,EACnB,KAAK,iCAAiC,EACtC,KAAK,oCAAoC,EACzC,KAAK,kCAAkC,GACxC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,KAAK,iCAAiC,EACtC,qBAAqB,EACrB,6BAA6B,EAC7B,oBAAoB,EACpB,8BAA8B,EAC9B,4BAA4B,EAC5B,sBAAsB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,8BAA8B,EAC9B,4BAA4B,EAC5B,cAAc,EACd,KAAK,wBAAwB,EAC7B,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,6BAA6B,GAC9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,cAAc,EACd,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,GACtB,MAAM,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -5,6 +5,6 @@ export { ACCENT_TONE_FAMILIES, ACCENT_TONE_TARGETS, FOUNDATION_TONE_FAMILIES, FO
5
5
  export { createOAuthFixtureManifest, listOAuthFixtures, OAUTH_CALLBACK_ROUTE, OAUTH_FIXTURE_IDS, resolveOAuthFixture, } from './fixtures/oauth';
6
6
  export { createCategoryAppManifest } from './generators/create-category-app';
7
7
  export { CATEGORY_PRESET_RECONCILIATION, CATEGORY_PRESETS, } from './presets/category-presets';
8
- export { createStarterTemplate, listStarterTemplates, listStarterTemplatesByCategory, listStarterTemplateSummaries, resolveStarterTemplate, TEMPLATE_KINDS, } from './templates/starter';
8
+ export { createStarterTemplate, createStarterTemplateArtifact, listStarterTemplates, listStarterTemplatesByCategory, listStarterTemplateSummaries, resolveStarterTemplate, summarizeStarterTemplateAssets, TEMPLATE_IMAGE_CONTENT_TYPES, TEMPLATE_KINDS, validateStarterTemplateAssets, } from './templates/starter';
9
9
  export { APP_CATEGORIES, } from '@ankhorage/contracts';
10
10
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAE3B,0BAA0B,EAM1B,wBAAwB,GACzB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAIL,qBAAqB,EAErB,2BAA2B,GAE5B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,gBAAgB,EAChB,aAAa,GAGd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EAEnB,wBAAwB,EACxB,uBAAuB,EAEvB,eAAe,EAEf,iBAAiB,GAKlB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EAGjB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EACL,8BAA8B,EAC9B,gBAAgB,GAKjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAEL,qBAAqB,EACrB,oBAAoB,EACpB,8BAA8B,EAC9B,4BAA4B,EAC5B,sBAAsB,EAMtB,cAAc,GAGf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,cAAc,GAIf,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAE3B,0BAA0B,EAM1B,wBAAwB,GACzB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAIL,qBAAqB,EAErB,2BAA2B,GAE5B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,gBAAgB,EAChB,aAAa,GAGd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EAEnB,wBAAwB,EACxB,uBAAuB,EAEvB,eAAe,EAEf,iBAAiB,GAKlB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EAGjB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EACL,8BAA8B,EAC9B,gBAAgB,GAKjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAEL,qBAAqB,EACrB,6BAA6B,EAC7B,oBAAoB,EACpB,8BAA8B,EAC9B,4BAA4B,EAC5B,sBAAsB,EAUtB,8BAA8B,EAC9B,4BAA4B,EAC5B,cAAc,EAId,6BAA6B,GAC9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,cAAc,GAIf,MAAM,sBAAsB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { mkdir, writeFile } from 'node:fs/promises';
2
2
  import type { AppCategory, AppManifest } from '@ankhorage/contracts';
3
+ import { type StarterTemplateAsset } from './templates/starter/starter.assets';
3
4
  interface TemplateSeedMetadata {
4
5
  readonly package: string;
5
6
  readonly version: string;
@@ -15,13 +16,16 @@ export interface CreateProjectSeedRequest {
15
16
  readonly readmeText: string;
16
17
  readonly metadata: TemplateSeedMetadata;
17
18
  readonly manifest: AppManifest;
19
+ readonly assets: readonly StarterTemplateAsset[];
18
20
  }
19
21
  export interface CreateProjectSeedResult {
20
22
  readonly projectPath: string;
23
+ readonly createdFiles: readonly string[];
21
24
  }
22
25
  export interface ProjectSeedDependencies {
23
26
  readonly mkdir: typeof mkdir;
24
27
  readonly pathExists: (targetPath: string) => Promise<boolean>;
28
+ readonly readTemplateAsset: (asset: StarterTemplateAsset) => Promise<Uint8Array>;
25
29
  readonly writeFile: typeof writeFile;
26
30
  }
27
31
  export declare function createProjectSeed(request: CreateProjectSeedRequest, dependencies?: Partial<ProjectSeedDependencies>): Promise<CreateProjectSeedResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"projectSeed.d.ts","sourceRoot":"","sources":["../src/projectSeed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAQ,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG1D,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAErE,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;CAChC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9D,QAAQ,CAAC,SAAS,EAAE,OAAO,SAAS,CAAC;CACtC;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,wBAAwB,EACjC,YAAY,GAAE,OAAO,CAAC,uBAAuB,CAAM,GAClD,OAAO,CAAC,uBAAuB,CAAC,CA0BlC"}
1
+ {"version":3,"file":"projectSeed.d.ts","sourceRoot":"","sources":["../src/projectSeed.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,KAAK,EAA4B,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAIrF,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAErE,OAAO,EACL,KAAK,oBAAoB,EAG1B,MAAM,oCAAoC,CAAC;AAK5C,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAOD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,SAAS,oBAAoB,EAAE,CAAC;CAClD;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9D,QAAQ,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IACjF,QAAQ,CAAC,SAAS,EAAE,OAAO,SAAS,CAAC;CACtC;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,wBAAwB,EACjC,YAAY,GAAE,OAAO,CAAC,uBAAuB,CAAM,GAClD,OAAO,CAAC,uBAAuB,CAAC,CA2BlC"}
@@ -1,24 +1,94 @@
1
- import { mkdir, stat, writeFile } from 'node:fs/promises';
1
+ import { createHash } from 'node:crypto';
2
+ import { lstat, mkdir, readFile, realpath, stat, writeFile } from 'node:fs/promises';
2
3
  import path from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { summarizeStarterTemplateAssets, validateStarterTemplateAssets, } from './templates/starter/starter.assets';
6
+ const PACKAGE_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
7
+ const PACKAGED_TEMPLATE_ASSET_ROOT = path.join(PACKAGE_ROOT, 'assets', 'templates');
3
8
  export async function createProjectSeed(request, dependencies = {}) {
4
9
  const resolvedDependencies = createProjectSeedDependencies(dependencies);
5
10
  const projectPath = path.resolve(request.cwd, request.projectSlug);
6
11
  if (await resolvedDependencies.pathExists(projectPath)) {
7
12
  throw new Error(`Project path already exists: ${projectPath}`);
8
13
  }
14
+ const assets = validateStarterTemplateAssets(request.manifest, request.assets);
15
+ const materializedAssets = await materializeTemplateAssets(assets, resolvedDependencies.readTemplateAsset);
9
16
  await resolvedDependencies.mkdir(projectPath, { recursive: false });
10
- await resolvedDependencies.writeFile(path.join(projectPath, 'ankh.config.json'), `${JSON.stringify(request.manifest, null, 2)}\n`, 'utf8');
11
- await resolvedDependencies.writeFile(path.join(projectPath, 'ankh.template.json'), `${JSON.stringify(request.metadata, null, 2)}\n`, 'utf8');
12
- await resolvedDependencies.writeFile(path.join(projectPath, 'README.md'), request.readmeText, 'utf8');
13
- return { projectPath };
17
+ await writeProjectMetadata(projectPath, request, assets, resolvedDependencies.writeFile);
18
+ await writeMaterializedAssets(projectPath, materializedAssets, resolvedDependencies);
19
+ return {
20
+ projectPath,
21
+ createdFiles: [
22
+ 'ankh.config.json',
23
+ 'ankh.template.json',
24
+ 'README.md',
25
+ ...assets.map((asset) => asset.targetPath),
26
+ ],
27
+ };
28
+ }
29
+ /*** Write the manifest, template provenance, and readme for one generated project seed. */
30
+ async function writeProjectMetadata(projectPath, request, assets, writeProjectFile) {
31
+ await writeProjectFile(path.join(projectPath, 'ankh.config.json'), `${JSON.stringify(request.manifest, null, 2)}\n`, 'utf8');
32
+ await writeProjectFile(path.join(projectPath, 'ankh.template.json'), `${JSON.stringify({
33
+ ...request.metadata,
34
+ assets: summarizeStarterTemplateAssets(assets),
35
+ }, null, 2)}\n`, 'utf8');
36
+ await writeProjectFile(path.join(projectPath, 'README.md'), request.readmeText, 'utf8');
37
+ }
38
+ /*** Write preverified template assets below their app-relative manifest paths. */
39
+ async function writeMaterializedAssets(projectPath, materializedAssets, dependencies) {
40
+ for (const materialized of materializedAssets) {
41
+ const targetPath = path.resolve(projectPath, materialized.asset.targetPath);
42
+ assertInside(projectPath, targetPath, 'Template asset target');
43
+ await dependencies.mkdir(path.dirname(targetPath), { recursive: true });
44
+ await dependencies.writeFile(targetPath, materialized.contents);
45
+ }
46
+ }
47
+ /*** Resolve and byte-verify every asset before project creation starts. */
48
+ async function materializeTemplateAssets(assets, readTemplateAsset) {
49
+ return Promise.all(assets.map(async (asset) => ({
50
+ asset,
51
+ contents: await readTemplateAsset(asset),
52
+ })));
14
53
  }
15
54
  function createProjectSeedDependencies(overrides) {
16
55
  return {
17
56
  mkdir: overrides.mkdir ?? mkdir,
18
57
  pathExists: overrides.pathExists ?? pathExists,
58
+ readTemplateAsset: overrides.readTemplateAsset ?? readPackagedTemplateAsset,
19
59
  writeFile: overrides.writeFile ?? writeFile,
20
60
  };
21
61
  }
62
+ /*** Read and verify one immutable image from the published Templates asset inventory. */
63
+ async function readPackagedTemplateAsset(asset) {
64
+ const sourcePath = path.resolve(PACKAGE_ROOT, asset.sourcePath);
65
+ assertInside(PACKAGED_TEMPLATE_ASSET_ROOT, sourcePath, 'Template asset source');
66
+ const sourceStats = await lstat(sourcePath);
67
+ if (!sourceStats.isFile() || sourceStats.isSymbolicLink()) {
68
+ throw new Error(`Template asset source must be a regular file: ${asset.sourcePath}`);
69
+ }
70
+ const canonicalSourcePath = await realpath(sourcePath);
71
+ assertInside(PACKAGED_TEMPLATE_ASSET_ROOT, canonicalSourcePath, 'Template asset source');
72
+ const contents = await readFile(canonicalSourcePath);
73
+ if (contents.byteLength !== asset.sizeBytes) {
74
+ throw new Error(`Template asset byte size does not match its descriptor: ${asset.sourcePath}`);
75
+ }
76
+ const sha256 = createHash('sha256').update(contents).digest('hex');
77
+ if (sha256 !== asset.sha256) {
78
+ throw new Error(`Template asset sha256 does not match its descriptor: ${asset.sourcePath}`);
79
+ }
80
+ return contents;
81
+ }
82
+ /*** Require a resolved path to remain strictly below its declared owner directory. */
83
+ function assertInside(parentPath, childPath, label) {
84
+ const relativePath = path.relative(parentPath, childPath);
85
+ if (relativePath === '' ||
86
+ relativePath === '..' ||
87
+ relativePath.startsWith(`..${path.sep}`) ||
88
+ path.isAbsolute(relativePath)) {
89
+ throw new Error(`${label} escapes its owner directory: ${childPath}`);
90
+ }
91
+ }
22
92
  async function pathExists(targetPath) {
23
93
  try {
24
94
  await stat(targetPath);
@@ -1 +1 @@
1
- {"version":3,"file":"projectSeed.js","sourceRoot":"","sources":["../src/projectSeed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,IAAI,MAAM,WAAW,CAAC;AAgC7B,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAiC,EACjC,eAAiD,EAAE;IAEnD,MAAM,oBAAoB,GAAG,6BAA6B,CAAC,YAAY,CAAC,CAAC;IACzE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAEnE,IAAI,MAAM,oBAAoB,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,gCAAgC,WAAW,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,oBAAoB,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IACpE,MAAM,oBAAoB,CAAC,SAAS,CAClC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,EAC1C,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAChD,MAAM,CACP,CAAC;IACF,MAAM,oBAAoB,CAAC,SAAS,CAClC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,oBAAoB,CAAC,EAC5C,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAChD,MAAM,CACP,CAAC;IACF,MAAM,oBAAoB,CAAC,SAAS,CAClC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,EACnC,OAAO,CAAC,UAAU,EAClB,MAAM,CACP,CAAC;IAEF,OAAO,EAAE,WAAW,EAAE,CAAC;AACzB,CAAC;AAED,SAAS,6BAA6B,CACpC,SAA2C;IAE3C,OAAO;QACL,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,KAAK;QAC/B,UAAU,EAAE,SAAS,CAAC,UAAU,IAAI,UAAU;QAC9C,SAAS,EAAE,SAAS,CAAC,SAAS,IAAI,SAAS;KAC5C,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,UAAkB;IAC1C,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC9E,CAAC"}
1
+ {"version":3,"file":"projectSeed.js","sourceRoot":"","sources":["../src/projectSeed.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
- export { createStarterTemplate, listStarterTemplateSummaries, listStarterTemplates, listStarterTemplatesByCategory, resolveStarterTemplate, TEMPLATE_KINDS, type CategoryStarterTemplateDefinition, type StarterTemplateFactory, type StarterTemplateId, type StarterTemplateOptions, type StarterTemplateSelection, type StarterTemplateSummary, type TemplateKind, type TemplateSeed, } from './starter.template';
1
+ export { createStarterTemplateArtifact, type StarterTemplateArtifact, type StarterTemplateAsset, type StarterTemplateAssetSummary, summarizeStarterTemplateAssets, TEMPLATE_IMAGE_CONTENT_TYPES, type TemplateImageContentType, validateStarterTemplateAssets, } from './starter.assets';
2
+ export { createStarterTemplate, listStarterTemplateSummaries, listStarterTemplates, listStarterTemplatesByCategory, resolveStarterTemplate, TEMPLATE_KINDS, type CategoryStarterTemplateDefinition, type StarterTemplateFactory, type StarterTemplateId, type StarterTemplateOptions, type StarterTemplateSelection, type StarterTemplateSummary, type StarterTemplateResult, type TemplateKind, type TemplateSeed, } from './starter.template';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/starter/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,oBAAoB,EACpB,8BAA8B,EAC9B,sBAAsB,EACtB,cAAc,EACd,KAAK,iCAAiC,EACtC,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,YAAY,EACjB,KAAK,YAAY,GAClB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/starter/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,EAChC,8BAA8B,EAC9B,4BAA4B,EAC5B,KAAK,wBAAwB,EAC7B,6BAA6B,GAC9B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,oBAAoB,EACpB,8BAA8B,EAC9B,sBAAsB,EACtB,cAAc,EACd,KAAK,iCAAiC,EACtC,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EACjB,KAAK,YAAY,GAClB,MAAM,oBAAoB,CAAC"}
@@ -1,2 +1,3 @@
1
+ export { createStarterTemplateArtifact, summarizeStarterTemplateAssets, TEMPLATE_IMAGE_CONTENT_TYPES, validateStarterTemplateAssets, } from './starter.assets';
1
2
  export { createStarterTemplate, listStarterTemplateSummaries, listStarterTemplates, listStarterTemplatesByCategory, resolveStarterTemplate, TEMPLATE_KINDS, } from './starter.template';
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/starter/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,oBAAoB,EACpB,8BAA8B,EAC9B,sBAAsB,EACtB,cAAc,GASf,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/starter/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAI7B,8BAA8B,EAC9B,4BAA4B,EAE5B,6BAA6B,GAC9B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,oBAAoB,EACpB,8BAA8B,EAC9B,sBAAsB,EACtB,cAAc,GAUf,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { AppManifest } from '@ankhorage/contracts';
2
+ export declare const TEMPLATE_IMAGE_CONTENT_TYPES: readonly ["image/avif", "image/gif", "image/jpeg", "image/png", "image/svg+xml", "image/webp"];
3
+ export type TemplateImageContentType = (typeof TEMPLATE_IMAGE_CONTENT_TYPES)[number];
4
+ export interface StarterTemplateAsset {
5
+ readonly sourcePath: string;
6
+ readonly targetPath: string;
7
+ readonly contentType: TemplateImageContentType;
8
+ readonly sizeBytes: number;
9
+ readonly sha256: string;
10
+ }
11
+ export type StarterTemplateAssetSummary = Omit<StarterTemplateAsset, 'sourcePath'>;
12
+ export interface StarterTemplateArtifact {
13
+ readonly manifest: AppManifest;
14
+ readonly assets: readonly StarterTemplateAsset[];
15
+ }
16
+ /*** Compose one canonical starter artifact from a manifest and its distributable image files. */
17
+ export declare function createStarterTemplateArtifact(manifest: AppManifest, assets?: readonly StarterTemplateAsset[]): StarterTemplateArtifact;
18
+ /*** Validate and deterministically order the bundled image files owned by one starter manifest. */
19
+ export declare function validateStarterTemplateAssets(manifest: AppManifest, assets: readonly StarterTemplateAsset[]): readonly StarterTemplateAsset[];
20
+ /*** Describe distributable image assets without exposing their package-internal source paths. */
21
+ export declare function summarizeStarterTemplateAssets(assets: readonly StarterTemplateAsset[]): readonly StarterTemplateAssetSummary[];
22
+ //# sourceMappingURL=starter.assets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"starter.assets.d.ts","sourceRoot":"","sources":["../../../src/templates/starter/starter.assets.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,sBAAsB,CAAC;AAEpE,eAAO,MAAM,4BAA4B,gGAO/B,CAAC;AAEX,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,4BAA4B,CAAC,CAAC,MAAM,CAAC,CAAC;AAErF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,wBAAwB,CAAC;IAC/C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,2BAA2B,GAAG,IAAI,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC;AAEnF,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,SAAS,oBAAoB,EAAE,CAAC;CAClD;AAWD,iGAAiG;AACjG,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,WAAW,EACrB,MAAM,GAAE,SAAS,oBAAoB,EAAO,GAC3C,uBAAuB,CAKzB;AAED,mGAAmG;AACnG,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,WAAW,EACrB,MAAM,EAAE,SAAS,oBAAoB,EAAE,GACtC,SAAS,oBAAoB,EAAE,CA+BjC;AAED,iGAAiG;AACjG,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,SAAS,oBAAoB,EAAE,GACtC,SAAS,2BAA2B,EAAE,CAOxC"}
@@ -0,0 +1,124 @@
1
+ import { posix } from 'node:path';
2
+ export const TEMPLATE_IMAGE_CONTENT_TYPES = [
3
+ 'image/avif',
4
+ 'image/gif',
5
+ 'image/jpeg',
6
+ 'image/png',
7
+ 'image/svg+xml',
8
+ 'image/webp',
9
+ ];
10
+ const CONTENT_TYPE_EXTENSIONS = {
11
+ 'image/avif': ['.avif'],
12
+ 'image/gif': ['.gif'],
13
+ 'image/jpeg': ['.jpeg', '.jpg'],
14
+ 'image/png': ['.png'],
15
+ 'image/svg+xml': ['.svg'],
16
+ 'image/webp': ['.webp'],
17
+ };
18
+ /*** Compose one canonical starter artifact from a manifest and its distributable image files. */
19
+ export function createStarterTemplateArtifact(manifest, assets = []) {
20
+ return {
21
+ manifest,
22
+ assets: validateStarterTemplateAssets(manifest, assets),
23
+ };
24
+ }
25
+ /*** Validate and deterministically order the bundled image files owned by one starter manifest. */
26
+ export function validateStarterTemplateAssets(manifest, assets) {
27
+ const bundledMedia = collectBundledImageMedia(manifest);
28
+ const assetsByTarget = new Map();
29
+ const sourcePaths = new Set();
30
+ for (const asset of assets) {
31
+ validateAssetDescriptor(asset);
32
+ if (assetsByTarget.has(asset.targetPath)) {
33
+ throw new Error(`Starter template asset target is duplicated: ${asset.targetPath}`);
34
+ }
35
+ if (sourcePaths.has(asset.sourcePath)) {
36
+ throw new Error(`Starter template asset source is duplicated: ${asset.sourcePath}`);
37
+ }
38
+ assetsByTarget.set(asset.targetPath, asset);
39
+ sourcePaths.add(asset.sourcePath);
40
+ }
41
+ for (const [targetPath, mediaAsset] of bundledMedia) {
42
+ const asset = assetsByTarget.get(targetPath);
43
+ if (asset === undefined) {
44
+ throw new Error(`Bundled manifest image is missing its template asset: ${targetPath}`);
45
+ }
46
+ validateMediaMatchesAsset(mediaAsset, asset);
47
+ }
48
+ for (const targetPath of assetsByTarget.keys()) {
49
+ if (!bundledMedia.has(targetPath)) {
50
+ throw new Error(`Template asset is not referenced by bundled manifest media: ${targetPath}`);
51
+ }
52
+ }
53
+ return [...assets].sort((left, right) => left.targetPath.localeCompare(right.targetPath));
54
+ }
55
+ /*** Describe distributable image assets without exposing their package-internal source paths. */
56
+ export function summarizeStarterTemplateAssets(assets) {
57
+ return assets.map((asset) => ({
58
+ targetPath: asset.targetPath,
59
+ contentType: asset.contentType,
60
+ sizeBytes: asset.sizeBytes,
61
+ sha256: asset.sha256,
62
+ }));
63
+ }
64
+ /*** Collect unique bundled image media by app-relative target path. */
65
+ function collectBundledImageMedia(manifest) {
66
+ const bundledMedia = new Map();
67
+ for (const mediaAsset of Object.values(manifest.media?.assets ?? {})) {
68
+ if (mediaAsset.source.kind !== 'bundled')
69
+ continue;
70
+ if (mediaAsset.kind !== 'image') {
71
+ throw new Error(`Starter template bundled media must be an image: ${mediaAsset.id}`);
72
+ }
73
+ validateRelativePath(mediaAsset.source.path, 'assets/', 'Bundled manifest image path');
74
+ if (bundledMedia.has(mediaAsset.source.path)) {
75
+ throw new Error(`Bundled manifest image path is duplicated: ${mediaAsset.source.path}`);
76
+ }
77
+ bundledMedia.set(mediaAsset.source.path, mediaAsset);
78
+ }
79
+ return bundledMedia;
80
+ }
81
+ /*** Validate one immutable packaged-source to generated-target image descriptor. */
82
+ function validateAssetDescriptor(asset) {
83
+ validateRelativePath(asset.sourcePath, 'assets/templates/', 'Template asset source path');
84
+ validateRelativePath(asset.targetPath, 'assets/', 'Template asset target path');
85
+ if (!isTemplateImageContentType(asset.contentType)) {
86
+ throw new Error(`Unsupported template image content type: ${String(asset.contentType)}`);
87
+ }
88
+ const extension = posix.extname(asset.targetPath).toLowerCase();
89
+ if (!CONTENT_TYPE_EXTENSIONS[asset.contentType].includes(extension)) {
90
+ throw new Error(`Template asset extension ${extension || '(missing)'} does not match ${asset.contentType}.`);
91
+ }
92
+ if (!Number.isSafeInteger(asset.sizeBytes) || asset.sizeBytes <= 0) {
93
+ throw new Error(`Template asset size must be a positive safe integer: ${asset.targetPath}`);
94
+ }
95
+ if (!/^[0-9a-f]{64}$/u.test(asset.sha256)) {
96
+ throw new Error(`Template asset sha256 must be 64 lowercase hex characters: ${asset.targetPath}`);
97
+ }
98
+ }
99
+ /*** Require manifest image metadata to describe the same immutable file as its bundle entry. */
100
+ function validateMediaMatchesAsset(mediaAsset, asset) {
101
+ if (mediaAsset.contentType !== asset.contentType) {
102
+ throw new Error(`Bundled manifest image content type differs from its asset: ${asset.targetPath}`);
103
+ }
104
+ if (mediaAsset.metadata?.sizeBytes !== asset.sizeBytes) {
105
+ throw new Error(`Bundled manifest image size differs from its asset: ${asset.targetPath}`);
106
+ }
107
+ }
108
+ /*** Require a normalized portable relative path below its canonical owned prefix. */
109
+ function validateRelativePath(value, prefix, label) {
110
+ const segments = value.split('/');
111
+ if (value === '' ||
112
+ value.startsWith('/') ||
113
+ value.includes('\\') ||
114
+ posix.normalize(value) !== value ||
115
+ !value.startsWith(prefix) ||
116
+ segments.some((segment) => segment === '' || segment === '.' || segment === '..')) {
117
+ throw new Error(`${label} must be a normalized relative path below ${prefix}: ${value}`);
118
+ }
119
+ }
120
+ /*** Narrow an unknown content type to the canonical template-image inventory. */
121
+ function isTemplateImageContentType(value) {
122
+ return TEMPLATE_IMAGE_CONTENT_TYPES.some((contentType) => contentType === value);
123
+ }
124
+ //# sourceMappingURL=starter.assets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"starter.assets.js","sourceRoot":"","sources":["../../../src/templates/starter/starter.assets.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,7 @@
1
- import type { AppManifest } from '@ankhorage/contracts';
2
1
  import { listStarterTemplateSummaries, listStarterTemplates, listStarterTemplatesByCategory, resolveStarterTemplate } from './starter.registry';
3
- import { TEMPLATE_KINDS, type StarterTemplateOptions, type TemplateSeed } from './starter.types';
2
+ import { TEMPLATE_KINDS, type StarterTemplateOptions, type StarterTemplateResult, type TemplateSeed } from './starter.types';
4
3
  export { TEMPLATE_KINDS };
5
4
  export { listStarterTemplateSummaries, listStarterTemplates, listStarterTemplatesByCategory, resolveStarterTemplate, };
6
- export type { CategoryStarterTemplateDefinition, StarterTemplateFactory, StarterTemplateId, StarterTemplateOptions, StarterTemplateSelection, StarterTemplateSummary, TemplateKind, TemplateSeed, } from './starter.types';
7
- export declare function createStarterTemplate(seed: TemplateSeed, options?: StarterTemplateOptions): AppManifest;
5
+ export type { CategoryStarterTemplateDefinition, StarterTemplateFactory, StarterTemplateId, StarterTemplateOptions, StarterTemplateSelection, StarterTemplateSummary, StarterTemplateResult, TemplateKind, TemplateSeed, } from './starter.types';
6
+ export declare function createStarterTemplate(seed: TemplateSeed, options?: StarterTemplateOptions): StarterTemplateResult;
8
7
  //# sourceMappingURL=starter.template.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"starter.template.d.ts","sourceRoot":"","sources":["../../../src/templates/starter/starter.template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAOxD,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,EACpB,8BAA8B,EAC9B,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,KAAK,sBAAsB,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEjG,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,EACpB,8BAA8B,EAC9B,sBAAsB,GACvB,CAAC;AACF,YAAY,EACV,iCAAiC,EACjC,sBAAsB,EACtB,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,YAAY,EACZ,YAAY,GACb,MAAM,iBAAiB,CAAC;AAEzB,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,YAAY,EAClB,OAAO,GAAE,sBAA2B,GACnC,WAAW,CAGb"}
1
+ {"version":3,"file":"starter.template.d.ts","sourceRoot":"","sources":["../../../src/templates/starter/starter.template.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,EACpB,8BAA8B,EAC9B,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,cAAc,EACd,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,EACpB,8BAA8B,EAC9B,sBAAsB,GACvB,CAAC;AACF,YAAY,EACV,iCAAiC,EACjC,sBAAsB,EACtB,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,YAAY,EACZ,YAAY,GACb,MAAM,iBAAiB,CAAC;AAEzB,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,YAAY,EAClB,OAAO,GAAE,sBAA2B,GACnC,qBAAqB,CAMvB"}
@@ -1,10 +1,12 @@
1
1
  import { assertTemplateManifestReady, validateTemplateManifest, } from '../../authoring/compose-category-manifest';
2
+ import { createStarterTemplateArtifact } from './starter.assets';
2
3
  import { listStarterTemplateSummaries, listStarterTemplates, listStarterTemplatesByCategory, resolveStarterTemplate, } from './starter.registry';
3
- import { TEMPLATE_KINDS } from './starter.types';
4
+ import { TEMPLATE_KINDS, } from './starter.types';
4
5
  export { TEMPLATE_KINDS };
5
6
  export { listStarterTemplateSummaries, listStarterTemplates, listStarterTemplatesByCategory, resolveStarterTemplate, };
6
7
  export function createStarterTemplate(seed, options = {}) {
7
8
  const template = resolveStarterTemplate(seed, options.templateId);
8
- return assertTemplateManifestReady(validateTemplateManifest(template.create(seed, options)));
9
+ const manifest = assertTemplateManifestReady(validateTemplateManifest(template.create(seed, options)));
10
+ return createStarterTemplateArtifact(manifest, template.assets);
9
11
  }
10
12
  //# sourceMappingURL=starter.template.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"starter.template.js","sourceRoot":"","sources":["../../../src/templates/starter/starter.template.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,EACpB,8BAA8B,EAC9B,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAkD,MAAM,iBAAiB,CAAC;AAEjG,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,EACpB,8BAA8B,EAC9B,sBAAsB,GACvB,CAAC;AAYF,MAAM,UAAU,qBAAqB,CACnC,IAAkB,EAClB,UAAkC,EAAE;IAEpC,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAClE,OAAO,2BAA2B,CAAC,wBAAwB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/F,CAAC"}
1
+ {"version":3,"file":"starter.template.js","sourceRoot":"","sources":["../../../src/templates/starter/starter.template.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AAEjE,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,EACpB,8BAA8B,EAC9B,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,cAAc,GAIf,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,EACpB,8BAA8B,EAC9B,sBAAsB,GACvB,CAAC;AAaF,MAAM,UAAU,qBAAqB,CACnC,IAAkB,EAClB,UAAkC,EAAE;IAEpC,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,2BAA2B,CAC1C,wBAAwB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CACzD,CAAC;IACF,OAAO,6BAA6B,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;AAClE,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { AppCategory, AppManifest, ThemeConfig } from '@ankhorage/contracts';
2
+ import type { StarterTemplateArtifact, StarterTemplateAsset } from './starter.assets';
2
3
  export declare const TEMPLATE_KINDS: readonly ["starter"];
3
4
  export type TemplateKind = (typeof TEMPLATE_KINDS)[number];
4
5
  export type StarterTemplateId = string;
@@ -35,5 +36,7 @@ export interface CategoryStarterTemplateDefinition {
35
36
  label: string;
36
37
  description: string;
37
38
  create: StarterTemplateFactory;
39
+ assets?: readonly StarterTemplateAsset[];
38
40
  }
41
+ export type StarterTemplateResult = StarterTemplateArtifact;
39
42
  //# sourceMappingURL=starter.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"starter.types.d.ts","sourceRoot":"","sources":["../../../src/templates/starter/starter.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAElF,eAAO,MAAM,cAAc,sBAAuB,CAAC;AAEnD,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEvC,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,iBAAiB,CAAC;IACtB,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,WAAW,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC;IACzC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAED,MAAM,MAAM,sBAAsB,GAAG,CACnC,IAAI,EAAE,YAAY,EAClB,OAAO,CAAC,EAAE,sBAAsB,KAC7B,WAAW,CAAC;AAEjB,MAAM,WAAW,iCAAiC;IAChD,EAAE,EAAE,iBAAiB,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,sBAAsB,CAAC;CAChC"}
1
+ {"version":3,"file":"starter.types.d.ts","sourceRoot":"","sources":["../../../src/templates/starter/starter.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAElF,OAAO,KAAK,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAEtF,eAAO,MAAM,cAAc,sBAAuB,CAAC;AAEnD,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEvC,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,iBAAiB,CAAC;IACtB,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,WAAW,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC;IACzC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAED,MAAM,MAAM,sBAAsB,GAAG,CACnC,IAAI,EAAE,YAAY,EAClB,OAAO,CAAC,EAAE,sBAAsB,KAC7B,WAAW,CAAC;AAEjB,MAAM,WAAW,iCAAiC;IAChD,EAAE,EAAE,iBAAiB,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,sBAAsB,CAAC;IAC/B,MAAM,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;CAC1C;AAED,MAAM,MAAM,qBAAqB,GAAG,uBAAuB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"starter.types.js","sourceRoot":"","sources":["../../../src/templates/starter/starter.types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,SAAS,CAAU,CAAC"}
1
+ {"version":3,"file":"starter.types.js","sourceRoot":"","sources":["../../../src/templates/starter/starter.types.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,SAAS,CAAU,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ankhorage/templates",
3
- "version": "8.0.0",
3
+ "version": "9.0.0",
4
4
  "description": "Reusable Ankhorage app templates, presets, and manifest generators.",
5
5
  "homepage": "https://github.com/ankhorage/templates#readme",
6
6
  "bugs": {
@@ -30,6 +30,7 @@
30
30
  "sideEffects": false,
31
31
  "files": [
32
32
  "dist",
33
+ "assets",
33
34
  "CHANGELOG.md"
34
35
  ],
35
36
  "exports": {
@@ -80,7 +81,7 @@
80
81
  },
81
82
  "devDependencies": {
82
83
  "@ankhorage/ankh": "^0.8.8",
83
- "@ankhorage/devtools": "^1.9.4",
84
+ "@ankhorage/devtools": "^1.10.2",
84
85
  "@ankhorage/doctor": "^0.10.6",
85
86
  "@ankhorage/paradox": "^0.1.24",
86
87
  "@types/bun": "^1.4.0",