create-specfuse 0.4.0 → 0.4.1

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 (66) hide show
  1. package/dist/index.js +0 -0
  2. package/package.json +2 -2
  3. package/dist/design-md/__tests__/archetype-schema.test.d.ts +0 -2
  4. package/dist/design-md/__tests__/archetype-schema.test.d.ts.map +0 -1
  5. package/dist/design-md/__tests__/archetype-schema.test.js +0 -60
  6. package/dist/design-md/__tests__/archetype-schema.test.js.map +0 -1
  7. package/dist/design-md/__tests__/archetypes.test.d.ts +0 -2
  8. package/dist/design-md/__tests__/archetypes.test.d.ts.map +0 -1
  9. package/dist/design-md/__tests__/archetypes.test.js +0 -45
  10. package/dist/design-md/__tests__/archetypes.test.js.map +0 -1
  11. package/dist/design-md/__tests__/fine-tuner.test.d.ts +0 -2
  12. package/dist/design-md/__tests__/fine-tuner.test.d.ts.map +0 -1
  13. package/dist/design-md/__tests__/fine-tuner.test.js +0 -38
  14. package/dist/design-md/__tests__/fine-tuner.test.js.map +0 -1
  15. package/dist/design-md/__tests__/index.test.d.ts +0 -2
  16. package/dist/design-md/__tests__/index.test.d.ts.map +0 -1
  17. package/dist/design-md/__tests__/index.test.js +0 -66
  18. package/dist/design-md/__tests__/index.test.js.map +0 -1
  19. package/dist/design-md/__tests__/matcher.test.d.ts +0 -2
  20. package/dist/design-md/__tests__/matcher.test.d.ts.map +0 -1
  21. package/dist/design-md/__tests__/matcher.test.js +0 -74
  22. package/dist/design-md/__tests__/matcher.test.js.map +0 -1
  23. package/dist/design-md/__tests__/questionnaire.test.d.ts +0 -2
  24. package/dist/design-md/__tests__/questionnaire.test.d.ts.map +0 -1
  25. package/dist/design-md/__tests__/questionnaire.test.js +0 -57
  26. package/dist/design-md/__tests__/questionnaire.test.js.map +0 -1
  27. package/dist/design-md/__tests__/renderer.test.d.ts +0 -2
  28. package/dist/design-md/__tests__/renderer.test.d.ts.map +0 -1
  29. package/dist/design-md/__tests__/renderer.test.js +0 -51
  30. package/dist/design-md/__tests__/renderer.test.js.map +0 -1
  31. package/dist/design-md/__tests__/types.test.d.ts +0 -2
  32. package/dist/design-md/__tests__/types.test.d.ts.map +0 -1
  33. package/dist/design-md/__tests__/types.test.js +0 -63
  34. package/dist/design-md/__tests__/types.test.js.map +0 -1
  35. package/dist/design-md/archetypes.d.ts +0 -3
  36. package/dist/design-md/archetypes.d.ts.map +0 -1
  37. package/dist/design-md/archetypes.js +0 -18
  38. package/dist/design-md/archetypes.js.map +0 -1
  39. package/dist/design-md/fine-tuner.d.ts +0 -4
  40. package/dist/design-md/fine-tuner.d.ts.map +0 -1
  41. package/dist/design-md/fine-tuner.js +0 -13
  42. package/dist/design-md/fine-tuner.js.map +0 -1
  43. package/dist/design-md/index.d.ts +0 -2
  44. package/dist/design-md/index.d.ts.map +0 -1
  45. package/dist/design-md/index.js +0 -49
  46. package/dist/design-md/index.js.map +0 -1
  47. package/dist/design-md/matcher.d.ts +0 -8
  48. package/dist/design-md/matcher.d.ts.map +0 -1
  49. package/dist/design-md/matcher.js +0 -116
  50. package/dist/design-md/matcher.js.map +0 -1
  51. package/dist/design-md/questionnaire.d.ts +0 -15
  52. package/dist/design-md/questionnaire.d.ts.map +0 -1
  53. package/dist/design-md/questionnaire.js +0 -96
  54. package/dist/design-md/questionnaire.js.map +0 -1
  55. package/dist/design-md/renderer.d.ts +0 -3
  56. package/dist/design-md/renderer.d.ts.map +0 -1
  57. package/dist/design-md/renderer.js +0 -43
  58. package/dist/design-md/renderer.js.map +0 -1
  59. package/dist/design-md/schema.d.ts +0 -69
  60. package/dist/design-md/schema.d.ts.map +0 -1
  61. package/dist/design-md/schema.js +0 -30
  62. package/dist/design-md/schema.js.map +0 -1
  63. package/dist/design-md/types.d.ts +0 -33
  64. package/dist/design-md/types.d.ts.map +0 -1
  65. package/dist/design-md/types.js +0 -2
  66. package/dist/design-md/types.js.map +0 -1
