@powerhousedao/codegen 6.0.0-dev.3 → 6.0.0-dev.30

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 (106) hide show
  1. package/dist/src/codegen/.hygen/templates/powerhouse/generate-custom-subgraph/resolvers.esm.t +2 -2
  2. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/editor.esm.t +3 -1
  3. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/editor.esm.t +1 -1
  4. package/dist/src/codegen/__tests__/generate-doc-model.test.js +1 -0
  5. package/dist/src/codegen/__tests__/generate-doc-model.test.js.map +1 -1
  6. package/dist/src/codegen/__tests__/generate-drive-editor.test.js +35 -10
  7. package/dist/src/codegen/__tests__/generate-drive-editor.test.js.map +1 -1
  8. package/dist/src/codegen/__tests__/generate-editor.test.js +13 -9
  9. package/dist/src/codegen/__tests__/generate-editor.test.js.map +1 -1
  10. package/dist/src/codegen/generate.d.ts +10 -10
  11. package/dist/src/codegen/generate.d.ts.map +1 -1
  12. package/dist/src/codegen/generate.js +21 -23
  13. package/dist/src/codegen/generate.js.map +1 -1
  14. package/dist/src/create-lib/create-project.d.ts.map +1 -1
  15. package/dist/src/create-lib/create-project.js +10 -2
  16. package/dist/src/create-lib/create-project.js.map +1 -1
  17. package/dist/src/file-builders/boilerplate/ci-templates.test.d.ts +2 -0
  18. package/dist/src/file-builders/boilerplate/ci-templates.test.d.ts.map +1 -0
  19. package/dist/src/file-builders/boilerplate/ci-templates.test.js +114 -0
  20. package/dist/src/file-builders/boilerplate/ci-templates.test.js.map +1 -0
  21. package/dist/src/file-builders/boilerplate/package.json.js +1 -1
  22. package/dist/src/file-builders/boilerplate/package.json.js.map +1 -1
  23. package/dist/src/file-builders/clis/generate-cli-docs.d.ts +17 -0
  24. package/dist/src/file-builders/clis/generate-cli-docs.d.ts.map +1 -0
  25. package/dist/src/file-builders/clis/generate-cli-docs.js +36 -0
  26. package/dist/src/file-builders/clis/generate-cli-docs.js.map +1 -0
  27. package/dist/src/file-builders/index.d.ts +1 -0
  28. package/dist/src/file-builders/index.d.ts.map +1 -1
  29. package/dist/src/file-builders/index.js +1 -0
  30. package/dist/src/file-builders/index.js.map +1 -1
  31. package/dist/src/file-builders/types.d.ts +18 -0
  32. package/dist/src/file-builders/types.d.ts.map +1 -1
  33. package/dist/src/templates/boilerplate/AGENTS.md.d.ts.map +1 -1
  34. package/dist/src/templates/boilerplate/AGENTS.md.js +41 -0
  35. package/dist/src/templates/boilerplate/AGENTS.md.js.map +1 -1
  36. package/dist/src/templates/boilerplate/CLAUDE.md.d.ts +1 -1
  37. package/dist/src/templates/boilerplate/CLAUDE.md.d.ts.map +1 -1
  38. package/dist/src/templates/boilerplate/CLAUDE.md.js +1 -407
  39. package/dist/src/templates/boilerplate/CLAUDE.md.js.map +1 -1
  40. package/dist/src/templates/boilerplate/docker/Dockerfile.d.ts +2 -0
  41. package/dist/src/templates/boilerplate/docker/Dockerfile.d.ts.map +1 -0
  42. package/dist/src/templates/boilerplate/docker/Dockerfile.js +144 -0
  43. package/dist/src/templates/boilerplate/docker/Dockerfile.js.map +1 -0
  44. package/dist/src/templates/boilerplate/docker/connect-entrypoint.sh.d.ts +2 -0
  45. package/dist/src/templates/boilerplate/docker/connect-entrypoint.sh.d.ts.map +1 -0
  46. package/dist/src/templates/boilerplate/docker/connect-entrypoint.sh.js +18 -0
  47. package/dist/src/templates/boilerplate/docker/connect-entrypoint.sh.js.map +1 -0
  48. package/dist/src/templates/boilerplate/docker/nginx.conf.d.ts +2 -0
  49. package/dist/src/templates/boilerplate/docker/nginx.conf.d.ts.map +1 -0
  50. package/dist/src/templates/boilerplate/docker/nginx.conf.js +79 -0
  51. package/dist/src/templates/boilerplate/docker/nginx.conf.js.map +1 -0
  52. package/dist/src/templates/boilerplate/docker/switchboard-entrypoint.sh.d.ts +2 -0
  53. package/dist/src/templates/boilerplate/docker/switchboard-entrypoint.sh.d.ts.map +1 -0
  54. package/dist/src/templates/boilerplate/docker/switchboard-entrypoint.sh.js +19 -0
  55. package/dist/src/templates/boilerplate/docker/switchboard-entrypoint.sh.js.map +1 -0
  56. package/dist/src/templates/boilerplate/github/sync-and-publish.yml.d.ts +2 -0
  57. package/dist/src/templates/boilerplate/github/sync-and-publish.yml.d.ts.map +1 -0
  58. package/dist/src/templates/boilerplate/github/sync-and-publish.yml.js +376 -0
  59. package/dist/src/templates/boilerplate/github/sync-and-publish.yml.js.map +1 -0
  60. package/dist/src/templates/boilerplate/package.json.d.ts.map +1 -1
  61. package/dist/src/templates/boilerplate/package.json.js +0 -1
  62. package/dist/src/templates/boilerplate/package.json.js.map +1 -1
  63. package/dist/src/templates/boilerplate/powerhouse.config.json.js +2 -2
  64. package/dist/src/templates/boilerplate/powerhouse.config.json.js.map +1 -1
  65. package/dist/src/templates/cli-docs/docs-from-cli-help.d.ts +8 -0
  66. package/dist/src/templates/cli-docs/docs-from-cli-help.d.ts.map +1 -0
  67. package/dist/src/templates/cli-docs/docs-from-cli-help.js +86 -0
  68. package/dist/src/templates/cli-docs/docs-from-cli-help.js.map +1 -0
  69. package/dist/src/templates/document-editor/editor.d.ts.map +1 -1
  70. package/dist/src/templates/document-editor/editor.js +66 -59
  71. package/dist/src/templates/document-editor/editor.js.map +1 -1
  72. package/dist/src/templates/document-model/gen/modules/error.d.ts.map +1 -1
  73. package/dist/src/templates/document-model/gen/modules/error.js +8 -2
  74. package/dist/src/templates/document-model/gen/modules/error.js.map +1 -1
  75. package/dist/src/templates/drive-editor/editor.d.ts.map +1 -1
  76. package/dist/src/templates/drive-editor/editor.js +3 -1
  77. package/dist/src/templates/drive-editor/editor.js.map +1 -1
  78. package/dist/src/templates/index.d.ts +6 -0
  79. package/dist/src/templates/index.d.ts.map +1 -1
  80. package/dist/src/templates/index.js +6 -0
  81. package/dist/src/templates/index.js.map +1 -1
  82. package/dist/src/utils/constants.d.ts +0 -2
  83. package/dist/src/utils/constants.d.ts.map +1 -1
  84. package/dist/src/utils/constants.js +0 -18
  85. package/dist/src/utils/constants.js.map +1 -1
  86. package/dist/src/utils/format-with-prettier.d.ts.map +1 -1
  87. package/dist/src/utils/format-with-prettier.js +2 -2
  88. package/dist/src/utils/format-with-prettier.js.map +1 -1
  89. package/dist/src/utils/index.d.ts +0 -2
  90. package/dist/src/utils/index.d.ts.map +1 -1
  91. package/dist/src/utils/index.js +0 -2
  92. package/dist/src/utils/index.js.map +1 -1
  93. package/dist/tsconfig.tsbuildinfo +1 -1
  94. package/package.json +15 -14
  95. package/dist/src/file-builders/boilerplate/package-json-versions.test.d.ts +0 -2
  96. package/dist/src/file-builders/boilerplate/package-json-versions.test.d.ts.map +0 -1
  97. package/dist/src/file-builders/boilerplate/package-json-versions.test.js +0 -34
  98. package/dist/src/file-builders/boilerplate/package-json-versions.test.js.map +0 -1
  99. package/dist/src/utils/dependencies.d.ts +0 -12
  100. package/dist/src/utils/dependencies.d.ts.map +0 -1
  101. package/dist/src/utils/dependencies.js +0 -34
  102. package/dist/src/utils/dependencies.js.map +0 -1
  103. package/dist/src/utils/spawn-async.d.ts +0 -5
  104. package/dist/src/utils/spawn-async.d.ts.map +0 -1
  105. package/dist/src/utils/spawn-async.js +0 -29
  106. package/dist/src/utils/spawn-async.js.map +0 -1
