@shivaedev/create-app 0.23.0 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +35 -0
- package/dist/cli.js +96 -89
- package/dist/packTemplate.d.ts.map +1 -1
- package/dist/packTemplate.js +10 -2
- package/dist/packTemplate.js.map +1 -1
- package/dist/template.d.ts +1 -1
- package/dist/template.d.ts.map +1 -1
- package/dist/template.js +9 -5
- package/dist/template.js.map +1 -1
- package/package.json +7 -7
- package/src/packTemplate.ts +10 -2
- package/src/template.ts +12 -5
- package/template.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packTemplate.d.ts","sourceRoot":"","sources":["../src/packTemplate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAExE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAcpD,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"packTemplate.d.ts","sourceRoot":"","sources":["../src/packTemplate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAExE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAcpD,eAAO,MAAM,YAAY,oJAsCvB,CAAC"}
|
package/dist/packTemplate.js
CHANGED
|
@@ -3,13 +3,13 @@ import { basename, join } from "node:path";
|
|
|
3
3
|
import { Effect, FileSystem, Schema } from "effect";
|
|
4
4
|
import { MIGRATION_FILE_PATTERN } from "@shivaedev/sql/migrationConvention.ts";
|
|
5
5
|
import { CreateAppError } from "#CreateAppError.ts";
|
|
6
|
-
import { prepareFile, Versions } from "#template.ts";
|
|
6
|
+
import { prepareFile, prepareManifest, Versions } from "#template.ts";
|
|
7
7
|
const appPaths = new Map([
|
|
8
8
|
["app-agents.md", "AGENTS.md"],
|
|
9
9
|
["app-readme.md", "README.md"],
|
|
10
10
|
["pnpm-workspace.copy.yaml", "pnpm-workspace.yaml"],
|
|
11
11
|
]);
|
|
12
|
-
const excluded = new Set(["node_modules", "dist", "coverage", "pnpm-lock.yaml", ".git"]);
|
|
12
|
+
const excluded = new Set(["node_modules", "dist", "coverage", ".browser-check", "pnpm-lock.yaml", ".git"]);
|
|
13
13
|
const rootExcluded = new Set(["published-versions.json", "AGENTS.md", "CLAUDE.md", "README.md", "quality.config.ts"]);
|
|
14
14
|
function included(path) {
|
|
15
15
|
return !(rootExcluded.has(path) || excluded.has(basename(path))) && (!basename(path).startsWith(".env") || basename(path) === ".env.example");
|
|
@@ -42,6 +42,14 @@ export const packTemplate = Effect.fn("CreateApp.packTemplate")(function* (start
|
|
|
42
42
|
}
|
|
43
43
|
});
|
|
44
44
|
yield* visit("");
|
|
45
|
+
const manifest = entries.find((entry) => entry.path === "package.json");
|
|
46
|
+
if (manifest !== undefined) {
|
|
47
|
+
const minimal = yield* Effect.try({
|
|
48
|
+
catch: (cause) => new CreateAppError({ message: String(cause) }),
|
|
49
|
+
try: () => prepareManifest(Buffer.from(manifest.content, "base64").toString(), versions, true),
|
|
50
|
+
});
|
|
51
|
+
entries.push({ content: Buffer.from(minimal).toString("base64"), path: "package.minimal.json" });
|
|
52
|
+
}
|
|
45
53
|
yield* fs.writeFileString(output, `${JSON.stringify(entries)}\n`);
|
|
46
54
|
});
|
|
47
55
|
//# sourceMappingURL=packTemplate.js.map
|
package/dist/packTemplate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packTemplate.js","sourceRoot":"","sources":["../src/packTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAsB,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAiB,QAAQ,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"packTemplate.js","sourceRoot":"","sources":["../src/packTemplate.ts"],"names":[],"mappings":"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"}
|
package/dist/template.d.ts
CHANGED
|
@@ -14,6 +14,6 @@ export declare function appTemplate(template: Template, minimal?: boolean): Temp
|
|
|
14
14
|
export declare function registryDependencies(dependencies: Readonly<Record<string, string>>, versions: Readonly<Record<string, string>>): {
|
|
15
15
|
[k: string]: string;
|
|
16
16
|
};
|
|
17
|
-
export declare function prepareManifest(source: string, versions: Readonly<Record<string, string
|
|
17
|
+
export declare function prepareManifest(source: string, versions: Readonly<Record<string, string>>, minimal?: boolean): string;
|
|
18
18
|
export declare function prepareFile(path: string, content: Buffer, versions: Readonly<Record<string, string>>): Buffer<ArrayBufferLike>;
|
|
19
19
|
//# sourceMappingURL=template.d.ts.map
|
package/dist/template.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,eAAO,MAAM,QAAQ,8CAA8C,CAAC;AACpE,eAAO,MAAM,QAAQ;;;GAA+E,CAAC;AACrG,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAC;AAC5C,eAAO,MAAM,cAAc;;;GAA4D,CAAC;AAExF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,UAAQ,GAAG,QAAQ,
|
|
1
|
+
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,eAAO,MAAM,QAAQ,8CAA8C,CAAC;AACpE,eAAO,MAAM,QAAQ;;;GAA+E,CAAC;AACrG,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAC;AAC5C,eAAO,MAAM,cAAc;;;GAA4D,CAAC;AAExF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,UAAQ,GAAG,QAAQ,CAyBzE;AA6BD,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;EAa9H;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,UAAQ,UAa1G;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,2BAWpG"}
|
package/dist/template.js
CHANGED
|
@@ -5,24 +5,28 @@ export const Versions = Schema.Record(Schema.String, Schema.String);
|
|
|
5
5
|
export const Template = Schema.Array(Schema.Struct({ content: Schema.String, path: Schema.String }));
|
|
6
6
|
export const decodeTemplate = Schema.decodeUnknownSync(Schema.fromJsonString(Template));
|
|
7
7
|
export function appTemplate(template, minimal = false) {
|
|
8
|
+
const minimalManifest = template.find((entry) => entry.path === "package.minimal.json");
|
|
8
9
|
const minimalBaseline = template.find((entry) => entry.path === "quality-baseline.minimal.jsonl");
|
|
9
|
-
const files = template.filter((entry) =>
|
|
10
|
+
const files = template.filter((entry) => !["quality-baseline.minimal.jsonl", "package.minimal.json"].includes(entry.path));
|
|
10
11
|
if (!minimal) {
|
|
11
12
|
return files;
|
|
12
13
|
}
|
|
13
14
|
return files
|
|
14
15
|
.filter((entry) => !entry.path.startsWith("src/modules/notes/"))
|
|
15
16
|
.map((entry) => {
|
|
17
|
+
if (entry.path === "package.json" && minimalManifest !== undefined) {
|
|
18
|
+
return { ...entry, content: minimalManifest.content };
|
|
19
|
+
}
|
|
16
20
|
if (entry.path === "quality-baseline.jsonl" && minimalBaseline !== undefined) {
|
|
17
21
|
return { ...entry, content: minimalBaseline.content };
|
|
18
22
|
}
|
|
19
|
-
if (!["src/server/modules.ts", "src/server/workerModules.ts", "src/client/modules.ts"].includes(entry.path)) {
|
|
23
|
+
if (!["src/modules.ts", "src/server/modules.ts", "src/server/workerModules.ts", "src/client/modules.ts"].includes(entry.path)) {
|
|
20
24
|
return entry;
|
|
21
25
|
}
|
|
22
26
|
const source = Buffer.from(entry.content, "base64")
|
|
23
27
|
.toString()
|
|
24
28
|
.replace(/^import .* from "#modules\/notes\/.*";\n/gmu, "")
|
|
25
|
-
.replace(/,?\s*\b(?:notesRegistration|notesWorker)\b/gu, "");
|
|
29
|
+
.replace(/,?\s*\b(?:noteQueue|notesModule|notesRegistration|notesWorker)\b/gu, "");
|
|
26
30
|
return { ...entry, content: Buffer.from(source).toString("base64") };
|
|
27
31
|
});
|
|
28
32
|
}
|
|
@@ -64,12 +68,12 @@ export function registryDependencies(dependencies, versions) {
|
|
|
64
68
|
return [name, published];
|
|
65
69
|
}));
|
|
66
70
|
}
|
|
67
|
-
export function prepareManifest(source, versions) {
|
|
71
|
+
export function prepareManifest(source, versions, minimal = false) {
|
|
68
72
|
const manifest = decodeManifest(source);
|
|
69
73
|
const { "check:published": _check, ...scripts } = manifest.scripts;
|
|
70
74
|
const prepared = {
|
|
71
75
|
...manifest,
|
|
72
|
-
dependencies: registryDependencies(manifest.dependencies, versions),
|
|
76
|
+
dependencies: registryDependencies(Object.fromEntries(Object.entries(manifest.dependencies).filter(([name]) => !minimal || name !== "@tanstack/react-table")), versions),
|
|
73
77
|
devDependencies: registryDependencies(manifest.devDependencies, versions),
|
|
74
78
|
scripts: Object.fromEntries(Object.entries(scripts).map(([name, script]) => [name, script.replaceAll("--conditions=source ", "")])),
|
|
75
79
|
};
|
package/dist/template.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.js","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AACpE,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAErG,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;AAExF,MAAM,UAAU,WAAW,CAAC,QAAkB,EAAE,OAAO,GAAG,KAAK;IAC9D,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,gCAAgC,CAAC,CAAC;IAClG,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AACpE,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAErG,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;AAExF,MAAM,UAAU,WAAW,CAAC,QAAkB,EAAE,OAAO,GAAG,KAAK;IAC9D,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,sBAAsB,CAAC,CAAC;IACxF,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,gCAAgC,CAAC,CAAC;IAClG,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,gCAAgC,EAAE,sBAAsB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3H,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,KAAK,CAAC;IACd,CAAC;IACD,OAAO,KAAK;SACV,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;SAC/D,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACd,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YACpE,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,EAAE,CAAC;QACvD,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,wBAAwB,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAC9E,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,EAAE,CAAC;QACvD,CAAC;QACD,IAAI,CAAC,CAAC,gBAAgB,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,uBAAuB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/H,OAAO,KAAK,CAAC;QACd,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC;aACjD,QAAQ,EAAE;aACV,OAAO,CAAC,6CAA6C,EAAE,EAAE,CAAC;aAC1D,OAAO,CAAC,oEAAoE,EAAE,EAAE,CAAC,CAAC;QACpF,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9B,YAAY,EAAE,QAAQ;IACtB,eAAe,EAAE,QAAQ;IACzB,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,QAAQ;IACjB,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,cAAc,EAAE,MAAM,CAAC,MAAM;IAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;IACvB,OAAO,EAAE,QAAQ;IACjB,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM;CACtB,CAAC,CAAC;AACH,MAAM,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjF,4GAA4G;AAC5G,MAAM,aAAa,GAAG;IACrB,MAAM;IACN,SAAS;IACT,SAAS;IACT,MAAM;IACN,SAAS;IACT,SAAS;IACT,cAAc;IACd,iBAAiB;IACjB,gBAAgB;IAChB,SAAS;CACoD,CAAC;AAE/D,MAAM,UAAU,oBAAoB,CAAC,YAA8C,EAAE,QAA0C;IAC9H,OAAO,MAAM,CAAC,WAAW,CACxB,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE;QACpD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACvC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACxB,CAAC;QACD,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACjF,MAAM,IAAI,cAAc,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI,8DAA8D,EAAE,CAAC,CAAC;QAC9G,CAAC;QACD,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC1B,CAAC,CAAC,CACF,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,QAA0C,EAAE,OAAO,GAAG,KAAK;IAC1G,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC;IACnE,MAAM,QAAQ,GAAG;QAChB,GAAG,QAAQ;QACX,YAAY,EAAE,oBAAoB,CACjC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI,KAAK,uBAAuB,CAAC,CAAC,EAC1H,QAAQ,CACR;QACD,eAAe,EAAE,oBAAoB,CAAC,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC;QACzE,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;KACnI,CAAC;IACF,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;AAChH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,OAAe,EAAE,QAA0C;IACpG,IAAI,CAAC,kCAAkC,EAAE,iCAAiC,EAAE,uCAAuC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACrI,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;QAC7B,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,CAAC,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,mBAAmB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACjG,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;IACpG,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shivaedev/create-app",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.24.0",
|
|
4
4
|
"description": "Create and install a Platform application from the maintained starter",
|
|
5
5
|
"homepage": "https://github.com/ShivaeDev/platform/tree/main/packages/create-app#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -58,15 +58,15 @@
|
|
|
58
58
|
"README.md"
|
|
59
59
|
],
|
|
60
60
|
"dependencies": {
|
|
61
|
-
"@shivaedev/sql": "0.
|
|
61
|
+
"@shivaedev/sql": "0.25.0"
|
|
62
62
|
},
|
|
63
63
|
"devDependencies": {
|
|
64
|
-
"@effect/platform-node": "4.0.
|
|
65
|
-
"@effect/platform-node-shared": "4.0.
|
|
66
|
-
"@shivaedev/quality": "0.
|
|
67
|
-
"@shivaedev/test-story": "0.
|
|
64
|
+
"@effect/platform-node": "4.0.6",
|
|
65
|
+
"@effect/platform-node-shared": "4.0.6",
|
|
66
|
+
"@shivaedev/quality": "0.45.0",
|
|
67
|
+
"@shivaedev/test-story": "0.24.0",
|
|
68
68
|
"@types/node": "24.19.2",
|
|
69
|
-
"effect": "4.0.
|
|
69
|
+
"effect": "4.0.6",
|
|
70
70
|
"esbuild": "0.28.2",
|
|
71
71
|
"typescript": "7.0.2",
|
|
72
72
|
"vitest": "5.0.5"
|
package/src/packTemplate.ts
CHANGED
|
@@ -3,14 +3,14 @@ import { basename, join } from "node:path";
|
|
|
3
3
|
import { Effect, FileSystem, type PlatformError, Schema } from "effect";
|
|
4
4
|
import { MIGRATION_FILE_PATTERN } from "@shivaedev/sql/migrationConvention.ts";
|
|
5
5
|
import { CreateAppError } from "#CreateAppError.ts";
|
|
6
|
-
import { prepareFile, type Template, Versions } from "#template.ts";
|
|
6
|
+
import { prepareFile, prepareManifest, type Template, Versions } from "#template.ts";
|
|
7
7
|
|
|
8
8
|
const appPaths = new Map([
|
|
9
9
|
["app-agents.md", "AGENTS.md"],
|
|
10
10
|
["app-readme.md", "README.md"],
|
|
11
11
|
["pnpm-workspace.copy.yaml", "pnpm-workspace.yaml"],
|
|
12
12
|
]);
|
|
13
|
-
const excluded = new Set(["node_modules", "dist", "coverage", "pnpm-lock.yaml", ".git"]);
|
|
13
|
+
const excluded = new Set(["node_modules", "dist", "coverage", ".browser-check", "pnpm-lock.yaml", ".git"]);
|
|
14
14
|
const rootExcluded = new Set(["published-versions.json", "AGENTS.md", "CLAUDE.md", "README.md", "quality.config.ts"]);
|
|
15
15
|
function included(path: string) {
|
|
16
16
|
return !(rootExcluded.has(path) || excluded.has(basename(path))) && (!basename(path).startsWith(".env") || basename(path) === ".env.example");
|
|
@@ -45,5 +45,13 @@ export const packTemplate = Effect.fn("CreateApp.packTemplate")(function* (start
|
|
|
45
45
|
}
|
|
46
46
|
});
|
|
47
47
|
yield* visit("");
|
|
48
|
+
const manifest = entries.find((entry) => entry.path === "package.json");
|
|
49
|
+
if (manifest !== undefined) {
|
|
50
|
+
const minimal = yield* Effect.try({
|
|
51
|
+
catch: (cause) => new CreateAppError({ message: String(cause) }),
|
|
52
|
+
try: () => prepareManifest(Buffer.from(manifest.content, "base64").toString(), versions, true),
|
|
53
|
+
});
|
|
54
|
+
entries.push({ content: Buffer.from(minimal).toString("base64"), path: "package.minimal.json" });
|
|
55
|
+
}
|
|
48
56
|
yield* fs.writeFileString(output, `${JSON.stringify(entries)}\n`);
|
|
49
57
|
});
|
package/src/template.ts
CHANGED
|
@@ -8,24 +8,28 @@ export type Template = typeof Template.Type;
|
|
|
8
8
|
export const decodeTemplate = Schema.decodeUnknownSync(Schema.fromJsonString(Template));
|
|
9
9
|
|
|
10
10
|
export function appTemplate(template: Template, minimal = false): Template {
|
|
11
|
+
const minimalManifest = template.find((entry) => entry.path === "package.minimal.json");
|
|
11
12
|
const minimalBaseline = template.find((entry) => entry.path === "quality-baseline.minimal.jsonl");
|
|
12
|
-
const files = template.filter((entry) =>
|
|
13
|
+
const files = template.filter((entry) => !["quality-baseline.minimal.jsonl", "package.minimal.json"].includes(entry.path));
|
|
13
14
|
if (!minimal) {
|
|
14
15
|
return files;
|
|
15
16
|
}
|
|
16
17
|
return files
|
|
17
18
|
.filter((entry) => !entry.path.startsWith("src/modules/notes/"))
|
|
18
19
|
.map((entry) => {
|
|
20
|
+
if (entry.path === "package.json" && minimalManifest !== undefined) {
|
|
21
|
+
return { ...entry, content: minimalManifest.content };
|
|
22
|
+
}
|
|
19
23
|
if (entry.path === "quality-baseline.jsonl" && minimalBaseline !== undefined) {
|
|
20
24
|
return { ...entry, content: minimalBaseline.content };
|
|
21
25
|
}
|
|
22
|
-
if (!["src/server/modules.ts", "src/server/workerModules.ts", "src/client/modules.ts"].includes(entry.path)) {
|
|
26
|
+
if (!["src/modules.ts", "src/server/modules.ts", "src/server/workerModules.ts", "src/client/modules.ts"].includes(entry.path)) {
|
|
23
27
|
return entry;
|
|
24
28
|
}
|
|
25
29
|
const source = Buffer.from(entry.content, "base64")
|
|
26
30
|
.toString()
|
|
27
31
|
.replace(/^import .* from "#modules\/notes\/.*";\n/gmu, "")
|
|
28
|
-
.replace(/,?\s*\b(?:notesRegistration|notesWorker)\b/gu, "");
|
|
32
|
+
.replace(/,?\s*\b(?:noteQueue|notesModule|notesRegistration|notesWorker)\b/gu, "");
|
|
29
33
|
return { ...entry, content: Buffer.from(source).toString("base64") };
|
|
30
34
|
});
|
|
31
35
|
}
|
|
@@ -72,12 +76,15 @@ export function registryDependencies(dependencies: Readonly<Record<string, strin
|
|
|
72
76
|
);
|
|
73
77
|
}
|
|
74
78
|
|
|
75
|
-
export function prepareManifest(source: string, versions: Readonly<Record<string, string
|
|
79
|
+
export function prepareManifest(source: string, versions: Readonly<Record<string, string>>, minimal = false) {
|
|
76
80
|
const manifest = decodeManifest(source);
|
|
77
81
|
const { "check:published": _check, ...scripts } = manifest.scripts;
|
|
78
82
|
const prepared = {
|
|
79
83
|
...manifest,
|
|
80
|
-
dependencies: registryDependencies(
|
|
84
|
+
dependencies: registryDependencies(
|
|
85
|
+
Object.fromEntries(Object.entries(manifest.dependencies).filter(([name]) => !minimal || name !== "@tanstack/react-table")),
|
|
86
|
+
versions,
|
|
87
|
+
),
|
|
81
88
|
devDependencies: registryDependencies(manifest.devDependencies, versions),
|
|
82
89
|
scripts: Object.fromEntries(Object.entries(scripts).map(([name, script]) => [name, script.replaceAll("--conditions=source ", "")])),
|
|
83
90
|
};
|