package/dist/index.js CHANGED
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-specfuse",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "Scaffold projects with OpenSpec + Superpowers fusion methodology",
5
5
  "type": "module",
6
6
  "bin": {
@@ -15,7 +15,7 @@
15
15
  "node": ">=18.0.0"
16
16
  },
17
17
  "scripts": {
18
- "build": "tsc && rm -rf dist/design-md/templates && cp -r src/design-md/templates dist/design-md/templates",
18
+ "build": "rm -rf dist && tsc && mkdir -p dist/design-md && cp -r src/design-md/templates dist/design-md/templates",
19
19
  "test": "vitest run",
20
20
  "dev": "tsc --watch"
21
21
  },
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=archetype-schema.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"archetype-schema.test.d.ts","sourceRoot":"","sources":["../../../src/design-md/__tests__/archetype-schema.test.ts"],"names":[],"mappings":""}
@@ -1,60 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { readFileSync, readdirSync } from 'node:fs';
3
- import { join } from 'node:path';
4
- import { parse as parseYaml } from 'yaml';
5
- import { ArchetypeSchema } from '../schema.js';
6
- const TEMPLATES_DIR = join(import.meta.dirname, '..', 'templates');
7
- function loadArchetypeFiles() {
8
- const files = readdirSync(TEMPLATES_DIR).filter((f) => f.endsWith('.yaml') && !f.startsWith('_'));
9
- return files.map((f) => ({
10
- name: f,
11
- content: parseYaml(readFileSync(join(TEMPLATES_DIR, f), 'utf-8')),
12
- }));
13
- }
14
- describe('archetype schema validation', () => {
15
- it('_schema.yaml exists and is valid YAML', () => {
16
- const raw = readFileSync(join(TEMPLATES_DIR, '_schema.yaml'), 'utf-8');
17
- const schema = parseYaml(raw);
18
- expect(schema).toHaveProperty('type', 'object');
19
- expect(schema).toHaveProperty('required');
20
- });
21
- it('all archetype YAML files pass schema validation', () => {
22
- const archetypes = loadArchetypeFiles();
23
- for (const { name, content } of archetypes) {
24
- const result = ArchetypeSchema.safeParse(content);
25
- if (!result.success) {
26
- throw new Error(`${name} failed validation: ${result.error.issues.map((i) => `${i.path.join('.')}: ${i.message}`).join(', ')}`);
27
- }
28
- }
29
- });
30
- it('rejects archetype with missing required field', () => {
31
- const invalid = { id: 'test', name: 'Test' };
32
- const result = ArchetypeSchema.safeParse(invalid);
33
- expect(result.success).toBe(false);
34
- });
35
- it('rejects dimension value out of range', () => {
36
- const invalid = {
37
- id: 'test',
38
- name: 'Test',
39
- category: 'dashboard',
40
- dimensions: { colorTemp: 6, lightness: 1, density: 1, borderRadius: 1, tone: 1 },
41
- anchors: { primary: 'X', auxiliary: ['Y'] },
42
- template: 'x',
43
- };
44
- const result = ArchetypeSchema.safeParse(invalid);
45
- expect(result.success).toBe(false);
46
- });
47
- it('rejects invalid category', () => {
48
- const invalid = {
49
- id: 'test',
50
- name: 'Test',
51
- category: 'unknown-category',
52
- dimensions: { colorTemp: 1, lightness: 1, density: 1, borderRadius: 1, tone: 1 },
53
- anchors: { primary: 'X', auxiliary: ['Y'] },
54
- template: 'x',
55
- };
56
- const result = ArchetypeSchema.safeParse(invalid);
57
- expect(result.success).toBe(false);
58
- });
59
- });
60
- //# sourceMappingURL=archetype-schema.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"archetype-schema.test.js","sourceRoot":"","sources":["../../../src/design-md/__tests__/archetype-schema.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;AAEnE,SAAS,kBAAkB;IACzB,MAAM,KAAK,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC,MAAM,CAC7C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CACjD,CAAC;IACF,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvB,IAAI,EAAE,CAAC;QACP,OAAO,EAAE,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;KAClE,CAAC,CAAC,CAAC;AACN,CAAC;AAED,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC;QACvE,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,UAAU,GAAG,kBAAkB,EAAE,CAAC;QACxC,KAAK,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,UAAU,EAAE,CAAC;YAC3C,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAClD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,uBAAuB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC/G,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,OAAO,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,OAAO,GAAG;YACd,EAAE,EAAE,MAAM;YACV,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,WAAW;YACrB,UAAU,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;YAChF,OAAO,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE;YAC3C,QAAQ,EAAE,GAAG;SACd,CAAC;QACF,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,OAAO,GAAG;YACd,EAAE,EAAE,MAAM;YACV,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,kBAAkB;YAC5B,UAAU,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;YAChF,OAAO,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE;YAC3C,QAAQ,EAAE,GAAG;SACd,CAAC;QACF,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=archetypes.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"archetypes.test.d.ts","sourceRoot":"","sources":["../../../src/design-md/__tests__/archetypes.test.ts"],"names":[],"mappings":""}
@@ -1,45 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { loadArchetypes } from '../archetypes.js';
3
- describe('loadArchetypes()', () => {
4
- it('returns exactly 15 archetypes', () => {
5
- const archetypes = loadArchetypes();
6
- expect(archetypes).toHaveLength(15);
7
- });
8
- it('each archetype has valid structure', () => {
9
- const archetypes = loadArchetypes();
10
- for (const a of archetypes) {
11
- expect(a.id).toMatch(/^[a-z][a-z0-9-]*$/);
12
- expect(a.name).toBeTruthy();
13
- expect(a.dimensions.colorTemp).toBeGreaterThanOrEqual(1);
14
- expect(a.dimensions.colorTemp).toBeLessThanOrEqual(5);
15
- expect(a.anchors.primary).toBeTruthy();
16
- expect(a.anchors.auxiliary.length).toBeGreaterThanOrEqual(1);
17
- expect(a.anchors.auxiliary.length).toBeLessThanOrEqual(2);
18
- expect(a.template).toBeTruthy();
19
- }
20
- });
21
- it('covers all 9 categories', () => {
22
- const archetypes = loadArchetypes();
23
- const categories = new Set(archetypes.map((a) => a.category));
24
- expect(categories).toContain('internal-tool');
25
- expect(categories).toContain('dashboard');
26
- expect(categories).toContain('consumer');
27
- expect(categories).toContain('developer');
28
- expect(categories).toContain('mobile');
29
- expect(categories).toContain('e-commerce');
30
- expect(categories).toContain('marketing');
31
- expect(categories).toContain('form-heavy');
32
- expect(categories).toContain('content');
33
- });
34
- it('all archetype ids are unique', () => {
35
- const archetypes = loadArchetypes();
36
- const ids = archetypes.map((a) => a.id);
37
- expect(new Set(ids).size).toBe(ids.length);
38
- });
39
- it('returns typed Archetype objects', () => {
40
- const archetypes = loadArchetypes();
41
- const first = archetypes[0];
42
- expect(first).toBeDefined();
43
- });
44
- });
45
- //# sourceMappingURL=archetypes.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"archetypes.test.js","sourceRoot":"","sources":["../../../src/design-md/__tests__/archetypes.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=fine-tuner.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fine-tuner.test.d.ts","sourceRoot":"","sources":["../../../src/design-md/__tests__/fine-tuner.test.ts"],"names":[],"mappings":""}
@@ -1,38 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { applyOverrides } from '../fine-tuner.js';
3
- const baseVector = {
4
- colorTemp: 2,
5
- lightness: 3,
6
- density: 2,
7
- borderRadius: 3,
8
- tone: 2,
9
- };
10
- describe('applyOverrides()', () => {
11
- it('returns original vector when no overrides', () => {
12
- const result = applyOverrides(baseVector, {});
13
- expect(result).toEqual(baseVector);
14
- });
15
- it('applies single dimension override', () => {
16
- const result = applyOverrides(baseVector, { borderRadius: 1 });
17
- expect(result).toEqual({ ...baseVector, borderRadius: 1 });
18
- });
19
- it('applies multiple dimension overrides', () => {
20
- const result = applyOverrides(baseVector, { colorTemp: 5, tone: 4 });
21
- expect(result).toEqual({ ...baseVector, colorTemp: 5, tone: 4 });
22
- });
23
- it('rejects values below 1', () => {
24
- expect(() => applyOverrides(baseVector, { colorTemp: 0 })).toThrow();
25
- });
26
- it('rejects values above 5', () => {
27
- expect(() => applyOverrides(baseVector, { density: 6 })).toThrow();
28
- });
29
- it('rejects non-integer values', () => {
30
- expect(() => applyOverrides(baseVector, { tone: 2.5 })).toThrow();
31
- });
32
- it('does not mutate the original vector', () => {
33
- const original = { ...baseVector };
34
- applyOverrides(baseVector, { colorTemp: 5 });
35
- expect(baseVector).toEqual(original);
36
- });
37
- });
38
- //# sourceMappingURL=fine-tuner.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fine-tuner.test.js","sourceRoot":"","sources":["../../../src/design-md/__tests__/fine-tuner.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,MAAM,UAAU,GAAoB;IAClC,SAAS,EAAE,CAAC;IACZ,SAAS,EAAE,CAAC;IACZ,OAAO,EAAE,CAAC;IACV,YAAY,EAAE,CAAC;IACf,IAAI,EAAE,CAAC;CACR,CAAC;AAEF,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,UAAU,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACrE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,UAAU,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,CAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,CAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,GAAU,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,QAAQ,GAAG,EAAE,GAAG,UAAU,EAAE,CAAC;QACnC,cAAc,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7C,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=index.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../../src/design-md/__tests__/index.test.ts"],"names":[],"mappings":""}
@@ -1,66 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
2
- import { mkdtempSync, readFileSync, writeFileSync, existsSync, rmSync } from 'node:fs';
3
- import { join } from 'node:path';
4
- import { tmpdir } from 'node:os';
5
- vi.mock('@inquirer/prompts', () => ({
6
- checkbox: vi.fn(),
7
- select: vi.fn(),
8
- input: vi.fn(),
9
- confirm: vi.fn(),
10
- number: vi.fn(),
11
- }));
12
- describe('generateDesignMd()', () => {
13
- let tempDir;
14
- beforeEach(() => {
15
- tempDir = mkdtempSync(join(tmpdir(), 'design-md-test-'));
16
- });
17
- afterEach(() => {
18
- rmSync(tempDir, { recursive: true, force: true });
19
- vi.resetAllMocks();
20
- vi.resetModules();
21
- });
22
- it('writes DESIGN.md to target directory', async () => {
23
- const { checkbox, select, input, confirm } = await import('@inquirer/prompts');
24
- checkbox.mockResolvedValue(['dashboard', 'internal-tool']);
25
- select.mockResolvedValueOnce('developers'); // audience
26
- select.mockResolvedValueOnce('dark'); // mood
27
- select.mockResolvedValueOnce('compact'); // density
28
- input.mockResolvedValue(''); // reference
29
- confirm.mockResolvedValue(true); // confirm match
30
- select.mockResolvedValueOnce('accept'); // fine-tune action
31
- const { generateDesignMd } = await import('../index.js');
32
- const result = await generateDesignMd(tempDir);
33
- expect(result).toBe(join(tempDir, 'DESIGN.md'));
34
- expect(existsSync(join(tempDir, 'DESIGN.md'))).toBe(true);
35
- const content = readFileSync(join(tempDir, 'DESIGN.md'), 'utf-8');
36
- expect(content).toContain('---');
37
- expect(content).toContain('tokens');
38
- });
39
- it('returns null when user declines overwrite', async () => {
40
- writeFileSync(join(tempDir, 'DESIGN.md'), 'existing content');
41
- const { checkbox, select, input, confirm } = await import('@inquirer/prompts');
42
- confirm.mockResolvedValue(false); // decline overwrite
43
- const { generateDesignMd } = await import('../index.js');
44
- const result = await generateDesignMd(tempDir);
45
- expect(result).toBeNull();
46
- expect(readFileSync(join(tempDir, 'DESIGN.md'), 'utf-8')).toBe('existing content');
47
- });
48
- it('creates backup when overwriting existing DESIGN.md', async () => {
49
- writeFileSync(join(tempDir, 'DESIGN.md'), 'old content');
50
- const { checkbox, select, input, confirm } = await import('@inquirer/prompts');
51
- confirm.mockResolvedValueOnce(true); // confirm overwrite
52
- checkbox.mockResolvedValue(['consumer']);
53
- select.mockResolvedValueOnce('general'); // audience
54
- select.mockResolvedValueOnce('playful'); // mood
55
- select.mockResolvedValueOnce('spacious'); // density
56
- input.mockResolvedValue(''); // reference
57
- confirm.mockResolvedValueOnce(true); // confirm match
58
- select.mockResolvedValueOnce('accept'); // fine-tune action
59
- const { generateDesignMd } = await import('../index.js');
60
- const result = await generateDesignMd(tempDir);
61
- expect(result).toBe(join(tempDir, 'DESIGN.md'));
62
- expect(existsSync(join(tempDir, 'DESIGN.md.bak'))).toBe(true);
63
- expect(readFileSync(join(tempDir, 'DESIGN.md.bak'), 'utf-8')).toBe('old content');
64
- });
65
- });
66
- //# sourceMappingURL=index.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../src/design-md/__tests__/index.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=matcher.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"matcher.test.d.ts","sourceRoot":"","sources":["../../../src/design-md/__tests__/matcher.test.ts"],"names":[],"mappings":""}
@@ -1,74 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { deriveVector, matchArchetype } from '../matcher.js';
3
- const sampleAnswers = {
4
- productType: ['dashboard', 'internal-tool'],
5
- audience: 'developers',
6
- mood: 'dark',
7
- density: 'compact',
8
- reference: null,
9
- };
10
- describe('deriveVector()', () => {
11
- it('returns a valid DimensionVector with values 1-5', () => {
12
- const vec = deriveVector(sampleAnswers);
13
- for (const key of ['colorTemp', 'lightness', 'density', 'borderRadius', 'tone']) {
14
- expect(vec[key]).toBeGreaterThanOrEqual(1);
15
- expect(vec[key]).toBeLessThanOrEqual(5);
16
- expect(Number.isInteger(vec[key])).toBe(true);
17
- }
18
- });
19
- it('same input produces same output (deterministic)', () => {
20
- const a = deriveVector(sampleAnswers);
21
- const b = deriveVector(sampleAnswers);
22
- expect(a).toEqual(b);
23
- });
24
- it('different inputs produce different vectors', () => {
25
- const other = {
26
- productType: ['marketing'],
27
- audience: 'general',
28
- mood: 'playful',
29
- density: 'spacious',
30
- reference: null,
31
- };
32
- const a = deriveVector(sampleAnswers);
33
- const b = deriveVector(other);
34
- expect(a).not.toEqual(b);
35
- });
36
- });
37
- describe('matchArchetype()', () => {
38
- it('returns all 15 archetypes ranked', () => {
39
- const results = matchArchetype(sampleAnswers);
40
- expect(results).toHaveLength(15);
41
- });
42
- it('results are sorted by ascending distance (best first)', () => {
43
- const results = matchArchetype(sampleAnswers);
44
- for (let i = 1; i < results.length; i++) {
45
- expect(results[i].distance).toBeGreaterThanOrEqual(results[i - 1].distance);
46
- }
47
- });
48
- it('category bonus applied to matching categories', () => {
49
- const dashboardAnswers = {
50
- productType: ['dashboard'],
51
- audience: 'business',
52
- mood: 'serious',
53
- density: 'compact',
54
- reference: null,
55
- };
56
- const results = matchArchetype(dashboardAnswers);
57
- const dashboardResults = results.filter((r) => r.archetype.category === 'dashboard');
58
- expect(dashboardResults.length).toBeGreaterThan(0);
59
- // dashboard archetypes should rank highly for dashboard-focused answers
60
- const topIds = results.slice(0, 5).map((r) => r.archetype.id);
61
- const hasDashboard = topIds.some((id) => id.includes('dashboard') || id.includes('monitoring') || id.includes('analytics'));
62
- expect(hasDashboard).toBe(true);
63
- });
64
- it('each result has archetype and distance', () => {
65
- const results = matchArchetype(sampleAnswers);
66
- for (const r of results) {
67
- expect(r.archetype).toBeDefined();
68
- expect(r.archetype.id).toBeTruthy();
69
- expect(typeof r.distance).toBe('number');
70
- expect(r.distance).toBeGreaterThanOrEqual(0);
71
- }
72
- });
73
- });
74
- //# sourceMappingURL=matcher.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"matcher.test.js","sourceRoot":"","sources":["../../../src/design-md/__tests__/matcher.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=questionnaire.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"questionnaire.test.d.ts","sourceRoot":"","sources":["../../../src/design-md/__tests__/questionnaire.test.ts"],"names":[],"mappings":""}
@@ -1,57 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { QUESTIONS, } from '../questionnaire.js';
3
- describe('questionnaire definitions', () => {
4
- it('exports exactly 5 questions (Q1-Q5)', () => {
5
- expect(QUESTIONS).toHaveLength(5);
6
- });
7
- it('Q1 is multi-select product type', () => {
8
- const q1 = QUESTIONS[0];
9
- expect(q1.id).toBe('productType');
10
- expect(q1.type).toBe('checkbox');
11
- expect(q1.choices.length).toBeGreaterThanOrEqual(9);
12
- });
13
- it('Q2 is single-select audience', () => {
14
- const q2 = QUESTIONS[1];
15
- expect(q2.id).toBe('audience');
16
- expect(q2.type).toBe('select');
17
- expect(q2.choices.length).toBeGreaterThanOrEqual(3);
18
- });
19
- it('Q3 is multi-select mood keywords', () => {
20
- const q3 = QUESTIONS[2];
21
- expect(q3.id).toBe('mood');
22
- expect(q3.type).toBe('checkbox');
23
- expect(q3.choices.length).toBeGreaterThanOrEqual(4);
24
- });
25
- it('Q4 is single-select density preference', () => {
26
- const q4 = QUESTIONS[3];
27
- expect(q4.id).toBe('density');
28
- expect(q4.type).toBe('select');
29
- expect(q4.choices.length).toBeGreaterThanOrEqual(3);
30
- });
31
- it('Q5 is optional text input for reference product', () => {
32
- const q5 = QUESTIONS[4];
33
- expect(q5.id).toBe('reference');
34
- expect(q5.type).toBe('input');
35
- expect(q5.required).toBe(false);
36
- });
37
- it('all questions have message and id', () => {
38
- for (const q of QUESTIONS) {
39
- expect(q.id).toBeTruthy();
40
- expect(q.message).toBeTruthy();
41
- }
42
- });
43
- it('Q1 choices cover all archetype categories', () => {
44
- const q1 = QUESTIONS[0];
45
- const values = q1.choices.map((c) => c.value);
46
- expect(values).toContain('internal-tool');
47
- expect(values).toContain('dashboard');
48
- expect(values).toContain('consumer');
49
- expect(values).toContain('developer');
50
- expect(values).toContain('mobile');
51
- expect(values).toContain('e-commerce');
52
- expect(values).toContain('marketing');
53
- expect(values).toContain('form-heavy');
54
- expect(values).toContain('content');
55
- });
56
- });
57
- //# sourceMappingURL=questionnaire.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"questionnaire.test.js","sourceRoot":"","sources":["../../../src/design-md/__tests__/questionnaire.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=renderer.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"renderer.test.d.ts","sourceRoot":"","sources":["../../../src/design-md/__tests__/renderer.test.ts"],"names":[],"mappings":""}
@@ -1,51 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { renderDesignMd } from '../renderer.js';
3
- import { loadArchetypes } from '../archetypes.js';
4
- import { parse as parseYaml } from 'yaml';
5
- const archetypes = loadArchetypes();
6
- const testArchetype = archetypes[0];
7
- const testVector = { colorTemp: 2, lightness: 3, density: 2, borderRadius: 3, tone: 2 };
8
- describe('renderDesignMd()', () => {
9
- it('output starts and ends YAML front matter with --- delimiters', () => {
10
- const output = renderDesignMd(testArchetype, testVector);
11
- const lines = output.split('\n');
12
- expect(lines[0]).toBe('---');
13
- const secondDelimiter = lines.indexOf('---', 1);
14
- expect(secondDelimiter).toBeGreaterThan(1);
15
- });
16
- it('YAML front matter contains tokens key', () => {
17
- const output = renderDesignMd(testArchetype, testVector);
18
- const yamlBlock = output.split('---')[1];
19
- const parsed = parseYaml(yamlBlock);
20
- expect(parsed).toHaveProperty('tokens');
21
- });
22
- it('YAML front matter contains archetype metadata', () => {
23
- const output = renderDesignMd(testArchetype, testVector);
24
- const yamlBlock = output.split('---')[1];
25
- const parsed = parseYaml(yamlBlock);
26
- expect(parsed).toHaveProperty('archetype');
27
- expect(parsed.archetype).toBe(testArchetype.id);
28
- });
29
- it('YAML front matter contains dimensions', () => {
30
- const output = renderDesignMd(testArchetype, testVector);
31
- const yamlBlock = output.split('---')[1];
32
- const parsed = parseYaml(yamlBlock);
33
- expect(parsed).toHaveProperty('dimensions');
34
- expect(parsed.dimensions).toEqual(testVector);
35
- });
36
- it('markdown body contains required sections', () => {
37
- const output = renderDesignMd(testArchetype, testVector);
38
- const parts = output.split('---');
39
- const markdown = parts.slice(2).join('---');
40
- expect(markdown).toContain('# Style Direction');
41
- expect(markdown).toContain('## Color Palette');
42
- expect(markdown).toContain('## Typography');
43
- expect(markdown).toContain('## Spacing');
44
- expect(markdown).toContain('## Components');
45
- });
46
- it('output is valid non-empty string', () => {
47
- const output = renderDesignMd(testArchetype, testVector);
48
- expect(output.length).toBeGreaterThan(100);
49
- });
50
- });
51
- //# sourceMappingURL=renderer.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"renderer.test.js","sourceRoot":"","sources":["../../../src/design-md/__tests__/renderer.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.test.d.ts","sourceRoot":"","sources":["../../../src/design-md/__tests__/types.test.ts"],"names":[],"mappings":""}
@@ -1,63 +0,0 @@
1
- import { describe, it, expectTypeOf } from 'vitest';
2
- describe('DimensionVector type constraints', () => {
3
- it('accepts valid dimension values (1-5)', () => {
4
- const v = {
5
- colorTemp: 1,
6
- lightness: 2,
7
- density: 3,
8
- borderRadius: 4,
9
- tone: 5,
10
- };
11
- expectTypeOf(v.colorTemp).toEqualTypeOf();
12
- expectTypeOf(v.lightness).toEqualTypeOf();
13
- expectTypeOf(v.density).toEqualTypeOf();
14
- expectTypeOf(v.borderRadius).toEqualTypeOf();
15
- expectTypeOf(v.tone).toEqualTypeOf();
16
- });
17
- it('has exactly 5 dimension keys', () => {
18
- expectTypeOf().toEqualTypeOf();
19
- });
20
- });
21
- describe('ArchetypeCategory type constraints', () => {
22
- it('is an exhaustive union of 9 categories', () => {
23
- expectTypeOf().toEqualTypeOf();
24
- });
25
- });
26
- describe('Archetype type structure', () => {
27
- it('has required fields with correct types', () => {
28
- expectTypeOf().toHaveProperty('id');
29
- expectTypeOf().toHaveProperty('name');
30
- expectTypeOf().toHaveProperty('category');
31
- expectTypeOf().toHaveProperty('dimensions');
32
- expectTypeOf().toHaveProperty('anchors');
33
- expectTypeOf().toHaveProperty('template');
34
- expectTypeOf().toBeString();
35
- expectTypeOf().toBeString();
36
- expectTypeOf().toEqualTypeOf();
37
- expectTypeOf().toEqualTypeOf();
38
- expectTypeOf().toBeString();
39
- });
40
- it('anchors has primary and auxiliary fields', () => {
41
- expectTypeOf().toEqualTypeOf();
42
- });
43
- });
44
- describe('QuestionnaireAnswers type structure', () => {
45
- it('has correct field types', () => {
46
- expectTypeOf().toEqualTypeOf();
47
- expectTypeOf().toBeString();
48
- expectTypeOf().toBeString();
49
- expectTypeOf().toBeString();
50
- expectTypeOf().toEqualTypeOf();
51
- });
52
- });
53
- describe('DesignMdConfig type structure', () => {
54
- it('has archetype and vector fields', () => {
55
- expectTypeOf().toHaveProperty('archetype');
56
- expectTypeOf().toHaveProperty('finalVector');
57
- expectTypeOf().toHaveProperty('answers');
58
- expectTypeOf().toEqualTypeOf();
59
- expectTypeOf().toEqualTypeOf();
60
- expectTypeOf().toEqualTypeOf();
61
- });
62
- });
63
- //# sourceMappingURL=types.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.test.js","sourceRoot":"","sources":["../../../src/design-md/__tests__/types.test.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { Archetype } from './types.js';
2
- export declare function loadArchetypes(): Archetype[];
3
- //# sourceMappingURL=archetypes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"archetypes.d.ts","sourceRoot":"","sources":["../../src/design-md/archetypes.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAI5C,wBAAgB,cAAc,IAAI,SAAS,EAAE,CAgB5C"}