@batijs/cli 0.0.16 → 0.0.18
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/boilerplates/@batijs/edgedb/$package.json.js +14 -0
- package/dist/boilerplates/@batijs/edgedb/chunk-package-2Z6PXHRM.js +62 -0
- package/dist/boilerplates/@batijs/edgedb/dbschema/default.esdl +3 -0
- package/dist/boilerplates/@batijs/edgedb/dbschema/futures.esdl +4 -0
- package/dist/boilerplates/@batijs/edgedb/dbschema/migrations/.gitkeep +0 -0
- package/dist/boilerplates/@batijs/edgedb/edgedb.toml +2 -0
- package/dist/boilerplates/@batijs/express/$package.json.js +1 -1
- package/dist/boilerplates/@batijs/express/{chunk-package-HRILG4TQ.js → chunk-package-RDNZJ22Z.js} +3 -1
- package/dist/boilerplates/@batijs/express/express-entry.ts +3 -6
- package/dist/boilerplates/@batijs/hattip/$package.json.js +1 -1
- package/dist/boilerplates/@batijs/hattip/{chunk-package-KVSS22VL.js → chunk-package-JJB3RM2B.js} +3 -1
- package/dist/boilerplates/@batijs/prisma/$package.json.js +12 -0
- package/dist/boilerplates/@batijs/{telefunc/chunk-package-HXQQJK43.js → prisma/chunk-package-5AMPDDOP.js} +4 -2
- package/dist/boilerplates/@batijs/shared/package.json +1 -1
- package/dist/boilerplates/@batijs/solid/$package.json.js +1 -1
- package/dist/boilerplates/@batijs/solid/{chunk-package-2LOKPJ4I.js → chunk-package-5RG4GTPJ.js} +3 -1
- package/dist/boilerplates/@batijs/tailwindcss/$package.json.js +1 -1
- package/dist/boilerplates/@batijs/tailwindcss/{chunk-package-HDKLLEO4.js → chunk-package-TZXDG6BD.js} +3 -1
- package/dist/boilerplates/@batijs/telefunc/$package.json.js +1 -1
- package/dist/boilerplates/@batijs/telefunc/{chunk-package-OY545CFU.js → chunk-package-SHTX7U2W.js} +3 -1
- package/dist/boilerplates/boilerplates.json +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +221 -23
- package/package.json +5 -5
- /package/dist/boilerplates/@batijs/{telefunc → prisma}/$.env.js +0 -0
- /package/dist/boilerplates/@batijs/{telefunc → prisma}/prisma/schema.prisma +0 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// files/$package.json.ts
|
|
2
|
+
import { addDependency, loadAsJson } from "@batijs/core";
|
|
3
|
+
async function getPackageJson(currentContent) {
|
|
4
|
+
const packageJson = await loadAsJson(currentContent);
|
|
5
|
+
packageJson.scripts["edgedb:generate-queries"] = "@edgedb/generate queries";
|
|
6
|
+
packageJson.scripts["edgedb:generate-edgeql-js"] = "@edgedb/generate edgeql-js";
|
|
7
|
+
return addDependency(packageJson, await import("./chunk-package-2Z6PXHRM.js"), {
|
|
8
|
+
devDependencies: ["@edgedb/generate"],
|
|
9
|
+
dependencies: ["edgedb"]
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
export {
|
|
13
|
+
getPackageJson as default
|
|
14
|
+
};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// package.json
|
|
2
|
+
var name = "@batijs/edgedb";
|
|
3
|
+
var private2 = true;
|
|
4
|
+
var version = "0.0.18";
|
|
5
|
+
var description = "";
|
|
6
|
+
var type = "module";
|
|
7
|
+
var scripts = {
|
|
8
|
+
build: "tsup"
|
|
9
|
+
};
|
|
10
|
+
var keywords = [];
|
|
11
|
+
var author = "";
|
|
12
|
+
var license = "MIT";
|
|
13
|
+
var devDependencies = {
|
|
14
|
+
"@batijs/tsup": "workspace:*",
|
|
15
|
+
"@edgedb/generate": "^0.1.1",
|
|
16
|
+
"@prisma/client": "^4.14.0",
|
|
17
|
+
"@types/node": "^16.18.27",
|
|
18
|
+
edgedb: "^1.2.2"
|
|
19
|
+
};
|
|
20
|
+
var dependencies = {
|
|
21
|
+
"@batijs/core": "workspace:*"
|
|
22
|
+
};
|
|
23
|
+
var files = [
|
|
24
|
+
"dist/"
|
|
25
|
+
];
|
|
26
|
+
var bati = {
|
|
27
|
+
flag: "edgedb",
|
|
28
|
+
name: "EdgeDB",
|
|
29
|
+
homepage: "https://www.edgedb.com",
|
|
30
|
+
boilerplate: "./dist/files"
|
|
31
|
+
};
|
|
32
|
+
var package_default = {
|
|
33
|
+
name,
|
|
34
|
+
private: private2,
|
|
35
|
+
version,
|
|
36
|
+
description,
|
|
37
|
+
type,
|
|
38
|
+
scripts,
|
|
39
|
+
keywords,
|
|
40
|
+
author,
|
|
41
|
+
license,
|
|
42
|
+
devDependencies,
|
|
43
|
+
dependencies,
|
|
44
|
+
files,
|
|
45
|
+
bati
|
|
46
|
+
};
|
|
47
|
+
export {
|
|
48
|
+
author,
|
|
49
|
+
bati,
|
|
50
|
+
package_default as default,
|
|
51
|
+
dependencies,
|
|
52
|
+
description,
|
|
53
|
+
devDependencies,
|
|
54
|
+
files,
|
|
55
|
+
keywords,
|
|
56
|
+
license,
|
|
57
|
+
name,
|
|
58
|
+
private2 as private,
|
|
59
|
+
scripts,
|
|
60
|
+
type,
|
|
61
|
+
version
|
|
62
|
+
};
|
|
File without changes
|
|
@@ -4,7 +4,7 @@ async function getPackageJson(currentContent, meta) {
|
|
|
4
4
|
const packageJson = await loadAsJson(currentContent);
|
|
5
5
|
packageJson.scripts.dev = "tsx ./express-entry.ts";
|
|
6
6
|
packageJson.scripts.build = "vite build";
|
|
7
|
-
return addDependency(packageJson, await import("./chunk-package-
|
|
7
|
+
return addDependency(packageJson, await import("./chunk-package-RDNZJ22Z.js"), {
|
|
8
8
|
devDependencies: ["@types/express"],
|
|
9
9
|
dependencies: [
|
|
10
10
|
"@hattip/adapter-node",
|
package/dist/boilerplates/@batijs/express/{chunk-package-HRILG4TQ.js → chunk-package-RDNZJ22Z.js}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// package.json
|
|
2
2
|
var name = "@batijs/express";
|
|
3
3
|
var private2 = true;
|
|
4
|
-
var version = "0.0.
|
|
4
|
+
var version = "0.0.18";
|
|
5
5
|
var description = "";
|
|
6
6
|
var type = "module";
|
|
7
7
|
var scripts = {
|
|
@@ -31,6 +31,8 @@ var files = [
|
|
|
31
31
|
];
|
|
32
32
|
var bati = {
|
|
33
33
|
flag: "express",
|
|
34
|
+
name: "Express",
|
|
35
|
+
homepage: "https://expressjs.com",
|
|
34
36
|
boilerplate: "./dist/files"
|
|
35
37
|
};
|
|
36
38
|
var package_default = {
|
|
@@ -113,12 +113,9 @@ async function startServer() {
|
|
|
113
113
|
const pageContext = await renderPage(pageContextInit);
|
|
114
114
|
if (pageContext.httpResponse === null) return next();
|
|
115
115
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
const { body, statusCode, contentType } = pageContext.httpResponse;
|
|
120
|
-
res.status(statusCode).type(contentType).send(body);
|
|
121
|
-
}
|
|
116
|
+
const { statusCode, contentType } = pageContext.httpResponse;
|
|
117
|
+
res.status(statusCode).type(contentType);
|
|
118
|
+
pageContext.httpResponse.pipe(res);
|
|
122
119
|
});
|
|
123
120
|
|
|
124
121
|
app.listen(process.env.PORT ? parseInt(process.env.PORT) : 3000, "localhost", () => {
|
|
@@ -7,7 +7,7 @@ async function getPackageJson(currentContent, meta) {
|
|
|
7
7
|
if (packageJson.scripts.preview) {
|
|
8
8
|
delete packageJson.scripts.preview;
|
|
9
9
|
}
|
|
10
|
-
return addDependency(packageJson, await import("./chunk-package-
|
|
10
|
+
return addDependency(packageJson, await import("./chunk-package-JJB3RM2B.js"), {
|
|
11
11
|
devDependencies: ["@hattip/vite", "@hattip/adapter-node"],
|
|
12
12
|
dependencies: [
|
|
13
13
|
"@hattip/router",
|
package/dist/boilerplates/@batijs/hattip/{chunk-package-KVSS22VL.js → chunk-package-JJB3RM2B.js}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// package.json
|
|
2
2
|
var name = "@batijs/hattip";
|
|
3
3
|
var private2 = true;
|
|
4
|
-
var version = "0.0.
|
|
4
|
+
var version = "0.0.18";
|
|
5
5
|
var description = "";
|
|
6
6
|
var type = "module";
|
|
7
7
|
var scripts = {
|
|
@@ -31,6 +31,8 @@ var files = [
|
|
|
31
31
|
];
|
|
32
32
|
var bati = {
|
|
33
33
|
flag: "hattip",
|
|
34
|
+
name: "Hattip",
|
|
35
|
+
homepage: "https://github.com/hattipjs/hattip",
|
|
34
36
|
boilerplate: "./dist/files"
|
|
35
37
|
};
|
|
36
38
|
var package_default = {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// files/$package.json.ts
|
|
2
|
+
import { addDependency, loadAsJson } from "@batijs/core";
|
|
3
|
+
async function getPackageJson(currentContent) {
|
|
4
|
+
const packageJson = await loadAsJson(currentContent);
|
|
5
|
+
return addDependency(packageJson, await import("./chunk-package-5AMPDDOP.js"), {
|
|
6
|
+
devDependencies: ["prisma"],
|
|
7
|
+
dependencies: ["@prisma/client"]
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
export {
|
|
11
|
+
getPackageJson as default
|
|
12
|
+
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// package.json
|
|
2
|
-
var name = "@batijs/
|
|
2
|
+
var name = "@batijs/prisma";
|
|
3
3
|
var private2 = true;
|
|
4
|
-
var version = "0.0.
|
|
4
|
+
var version = "0.0.18";
|
|
5
5
|
var description = "";
|
|
6
6
|
var type = "module";
|
|
7
7
|
var scripts = {
|
|
@@ -24,6 +24,8 @@ var files = [
|
|
|
24
24
|
];
|
|
25
25
|
var bati = {
|
|
26
26
|
flag: "prisma",
|
|
27
|
+
name: "Prisma",
|
|
28
|
+
homepage: "https://www.prisma.io",
|
|
27
29
|
boilerplate: "./dist/files"
|
|
28
30
|
};
|
|
29
31
|
var package_default = {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { addDependency, loadAsJson } from "@batijs/core";
|
|
3
3
|
async function getPackageJson(currentContent) {
|
|
4
4
|
const packageJson = await loadAsJson(currentContent);
|
|
5
|
-
return addDependency(packageJson, await import("./chunk-package-
|
|
5
|
+
return addDependency(packageJson, await import("./chunk-package-5RG4GTPJ.js"), {
|
|
6
6
|
devDependencies: ["vite"],
|
|
7
7
|
dependencies: ["cross-fetch", "solid-js", "vike-solid"]
|
|
8
8
|
});
|
package/dist/boilerplates/@batijs/solid/{chunk-package-2LOKPJ4I.js → chunk-package-5RG4GTPJ.js}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// package.json
|
|
2
2
|
var name = "@batijs/solid";
|
|
3
3
|
var private2 = true;
|
|
4
|
-
var version = "0.0.
|
|
4
|
+
var version = "0.0.18";
|
|
5
5
|
var description = "";
|
|
6
6
|
var type = "module";
|
|
7
7
|
var scripts = {
|
|
@@ -30,6 +30,8 @@ var files = [
|
|
|
30
30
|
];
|
|
31
31
|
var bati = {
|
|
32
32
|
flag: "solid",
|
|
33
|
+
name: "SolidJS",
|
|
34
|
+
homepage: "https://www.solidjs.com",
|
|
33
35
|
boilerplate: "./dist/files"
|
|
34
36
|
};
|
|
35
37
|
var package_default = {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { addDependency, loadAsJson } from "@batijs/core";
|
|
3
3
|
async function getPackageJson(currentContent, meta) {
|
|
4
4
|
const packageJson = await loadAsJson(currentContent);
|
|
5
|
-
return addDependency(packageJson, await import("./chunk-package-
|
|
5
|
+
return addDependency(packageJson, await import("./chunk-package-TZXDG6BD.js"), {
|
|
6
6
|
devDependencies: ["tailwindcss", "postcss", "autoprefixer"]
|
|
7
7
|
});
|
|
8
8
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// package.json
|
|
2
2
|
var name = "@batijs/tailwindcss";
|
|
3
3
|
var private2 = true;
|
|
4
|
-
var version = "0.0.
|
|
4
|
+
var version = "0.0.18";
|
|
5
5
|
var description = "";
|
|
6
6
|
var type = "module";
|
|
7
7
|
var scripts = {
|
|
@@ -27,6 +27,8 @@ var files = [
|
|
|
27
27
|
];
|
|
28
28
|
var bati = {
|
|
29
29
|
flag: "tailwindcss",
|
|
30
|
+
name: "TailwindCSS",
|
|
31
|
+
homepage: "https://tailwindcss.com",
|
|
30
32
|
boilerplate: "./dist/files"
|
|
31
33
|
};
|
|
32
34
|
var package_default = {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { addDependency, loadAsJson } from "@batijs/core";
|
|
3
3
|
async function getPackageJson(currentContent) {
|
|
4
4
|
const packageJson = await loadAsJson(currentContent);
|
|
5
|
-
return addDependency(packageJson, await import("./chunk-package-
|
|
5
|
+
return addDependency(packageJson, await import("./chunk-package-SHTX7U2W.js"), {
|
|
6
6
|
dependencies: ["telefunc"]
|
|
7
7
|
});
|
|
8
8
|
}
|
package/dist/boilerplates/@batijs/telefunc/{chunk-package-OY545CFU.js → chunk-package-SHTX7U2W.js}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// package.json
|
|
2
2
|
var name = "@batijs/telefunc";
|
|
3
3
|
var private2 = true;
|
|
4
|
-
var version = "0.0.
|
|
4
|
+
var version = "0.0.18";
|
|
5
5
|
var description = "";
|
|
6
6
|
var type = "module";
|
|
7
7
|
var scripts = {
|
|
@@ -25,6 +25,8 @@ var files = [
|
|
|
25
25
|
];
|
|
26
26
|
var bati = {
|
|
27
27
|
flag: "telefunc",
|
|
28
|
+
name: "Telefunc",
|
|
29
|
+
homepage: "https://telefunc.com",
|
|
28
30
|
boilerplate: "./dist/files"
|
|
29
31
|
};
|
|
30
32
|
var package_default = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"config":{"flag":"express","boilerplate":"./dist/files"},"folder":"@batijs/express"},{"config":{"flag":"hattip","boilerplate":"./dist/files"},"folder":"@batijs/hattip"},{"config":{"flag":"prisma","boilerplate":"./dist/files"},"folder":"@batijs/
|
|
1
|
+
[{"config":{"flag":"authjs","name":"Auth.js","homepage":"https://authjs.dev"},"folder":"@batijs/authjs","description":""},{"config":{"flag":"edgedb","name":"EdgeDB","homepage":"https://www.edgedb.com","boilerplate":"./dist/files"},"folder":"@batijs/edgedb","description":""},{"config":{"flag":"express","name":"Express","homepage":"https://expressjs.com","boilerplate":"./dist/files"},"folder":"@batijs/express","description":""},{"config":{"flag":"hattip","name":"Hattip","homepage":"https://github.com/hattipjs/hattip","boilerplate":"./dist/files"},"folder":"@batijs/hattip","description":""},{"config":{"flag":"prisma","name":"Prisma","homepage":"https://www.prisma.io","boilerplate":"./dist/files"},"folder":"@batijs/prisma","description":""},{"config":{"boilerplate":"./files"},"folder":"@batijs/shared","description":""},{"config":{"flag":"solid","name":"SolidJS","homepage":"https://www.solidjs.com","boilerplate":"./dist/files"},"folder":"@batijs/solid","description":""},{"config":{"flag":"tailwindcss","name":"TailwindCSS","homepage":"https://tailwindcss.com","boilerplate":"./dist/files"},"folder":"@batijs/tailwindcss","description":""},{"config":{"flag":"telefunc","name":"Telefunc","homepage":"https://telefunc.com","boilerplate":"./dist/files"},"folder":"@batijs/telefunc","description":""}]
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -476,7 +476,7 @@ var colors = {
|
|
|
476
476
|
bgWhiteBright: init(107, 49)
|
|
477
477
|
};
|
|
478
478
|
var createColors = ({ useColor = isColorSupported } = {}) => useColor ? colors : Object.keys(colors).reduce(
|
|
479
|
-
(
|
|
479
|
+
(colors3, key) => ({ ...colors3, [key]: String }),
|
|
480
480
|
{}
|
|
481
481
|
);
|
|
482
482
|
var {
|
|
@@ -597,13 +597,13 @@ function transformFileAfterExec(filepath, fileContent) {
|
|
|
597
597
|
throw new Error(`Unsupported extension ${ext} (${filepath})`);
|
|
598
598
|
}
|
|
599
599
|
}
|
|
600
|
-
async function
|
|
600
|
+
async function fileContainsBatiMeta(filepath) {
|
|
601
601
|
const code = await readFile(filepath, { encoding: "utf-8" });
|
|
602
602
|
return code.includes("import.meta.BATI_");
|
|
603
603
|
}
|
|
604
604
|
async function main(options, meta) {
|
|
605
605
|
const sources = Array.isArray(options.source) ? options.source : [options.source];
|
|
606
|
-
const targets = /* @__PURE__ */ new
|
|
606
|
+
const targets = /* @__PURE__ */ new Set();
|
|
607
607
|
for (const source of sources) {
|
|
608
608
|
for await (const p of walk(source, meta)) {
|
|
609
609
|
const target = toDist(p, source, options.dist);
|
|
@@ -611,15 +611,21 @@ async function main(options, meta) {
|
|
|
611
611
|
if (parsed.name.match(reIgnoreFile)) {
|
|
612
612
|
continue;
|
|
613
613
|
} else if (parsed.name.startsWith("$") && parsed.ext.match(/\.tsx?$/)) {
|
|
614
|
-
throw new Error(
|
|
614
|
+
throw new Error(
|
|
615
|
+
`Typescript file needs to be compiled before it can be executed: '${p}'.
|
|
616
|
+
Please report this issue to https://github.com/magne4000/bati`
|
|
617
|
+
);
|
|
615
618
|
} else if (parsed.name.startsWith("$") && parsed.ext.match(/\.jsx?$/)) {
|
|
616
619
|
const f = await import(p);
|
|
617
|
-
const fileContent = transformFileAfterExec(
|
|
620
|
+
const fileContent = transformFileAfterExec(
|
|
621
|
+
target,
|
|
622
|
+
await f.default(targets.has(target) ? () => readFile(target, { encoding: "utf-8" }) : void 0, meta)
|
|
623
|
+
);
|
|
618
624
|
if (fileContent !== null) {
|
|
619
625
|
await safeWriteFile(target, fileContent);
|
|
620
626
|
}
|
|
621
|
-
targets.
|
|
622
|
-
} else if (parsed.ext.match(/\.[tj]sx?$/) && await
|
|
627
|
+
targets.add(target);
|
|
628
|
+
} else if (parsed.ext.match(/\.[tj]sx?$/) && await fileContainsBatiMeta(p)) {
|
|
623
629
|
const mod = await loadFile(p);
|
|
624
630
|
const fileContent = await transformAndGenerate(mod.$ast, meta, {
|
|
625
631
|
filepath: p
|
|
@@ -627,10 +633,10 @@ async function main(options, meta) {
|
|
|
627
633
|
if (fileContent) {
|
|
628
634
|
await safeWriteFile(target, fileContent);
|
|
629
635
|
}
|
|
630
|
-
targets.
|
|
636
|
+
targets.add(target);
|
|
631
637
|
} else {
|
|
632
638
|
await safeCopyFile(p, target);
|
|
633
|
-
targets.
|
|
639
|
+
targets.add(target);
|
|
634
640
|
}
|
|
635
641
|
}
|
|
636
642
|
}
|
|
@@ -639,8 +645,8 @@ async function main(options, meta) {
|
|
|
639
645
|
// package.json
|
|
640
646
|
var package_default = {
|
|
641
647
|
name: "@batijs/cli",
|
|
642
|
-
version: "0.0.
|
|
643
|
-
description: "",
|
|
648
|
+
version: "0.0.18",
|
|
649
|
+
description: "Scaffold typescript projects with ease and modularity",
|
|
644
650
|
type: "module",
|
|
645
651
|
scripts: {
|
|
646
652
|
prerelease: "rm -rf ./dist",
|
|
@@ -690,7 +696,124 @@ import { flags as coreFlags } from "@batijs/core";
|
|
|
690
696
|
import { existsSync } from "fs";
|
|
691
697
|
import { fileURLToPath } from "url";
|
|
692
698
|
import { dirname, join } from "path";
|
|
693
|
-
import { readFile as readFile2 } from "fs/promises";
|
|
699
|
+
import { access, constants, lstat, readdir, readFile as readFile2 } from "fs/promises";
|
|
700
|
+
|
|
701
|
+
// ../../node_modules/.pnpm/colorette@2.0.20/node_modules/colorette/index.js
|
|
702
|
+
import * as tty2 from "tty";
|
|
703
|
+
var {
|
|
704
|
+
env: env2 = {},
|
|
705
|
+
argv: argv2 = [],
|
|
706
|
+
platform: platform2 = ""
|
|
707
|
+
} = typeof process === "undefined" ? {} : process;
|
|
708
|
+
var isDisabled2 = "NO_COLOR" in env2 || argv2.includes("--no-color");
|
|
709
|
+
var isForced2 = "FORCE_COLOR" in env2 || argv2.includes("--color");
|
|
710
|
+
var isWindows2 = platform2 === "win32";
|
|
711
|
+
var isDumbTerminal2 = env2.TERM === "dumb";
|
|
712
|
+
var isCompatibleTerminal2 = tty2 && tty2.isatty && tty2.isatty(1) && env2.TERM && !isDumbTerminal2;
|
|
713
|
+
var isCI2 = "CI" in env2 && ("GITHUB_ACTIONS" in env2 || "GITLAB_CI" in env2 || "CIRCLECI" in env2);
|
|
714
|
+
var isColorSupported2 = !isDisabled2 && (isForced2 || isWindows2 && !isDumbTerminal2 || isCompatibleTerminal2 || isCI2);
|
|
715
|
+
var replaceClose2 = (index, string, close, replace, head = string.substring(0, index) + replace, tail = string.substring(index + close.length), next = tail.indexOf(close)) => head + (next < 0 ? tail : replaceClose2(next, tail, close, replace));
|
|
716
|
+
var clearBleed2 = (index, string, open, close, replace) => index < 0 ? open + string + close : open + replaceClose2(index, string, close, replace) + close;
|
|
717
|
+
var filterEmpty2 = (open, close, replace = open, at = open.length + 1) => (string) => string || !(string === "" || string === void 0) ? clearBleed2(
|
|
718
|
+
("" + string).indexOf(close, at),
|
|
719
|
+
string,
|
|
720
|
+
open,
|
|
721
|
+
close,
|
|
722
|
+
replace
|
|
723
|
+
) : "";
|
|
724
|
+
var init2 = (open, close, replace) => filterEmpty2(`\x1B[${open}m`, `\x1B[${close}m`, replace);
|
|
725
|
+
var colors2 = {
|
|
726
|
+
reset: init2(0, 0),
|
|
727
|
+
bold: init2(1, 22, "\x1B[22m\x1B[1m"),
|
|
728
|
+
dim: init2(2, 22, "\x1B[22m\x1B[2m"),
|
|
729
|
+
italic: init2(3, 23),
|
|
730
|
+
underline: init2(4, 24),
|
|
731
|
+
inverse: init2(7, 27),
|
|
732
|
+
hidden: init2(8, 28),
|
|
733
|
+
strikethrough: init2(9, 29),
|
|
734
|
+
black: init2(30, 39),
|
|
735
|
+
red: init2(31, 39),
|
|
736
|
+
green: init2(32, 39),
|
|
737
|
+
yellow: init2(33, 39),
|
|
738
|
+
blue: init2(34, 39),
|
|
739
|
+
magenta: init2(35, 39),
|
|
740
|
+
cyan: init2(36, 39),
|
|
741
|
+
white: init2(37, 39),
|
|
742
|
+
gray: init2(90, 39),
|
|
743
|
+
bgBlack: init2(40, 49),
|
|
744
|
+
bgRed: init2(41, 49),
|
|
745
|
+
bgGreen: init2(42, 49),
|
|
746
|
+
bgYellow: init2(43, 49),
|
|
747
|
+
bgBlue: init2(44, 49),
|
|
748
|
+
bgMagenta: init2(45, 49),
|
|
749
|
+
bgCyan: init2(46, 49),
|
|
750
|
+
bgWhite: init2(47, 49),
|
|
751
|
+
blackBright: init2(90, 39),
|
|
752
|
+
redBright: init2(91, 39),
|
|
753
|
+
greenBright: init2(92, 39),
|
|
754
|
+
yellowBright: init2(93, 39),
|
|
755
|
+
blueBright: init2(94, 39),
|
|
756
|
+
magentaBright: init2(95, 39),
|
|
757
|
+
cyanBright: init2(96, 39),
|
|
758
|
+
whiteBright: init2(97, 39),
|
|
759
|
+
bgBlackBright: init2(100, 49),
|
|
760
|
+
bgRedBright: init2(101, 49),
|
|
761
|
+
bgGreenBright: init2(102, 49),
|
|
762
|
+
bgYellowBright: init2(103, 49),
|
|
763
|
+
bgBlueBright: init2(104, 49),
|
|
764
|
+
bgMagentaBright: init2(105, 49),
|
|
765
|
+
bgCyanBright: init2(106, 49),
|
|
766
|
+
bgWhiteBright: init2(107, 49)
|
|
767
|
+
};
|
|
768
|
+
var createColors2 = ({ useColor = isColorSupported2 } = {}) => useColor ? colors2 : Object.keys(colors2).reduce(
|
|
769
|
+
(colors3, key) => ({ ...colors3, [key]: String }),
|
|
770
|
+
{}
|
|
771
|
+
);
|
|
772
|
+
var {
|
|
773
|
+
reset: reset2,
|
|
774
|
+
bold: bold2,
|
|
775
|
+
dim: dim2,
|
|
776
|
+
italic: italic2,
|
|
777
|
+
underline: underline2,
|
|
778
|
+
inverse: inverse2,
|
|
779
|
+
hidden: hidden2,
|
|
780
|
+
strikethrough: strikethrough2,
|
|
781
|
+
black: black2,
|
|
782
|
+
red: red2,
|
|
783
|
+
green: green2,
|
|
784
|
+
yellow: yellow2,
|
|
785
|
+
blue: blue2,
|
|
786
|
+
magenta: magenta2,
|
|
787
|
+
cyan: cyan2,
|
|
788
|
+
white: white2,
|
|
789
|
+
gray: gray2,
|
|
790
|
+
bgBlack: bgBlack2,
|
|
791
|
+
bgRed: bgRed2,
|
|
792
|
+
bgGreen: bgGreen2,
|
|
793
|
+
bgYellow: bgYellow2,
|
|
794
|
+
bgBlue: bgBlue2,
|
|
795
|
+
bgMagenta: bgMagenta2,
|
|
796
|
+
bgCyan: bgCyan2,
|
|
797
|
+
bgWhite: bgWhite2,
|
|
798
|
+
blackBright: blackBright2,
|
|
799
|
+
redBright: redBright2,
|
|
800
|
+
greenBright: greenBright2,
|
|
801
|
+
yellowBright: yellowBright2,
|
|
802
|
+
blueBright: blueBright2,
|
|
803
|
+
magentaBright: magentaBright2,
|
|
804
|
+
cyanBright: cyanBright2,
|
|
805
|
+
whiteBright: whiteBright2,
|
|
806
|
+
bgBlackBright: bgBlackBright2,
|
|
807
|
+
bgRedBright: bgRedBright2,
|
|
808
|
+
bgGreenBright: bgGreenBright2,
|
|
809
|
+
bgYellowBright: bgYellowBright2,
|
|
810
|
+
bgBlueBright: bgBlueBright2,
|
|
811
|
+
bgMagentaBright: bgMagentaBright2,
|
|
812
|
+
bgCyanBright: bgCyanBright2,
|
|
813
|
+
bgWhiteBright: bgWhiteBright2
|
|
814
|
+
} = createColors2();
|
|
815
|
+
|
|
816
|
+
// index.ts
|
|
694
817
|
var __filename = fileURLToPath(import.meta.url);
|
|
695
818
|
var __dirname = dirname(__filename);
|
|
696
819
|
function boilerplatesDir() {
|
|
@@ -704,16 +827,91 @@ function boilerplatesDir() {
|
|
|
704
827
|
async function parseBoilerplates(dir) {
|
|
705
828
|
return JSON.parse(await readFile2(join(dir, "boilerplates.json"), "utf-8"));
|
|
706
829
|
}
|
|
707
|
-
function toArg(flag) {
|
|
830
|
+
function toArg(flag, description) {
|
|
708
831
|
if (!flag)
|
|
709
832
|
return {};
|
|
710
833
|
return {
|
|
711
834
|
[flag]: {
|
|
712
835
|
type: "boolean",
|
|
713
|
-
required: false
|
|
836
|
+
required: false,
|
|
837
|
+
description
|
|
714
838
|
}
|
|
715
839
|
};
|
|
716
840
|
}
|
|
841
|
+
function findDescription(key, boilerplates) {
|
|
842
|
+
const bl = boilerplates.find((b) => b.config.flag === key);
|
|
843
|
+
if (!bl)
|
|
844
|
+
return;
|
|
845
|
+
if (bl.description) {
|
|
846
|
+
return bl.description;
|
|
847
|
+
} else if (bl.config.name && bl.config.homepage) {
|
|
848
|
+
return `Include ${bl.config.name} - ${bl.config.homepage}`;
|
|
849
|
+
} else if (bl.config.name) {
|
|
850
|
+
return `Include ${bl.config.name}`;
|
|
851
|
+
}
|
|
852
|
+
}
|
|
853
|
+
function printOK(dist, flags, boilerplates) {
|
|
854
|
+
console.log(bold2(`${green2("\u2713")} Project created at ${cyan2(dist)} with:`));
|
|
855
|
+
console.log(` - ${green2("Typescript")}`);
|
|
856
|
+
for (const key of flags) {
|
|
857
|
+
const bl = boilerplates.find((b) => b.config.flag === key);
|
|
858
|
+
if (!bl || !bl.config.name)
|
|
859
|
+
continue;
|
|
860
|
+
console.log(` - ${green2(bl.config.name)}`);
|
|
861
|
+
}
|
|
862
|
+
console.log("\n" + bold2(`${blue2("\u2192")} Next steps:`));
|
|
863
|
+
console.log(` ${gray2("$")} cd ${dist}`);
|
|
864
|
+
console.log(` ${gray2("$")} pnpm install`);
|
|
865
|
+
console.log(` ${gray2("$")} pnpm run dev`);
|
|
866
|
+
}
|
|
867
|
+
var defaultDef = {
|
|
868
|
+
project: {
|
|
869
|
+
type: "positional",
|
|
870
|
+
description: "Project directory",
|
|
871
|
+
required: true
|
|
872
|
+
}
|
|
873
|
+
};
|
|
874
|
+
function yn(value, default_) {
|
|
875
|
+
if (value === void 0 || value === null) {
|
|
876
|
+
return default_;
|
|
877
|
+
}
|
|
878
|
+
value = String(value).trim();
|
|
879
|
+
if (/^(?:y|yes|true|1|on)$/i.test(value)) {
|
|
880
|
+
return true;
|
|
881
|
+
}
|
|
882
|
+
if (/^(?:n|no|false|0|off)$/i.test(value)) {
|
|
883
|
+
return false;
|
|
884
|
+
}
|
|
885
|
+
return default_;
|
|
886
|
+
}
|
|
887
|
+
async function checkArguments(args) {
|
|
888
|
+
if (existsSync(args.project)) {
|
|
889
|
+
const stat = await lstat(args.project);
|
|
890
|
+
if (!stat.isDirectory()) {
|
|
891
|
+
console.error(
|
|
892
|
+
`${yellow2("\u26A0")} Target ${cyan2(args.project)} already exists but is not a directory. ${yellow2("Aborting")}.`
|
|
893
|
+
);
|
|
894
|
+
process.exit(2);
|
|
895
|
+
}
|
|
896
|
+
try {
|
|
897
|
+
await access(args.project, constants.W_OK);
|
|
898
|
+
} catch (_) {
|
|
899
|
+
console.error(
|
|
900
|
+
`${yellow2("\u26A0")} Target folder ${cyan2(args.project)} already exists but is not writable. ${yellow2("Aborting")}.`
|
|
901
|
+
);
|
|
902
|
+
process.exit(3);
|
|
903
|
+
}
|
|
904
|
+
if ((await readdir(args.project)).length > 0) {
|
|
905
|
+
console.error(
|
|
906
|
+
`${yellow2("\u26A0")} Target folder ${cyan2(
|
|
907
|
+
args.project
|
|
908
|
+
)} already exists and is not empty.
|
|
909
|
+
Continuing might erase existing files. ${yellow2("Aborting")}.`
|
|
910
|
+
);
|
|
911
|
+
process.exit(4);
|
|
912
|
+
}
|
|
913
|
+
}
|
|
914
|
+
}
|
|
717
915
|
async function run() {
|
|
718
916
|
const dir = boilerplatesDir();
|
|
719
917
|
const boilerplates = await parseBoilerplates(dir);
|
|
@@ -724,16 +922,12 @@ async function run() {
|
|
|
724
922
|
description: package_default.description
|
|
725
923
|
},
|
|
726
924
|
args: Object.assign(
|
|
727
|
-
{
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
description: "Dist folder",
|
|
731
|
-
required: true
|
|
732
|
-
}
|
|
733
|
-
},
|
|
734
|
-
...Array.from(coreFlags.keys()).map(toArg)
|
|
925
|
+
{},
|
|
926
|
+
defaultDef,
|
|
927
|
+
...Array.from(coreFlags.keys()).map((k) => toArg(k, findDescription(k, boilerplates)))
|
|
735
928
|
),
|
|
736
929
|
async run({ args }) {
|
|
930
|
+
await checkArguments(args);
|
|
737
931
|
const sources = [];
|
|
738
932
|
const features = [];
|
|
739
933
|
const flags = Object.entries(args).filter(([, val]) => val === true).map(([key]) => key);
|
|
@@ -751,12 +945,13 @@ async function run() {
|
|
|
751
945
|
await main(
|
|
752
946
|
{
|
|
753
947
|
source: sources,
|
|
754
|
-
dist: args.
|
|
948
|
+
dist: args.project
|
|
755
949
|
},
|
|
756
950
|
{
|
|
757
951
|
BATI_MODULES: features
|
|
758
952
|
}
|
|
759
953
|
);
|
|
954
|
+
printOK(args.project, flags, boilerplates);
|
|
760
955
|
}
|
|
761
956
|
});
|
|
762
957
|
await runMain(main2);
|
|
@@ -767,3 +962,6 @@ run().then(() => {
|
|
|
767
962
|
console.error(e);
|
|
768
963
|
process.exit(1);
|
|
769
964
|
});
|
|
965
|
+
export {
|
|
966
|
+
yn as default
|
|
967
|
+
};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@batijs/cli",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"description": "",
|
|
3
|
+
"version": "0.0.18",
|
|
4
|
+
"description": "Scaffold typescript projects with ease and modularity",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"keywords": [],
|
|
7
7
|
"author": "",
|
|
@@ -18,11 +18,11 @@
|
|
|
18
18
|
"typescript": "^5.0.4",
|
|
19
19
|
"vitest": "^0.31.0",
|
|
20
20
|
"wait-for-localhost": "^4.0.1",
|
|
21
|
-
"@batijs/
|
|
22
|
-
"@batijs/
|
|
21
|
+
"@batijs/tsup": "0.0.18",
|
|
22
|
+
"@batijs/build": "0.0.18"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@batijs/core": "0.0.
|
|
25
|
+
"@batijs/core": "0.0.18"
|
|
26
26
|
},
|
|
27
27
|
"bin": "./dist/index.js",
|
|
28
28
|
"exports": {
|
|
File without changes
|
|
File without changes
|