codingbuddy 2.1.0 → 2.2.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 (157) hide show
  1. package/README.md +62 -0
  2. package/dist/src/agent/agent-prompt.builder.js +6 -0
  3. package/dist/src/agent/agent-prompt.builder.js.map +1 -1
  4. package/dist/src/analyzer/analyzer.module.js +3 -2
  5. package/dist/src/analyzer/analyzer.module.js.map +1 -1
  6. package/dist/src/analyzer/config.analyzer.js +11 -3
  7. package/dist/src/analyzer/config.analyzer.js.map +1 -1
  8. package/dist/src/analyzer/conventions.analyzer.d.ts +20 -0
  9. package/dist/src/analyzer/conventions.analyzer.js +395 -0
  10. package/dist/src/analyzer/conventions.analyzer.js.map +1 -0
  11. package/dist/src/analyzer/conventions.schemas.d.ts +76 -0
  12. package/dist/src/analyzer/conventions.schemas.js +71 -0
  13. package/dist/src/analyzer/conventions.schemas.js.map +1 -0
  14. package/dist/src/analyzer/conventions.types.d.ts +81 -0
  15. package/dist/src/analyzer/conventions.types.js +33 -0
  16. package/dist/src/analyzer/conventions.types.js.map +1 -0
  17. package/dist/src/checklist/checklist.types.d.ts +1 -1
  18. package/dist/src/checklist/checklist.types.js +1 -0
  19. package/dist/src/checklist/checklist.types.js.map +1 -1
  20. package/dist/src/cli/cli.js +5 -0
  21. package/dist/src/cli/cli.js.map +1 -1
  22. package/dist/src/cli/cli.types.d.ts +1 -0
  23. package/dist/src/cli/init/init.command.js +29 -52
  24. package/dist/src/cli/init/init.command.js.map +1 -1
  25. package/dist/src/cli/init/init.wizard.d.ts +22 -0
  26. package/dist/src/cli/init/init.wizard.js +277 -0
  27. package/dist/src/cli/init/init.wizard.js.map +1 -0
  28. package/dist/src/cli/init/prompts/architecture-prompt.d.ts +16 -0
  29. package/dist/src/cli/init/prompts/architecture-prompt.js +66 -0
  30. package/dist/src/cli/init/prompts/architecture-prompt.js.map +1 -0
  31. package/dist/src/cli/init/prompts/basic-prompt.d.ts +13 -0
  32. package/dist/src/cli/init/prompts/basic-prompt.js +53 -0
  33. package/dist/src/cli/init/prompts/basic-prompt.js.map +1 -0
  34. package/dist/src/cli/init/prompts/conventions-prompt.d.ts +19 -0
  35. package/dist/src/cli/init/prompts/conventions-prompt.js +74 -0
  36. package/dist/src/cli/init/prompts/conventions-prompt.js.map +1 -0
  37. package/dist/src/cli/init/prompts/index.d.ts +10 -0
  38. package/dist/src/cli/init/prompts/index.js +27 -1
  39. package/dist/src/cli/init/prompts/index.js.map +1 -1
  40. package/dist/src/cli/init/prompts/language-prompt.d.ts +1 -1
  41. package/dist/src/cli/init/prompts/model-prompt.js +2 -2
  42. package/dist/src/cli/init/prompts/model-prompt.js.map +1 -1
  43. package/dist/src/cli/init/prompts/tech-stack-prompt.d.ts +22 -0
  44. package/dist/src/cli/init/prompts/tech-stack-prompt.js +68 -0
  45. package/dist/src/cli/init/prompts/tech-stack-prompt.js.map +1 -0
  46. package/dist/src/cli/init/prompts/test-strategy-prompt.d.ts +19 -0
  47. package/dist/src/cli/init/prompts/test-strategy-prompt.js +75 -0
  48. package/dist/src/cli/init/prompts/test-strategy-prompt.js.map +1 -0
  49. package/dist/src/cli/init/summary/index.d.ts +2 -0
  50. package/dist/src/cli/init/summary/index.js +9 -0
  51. package/dist/src/cli/init/summary/index.js.map +1 -0
  52. package/dist/src/cli/init/summary/summary.prompt.d.ts +7 -0
  53. package/dist/src/cli/init/summary/summary.prompt.js +22 -0
  54. package/dist/src/cli/init/summary/summary.prompt.js.map +1 -0
  55. package/dist/src/cli/init/summary/summary.renderer.d.ts +32 -0
  56. package/dist/src/cli/init/summary/summary.renderer.js +41 -0
  57. package/dist/src/cli/init/summary/summary.renderer.js.map +1 -0
  58. package/dist/src/cli/init/templates/config-renderer.d.ts +42 -0
  59. package/dist/src/cli/init/templates/config-renderer.js +247 -0
  60. package/dist/src/cli/init/templates/config-renderer.js.map +1 -0
  61. package/dist/src/cli/init/templates/index.d.ts +1 -0
  62. package/dist/src/cli/init/templates/index.js +5 -1
  63. package/dist/src/cli/init/templates/index.js.map +1 -1
  64. package/dist/src/cli/utils/console.js +26 -7
  65. package/dist/src/cli/utils/console.js.map +1 -1
  66. package/dist/src/config/config.loader.d.ts +3 -0
  67. package/dist/src/config/config.loader.js +54 -0
  68. package/dist/src/config/config.loader.js.map +1 -1
  69. package/dist/src/config/config.schema.d.ts +7 -0
  70. package/dist/src/config/config.schema.js +5 -1
  71. package/dist/src/config/config.schema.js.map +1 -1
  72. package/dist/src/config/config.service.d.ts +1 -0
  73. package/dist/src/config/config.service.js +26 -1
  74. package/dist/src/config/config.service.js.map +1 -1
  75. package/dist/src/keyword/auto-executor.d.ts +17 -0
  76. package/dist/src/keyword/auto-executor.js +80 -0
  77. package/dist/src/keyword/auto-executor.js.map +1 -0
  78. package/dist/src/keyword/auto-executor.types.d.ts +44 -0
  79. package/dist/src/keyword/auto-executor.types.js +7 -0
  80. package/dist/src/keyword/auto-executor.types.js.map +1 -0
  81. package/dist/src/keyword/auto-formatter.d.ts +8 -0
  82. package/dist/src/keyword/auto-formatter.js +79 -0
  83. package/dist/src/keyword/auto-formatter.js.map +1 -0
  84. package/dist/src/keyword/auto-prompt-builder.d.ts +6 -0
  85. package/dist/src/keyword/auto-prompt-builder.js +47 -0
  86. package/dist/src/keyword/auto-prompt-builder.js.map +1 -0
  87. package/dist/src/keyword/index.d.ts +9 -0
  88. package/dist/src/keyword/index.js +28 -0
  89. package/dist/src/keyword/index.js.map +1 -0
  90. package/dist/src/keyword/keyword.module.js +11 -1
  91. package/dist/src/keyword/keyword.module.js.map +1 -1
  92. package/dist/src/keyword/keyword.service.d.ts +9 -2
  93. package/dist/src/keyword/keyword.service.js +108 -44
  94. package/dist/src/keyword/keyword.service.js.map +1 -1
  95. package/dist/src/keyword/keyword.types.d.ts +11 -8
  96. package/dist/src/keyword/keyword.types.js +22 -12
  97. package/dist/src/keyword/keyword.types.js.map +1 -1
  98. package/dist/src/keyword/primary-agent-resolver.js +4 -4
  99. package/dist/src/keyword/primary-agent-resolver.js.map +1 -1
  100. package/dist/src/keyword/rule-filter.js +1 -0
  101. package/dist/src/keyword/rule-filter.js.map +1 -1
  102. package/dist/src/main.js +12 -4
  103. package/dist/src/main.js.map +1 -1
  104. package/dist/src/mcp/handlers/abstract-handler.d.ts +8 -0
  105. package/dist/src/mcp/handlers/abstract-handler.js +19 -0
  106. package/dist/src/mcp/handlers/abstract-handler.js.map +1 -0
  107. package/dist/src/mcp/handlers/agent.handler.d.ts +6 -4
  108. package/dist/src/mcp/handlers/agent.handler.js +8 -15
  109. package/dist/src/mcp/handlers/agent.handler.js.map +1 -1
  110. package/dist/src/mcp/handlers/checklist-context.handler.d.ts +6 -4
  111. package/dist/src/mcp/handlers/checklist-context.handler.js +8 -12
  112. package/dist/src/mcp/handlers/checklist-context.handler.js.map +1 -1
  113. package/dist/src/mcp/handlers/config.handler.d.ts +6 -4
  114. package/dist/src/mcp/handlers/config.handler.js +12 -20
  115. package/dist/src/mcp/handlers/config.handler.js.map +1 -1
  116. package/dist/src/mcp/handlers/conventions.handler.d.ts +12 -0
  117. package/dist/src/mcp/handlers/conventions.handler.js +73 -0
  118. package/dist/src/mcp/handlers/conventions.handler.js.map +1 -0
  119. package/dist/src/mcp/handlers/index.d.ts +1 -0
  120. package/dist/src/mcp/handlers/index.js +3 -1
  121. package/dist/src/mcp/handlers/index.js.map +1 -1
  122. package/dist/src/mcp/handlers/mode.handler.d.ts +6 -5
  123. package/dist/src/mcp/handlers/mode.handler.js +6 -13
  124. package/dist/src/mcp/handlers/mode.handler.js.map +1 -1
  125. package/dist/src/mcp/handlers/rules.handler.d.ts +6 -4
  126. package/dist/src/mcp/handlers/rules.handler.js +8 -12
  127. package/dist/src/mcp/handlers/rules.handler.js.map +1 -1
  128. package/dist/src/mcp/handlers/skill.handler.d.ts +6 -4
  129. package/dist/src/mcp/handlers/skill.handler.js +8 -12
  130. package/dist/src/mcp/handlers/skill.handler.js.map +1 -1
  131. package/dist/src/mcp/mcp-serverless.js +5 -0
  132. package/dist/src/mcp/mcp-serverless.js.map +1 -1
  133. package/dist/src/mcp/mcp.module.js +1 -0
  134. package/dist/src/mcp/mcp.module.js.map +1 -1
  135. package/dist/src/mcp/mcp.service.d.ts +0 -1
  136. package/dist/src/mcp/mcp.service.js +2 -5
  137. package/dist/src/mcp/mcp.service.js.map +1 -1
  138. package/dist/src/model/model.constants.js.map +1 -1
  139. package/dist/src/model/model.resolver.js +8 -0
  140. package/dist/src/model/model.resolver.js.map +1 -1
  141. package/dist/src/shared/async.utils.d.ts +8 -0
  142. package/dist/src/shared/async.utils.js +18 -0
  143. package/dist/src/shared/async.utils.js.map +1 -0
  144. package/dist/src/shared/file.utils.d.ts +38 -2
  145. package/dist/src/shared/file.utils.js +104 -3
  146. package/dist/src/shared/file.utils.js.map +1 -1
  147. package/dist/src/shared/format.utils.d.ts +1 -0
  148. package/dist/src/shared/format.utils.js +19 -0
  149. package/dist/src/shared/format.utils.js.map +1 -0
  150. package/dist/src/shared/lru-cache.d.ts +21 -0
  151. package/dist/src/shared/lru-cache.js +70 -0
  152. package/dist/src/shared/lru-cache.js.map +1 -0
  153. package/dist/src/shared/validation.constants.d.ts +31 -0
  154. package/dist/src/shared/validation.constants.js +82 -8
  155. package/dist/src/shared/validation.constants.js.map +1 -1
  156. package/dist/tsconfig.build.tsbuildinfo +1 -1
  157. package/package.json +2 -2