@@ -0,0 +1,114 @@
1
+ import { describe, expect, test } from "vitest";
2
+ import { connectEntrypointTemplate } from "../../templates/boilerplate/docker/connect-entrypoint.sh.js";
3
+ import { dockerfileTemplate } from "../../templates/boilerplate/docker/Dockerfile.js";
4
+ import { nginxConfTemplate } from "../../templates/boilerplate/docker/nginx.conf.js";
5
+ import { switchboardEntrypointTemplate } from "../../templates/boilerplate/docker/switchboard-entrypoint.sh.js";
6
+ import { syncAndPublishWorkflowTemplate } from "../../templates/boilerplate/github/sync-and-publish.yml.js";
7
+ describe("CI/CD Templates", () => {
8
+ describe("sync-and-publish.yml", () => {
9
+ test("should be a non-empty string", () => {
10
+ expect(typeof syncAndPublishWorkflowTemplate).toBe("string");
11
+ expect(syncAndPublishWorkflowTemplate.length).toBeGreaterThan(0);
12
+ });
13
+ test("should have correct workflow name", () => {
14
+ expect(syncAndPublishWorkflowTemplate).toContain("name: Sync and Publish");
15
+ });
16
+ test("should contain required jobs", () => {
17
+ expect(syncAndPublishWorkflowTemplate).toContain("prepare:");
18
+ expect(syncAndPublishWorkflowTemplate).toContain("update-and-publish:");
19
+ expect(syncAndPublishWorkflowTemplate).toContain("build-docker:");
20
+ expect(syncAndPublishWorkflowTemplate).toContain("summary:");
21
+ });
22
+ test("should have workflow_dispatch trigger with channel options", () => {
23
+ expect(syncAndPublishWorkflowTemplate).toContain("workflow_dispatch:");
24
+ expect(syncAndPublishWorkflowTemplate).toContain("- dev");
25
+ expect(syncAndPublishWorkflowTemplate).toContain("- staging");
26
+ expect(syncAndPublishWorkflowTemplate).toContain("- latest");
27
+ });
28
+ test("should have repository_dispatch trigger", () => {
29
+ expect(syncAndPublishWorkflowTemplate).toContain("repository_dispatch:");
30
+ expect(syncAndPublishWorkflowTemplate).toContain("powerhouse-release");
31
+ });
32
+ test("should configure Docker and GHCR registries", () => {
33
+ expect(syncAndPublishWorkflowTemplate).toContain("DOCKER_REGISTRY:");
34
+ expect(syncAndPublishWorkflowTemplate).toContain("GHCR_REGISTRY:");
35
+ expect(syncAndPublishWorkflowTemplate).toContain("cr.vetra.io");
36
+ expect(syncAndPublishWorkflowTemplate).toContain("ghcr.io");
37
+ });
38
+ });
39
+ describe("Dockerfile", () => {
40
+ test("should be a non-empty string", () => {
41
+ expect(typeof dockerfileTemplate).toBe("string");
42
+ expect(dockerfileTemplate.length).toBeGreaterThan(0);
43
+ });
44
+ test("should contain base stage", () => {
45
+ expect(dockerfileTemplate).toContain("FROM node:24-alpine AS base");
46
+ });
47
+ test("should contain connect-builder stage", () => {
48
+ expect(dockerfileTemplate).toContain("FROM base AS connect-builder");
49
+ });
50
+ test("should contain connect final stage", () => {
51
+ expect(dockerfileTemplate).toContain("FROM nginx:alpine AS connect");
52
+ });
53
+ test("should contain switchboard final stage", () => {
54
+ expect(dockerfileTemplate).toContain("FROM node:24-alpine AS switchboard");
55
+ });
56
+ test("should configure pnpm", () => {
57
+ expect(dockerfileTemplate).toContain("corepack enable");
58
+ expect(dockerfileTemplate).toContain("PNPM_HOME");
59
+ });
60
+ test("should install ph-cmd", () => {
61
+ expect(dockerfileTemplate).toContain("ph-cmd@$TAG");
62
+ });
63
+ test("should have health checks", () => {
64
+ expect(dockerfileTemplate).toContain("HEALTHCHECK");
65
+ });
66
+ });
67
+ describe("nginx.conf", () => {
68
+ test("should be a non-empty string", () => {
69
+ expect(typeof nginxConfTemplate).toBe("string");
70
+ expect(nginxConfTemplate.length).toBeGreaterThan(0);
71
+ });
72
+ test("should contain health check endpoint", () => {
73
+ expect(nginxConfTemplate).toContain("location /health");
74
+ });
75
+ test("should configure gzip compression", () => {
76
+ expect(nginxConfTemplate).toContain("gzip on");
77
+ });
78
+ test("should use PORT environment variable", () => {
79
+ expect(nginxConfTemplate).toContain("${PORT}");
80
+ });
81
+ test("should configure caching for assets", () => {
82
+ expect(nginxConfTemplate).toContain("Cache-Control");
83
+ expect(nginxConfTemplate).toContain("/assets/");
84
+ });
85
+ });
86
+ describe("connect-entrypoint.sh", () => {
87
+ test("should be a non-empty string", () => {
88
+ expect(typeof connectEntrypointTemplate).toBe("string");
89
+ expect(connectEntrypointTemplate.length).toBeGreaterThan(0);
90
+ });
91
+ test("should start with shebang", () => {
92
+ expect(connectEntrypointTemplate).toMatch(/^#!/);
93
+ });
94
+ test("should use envsubst for nginx config", () => {
95
+ expect(connectEntrypointTemplate).toContain("envsubst");
96
+ });
97
+ test("should start nginx", () => {
98
+ expect(connectEntrypointTemplate).toContain("nginx");
99
+ });
100
+ });
101
+ describe("switchboard-entrypoint.sh", () => {
102
+ test("should be a non-empty string", () => {
103
+ expect(typeof switchboardEntrypointTemplate).toBe("string");
104
+ expect(switchboardEntrypointTemplate.length).toBeGreaterThan(0);
105
+ });
106
+ test("should start with shebang", () => {
107
+ expect(switchboardEntrypointTemplate).toMatch(/^#!/);
108
+ });
109
+ test("should start switchboard", () => {
110
+ expect(switchboardEntrypointTemplate).toContain("ph switchboard");
111
+ });
112
+ });
113
+ });
114
+ //# sourceMappingURL=ci-templates.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci-templates.test.js","sourceRoot":"","sources":["../../../../src/file-builders/boilerplate/ci-templates.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,yBAAyB,EAAE,MAAM,6DAA6D,CAAC;AACxG,OAAO,EAAE,kBAAkB,EAAE,MAAM,kDAAkD,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,kDAAkD,CAAC;AACrF,OAAO,EAAE,6BAA6B,EAAE,MAAM,iEAAiE,CAAC;AAChH,OAAO,EAAE,8BAA8B,EAAE,MAAM,4DAA4D,CAAC;AAE5G,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACxC,MAAM,CAAC,OAAO,8BAA8B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7D,MAAM,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC7C,MAAM,CAAC,8BAA8B,CAAC,CAAC,SAAS,CAC9C,wBAAwB,CACzB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACxC,MAAM,CAAC,8BAA8B,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAC7D,MAAM,CAAC,8BAA8B,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;YACxE,MAAM,CAAC,8BAA8B,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;YAClE,MAAM,CAAC,8BAA8B,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,4DAA4D,EAAE,GAAG,EAAE;YACtE,MAAM,CAAC,8BAA8B,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;YACvE,MAAM,CAAC,8BAA8B,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC1D,MAAM,CAAC,8BAA8B,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAC9D,MAAM,CAAC,8BAA8B,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACnD,MAAM,CAAC,8BAA8B,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;YACzE,MAAM,CAAC,8BAA8B,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACvD,MAAM,CAAC,8BAA8B,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;YACrE,MAAM,CAAC,8BAA8B,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YACnE,MAAM,CAAC,8BAA8B,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YAChE,MAAM,CAAC,8BAA8B,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACxC,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjD,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACrC,MAAM,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAChD,MAAM,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC9C,MAAM,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAClD,MAAM,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAClC,oCAAoC,CACrC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE;YACjC,MAAM,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;YACxD,MAAM,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE;YACjC,MAAM,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACrC,MAAM,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACxC,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAChD,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAChD,MAAM,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC7C,MAAM,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAChD,MAAM,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC/C,MAAM,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;YACrD,MAAM,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACxC,MAAM,CAAC,OAAO,yBAAyB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxD,MAAM,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACrC,MAAM,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAChD,MAAM,CAAC,yBAAyB,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE;YAC9B,MAAM,CAAC,yBAAyB,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACzC,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACxC,MAAM,CAAC,OAAO,6BAA6B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5D,MAAM,CAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACrC,MAAM,CAAC,6BAA6B,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE;YACpC,MAAM,CAAC,6BAA6B,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { packageJsonTemplate } from "@powerhousedao/codegen/templates";
2
- import { makeVersionedDependencies, VERSIONED_DEPENDENCIES, VERSIONED_DEV_DEPENDENCIES, } from "@powerhousedao/codegen/utils";
2
+ import { makeVersionedDependencies, VERSIONED_DEPENDENCIES, VERSIONED_DEV_DEPENDENCIES, } from "@powerhousedao/common/clis";
3
3
  export async function buildBoilerplatePackageJson(args) {
4
4
  const { name, tag, version } = args;
5
5
  const versionedDependencies = await makeVersionedDependencies({
@@ -1 +1 @@
1
- {"version":3,"file":"package.json.js","sourceRoot":"","sources":["../../../../src/file-builders/boilerplate/package.json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,8BAA8B,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,IAIjD;IACC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACpC,MAAM,qBAAqB,GAAG,MAAM,yBAAyB,CAAC;QAC5D,KAAK,EAAE,sBAAsB;QAC7B,GAAG;QACH,OAAO;KACR,CAAC,CAAC;IACH,MAAM,wBAAwB,GAAG,MAAM,yBAAyB,CAAC;QAC/D,KAAK,EAAE,0BAA0B;QACjC,GAAG;QACH,OAAO;KACR,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,mBAAmB,CAClC,IAAI,EACJ,qBAAqB,EACrB,wBAAwB,CACzB,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"package.json.js","sourceRoot":"","sources":["../../../../src/file-builders/boilerplate/package.json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,4BAA4B,CAAC;AAEpC,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,IAIjD;IACC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACpC,MAAM,qBAAqB,GAAG,MAAM,yBAAyB,CAAC;QAC5D,KAAK,EAAE,sBAAsB;QAC7B,GAAG;QACH,OAAO;KACR,CAAC,CAAC;IACH,MAAM,wBAAwB,GAAG,MAAM,yBAAyB,CAAC;QAC/D,KAAK,EAAE,0BAA0B;QACjC,GAAG;QACH,OAAO;KACR,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,mBAAmB,CAClC,IAAI,EACJ,qBAAqB,EACrB,wBAAwB,CACzB,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { CommandEntry, CommandHelpInfo } from "@powerhousedao/codegen";
2
+ export declare function getCommandHelpInfo<TEntry extends CommandEntry>(entry: TEntry): CommandHelpInfo;
3
+ export declare function getCommandsHelpInfo<TEntry extends CommandEntry>(entries: TEntry[]): CommandHelpInfo[];
4
+ export declare function makeCliDocsFromHelp<TEntry extends CommandEntry>(args: {
5
+ cliDescription: string;
6
+ docsTitle: string;
7
+ docsIntroduction: string;
8
+ entries: TEntry[];
9
+ }): string;
10
+ export declare function writeCliDocsMarkdownFile<TEntry extends CommandEntry>(args: {
11
+ filePath: string;
12
+ cliDescription: string;
13
+ docsTitle: string;
14
+ docsIntroduction: string;
15
+ entries: TEntry[];
16
+ }): Promise<void>;
17
+ //# sourceMappingURL=generate-cli-docs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-cli-docs.d.ts","sourceRoot":"","sources":["../../../../src/file-builders/clis/generate-cli-docs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI5E,wBAAgB,kBAAkB,CAAC,MAAM,SAAS,YAAY,EAC5D,KAAK,EAAE,MAAM,GACZ,eAAe,CASjB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,SAAS,YAAY,EAC7D,OAAO,EAAE,MAAM,EAAE,qBAGlB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,SAAS,YAAY,EAAE,IAAI,EAAE;IACrE,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,UAcA;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,SAAS,YAAY,EAC3B,IAAI,EAAE;IACN,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,iBAOA"}
@@ -0,0 +1,36 @@
1
+ import { docsFromCliHelpTemplate } from "@powerhousedao/codegen/templates";
2
+ import { writeFile } from "node:fs/promises";
3
+ import { stripVTControlCharacters } from "node:util";
4
+ export function getCommandHelpInfo(entry) {
5
+ const name = entry.name;
6
+ const description = entry.command.description ?? "";
7
+ const helpTopics = entry.command.helpTopics?.() ?? [];
8
+ return {
9
+ name,
10
+ description,
11
+ helpTopics,
12
+ };
13
+ }
14
+ export function getCommandsHelpInfo(entries) {
15
+ return entries.map(getCommandHelpInfo);
16
+ }
17
+ export function makeCliDocsFromHelp(args) {
18
+ const { cliDescription, docsIntroduction, docsTitle, entries } = args;
19
+ const commandsHelpInfo = getCommandsHelpInfo(entries);
20
+ const template = docsFromCliHelpTemplate({
21
+ cliDescription,
22
+ docsIntroduction,
23
+ docsTitle,
24
+ commandsHelpInfo,
25
+ });
26
+ const templateWithAnsiEscapesRemoved = stripVTControlCharacters(template);
27
+ return templateWithAnsiEscapesRemoved;
28
+ }
29
+ export async function writeCliDocsMarkdownFile(args) {
30
+ const { filePath, ...restArgs } = args;
31
+ const markdownFileContent = makeCliDocsFromHelp(restArgs);
32
+ await writeFile(filePath, markdownFileContent, {
33
+ encoding: "utf-8",
34
+ });
35
+ }
36
+ //# sourceMappingURL=generate-cli-docs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-cli-docs.js","sourceRoot":"","sources":["../../../../src/file-builders/clis/generate-cli-docs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACrD,MAAM,UAAU,kBAAkB,CAChC,KAAa;IAEb,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;IACpD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC;IACtD,OAAO;QACL,IAAI;QACJ,WAAW;QACX,UAAU;KACX,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,OAAiB;IAEjB,OAAO,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAA8B,IAKhE;IACC,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACtE,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAEtD,MAAM,QAAQ,GAAG,uBAAuB,CAAC;QACvC,cAAc;QACd,gBAAgB;QAChB,SAAS;QACT,gBAAgB;KACjB,CAAC,CAAC;IAEH,MAAM,8BAA8B,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAE1E,OAAO,8BAA8B,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAE5C,IAMD;IACC,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAC;IACvC,MAAM,mBAAmB,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAE1D,MAAM,SAAS,CAAC,QAAQ,EAAE,mBAAmB,EAAE;QAC7C,QAAQ,EAAE,OAAO;KAClB,CAAC,CAAC;AACL,CAAC"}
@@ -7,4 +7,5 @@ export * from "./index-files.js";
7
7
  export * from "./module-files.js";
8
8
  export * from "./subgraphs.js";
9
9
  export type * from "./types.js";
10
+ export * from "./clis/generate-cli-docs.js";
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/file-builders/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oCAAoC,CAAC;AACnD,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,mBAAmB,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/file-builders/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oCAAoC,CAAC;AACnD,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,mBAAmB,YAAY,CAAC;AAChC,cAAc,6BAA6B,CAAC"}
@@ -6,4 +6,5 @@ export * from "./editor-common.js";
6
6
  export * from "./index-files.js";
7
7
  export * from "./module-files.js";
8
8
  export * from "./subgraphs.js";
9
+ export * from "./clis/generate-cli-docs.js";
9
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/file-builders/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oCAAoC,CAAC;AACnD,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/file-builders/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oCAAoC,CAAC;AACnD,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,6BAA6B,CAAC"}
@@ -63,4 +63,22 @@ export type DocumentModelFileMakerArgs = DocumentModelVariableNames & GenerateDo
63
63
  reducersDirPath: string;
64
64
  fileExtension: string;
65
65
  };
66
+ export type CommandEntry = {
67
+ name: string;
68
+ command: {
69
+ description?: string;
70
+ helpTopics?: () => HelpTopic[];
71
+ };
72
+ };
73
+ export type HelpTopic = {
74
+ category: string;
75
+ usage: string;
76
+ description: string;
77
+ defaults: string[];
78
+ };
79
+ export type CommandHelpInfo = {
80
+ name: string;
81
+ description: string;
82
+ helpTopics: HelpTopic[];
83
+ };
66
84
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/file-builders/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6CAA6C,EAC7C,6BAA6B,EAC7B,sBAAsB,EACvB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EACV,wBAAwB,EACxB,mBAAmB,EACnB,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,MAAM,6BAA6B,GAAG;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,uBAAuB,EAAE,MAAM,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,eAAe,EAAE,MAAM,CAAC;IACxB,6BAA6B,EAAE,MAAM,CAAC;IACtC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uBAAuB,EAAE,MAAM,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAE5E,MAAM,MAAM,0BAA0B,GAAG,UAAU,CACjD,OAAO,6BAA6B,CACrC,CAAC;AAEF,MAAM,MAAM,0CAA0C,GAAG,UAAU,CACjE,OAAO,6CAA6C,CACrD,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,0BAA0B,GAClE,0BAA0B,CAAC;AAE7B,MAAM,MAAM,qCAAqC,GAAG;IAClD,MAAM,EAAE,mBAAmB,CAAC;CAC7B,GAAG,2BAA2B,GAC7B,0CAA0C,CAAC;AAE7C,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,2BAA2B,EAAE,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,wBAAwB,CAAC;IAC7C,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,0BAA0B,GACjE,yBAAyB,GAAG;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,OAAO,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,2BAA2B,EAAE,MAAM,CAAC;IACpC,2BAA2B,EAAE,MAAM,CAAC;IACpC,8BAA8B,EAAE,MAAM,CAAC;IACvC,uCAAuC,EAAE,MAAM,CAAC;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/file-builders/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6CAA6C,EAC7C,6BAA6B,EAC7B,sBAAsB,EACvB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EACV,wBAAwB,EACxB,mBAAmB,EACnB,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,MAAM,6BAA6B,GAAG;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,uBAAuB,EAAE,MAAM,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,eAAe,EAAE,MAAM,CAAC;IACxB,6BAA6B,EAAE,MAAM,CAAC;IACtC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uBAAuB,EAAE,MAAM,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAE5E,MAAM,MAAM,0BAA0B,GAAG,UAAU,CACjD,OAAO,6BAA6B,CACrC,CAAC;AAEF,MAAM,MAAM,0CAA0C,GAAG,UAAU,CACjE,OAAO,6CAA6C,CACrD,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,0BAA0B,GAClE,0BAA0B,CAAC;AAE7B,MAAM,MAAM,qCAAqC,GAAG;IAClD,MAAM,EAAE,mBAAmB,CAAC;CAC7B,GAAG,2BAA2B,GAC7B,0CAA0C,CAAC;AAE7C,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,2BAA2B,EAAE,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,wBAAwB,CAAC;IAC7C,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,0BAA0B,GACjE,yBAAyB,GAAG;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,OAAO,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,2BAA2B,EAAE,MAAM,CAAC;IACpC,2BAA2B,EAAE,MAAM,CAAC;IACpC,8BAA8B,EAAE,MAAM,CAAC;IACvC,uCAAuC,EAAE,MAAM,CAAC;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEJ,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE;QACP,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,SAAS,EAAE,CAAC;KAChC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AGENTS.md.d.ts","sourceRoot":"","sources":["../../../../src/templates/boilerplate/AGENTS.md.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,QAqZtB,CAAC"}
1
+ {"version":3,"file":"AGENTS.md.d.ts","sourceRoot":"","sources":["../../../../src/templates/boilerplate/AGENTS.md.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,QA8btB,CAAC"}
@@ -264,6 +264,47 @@ throw new MissingIdError("message");
264
264
  - **InvalidInputError**: Business logic violations
265
265
  - **PermissionDeniedError**: Access control violations
266
266
 
267
+ #### Testing Reducer Errors
268
+
269
+ **CRITICAL**: When a reducer throws an error, the operation is **still added** to the document but with an \`.error\` property containing the error message as a string.
270
+
271
+ **DO NOT** use \`.toThrow()\` or \`expect(() => ...).toThrow()\` patterns when testing reducer errors.
272
+
273
+ ##### How Errors Work in Operations
274
+
275
+ 1. The reducer throws an error (e.g., \`throw new InvalidNameError("message")\`)
276
+ 2. The operation is still recorded in \`document.operations.global\` (or \`.local\`)
277
+ 3. The error message is stored in \`operation.error\` as a string
278
+ 4. **The state is NOT mutated** - it remains unchanged from before the operation
279
+
280
+ ##### Accessing the Correct Operation Index
281
+
282
+ **CRITICAL**: You must access the correct operation index. The index corresponds to how many operations were dispatched before it.
283
+
284
+ - If this is the **first** operation dispatched, access \`[0]\`
285
+ - If 3 operations were dispatched **before** the failing one, access \`[3]\`
286
+
287
+ ##### Example
288
+
289
+ ~~~typescript
290
+ it("should return error and not mutate state", () => {
291
+ const document = utils.createDocument();
292
+ const initialState = document.state.global.name;
293
+
294
+ const updatedDocument = reducer(document, setName({ name: "invalid" }));
295
+
296
+ // Access the correct operation index (0 = first operation)
297
+ expect(updatedDocument.operations.global[0].error).toBe(
298
+ "Name is not allowed",
299
+ );
300
+ // State remains unchanged
301
+ expect(updatedDocument.state.global.name).toBe(initialState);
302
+ });
303
+
304
+ // ❌ WRONG - Never use toThrow()
305
+ expect(() => reducer(document, setName({ name: "invalid" }))).toThrow();
306
+ ~~~
307
+
267
308
  ## Document Model Structure
268
309
 
269
310
  ### Core Components
@@ -1 +1 @@
1
- {"version":3,"file":"AGENTS.md.js","sourceRoot":"","sources":["../../../../src/templates/boilerplate/AGENTS.md.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAEhC,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqZ/B,CAAC,GAAG,CAAC"}
1
+ {"version":3,"file":"AGENTS.md.js","sourceRoot":"","sources":["../../../../src/templates/boilerplate/AGENTS.md.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAEhC,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8b/B,CAAC,GAAG,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare const claudeTemplate: string;
1
+ export { agentsTemplate as claudeTemplate } from "./AGENTS.md.js";
2
2
  //# sourceMappingURL=CLAUDE.md.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CLAUDE.md.d.ts","sourceRoot":"","sources":["../../../../src/templates/boilerplate/CLAUDE.md.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,QAqZtB,CAAC"}
1
+ {"version":3,"file":"CLAUDE.md.d.ts","sourceRoot":"","sources":["../../../../src/templates/boilerplate/CLAUDE.md.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,IAAI,cAAc,EAAE,MAAM,gBAAgB,CAAC"}