@powerhousedao/codegen 6.0.0-dev.2 → 6.0.0-dev.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/editor.esm.t +3 -1
- package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/editor.esm.t +1 -1
- package/dist/src/codegen/__tests__/generate-doc-model.test.js +1 -0
- package/dist/src/codegen/__tests__/generate-doc-model.test.js.map +1 -1
- package/dist/src/codegen/__tests__/generate-drive-editor.test.js +35 -10
- package/dist/src/codegen/__tests__/generate-drive-editor.test.js.map +1 -1
- package/dist/src/codegen/__tests__/generate-editor.test.js +13 -9
- package/dist/src/codegen/__tests__/generate-editor.test.js.map +1 -1
- package/dist/src/codegen/generate.d.ts +10 -10
- package/dist/src/codegen/generate.d.ts.map +1 -1
- package/dist/src/codegen/generate.js +21 -23
- package/dist/src/codegen/generate.js.map +1 -1
- package/dist/src/create-lib/create-project.d.ts.map +1 -1
- package/dist/src/create-lib/create-project.js +9 -1
- package/dist/src/create-lib/create-project.js.map +1 -1
- package/dist/src/file-builders/boilerplate/ci-templates.test.d.ts +2 -0
- package/dist/src/file-builders/boilerplate/ci-templates.test.d.ts.map +1 -0
- package/dist/src/file-builders/boilerplate/ci-templates.test.js +114 -0
- package/dist/src/file-builders/boilerplate/ci-templates.test.js.map +1 -0
- package/dist/src/file-builders/clis/generate-cli-docs.d.ts +17 -0
- package/dist/src/file-builders/clis/generate-cli-docs.d.ts.map +1 -0
- package/dist/src/file-builders/clis/generate-cli-docs.js +36 -0
- package/dist/src/file-builders/clis/generate-cli-docs.js.map +1 -0
- package/dist/src/file-builders/index.d.ts +1 -0
- package/dist/src/file-builders/index.d.ts.map +1 -1
- package/dist/src/file-builders/index.js +1 -0
- package/dist/src/file-builders/index.js.map +1 -1
- package/dist/src/file-builders/types.d.ts +18 -0
- package/dist/src/file-builders/types.d.ts.map +1 -1
- package/dist/src/templates/boilerplate/AGENTS.md.d.ts.map +1 -1
- package/dist/src/templates/boilerplate/AGENTS.md.js +41 -0
- package/dist/src/templates/boilerplate/AGENTS.md.js.map +1 -1
- package/dist/src/templates/boilerplate/CLAUDE.md.d.ts +1 -1
- package/dist/src/templates/boilerplate/CLAUDE.md.d.ts.map +1 -1
- package/dist/src/templates/boilerplate/CLAUDE.md.js +1 -407
- package/dist/src/templates/boilerplate/CLAUDE.md.js.map +1 -1
- package/dist/src/templates/boilerplate/docker/Dockerfile.d.ts +2 -0
- package/dist/src/templates/boilerplate/docker/Dockerfile.d.ts.map +1 -0
- package/dist/src/templates/boilerplate/docker/Dockerfile.js +144 -0
- package/dist/src/templates/boilerplate/docker/Dockerfile.js.map +1 -0
- package/dist/src/templates/boilerplate/docker/connect-entrypoint.sh.d.ts +2 -0
- package/dist/src/templates/boilerplate/docker/connect-entrypoint.sh.d.ts.map +1 -0
- package/dist/src/templates/boilerplate/docker/connect-entrypoint.sh.js +18 -0
- package/dist/src/templates/boilerplate/docker/connect-entrypoint.sh.js.map +1 -0
- package/dist/src/templates/boilerplate/docker/nginx.conf.d.ts +2 -0
- package/dist/src/templates/boilerplate/docker/nginx.conf.d.ts.map +1 -0
- package/dist/src/templates/boilerplate/docker/nginx.conf.js +79 -0
- package/dist/src/templates/boilerplate/docker/nginx.conf.js.map +1 -0
- package/dist/src/templates/boilerplate/docker/switchboard-entrypoint.sh.d.ts +2 -0
- package/dist/src/templates/boilerplate/docker/switchboard-entrypoint.sh.d.ts.map +1 -0
- package/dist/src/templates/boilerplate/docker/switchboard-entrypoint.sh.js +19 -0
- package/dist/src/templates/boilerplate/docker/switchboard-entrypoint.sh.js.map +1 -0
- package/dist/src/templates/boilerplate/github/sync-and-publish.yml.d.ts +2 -0
- package/dist/src/templates/boilerplate/github/sync-and-publish.yml.d.ts.map +1 -0
- package/dist/src/templates/boilerplate/github/sync-and-publish.yml.js +376 -0
- package/dist/src/templates/boilerplate/github/sync-and-publish.yml.js.map +1 -0
- package/dist/src/templates/boilerplate/package.json.d.ts.map +1 -1
- package/dist/src/templates/boilerplate/package.json.js +0 -1
- package/dist/src/templates/boilerplate/package.json.js.map +1 -1
- package/dist/src/templates/cli-docs/docs-from-cli-help.d.ts +8 -0
- package/dist/src/templates/cli-docs/docs-from-cli-help.d.ts.map +1 -0
- package/dist/src/templates/cli-docs/docs-from-cli-help.js +86 -0
- package/dist/src/templates/cli-docs/docs-from-cli-help.js.map +1 -0
- package/dist/src/templates/document-editor/editor.d.ts.map +1 -1
- package/dist/src/templates/document-editor/editor.js +66 -59
- package/dist/src/templates/document-editor/editor.js.map +1 -1
- package/dist/src/templates/drive-editor/editor.d.ts.map +1 -1
- package/dist/src/templates/drive-editor/editor.js +3 -1
- package/dist/src/templates/drive-editor/editor.js.map +1 -1
- package/dist/src/templates/index.d.ts +6 -0
- package/dist/src/templates/index.d.ts.map +1 -1
- package/dist/src/templates/index.js +6 -0
- package/dist/src/templates/index.js.map +1 -1
- package/dist/src/utils/dependencies.d.ts +21 -0
- package/dist/src/utils/dependencies.d.ts.map +1 -1
- package/dist/src/utils/dependencies.js +65 -2
- package/dist/src/utils/dependencies.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +9 -8
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { describe, expect, test } from "vitest";
|
|
2
|
+
import { syncAndPublishWorkflowTemplate } from "../../templates/boilerplate/github/sync-and-publish.yml.js";
|
|
3
|
+
import { dockerfileTemplate } from "../../templates/boilerplate/docker/Dockerfile.js";
|
|
4
|
+
import { nginxConfTemplate } from "../../templates/boilerplate/docker/nginx.conf.js";
|
|
5
|
+
import { connectEntrypointTemplate } from "../../templates/boilerplate/docker/connect-entrypoint.sh.js";
|
|
6
|
+
import { switchboardEntrypointTemplate } from "../../templates/boilerplate/docker/switchboard-entrypoint.sh.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:22-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:22-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":"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"}
|
|
@@ -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"}
|
|
@@ -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"}
|
|
@@ -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":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AGENTS.md.d.ts","sourceRoot":"","sources":["../../../../src/templates/boilerplate/AGENTS.md.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,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
|
|
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
|
|
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":"
|
|
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"}
|