@@ -0,0 +1,22 @@
1
+ export interface StackChoice {
2
+ name: string;
3
+ value: string;
4
+ checked?: boolean;
5
+ }
6
+ export interface TechStackSettings {
7
+ languages: string[];
8
+ frontend: string[];
9
+ backend: string[];
10
+ tools: string[];
11
+ }
12
+ export declare const LANGUAGE_CHOICES: StackChoice[];
13
+ export declare const FRONTEND_CHOICES: StackChoice[];
14
+ export declare const BACKEND_CHOICES: StackChoice[];
15
+ export declare const TOOL_CHOICES: StackChoice[];
16
+ export interface TechStackPromptOptions {
17
+ detectedLanguages?: string[];
18
+ detectedFrontend?: string[];
19
+ detectedBackend?: string[];
20
+ detectedTools?: string[];
21
+ }
22
+ export declare function promptTechStackSettings(options?: TechStackPromptOptions): Promise<TechStackSettings>;
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TOOL_CHOICES = exports.BACKEND_CHOICES = exports.FRONTEND_CHOICES = exports.LANGUAGE_CHOICES = void 0;
4
+ exports.promptTechStackSettings = promptTechStackSettings;
5
+ const prompts_1 = require("@inquirer/prompts");
6
+ exports.LANGUAGE_CHOICES = [
7
+ { name: 'TypeScript', value: 'TypeScript' },
8
+ { name: 'JavaScript', value: 'JavaScript' },
9
+ { name: 'Python', value: 'Python' },
10
+ { name: 'Go', value: 'Go' },
11
+ { name: 'Rust', value: 'Rust' },
12
+ { name: 'Java', value: 'Java' },
13
+ ];
14
+ exports.FRONTEND_CHOICES = [
15
+ { name: 'React', value: 'React' },
16
+ { name: 'Next.js', value: 'Next.js' },
17
+ { name: 'Vue', value: 'Vue' },
18
+ { name: 'Nuxt', value: 'Nuxt' },
19
+ { name: 'Svelte', value: 'Svelte' },
20
+ { name: 'Angular', value: 'Angular' },
21
+ ];
22
+ exports.BACKEND_CHOICES = [
23
+ { name: 'NestJS', value: 'NestJS' },
24
+ { name: 'Express', value: 'Express' },
25
+ { name: 'Fastify', value: 'Fastify' },
26
+ { name: 'FastAPI', value: 'FastAPI' },
27
+ { name: 'Django', value: 'Django' },
28
+ { name: 'Spring Boot', value: 'Spring Boot' },
29
+ ];
30
+ exports.TOOL_CHOICES = [
31
+ { name: 'Vitest', value: 'Vitest' },
32
+ { name: 'Jest', value: 'Jest' },
33
+ { name: 'ESLint', value: 'ESLint' },
34
+ { name: 'Prettier', value: 'Prettier' },
35
+ { name: 'Docker', value: 'Docker' },
36
+ { name: 'GitHub Actions', value: 'GitHub Actions' },
37
+ ];
38
+ function getChoicesWithDefaults(choices, detected = []) {
39
+ return choices.map(choice => ({
40
+ ...choice,
41
+ checked: detected.includes(choice.value),
42
+ }));
43
+ }
44
+ async function promptTechStackSettings(options = {}) {
45
+ const languages = await (0, prompts_1.checkbox)({
46
+ message: 'Select programming languages:',
47
+ choices: getChoicesWithDefaults(exports.LANGUAGE_CHOICES, options.detectedLanguages),
48
+ });
49
+ const frontend = await (0, prompts_1.checkbox)({
50
+ message: 'Select frontend frameworks:',
51
+ choices: getChoicesWithDefaults(exports.FRONTEND_CHOICES, options.detectedFrontend),
52
+ });
53
+ const backend = await (0, prompts_1.checkbox)({
54
+ message: 'Select backend frameworks:',
55
+ choices: getChoicesWithDefaults(exports.BACKEND_CHOICES, options.detectedBackend),
56
+ });
57
+ const tools = await (0, prompts_1.checkbox)({
58
+ message: 'Select tools:',
59
+ choices: getChoicesWithDefaults(exports.TOOL_CHOICES, options.detectedTools),
60
+ });
61
+ return {
62
+ languages,
63
+ frontend,
64
+ backend,
65
+ tools,
66
+ };
67
+ }
68
+ //# sourceMappingURL=tech-stack-prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tech-stack-prompt.js","sourceRoot":"","sources":["../../../../../src/cli/init/prompts/tech-stack-prompt.ts"],"names":[],"mappings":";;;AA6GA,0DAgCC;AAtID,+CAA6C;AAwBhC,QAAA,gBAAgB,GAAkB;IAC7C,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;IAC3C,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;IAC3C,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;IACnC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;IAC3B,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAC/B,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;CAChC,CAAC;AAKW,QAAA,gBAAgB,GAAkB;IAC7C,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;IACjC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;IACrC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;IAC7B,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAC/B,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;IACnC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;CACtC,CAAC;AAKW,QAAA,eAAe,GAAkB;IAC5C,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;IACnC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;IACrC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;IACrC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;IACrC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;IACnC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;CAC9C,CAAC;AAKW,QAAA,YAAY,GAAkB;IACzC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;IACnC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAC/B,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;IACnC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;IACvC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;IACnC,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,EAAE;CACpD,CAAC;AAmBF,SAAS,sBAAsB,CAC7B,OAAsB,EACtB,WAAqB,EAAE;IAEvB,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC5B,GAAG,MAAM;QACT,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;KACzC,CAAC,CAAC,CAAC;AACN,CAAC;AAQM,KAAK,UAAU,uBAAuB,CAC3C,UAAkC,EAAE;IAEpC,MAAM,SAAS,GAAG,MAAM,IAAA,kBAAQ,EAAC;QAC/B,OAAO,EAAE,+BAA+B;QACxC,OAAO,EAAE,sBAAsB,CAC7B,wBAAgB,EAChB,OAAO,CAAC,iBAAiB,CAC1B;KACF,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,IAAA,kBAAQ,EAAC;QAC9B,OAAO,EAAE,6BAA6B;QACtC,OAAO,EAAE,sBAAsB,CAAC,wBAAgB,EAAE,OAAO,CAAC,gBAAgB,CAAC;KAC5E,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,IAAA,kBAAQ,EAAC;QAC7B,OAAO,EAAE,4BAA4B;QACrC,OAAO,EAAE,sBAAsB,CAAC,uBAAe,EAAE,OAAO,CAAC,eAAe,CAAC;KAC1E,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,MAAM,IAAA,kBAAQ,EAAC;QAC3B,OAAO,EAAE,eAAe;QACxB,OAAO,EAAE,sBAAsB,CAAC,oBAAY,EAAE,OAAO,CAAC,aAAa,CAAC;KACrE,CAAC,CAAC;IAEH,OAAO;QACL,SAAS;QACT,QAAQ;QACR,OAAO;QACP,KAAK;KACN,CAAC;AACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ export interface TestChoice<T = string> {
2
+ name: string;
3
+ value: T;
4
+ description?: string;
5
+ }
6
+ export interface TestStrategySettings {
7
+ approach: 'tdd' | 'bdd' | 'test-after' | 'mixed';
8
+ coverage: number;
9
+ mockingStrategy: 'minimal' | 'extensive' | 'no-mocks';
10
+ }
11
+ export declare const DEFAULT_COVERAGE = 90;
12
+ export declare const APPROACH_CHOICES: TestChoice<TestStrategySettings['approach']>[];
13
+ export declare const MOCKING_STRATEGY_CHOICES: TestChoice<TestStrategySettings['mockingStrategy']>[];
14
+ export interface TestStrategyPromptOptions {
15
+ detectedApproach?: TestStrategySettings['approach'];
16
+ detectedCoverage?: number;
17
+ detectedMockingStrategy?: TestStrategySettings['mockingStrategy'];
18
+ }
19
+ export declare function promptTestStrategySettings(options?: TestStrategyPromptOptions): Promise<TestStrategySettings>;
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MOCKING_STRATEGY_CHOICES = exports.APPROACH_CHOICES = exports.DEFAULT_COVERAGE = void 0;
4
+ exports.promptTestStrategySettings = promptTestStrategySettings;
5
+ const prompts_1 = require("@inquirer/prompts");
6
+ exports.DEFAULT_COVERAGE = 90;
7
+ exports.APPROACH_CHOICES = [
8
+ {
9
+ name: 'TDD (Test-Driven Development)',
10
+ value: 'tdd',
11
+ description: 'Write tests first, then implement',
12
+ },
13
+ {
14
+ name: 'BDD (Behavior-Driven Development)',
15
+ value: 'bdd',
16
+ description: 'Focus on behavior specifications',
17
+ },
18
+ {
19
+ name: 'Test-After',
20
+ value: 'test-after',
21
+ description: 'Write tests after implementation',
22
+ },
23
+ {
24
+ name: 'Mixed',
25
+ value: 'mixed',
26
+ description: 'TDD for core logic, test-after for UI',
27
+ },
28
+ ];
29
+ exports.MOCKING_STRATEGY_CHOICES = [
30
+ {
31
+ name: 'Minimal',
32
+ value: 'minimal',
33
+ description: 'Mock only external services (recommended)',
34
+ },
35
+ {
36
+ name: 'Extensive',
37
+ value: 'extensive',
38
+ description: 'Mock most dependencies',
39
+ },
40
+ {
41
+ name: 'No Mocks',
42
+ value: 'no-mocks',
43
+ description: 'Integration tests with real implementations',
44
+ },
45
+ ];
46
+ async function promptTestStrategySettings(options = {}) {
47
+ const approach = await (0, prompts_1.select)({
48
+ message: 'Select test approach:',
49
+ choices: exports.APPROACH_CHOICES,
50
+ default: options.detectedApproach ?? 'tdd',
51
+ });
52
+ const coverageInput = await (0, prompts_1.input)({
53
+ message: 'Target test coverage (%):',
54
+ default: String(options.detectedCoverage ?? exports.DEFAULT_COVERAGE),
55
+ validate: value => {
56
+ const num = parseInt(value, 10);
57
+ if (isNaN(num) || num < 0 || num > 100) {
58
+ return 'Please enter a number between 0 and 100';
59
+ }
60
+ return true;
61
+ },
62
+ });
63
+ const coverage = parseInt(coverageInput, 10);
64
+ const mockingStrategy = await (0, prompts_1.select)({
65
+ message: 'Select mocking strategy:',
66
+ choices: exports.MOCKING_STRATEGY_CHOICES,
67
+ default: options.detectedMockingStrategy ?? 'minimal',
68
+ });
69
+ return {
70
+ approach,
71
+ coverage,
72
+ mockingStrategy,
73
+ };
74
+ }
75
+ //# sourceMappingURL=test-strategy-prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-strategy-prompt.js","sourceRoot":"","sources":["../../../../../src/cli/init/prompts/test-strategy-prompt.ts"],"names":[],"mappings":";;;AAgGA,gEAiCC;AA3HD,+CAAkD;AAuBrC,QAAA,gBAAgB,GAAG,EAAE,CAAC;AAKtB,QAAA,gBAAgB,GAC3B;IACE;QACE,IAAI,EAAE,+BAA+B;QACrC,KAAK,EAAE,KAAK;QACZ,WAAW,EAAE,mCAAmC;KACjD;IACD;QACE,IAAI,EAAE,mCAAmC;QACzC,KAAK,EAAE,KAAK;QACZ,WAAW,EAAE,kCAAkC;KAChD;IACD;QACE,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,kCAAkC;KAChD;IACD;QACE,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,uCAAuC;KACrD;CACF,CAAC;AAKS,QAAA,wBAAwB,GAE/B;IACJ;QACE,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,2CAA2C;KACzD;IACD;QACE,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,WAAW;QAClB,WAAW,EAAE,wBAAwB;KACtC;IACD;QACE,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,6CAA6C;KAC3D;CACF,CAAC;AAiBK,KAAK,UAAU,0BAA0B,CAC9C,UAAqC,EAAE;IAEvC,MAAM,QAAQ,GAAG,MAAM,IAAA,gBAAM,EAAC;QAC5B,OAAO,EAAE,uBAAuB;QAChC,OAAO,EAAE,wBAAgB;QACzB,OAAO,EAAE,OAAO,CAAC,gBAAgB,IAAI,KAAK;KAC3C,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,MAAM,IAAA,eAAK,EAAC;QAChC,OAAO,EAAE,2BAA2B;QACpC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,gBAAgB,IAAI,wBAAgB,CAAC;QAC7D,QAAQ,EAAE,KAAK,CAAC,EAAE;YAChB,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAChC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;gBACvC,OAAO,yCAAyC,CAAC;YACnD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IAE7C,MAAM,eAAe,GAAG,MAAM,IAAA,gBAAM,EAAC;QACnC,OAAO,EAAE,0BAA0B;QACnC,OAAO,EAAE,gCAAwB;QACjC,OAAO,EAAE,OAAO,CAAC,uBAAuB,IAAI,SAAS;KACtD,CAAC,CAAC;IAEH,OAAO;QACL,QAAQ;QACR,QAAQ;QACR,eAAe;KAChB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { renderConfigSummary, type ConfigSummaryData, } from './summary.renderer';
2
+ export { promptSummaryAction, SUMMARY_ACTION_CHOICES, type SummaryAction, type SummaryChoice, } from './summary.prompt';
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SUMMARY_ACTION_CHOICES = exports.promptSummaryAction = exports.renderConfigSummary = void 0;
4
+ var summary_renderer_1 = require("./summary.renderer");
5
+ Object.defineProperty(exports, "renderConfigSummary", { enumerable: true, get: function () { return summary_renderer_1.renderConfigSummary; } });
6
+ var summary_prompt_1 = require("./summary.prompt");
7
+ Object.defineProperty(exports, "promptSummaryAction", { enumerable: true, get: function () { return summary_prompt_1.promptSummaryAction; } });
8
+ Object.defineProperty(exports, "SUMMARY_ACTION_CHOICES", { enumerable: true, get: function () { return summary_prompt_1.SUMMARY_ACTION_CHOICES; } });
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/cli/init/summary/index.ts"],"names":[],"mappings":";;;AAMA,uDAG4B;AAF1B,uHAAA,mBAAmB,OAAA;AAIrB,mDAK0B;AAJxB,qHAAA,mBAAmB,OAAA;AACnB,wHAAA,sBAAsB,OAAA"}
@@ -0,0 +1,7 @@
1
+ export type SummaryAction = 'confirm' | 'edit-basic' | 'edit-tech-stack' | 'edit-architecture' | 'edit-conventions' | 'edit-test-strategy' | 'edit-ai' | 'cancel';
2
+ export interface SummaryChoice {
3
+ name: string;
4
+ value: SummaryAction;
5
+ }
6
+ export declare const SUMMARY_ACTION_CHOICES: SummaryChoice[];
7
+ export declare function promptSummaryAction(): Promise<SummaryAction>;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SUMMARY_ACTION_CHOICES = void 0;
4
+ exports.promptSummaryAction = promptSummaryAction;
5
+ const prompts_1 = require("@inquirer/prompts");
6
+ exports.SUMMARY_ACTION_CHOICES = [
7
+ { name: '[Confirm] ✅ Confirm and generate config', value: 'confirm' },
8
+ { name: '[Edit Basic] ✏️ Edit Basic settings', value: 'edit-basic' },
9
+ { name: '[Edit Tech] ✏️ Edit Tech Stack', value: 'edit-tech-stack' },
10
+ { name: '[Edit Arch] ✏️ Edit Architecture', value: 'edit-architecture' },
11
+ { name: '[Edit Conv] ✏️ Edit Conventions', value: 'edit-conventions' },
12
+ { name: '[Edit Test] ✏️ Edit Test Strategy', value: 'edit-test-strategy' },
13
+ { name: '[Edit AI] ✏️ Edit AI settings', value: 'edit-ai' },
14
+ { name: '[Cancel] ❌ Cancel', value: 'cancel' },
15
+ ];
16
+ async function promptSummaryAction() {
17
+ return (0, prompts_1.select)({
18
+ message: 'What would you like to do?',
19
+ choices: exports.SUMMARY_ACTION_CHOICES,
20
+ });
21
+ }
22
+ //# sourceMappingURL=summary.prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.prompt.js","sourceRoot":"","sources":["../../../../../src/cli/init/summary/summary.prompt.ts"],"names":[],"mappings":";;;AAyDA,kDAKC;AAxDD,+CAA2C;AAqC9B,QAAA,sBAAsB,GAAoB;IACrD,EAAE,IAAI,EAAE,yCAAyC,EAAE,KAAK,EAAE,SAAS,EAAE;IACrE,EAAE,IAAI,EAAE,sCAAsC,EAAE,KAAK,EAAE,YAAY,EAAE;IACrE,EAAE,IAAI,EAAE,iCAAiC,EAAE,KAAK,EAAE,iBAAiB,EAAE;IACrE,EAAE,IAAI,EAAE,mCAAmC,EAAE,KAAK,EAAE,mBAAmB,EAAE;IACzE,EAAE,IAAI,EAAE,kCAAkC,EAAE,KAAK,EAAE,kBAAkB,EAAE;IACvE,EAAE,IAAI,EAAE,oCAAoC,EAAE,KAAK,EAAE,oBAAoB,EAAE;IAC3E,EAAE,IAAI,EAAE,gCAAgC,EAAE,KAAK,EAAE,SAAS,EAAE;IAC5D,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,QAAQ,EAAE;CAC/C,CAAC;AAKK,KAAK,UAAU,mBAAmB;IACvC,OAAO,IAAA,gBAAM,EAAC;QACZ,OAAO,EAAE,4BAA4B;QACrC,OAAO,EAAE,8BAAsB;KAChC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,32 @@
1
+ export interface ConfigSummaryData {
2
+ basic: {
3
+ language: string;
4
+ projectName: string;
5
+ description: string;
6
+ };
7
+ techStack: {
8
+ languages: string[];
9
+ frontend: string[];
10
+ backend: string[];
11
+ tools: string[];
12
+ };
13
+ architecture: {
14
+ pattern: string;
15
+ componentStyle: string;
16
+ };
17
+ conventions: {
18
+ fileNaming: string;
19
+ quotes: 'single' | 'double';
20
+ semicolons: boolean;
21
+ };
22
+ testStrategy: {
23
+ approach: string;
24
+ coverage: number;
25
+ mockingStrategy: string;
26
+ };
27
+ ai: {
28
+ defaultModel: string;
29
+ primaryAgent: string;
30
+ };
31
+ }
32
+ export declare function renderConfigSummary(data: ConfigSummaryData): string;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderConfigSummary = renderConfigSummary;
4
+ function formatArray(arr) {
5
+ return arr.length > 0 ? arr.join(', ') : '(none)';
6
+ }
7
+ function renderConfigSummary(data) {
8
+ const lines = [];
9
+ lines.push('');
10
+ lines.push(' [Basic]');
11
+ lines.push(` Language: ${data.basic.language}`);
12
+ lines.push(` Project: ${data.basic.projectName}`);
13
+ lines.push(` Description: ${data.basic.description || '(none)'}`);
14
+ lines.push('');
15
+ lines.push(' [Tech Stack]');
16
+ lines.push(` Languages: ${formatArray(data.techStack.languages)}`);
17
+ lines.push(` Frontend: ${formatArray(data.techStack.frontend)}`);
18
+ lines.push(` Backend: ${formatArray(data.techStack.backend)}`);
19
+ lines.push(` Tools: ${formatArray(data.techStack.tools)}`);
20
+ lines.push('');
21
+ lines.push(' [Architecture]');
22
+ lines.push(` Pattern: ${data.architecture.pattern}`);
23
+ lines.push(` Style: ${data.architecture.componentStyle}`);
24
+ lines.push('');
25
+ lines.push(' [Conventions]');
26
+ lines.push(` Files: ${data.conventions.fileNaming}`);
27
+ lines.push(` Quotes: ${data.conventions.quotes}`);
28
+ lines.push(` Semicolons: ${data.conventions.semicolons ? 'yes' : 'no'}`);
29
+ lines.push('');
30
+ lines.push(' [Test Strategy]');
31
+ lines.push(` Approach: ${data.testStrategy.approach}`);
32
+ lines.push(` Coverage: ${data.testStrategy.coverage}%`);
33
+ lines.push(` Mocking: ${data.testStrategy.mockingStrategy}`);
34
+ lines.push('');
35
+ lines.push(' [AI]');
36
+ lines.push(` Model: ${data.ai.defaultModel}`);
37
+ lines.push(` Agent: ${data.ai.primaryAgent}`);
38
+ lines.push('');
39
+ return lines.join('\n');
40
+ }
41
+ //# sourceMappingURL=summary.renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.renderer.js","sourceRoot":"","sources":["../../../../../src/cli/init/summary/summary.renderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ interface ConfigObject {
2
+ language?: string;
3
+ projectName?: string;
4
+ description?: string;
5
+ techStack?: {
6
+ languages?: string[];
7
+ frontend?: string[];
8
+ backend?: string[];
9
+ database?: string[];
10
+ infrastructure?: string[];
11
+ tools?: string[];
12
+ };
13
+ architecture?: {
14
+ pattern?: string;
15
+ componentStyle?: string;
16
+ structure?: string[];
17
+ };
18
+ conventions?: {
19
+ naming?: {
20
+ files?: string;
21
+ components?: string;
22
+ functions?: string;
23
+ variables?: string;
24
+ };
25
+ quotes?: string;
26
+ semicolons?: boolean;
27
+ };
28
+ testStrategy?: {
29
+ approach?: string;
30
+ coverage?: number;
31
+ mockingStrategy?: string;
32
+ frameworks?: string[];
33
+ };
34
+ ai?: {
35
+ defaultModel?: string;
36
+ primaryAgent?: string;
37
+ };
38
+ }
39
+ export declare function renderConfigObjectAsJs(config: ConfigObject): string;
40
+ export declare function renderConfigObjectAsJson(config: ConfigObject): string;
41
+ export declare function escapeJsString(str: string): string;
42
+ export {};
@@ -0,0 +1,247 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderConfigObjectAsJs = renderConfigObjectAsJs;
4
+ exports.renderConfigObjectAsJson = renderConfigObjectAsJson;
5
+ exports.escapeJsString = escapeJsString;
6
+ function renderConfigObjectAsJs(config) {
7
+ const lines = [];
8
+ lines.push('/**');
9
+ lines.push(' * Codingbuddy Configuration');
10
+ lines.push(' *');
11
+ lines.push(' * Generated by `codingbuddy init`');
12
+ lines.push(' * @see https://github.com/anthropics/codingbuddy');
13
+ lines.push(' */');
14
+ lines.push('');
15
+ lines.push('module.exports = {');
16
+ if (config.language) {
17
+ lines.push(` language: '${escapeJsString(config.language)}',`);
18
+ lines.push('');
19
+ }
20
+ if (config.projectName) {
21
+ lines.push(` projectName: '${escapeJsString(config.projectName)}',`);
22
+ }
23
+ if (config.description) {
24
+ lines.push(` description: '${escapeJsString(config.description)}',`);
25
+ }
26
+ if (config.projectName || config.description) {
27
+ lines.push('');
28
+ }
29
+ if (config.techStack && hasNonEmptyArrays(config.techStack)) {
30
+ lines.push(' techStack: {');
31
+ lines.push(...renderTechStack(config.techStack));
32
+ lines.push(' },');
33
+ lines.push('');
34
+ }
35
+ if (config.architecture && hasProperties(config.architecture)) {
36
+ lines.push(' architecture: {');
37
+ lines.push(...renderArchitecture(config.architecture));
38
+ lines.push(' },');
39
+ lines.push('');
40
+ }
41
+ if (config.conventions && hasProperties(config.conventions)) {
42
+ lines.push(' conventions: {');
43
+ lines.push(...renderConventions(config.conventions));
44
+ lines.push(' },');
45
+ lines.push('');
46
+ }
47
+ if (config.testStrategy && hasProperties(config.testStrategy)) {
48
+ lines.push(' testStrategy: {');
49
+ lines.push(...renderTestStrategy(config.testStrategy));
50
+ lines.push(' },');
51
+ lines.push('');
52
+ }
53
+ if (config.ai && hasProperties(config.ai)) {
54
+ lines.push(' ai: {');
55
+ if (config.ai.defaultModel) {
56
+ lines.push(` defaultModel: '${escapeJsString(config.ai.defaultModel)}',`);
57
+ }
58
+ if (config.ai.primaryAgent) {
59
+ lines.push(` primaryAgent: '${escapeJsString(config.ai.primaryAgent)}',`);
60
+ }
61
+ lines.push(' },');
62
+ }
63
+ lines.push('};');
64
+ return lines.join('\n');
65
+ }
66
+ function renderConfigObjectAsJson(config) {
67
+ const cleanedConfig = cleanConfig(config);
68
+ return JSON.stringify(cleanedConfig, null, 2);
69
+ }
70
+ function cleanConfig(config) {
71
+ const result = {};
72
+ if (config.language)
73
+ result.language = config.language;
74
+ if (config.projectName)
75
+ result.projectName = config.projectName;
76
+ if (config.description)
77
+ result.description = config.description;
78
+ if (config.techStack) {
79
+ const techStack = {};
80
+ if (config.techStack.languages?.length)
81
+ techStack.languages = config.techStack.languages;
82
+ if (config.techStack.frontend?.length)
83
+ techStack.frontend = config.techStack.frontend;
84
+ if (config.techStack.backend?.length)
85
+ techStack.backend = config.techStack.backend;
86
+ if (config.techStack.database?.length)
87
+ techStack.database = config.techStack.database;
88
+ if (config.techStack.infrastructure?.length)
89
+ techStack.infrastructure = config.techStack.infrastructure;
90
+ if (config.techStack.tools?.length)
91
+ techStack.tools = config.techStack.tools;
92
+ if (hasProperties(techStack))
93
+ result.techStack = techStack;
94
+ }
95
+ if (config.architecture) {
96
+ const arch = {};
97
+ if (config.architecture.pattern)
98
+ arch.pattern = config.architecture.pattern;
99
+ if (config.architecture.componentStyle)
100
+ arch.componentStyle = config.architecture.componentStyle;
101
+ if (config.architecture.structure?.length)
102
+ arch.structure = config.architecture.structure;
103
+ if (hasProperties(arch))
104
+ result.architecture = arch;
105
+ }
106
+ if (config.conventions) {
107
+ const conv = {};
108
+ if (config.conventions.naming && hasProperties(config.conventions.naming)) {
109
+ conv.naming = {};
110
+ if (config.conventions.naming.files)
111
+ conv.naming.files = config.conventions.naming.files;
112
+ if (config.conventions.naming.components)
113
+ conv.naming.components = config.conventions.naming.components;
114
+ if (config.conventions.naming.functions)
115
+ conv.naming.functions = config.conventions.naming.functions;
116
+ if (config.conventions.naming.variables)
117
+ conv.naming.variables = config.conventions.naming.variables;
118
+ }
119
+ if (config.conventions.quotes)
120
+ conv.quotes = config.conventions.quotes;
121
+ if (config.conventions.semicolons !== undefined)
122
+ conv.semicolons = config.conventions.semicolons;
123
+ if (hasProperties(conv))
124
+ result.conventions = conv;
125
+ }
126
+ if (config.testStrategy) {
127
+ const test = {};
128
+ if (config.testStrategy.approach)
129
+ test.approach = config.testStrategy.approach;
130
+ if (config.testStrategy.coverage !== undefined)
131
+ test.coverage = config.testStrategy.coverage;
132
+ if (config.testStrategy.mockingStrategy)
133
+ test.mockingStrategy = config.testStrategy.mockingStrategy;
134
+ if (config.testStrategy.frameworks?.length)
135
+ test.frameworks = config.testStrategy.frameworks;
136
+ if (hasProperties(test))
137
+ result.testStrategy = test;
138
+ }
139
+ if (config.ai) {
140
+ const ai = {};
141
+ if (config.ai.defaultModel)
142
+ ai.defaultModel = config.ai.defaultModel;
143
+ if (config.ai.primaryAgent)
144
+ ai.primaryAgent = config.ai.primaryAgent;
145
+ if (hasProperties(ai))
146
+ result.ai = ai;
147
+ }
148
+ return result;
149
+ }
150
+ function hasNonEmptyArrays(obj) {
151
+ return Object.values(obj).some(v => Array.isArray(v) && v.length > 0);
152
+ }
153
+ function hasProperties(obj) {
154
+ return Object.values(obj).some(v => v !== undefined && v !== null);
155
+ }
156
+ function renderTechStack(techStack) {
157
+ const lines = [];
158
+ if (techStack.languages?.length) {
159
+ lines.push(` languages: [${formatStringArray(techStack.languages)}],`);
160
+ }
161
+ if (techStack.frontend?.length) {
162
+ lines.push(` frontend: [${formatStringArray(techStack.frontend)}],`);
163
+ }
164
+ if (techStack.backend?.length) {
165
+ lines.push(` backend: [${formatStringArray(techStack.backend)}],`);
166
+ }
167
+ if (techStack.database?.length) {
168
+ lines.push(` database: [${formatStringArray(techStack.database)}],`);
169
+ }
170
+ if (techStack.infrastructure?.length) {
171
+ lines.push(` infrastructure: [${formatStringArray(techStack.infrastructure)}],`);
172
+ }
173
+ if (techStack.tools?.length) {
174
+ lines.push(` tools: [${formatStringArray(techStack.tools)}],`);
175
+ }
176
+ return lines;
177
+ }
178
+ function renderArchitecture(arch) {
179
+ const lines = [];
180
+ if (arch.pattern) {
181
+ lines.push(` pattern: '${escapeJsString(arch.pattern)}',`);
182
+ }
183
+ if (arch.componentStyle) {
184
+ lines.push(` componentStyle: '${escapeJsString(arch.componentStyle)}',`);
185
+ }
186
+ if (arch.structure?.length) {
187
+ lines.push(` structure: [${formatStringArray(arch.structure)}],`);
188
+ }
189
+ return lines;
190
+ }
191
+ function renderConventions(conv) {
192
+ const lines = [];
193
+ if (conv.naming && hasProperties(conv.naming)) {
194
+ lines.push(' naming: {');
195
+ if (conv.naming.files) {
196
+ lines.push(` files: '${escapeJsString(conv.naming.files)}',`);
197
+ }
198
+ if (conv.naming.components) {
199
+ lines.push(` components: '${escapeJsString(conv.naming.components)}',`);
200
+ }
201
+ if (conv.naming.functions) {
202
+ lines.push(` functions: '${escapeJsString(conv.naming.functions)}',`);
203
+ }
204
+ if (conv.naming.variables) {
205
+ lines.push(` variables: '${escapeJsString(conv.naming.variables)}',`);
206
+ }
207
+ lines.push(' },');
208
+ }
209
+ if (conv.quotes) {
210
+ lines.push(` quotes: '${escapeJsString(conv.quotes)}',`);
211
+ }
212
+ if (conv.semicolons !== undefined) {
213
+ lines.push(` semicolons: ${conv.semicolons},`);
214
+ }
215
+ return lines;
216
+ }
217
+ function renderTestStrategy(test) {
218
+ const lines = [];
219
+ if (test.approach) {
220
+ lines.push(` approach: '${escapeJsString(test.approach)}',`);
221
+ }
222
+ if (test.coverage !== undefined) {
223
+ lines.push(` coverage: ${test.coverage},`);
224
+ }
225
+ if (test.mockingStrategy) {
226
+ lines.push(` mockingStrategy: '${escapeJsString(test.mockingStrategy)}',`);
227
+ }
228
+ if (test.frameworks?.length) {
229
+ lines.push(` frameworks: [${formatStringArray(test.frameworks)}],`);
230
+ }
231
+ return lines;
232
+ }
233
+ function escapeJsString(str) {
234
+ return (str
235
+ .replace(/\\/g, '\\\\')
236
+ .replace(/'/g, "\\'")
237
+ .replace(/\n/g, '\\n')
238
+ .replace(/\r/g, '\\r')
239
+ .replace(/\t/g, '\\t')
240
+ .replace(/\x00/g, '\\x00')
241
+ .replace(/\u2028/g, '\\u2028')
242
+ .replace(/\u2029/g, '\\u2029'));
243
+ }
244
+ function formatStringArray(arr) {
245
+ return arr.map(s => `'${escapeJsString(s)}'`).join(', ');
246
+ }
247
+ //# sourceMappingURL=config-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-renderer.js","sourceRoot":"","sources":["../../../../../src/cli/init/templates/config-renderer.ts"],"names":[],"mappings":";;AAgDA,wDAkFC;AAKD,4DAGC;AAoOD,wCAaC;AA3UD,SAAgB,sBAAsB,CAAC,MAAoB;IACzD,MAAM,KAAK,GAAa,EAAE,CAAC;IAG3B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC3C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACjD,KAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IAChE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAGjC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,gBAAgB,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAGD,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,mBAAmB,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,mBAAmB,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAGD,IAAI,MAAM,CAAC,SAAS,IAAI,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5D,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAGD,IAAI,MAAM,CAAC,YAAY,IAAI,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9D,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAGD,IAAI,MAAM,CAAC,WAAW,IAAI,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5D,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAGD,IAAI,MAAM,CAAC,YAAY,IAAI,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9D,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAGD,IAAI,MAAM,CAAC,EAAE,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtB,IAAI,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CACR,sBAAsB,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CACjE,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CACR,sBAAsB,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CACjE,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEjB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAKD,SAAgB,wBAAwB,CAAC,MAAoB;IAC3D,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAChD,CAAC;AAKD,SAAS,WAAW,CAAC,MAAoB;IACvC,MAAM,MAAM,GAAiB,EAAE,CAAC;IAEhC,IAAI,MAAM,CAAC,QAAQ;QAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACvD,IAAI,MAAM,CAAC,WAAW;QAAE,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IAChE,IAAI,MAAM,CAAC,WAAW;QAAE,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IAEhE,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,MAAM,SAAS,GAA8B,EAAE,CAAC;QAChD,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM;YACpC,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;QACnD,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM;YACnC,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;QACjD,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM;YAClC,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC;QAC/C,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM;YACnC,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;QACjD,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM;YACzC,SAAS,CAAC,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;QAC7D,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM;YAChC,SAAS,CAAC,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;QAC3C,IAAI,aAAa,CAAC,SAAS,CAAC;YAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7D,CAAC;IAED,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,MAAM,IAAI,GAAiC,EAAE,CAAC;QAC9C,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC;QAC5E,IAAI,MAAM,CAAC,YAAY,CAAC,cAAc;YACpC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC;QAC3D,IAAI,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM;YACvC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC;QACjD,IAAI,aAAa,CAAC,IAAI,CAAC;YAAE,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC;IACtD,CAAC;IAED,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,MAAM,IAAI,GAAgC,EAAE,CAAC;QAC7C,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1E,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;YACjB,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK;gBACjC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC;YACtD,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU;gBACtC,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC;YAChE,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS;gBACrC,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC;YAC9D,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS;gBACrC,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC;QAChE,CAAC;QACD,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;QACvE,IAAI,MAAM,CAAC,WAAW,CAAC,UAAU,KAAK,SAAS;YAC7C,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC;QAClD,IAAI,aAAa,CAAC,IAAI,CAAC;YAAE,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;IACrD,CAAC;IAED,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,MAAM,IAAI,GAAiC,EAAE,CAAC;QAC9C,IAAI,MAAM,CAAC,YAAY,CAAC,QAAQ;YAC9B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC;QAC/C,IAAI,MAAM,CAAC,YAAY,CAAC,QAAQ,KAAK,SAAS;YAC5C,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC;QAC/C,IAAI,MAAM,CAAC,YAAY,CAAC,eAAe;YACrC,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC;QAC7D,IAAI,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM;YACxC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC;QACnD,IAAI,aAAa,CAAC,IAAI,CAAC;YAAE,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC;IACtD,CAAC;IAED,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,MAAM,EAAE,GAAuB,EAAE,CAAC;QAClC,IAAI,MAAM,CAAC,EAAE,CAAC,YAAY;YAAE,EAAE,CAAC,YAAY,GAAG,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC;QACrE,IAAI,MAAM,CAAC,EAAE,CAAC,YAAY;YAAE,EAAE,CAAC,YAAY,GAAG,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC;QACrE,IAAI,aAAa,CAAC,EAAE,CAAC;YAAE,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;IACxC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAKD,SAAS,iBAAiB,CAAC,GAA4B;IACrD,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACxE,CAAC;AAKD,SAAS,aAAa,CAAC,GAA4B;IACjD,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;AACrE,CAAC;AAKD,SAAS,eAAe,CACtB,SAAiD;IAEjD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,mBAAmB,iBAAiB,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,kBAAkB,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,iBAAiB,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,kBAAkB,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,SAAS,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CACR,wBAAwB,iBAAiB,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CACxE,CAAC;IACJ,CAAC;IACD,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,eAAe,iBAAiB,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAKD,SAAS,kBAAkB,CACzB,IAA+C;IAE/C,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,iBAAiB,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,wBAAwB,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,mBAAmB,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAKD,SAAS,iBAAiB,CACxB,IAA8C;IAE9C,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,iBAAiB,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CACR,sBAAsB,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CACjE,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CACR,qBAAqB,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAC/D,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CACR,qBAAqB,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAC/D,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,gBAAgB,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAKD,SAAS,kBAAkB,CACzB,IAA+C;IAE/C,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,kBAAkB,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CACR,yBAAyB,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAClE,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,oBAAoB,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACzE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAeD,SAAgB,cAAc,CAAC,GAAW;IACxC,OAAO,CACL,GAAG;SACA,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SAErB,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;SACzB,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC;SAC7B,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CACjC,CAAC;AACJ,CAAC;AAKD,SAAS,iBAAiB,CAAC,GAAa;IACtC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3D,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export type { FrameworkType, TemplateMetadata, ConfigTemplate, ConfigComments, TemplateSelectionResult, TemplateRenderOptions, } from './template.types';
2
2
  export { selectTemplate, getTemplateById, getAllTemplates, } from './template.selector';
3
3
  export { renderConfigAsJs, renderConfigAsJson } from './template.renderer';
4
+ export { renderConfigObjectAsJs, renderConfigObjectAsJson, escapeJsString, } from './config-renderer';
4
5
  export { TEMPLATES } from './frameworks';