@reliverse/rempts 2.2.9 → 2.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +213 -1431
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +51 -0
- package/dist/create-project.d.ts +14 -0
- package/dist/create-project.js +84 -0
- package/dist/create.d.ts +11 -0
- package/dist/create.js +62 -0
- package/dist/mod.d.ts +4 -6
- package/dist/mod.js +7 -6
- package/dist/template-engine.d.ts +27 -0
- package/dist/template-engine.js +145 -0
- package/dist/types.d.ts +45 -0
- package/package.json +41 -39
- package/src/cli.ts +64 -0
- package/templates/advanced/README.md +118 -0
- package/templates/advanced/dler.config.ts +41 -0
- package/templates/advanced/package.json +42 -0
- package/templates/advanced/src/commands/config.ts +157 -0
- package/templates/advanced/src/commands/init.ts +149 -0
- package/templates/advanced/src/commands/serve.ts +172 -0
- package/templates/advanced/src/commands/validate.ts +130 -0
- package/templates/advanced/src/mod.ts +44 -0
- package/templates/advanced/src/utils/config.ts +83 -0
- package/templates/advanced/src/utils/constants.ts +12 -0
- package/templates/advanced/src/utils/glob.ts +49 -0
- package/templates/advanced/src/utils/validator.ts +128 -0
- package/templates/advanced/template.json +40 -0
- package/templates/advanced/tsconfig.json +23 -0
- package/templates/basic/README.md +41 -0
- package/templates/basic/dler.config.ts +40 -0
- package/templates/basic/package.json +31 -0
- package/templates/basic/src/commands/hello.ts +26 -0
- package/templates/basic/src/mod.ts +13 -0
- package/templates/basic/template.json +27 -0
- package/templates/basic/tsconfig.json +19 -0
- package/templates/monorepo/README.md +74 -0
- package/templates/monorepo/dler.config.ts +45 -0
- package/templates/monorepo/package.json +30 -0
- package/templates/monorepo/packages/cli/package.json +40 -0
- package/templates/monorepo/packages/cli/src/mod.ts +22 -0
- package/templates/monorepo/packages/cli/tsconfig.json +13 -0
- package/templates/monorepo/packages/core/package.json +33 -0
- package/templates/monorepo/packages/core/scripts/build.ts +18 -0
- package/templates/monorepo/packages/core/src/commands/analyze.ts +87 -0
- package/templates/monorepo/packages/core/src/commands/process.ts +57 -0
- package/templates/monorepo/packages/core/src/mod.ts +3 -0
- package/templates/monorepo/packages/core/src/types.ts +21 -0
- package/templates/monorepo/packages/core/tsconfig.json +14 -0
- package/templates/monorepo/packages/utils/package.json +27 -0
- package/templates/monorepo/packages/utils/scripts/build.ts +17 -0
- package/templates/monorepo/packages/utils/src/format.ts +29 -0
- package/templates/monorepo/packages/utils/src/json.ts +11 -0
- package/templates/monorepo/packages/utils/src/logger.ts +19 -0
- package/templates/monorepo/packages/utils/src/mod.ts +3 -0
- package/templates/monorepo/packages/utils/tsconfig.json +13 -0
- package/templates/monorepo/template.json +27 -0
- package/templates/monorepo/tsconfig.json +14 -0
- package/templates/monorepo/turbo.json +28 -0
- package/LICENSE +0 -21
- package/cleanup.mjs +0 -33
- package/dist/cancel.d.ts +0 -31
- package/dist/cancel.js +0 -28
- package/dist/ffi.d.ts +0 -1
- package/dist/ffi.js +0 -165
- package/dist/group.d.ts +0 -16
- package/dist/group.js +0 -22
- package/dist/launcher/command.d.ts +0 -8
- package/dist/launcher/command.js +0 -10
- package/dist/launcher/discovery.d.ts +0 -3
- package/dist/launcher/discovery.js +0 -207
- package/dist/launcher/errors.d.ts +0 -15
- package/dist/launcher/errors.js +0 -31
- package/dist/launcher/help.d.ts +0 -3
- package/dist/launcher/help.js +0 -145
- package/dist/launcher/mod.d.ts +0 -12
- package/dist/launcher/mod.js +0 -222
- package/dist/launcher/parser.d.ts +0 -14
- package/dist/launcher/parser.js +0 -255
- package/dist/launcher/registry.d.ts +0 -10
- package/dist/launcher/registry.js +0 -42
- package/dist/launcher/types.d.ts +0 -78
- package/dist/launcher/validator.d.ts +0 -3
- package/dist/launcher/validator.js +0 -39
- package/dist/prompt.d.ts +0 -13
- package/dist/prompt.js +0 -53
- package/dist/selection.d.ts +0 -92
- package/dist/selection.js +0 -191
- package/dist/spinner.d.ts +0 -26
- package/dist/spinner.js +0 -141
- package/dist/utils.d.ts +0 -3
- package/dist/utils.js +0 -11
- /package/dist/{launcher/types.js → types.js} +0 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2022",
|
|
4
|
+
"module": "ESNext",
|
|
5
|
+
"moduleResolution": "bundler",
|
|
6
|
+
"strict": true,
|
|
7
|
+
"esModuleInterop": true,
|
|
8
|
+
"skipLibCheck": true,
|
|
9
|
+
"forceConsistentCasingInFileNames": true,
|
|
10
|
+
"resolveJsonModule": true,
|
|
11
|
+
"declaration": true,
|
|
12
|
+
"declarationMap": true,
|
|
13
|
+
"outDir": "./dist",
|
|
14
|
+
"rootDir": "./src",
|
|
15
|
+
"types": ["bun"]
|
|
16
|
+
},
|
|
17
|
+
"include": ["src/**/*"],
|
|
18
|
+
"exclude": ["node_modules", "dist", "test/**/*"]
|
|
19
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# {{name}}
|
|
2
|
+
|
|
3
|
+
{{description}}
|
|
4
|
+
|
|
5
|
+
## Structure
|
|
6
|
+
|
|
7
|
+
This is a monorepo managed with Bun workspaces and Turborepo.
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
.
|
|
11
|
+
├── packages/
|
|
12
|
+
│ ├── cli/ # Main CLI package
|
|
13
|
+
│ ├── core/ # Core functionality
|
|
14
|
+
│ └── utils/ # Shared utilities
|
|
15
|
+
├── package.json # Root package.json
|
|
16
|
+
└── turbo.json # Turborepo configuration
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Development
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# Install dependencies
|
|
23
|
+
bun install
|
|
24
|
+
|
|
25
|
+
# Run all packages in development mode
|
|
26
|
+
bun dev
|
|
27
|
+
|
|
28
|
+
# Build all packages
|
|
29
|
+
bun run build
|
|
30
|
+
|
|
31
|
+
# Run tests
|
|
32
|
+
bun test
|
|
33
|
+
|
|
34
|
+
# Type check
|
|
35
|
+
bun run typecheck
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Creating a New Package
|
|
39
|
+
|
|
40
|
+
1. Create a new directory under `packages/`
|
|
41
|
+
2. Add a `package.json` with the package name and dependencies
|
|
42
|
+
3. Add the package to the workspace in root `package.json` if needed
|
|
43
|
+
4. Run `bun install` to link the workspace
|
|
44
|
+
|
|
45
|
+
## Publishing
|
|
46
|
+
|
|
47
|
+
This monorepo uses [Changesets](https://github.com/changesets/changesets) for version management.
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
# Create a changeset
|
|
51
|
+
bun run changeset
|
|
52
|
+
|
|
53
|
+
# Version packages
|
|
54
|
+
bun run version
|
|
55
|
+
|
|
56
|
+
# Publish to npm
|
|
57
|
+
bun run release
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Scripts
|
|
61
|
+
|
|
62
|
+
- `dev` - Run all packages in development mode
|
|
63
|
+
- `build` - Build all packages
|
|
64
|
+
- `test` - Run all tests
|
|
65
|
+
- `typecheck` - Type check all packages
|
|
66
|
+
- `lint` - Lint all packages
|
|
67
|
+
- `clean` - Clean all build artifacts
|
|
68
|
+
- `changeset` - Create a new changeset
|
|
69
|
+
- `version` - Update versions based on changesets
|
|
70
|
+
- `release` - Build and publish packages
|
|
71
|
+
|
|
72
|
+
## License
|
|
73
|
+
|
|
74
|
+
MIT
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { defineConfig } from "@reliverse/rempts-core";
|
|
2
|
+
|
|
3
|
+
export default defineConfig({
|
|
4
|
+
name: "{{name}}",
|
|
5
|
+
version: "{{version}}",
|
|
6
|
+
description: "{{description}}",
|
|
7
|
+
|
|
8
|
+
commands: {
|
|
9
|
+
directory: "./packages/core/src/cmds",
|
|
10
|
+
},
|
|
11
|
+
|
|
12
|
+
plugins: [],
|
|
13
|
+
|
|
14
|
+
build: {
|
|
15
|
+
entry: "./packages/core/src/mod.ts",
|
|
16
|
+
outdir: "./packages/core/dist",
|
|
17
|
+
targets: ["darwin-arm64", "darwin-x64", "linux-x64", "windows-x64"],
|
|
18
|
+
minify: true,
|
|
19
|
+
compress: true,
|
|
20
|
+
sourcemap: true,
|
|
21
|
+
},
|
|
22
|
+
|
|
23
|
+
dev: {
|
|
24
|
+
watch: true,
|
|
25
|
+
inspect: false,
|
|
26
|
+
},
|
|
27
|
+
|
|
28
|
+
test: {
|
|
29
|
+
pattern: ["**/*.test.ts", "**/*.spec.ts"],
|
|
30
|
+
coverage: true,
|
|
31
|
+
watch: false,
|
|
32
|
+
},
|
|
33
|
+
|
|
34
|
+
workspace: {
|
|
35
|
+
packages: ["./packages/*"],
|
|
36
|
+
versionStrategy: "fixed",
|
|
37
|
+
},
|
|
38
|
+
|
|
39
|
+
release: {
|
|
40
|
+
npm: true,
|
|
41
|
+
github: false,
|
|
42
|
+
tagFormat: "v{{version}}",
|
|
43
|
+
conventionalCommits: true,
|
|
44
|
+
},
|
|
45
|
+
});
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "{{name}}",
|
|
3
|
+
"version": "2.3.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"description": "{{description}}",
|
|
6
|
+
"author": "{{author}}",
|
|
7
|
+
"workspaces": [
|
|
8
|
+
"packages/*"
|
|
9
|
+
],
|
|
10
|
+
"type": "module",
|
|
11
|
+
"scripts": {
|
|
12
|
+
"postinstall": "bun dler generate",
|
|
13
|
+
"dev": "turbo run dev",
|
|
14
|
+
"build": "turbo run build",
|
|
15
|
+
"test": "turbo run test",
|
|
16
|
+
"typecheck": "turbo run typecheck",
|
|
17
|
+
"lint": "turbo run lint",
|
|
18
|
+
"clean": "turbo run clean && rm -rf node_modules",
|
|
19
|
+
"changeset": "changeset",
|
|
20
|
+
"version": "changeset version",
|
|
21
|
+
"release": "turbo run build && changeset publish"
|
|
22
|
+
},
|
|
23
|
+
"devDependencies": {
|
|
24
|
+
"@changesets/cli": "^2.29.8",
|
|
25
|
+
"@reliverse/tsconfig": "workspace:*",
|
|
26
|
+
"@types/bun": "catalog:",
|
|
27
|
+
"turbo": "^2.7.3",
|
|
28
|
+
"typescript": "catalog:"
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@{{name}}/cli",
|
|
3
|
+
"version": "2.3.0",
|
|
4
|
+
"description": "CLI for {{name}}",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "{{author}}",
|
|
7
|
+
"bin": {
|
|
8
|
+
"{{name}}": "./src/mod.ts"
|
|
9
|
+
},
|
|
10
|
+
"type": "module",
|
|
11
|
+
"scripts": {
|
|
12
|
+
"postinstall": "bun dler generate",
|
|
13
|
+
"dev": "bun run src/mod.ts",
|
|
14
|
+
"build": "bun dler build",
|
|
15
|
+
"test": "bun test",
|
|
16
|
+
"typecheck": "tsc --noEmit",
|
|
17
|
+
"clean": "rm -rf dist"
|
|
18
|
+
},
|
|
19
|
+
"dependencies": {
|
|
20
|
+
"@reliverse/rempts-core": "workspace:*",
|
|
21
|
+
"@{{name}}/core": "workspace:*",
|
|
22
|
+
"@{{name}}/utils": "workspace:*"
|
|
23
|
+
},
|
|
24
|
+
"devDependencies": {
|
|
25
|
+
"@reliverse/rempts-test": "workspace:*",
|
|
26
|
+
"@reliverse/tsconfig": "workspace:*",
|
|
27
|
+
"@types/bun": "catalog:",
|
|
28
|
+
"rempts": "workspace:*",
|
|
29
|
+
"typescript": "catalog:"
|
|
30
|
+
},
|
|
31
|
+
"rempts": {
|
|
32
|
+
"entry": "./src/mod.ts",
|
|
33
|
+
"outDir": "./dist",
|
|
34
|
+
"external": [
|
|
35
|
+
"@reliverse/rempts-core",
|
|
36
|
+
"@{{name}}/core",
|
|
37
|
+
"@{{name}}/utils"
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
import { analyzeCommand, processCommand } from "@{{name}}/core";
|
|
3
|
+
import { logger } from "@{{name}}/utils";
|
|
4
|
+
import { createCLI } from "@reliverse/rempts-core";
|
|
5
|
+
|
|
6
|
+
const cli = await createCLI({
|
|
7
|
+
name: "{{name}}",
|
|
8
|
+
version: "0.1.0",
|
|
9
|
+
description: "{{description}}",
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
// Add commands
|
|
13
|
+
cli.command(processCommand);
|
|
14
|
+
cli.command(analyzeCommand);
|
|
15
|
+
|
|
16
|
+
// Run CLI
|
|
17
|
+
try {
|
|
18
|
+
await cli.run();
|
|
19
|
+
} catch (error) {
|
|
20
|
+
logger.error("CLI failed:", error);
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "../../tsconfig.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"outDir": "./dist",
|
|
5
|
+
"rootDir": "./src",
|
|
6
|
+
"declaration": true,
|
|
7
|
+
"declarationMap": true,
|
|
8
|
+
"strictNullChecks": true
|
|
9
|
+
},
|
|
10
|
+
"include": ["src/**/*"],
|
|
11
|
+
"exclude": ["node_modules", "dist", "test/**/*"],
|
|
12
|
+
"references": [{ "path": "../core" }, { "path": "../utils" }]
|
|
13
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@{{name}}/core",
|
|
3
|
+
"version": "2.3.0",
|
|
4
|
+
"description": "Core functionality for {{name}}",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "{{author}}",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"main": "./dist/mod.js",
|
|
9
|
+
"types": "./src/mod.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./src/mod.ts",
|
|
13
|
+
"import": "./src/mod.ts"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "bun scripts/build.ts && bun run tsc",
|
|
18
|
+
"test": "bun test",
|
|
19
|
+
"typecheck": "tsc --noEmit",
|
|
20
|
+
"clean": "rm -rf dist"
|
|
21
|
+
},
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"@reliverse/rempts-core": "workspace:*",
|
|
24
|
+
"@{{name}}/utils": "workspace:*",
|
|
25
|
+
"arktype": "catalog:"
|
|
26
|
+
},
|
|
27
|
+
"devDependencies": {
|
|
28
|
+
"@reliverse/rempts-test": "workspace:*",
|
|
29
|
+
"@reliverse/tsconfig": "workspace:*",
|
|
30
|
+
"@types/bun": "catalog:",
|
|
31
|
+
"typescript": "catalog:"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
import { $ } from "bun";
|
|
3
|
+
|
|
4
|
+
// Clean dist directory
|
|
5
|
+
await $`rm -rf dist`;
|
|
6
|
+
await $`mkdir -p dist`;
|
|
7
|
+
|
|
8
|
+
// Build TypeScript files
|
|
9
|
+
await Bun.build({
|
|
10
|
+
entrypoints: ["./src/mod.ts"],
|
|
11
|
+
outdir: "./dist",
|
|
12
|
+
target: "bun",
|
|
13
|
+
format: "esm",
|
|
14
|
+
minify: false,
|
|
15
|
+
external: ["@reliverse/rempts-core", "@{{name}}/utils", "zod"],
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
console.log("✅ @{{name}}/core built successfully");
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { formatTable, logger } from "@{{name}}/utils";
|
|
2
|
+
import { relico } from "@reliverse/relico";
|
|
3
|
+
import { defineCommand, option } from "@reliverse/rempts-core";
|
|
4
|
+
import { type } from "arktype";
|
|
5
|
+
import type { AnalyzeResult } from "../types";
|
|
6
|
+
|
|
7
|
+
const analyzeCommand = defineCommand({
|
|
8
|
+
name: "analyze",
|
|
9
|
+
description: "Analyze files and generate reports",
|
|
10
|
+
args: type("string[]", { minLength: 1 }),
|
|
11
|
+
options: {
|
|
12
|
+
detailed: option(type("boolean", "=", false), {
|
|
13
|
+
short: "d",
|
|
14
|
+
description: "Show detailed analysis",
|
|
15
|
+
}),
|
|
16
|
+
},
|
|
17
|
+
handler: async ({ args, flags, colors }) => {
|
|
18
|
+
logger.info("Starting analysis...");
|
|
19
|
+
|
|
20
|
+
const results: AnalyzeResult[] = [];
|
|
21
|
+
|
|
22
|
+
for (const file of args) {
|
|
23
|
+
try {
|
|
24
|
+
const result = await analyzeFile(file);
|
|
25
|
+
results.push(result);
|
|
26
|
+
} catch (error) {
|
|
27
|
+
logger.error(`Failed to analyze ${file}:`, error);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// Display results
|
|
32
|
+
console.log();
|
|
33
|
+
console.log(relico.bold("Analysis Results:"));
|
|
34
|
+
console.log();
|
|
35
|
+
|
|
36
|
+
const tableData = results.map((r) => ({
|
|
37
|
+
File: r.file,
|
|
38
|
+
Lines: r.metrics.lines,
|
|
39
|
+
Words: r.metrics.words,
|
|
40
|
+
Issues: r.issues.length,
|
|
41
|
+
}));
|
|
42
|
+
|
|
43
|
+
console.log(formatTable(tableData));
|
|
44
|
+
|
|
45
|
+
if (flags.detailed) {
|
|
46
|
+
console.log();
|
|
47
|
+
console.log(relico.bold("Detailed Issues:"));
|
|
48
|
+
|
|
49
|
+
for (const result of results) {
|
|
50
|
+
if (result.issues.length > 0) {
|
|
51
|
+
console.log();
|
|
52
|
+
console.log(relico.underline(result.file));
|
|
53
|
+
|
|
54
|
+
for (const issue of result.issues) {
|
|
55
|
+
const icon = issue.type === "error" ? "✗" : issue.type === "warning" ? "⚠" : "ℹ";
|
|
56
|
+
const color =
|
|
57
|
+
issue.type === "error"
|
|
58
|
+
? relico.red
|
|
59
|
+
: issue.type === "warning"
|
|
60
|
+
? relico.yellow
|
|
61
|
+
: relico.blue;
|
|
62
|
+
|
|
63
|
+
console.log(color(` ${icon} ${issue.line}:${issue.column} ${issue.message}`));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
async function analyzeFile(file: string): Promise<AnalyzeResult> {
|
|
72
|
+
const content = await Bun.file(file).text();
|
|
73
|
+
const lines = content.split("\n");
|
|
74
|
+
const words = content.split(/\\s+/).filter((w) => w.length > 0);
|
|
75
|
+
|
|
76
|
+
return {
|
|
77
|
+
file,
|
|
78
|
+
metrics: {
|
|
79
|
+
lines: lines.length,
|
|
80
|
+
characters: content.length,
|
|
81
|
+
words: words.length,
|
|
82
|
+
},
|
|
83
|
+
issues: [],
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export default analyzeCommand;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { logger } from "@{{name}}/utils";
|
|
2
|
+
import { defineCommand, option } from "@reliverse/rempts-core";
|
|
3
|
+
import { type } from "arktype";
|
|
4
|
+
import type { ProcessOptions } from "../types";
|
|
5
|
+
|
|
6
|
+
const processCommand = defineCommand({
|
|
7
|
+
name: "process",
|
|
8
|
+
description: "Process input files",
|
|
9
|
+
args: type("string[]", { minLength: 1 }),
|
|
10
|
+
options: {
|
|
11
|
+
output: option(type("string?"), {
|
|
12
|
+
short: "o",
|
|
13
|
+
description: "Output directory",
|
|
14
|
+
}),
|
|
15
|
+
format: option(type("'json'|'yaml'|'text'", "=", "json"), {
|
|
16
|
+
short: "f",
|
|
17
|
+
description: "Output format",
|
|
18
|
+
}),
|
|
19
|
+
verbose: option(type("boolean", "=", false), {
|
|
20
|
+
short: "v",
|
|
21
|
+
description: "Verbose output",
|
|
22
|
+
}),
|
|
23
|
+
},
|
|
24
|
+
handler: async ({ args, flags, spinner }) => {
|
|
25
|
+
const spin = spinner("Processing files...");
|
|
26
|
+
spin.start();
|
|
27
|
+
|
|
28
|
+
try {
|
|
29
|
+
for (const file of args) {
|
|
30
|
+
if (flags.verbose) {
|
|
31
|
+
logger.info(`Processing ${file}`);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Process logic here
|
|
35
|
+
await processFile(file, {
|
|
36
|
+
input: file,
|
|
37
|
+
output: flags.output,
|
|
38
|
+
format: flags.format,
|
|
39
|
+
verbose: flags.verbose,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
spin.succeed(`Processed ${args.length} files`);
|
|
44
|
+
} catch (error) {
|
|
45
|
+
spin.fail("Processing failed");
|
|
46
|
+
logger.error(error);
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
async function processFile(file: string, options: ProcessOptions): Promise<void> {
|
|
53
|
+
// Implementation here
|
|
54
|
+
logger.debug(`Processing ${file} with options:`, options);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export default processCommand;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface ProcessOptions {
|
|
2
|
+
input: string;
|
|
3
|
+
output?: string;
|
|
4
|
+
format?: "json" | "yaml" | "text";
|
|
5
|
+
verbose?: boolean;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface AnalyzeResult {
|
|
9
|
+
file: string;
|
|
10
|
+
metrics: {
|
|
11
|
+
lines: number;
|
|
12
|
+
characters: number;
|
|
13
|
+
words: number;
|
|
14
|
+
};
|
|
15
|
+
issues: Array<{
|
|
16
|
+
type: "error" | "warning" | "info";
|
|
17
|
+
line: number;
|
|
18
|
+
column: number;
|
|
19
|
+
message: string;
|
|
20
|
+
}>;
|
|
21
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "../../tsconfig.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"outDir": "./dist",
|
|
5
|
+
"rootDir": "./src",
|
|
6
|
+
"declaration": true,
|
|
7
|
+
"declarationMap": true,
|
|
8
|
+
"composite": true,
|
|
9
|
+
"strictNullChecks": true
|
|
10
|
+
},
|
|
11
|
+
"include": ["src/**/*"],
|
|
12
|
+
"exclude": ["node_modules", "dist", "test/**/*"],
|
|
13
|
+
"references": [{ "path": "../utils" }]
|
|
14
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@{{name}}/utils",
|
|
3
|
+
"version": "2.3.0",
|
|
4
|
+
"description": "Shared utilities for {{name}}",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "{{author}}",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"main": "./dist/mod.js",
|
|
9
|
+
"types": "./src/mod.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./src/mod.ts",
|
|
13
|
+
"import": "./src/mod.ts"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "bun scripts/build.ts && bun run tsc",
|
|
18
|
+
"test": "bun test",
|
|
19
|
+
"typecheck": "tsc --noEmit",
|
|
20
|
+
"clean": "rm -rf dist"
|
|
21
|
+
},
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"@reliverse/tsconfig": "workspace:*",
|
|
24
|
+
"@types/bun": "catalog:",
|
|
25
|
+
"typescript": "catalog:"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
import { $ } from "bun";
|
|
3
|
+
|
|
4
|
+
// Clean dist directory
|
|
5
|
+
await $`rm -rf dist`;
|
|
6
|
+
await $`mkdir -p dist`;
|
|
7
|
+
|
|
8
|
+
// Build TypeScript files
|
|
9
|
+
await Bun.build({
|
|
10
|
+
entrypoints: ["./src/mod.ts"],
|
|
11
|
+
outdir: "./dist",
|
|
12
|
+
target: "bun",
|
|
13
|
+
format: "esm",
|
|
14
|
+
minify: false,
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
console.log("✅ @{{name}}/utils built successfully");
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export function formatTable(data: Record<string, any>[]): string {
|
|
2
|
+
if (data.length === 0) {
|
|
3
|
+
return "";
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
const headers = Object.keys(data[0]);
|
|
7
|
+
const rows = data.map((item) => headers.map((h) => String(item[h] ?? "")));
|
|
8
|
+
|
|
9
|
+
// Calculate column widths
|
|
10
|
+
const widths = headers.map((h, i) => {
|
|
11
|
+
const headerWidth = h.length;
|
|
12
|
+
const maxDataWidth = Math.max(...rows.map((r) => r[i].length));
|
|
13
|
+
return Math.max(headerWidth, maxDataWidth);
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
// Build table
|
|
17
|
+
const lines: string[] = [];
|
|
18
|
+
|
|
19
|
+
// Header
|
|
20
|
+
lines.push(headers.map((h, i) => h.padEnd(widths[i])).join(" "));
|
|
21
|
+
lines.push(widths.map((w) => "-".repeat(w)).join(" "));
|
|
22
|
+
|
|
23
|
+
// Rows
|
|
24
|
+
for (const row of rows) {
|
|
25
|
+
lines.push(row.map((cell, i) => cell.padEnd(widths[i])).join(" "));
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return lines.join("\\n");
|
|
29
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export function parseJSON<T = any>(text: string): T {
|
|
2
|
+
try {
|
|
3
|
+
return JSON.parse(text);
|
|
4
|
+
} catch (error) {
|
|
5
|
+
throw new Error(`Invalid JSON: ${error}`);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export function stringifyJSON(data: any, pretty = false): string {
|
|
10
|
+
return JSON.stringify(data, null, pretty ? 2 : 0);
|
|
11
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export const logger = {
|
|
2
|
+
debug: (...args: any[]) => {
|
|
3
|
+
if (process.env.DEBUG) {
|
|
4
|
+
console.log("[DEBUG]", ...args);
|
|
5
|
+
}
|
|
6
|
+
},
|
|
7
|
+
|
|
8
|
+
info: (...args: any[]) => {
|
|
9
|
+
console.log("[INFO]", ...args);
|
|
10
|
+
},
|
|
11
|
+
|
|
12
|
+
warn: (...args: any[]) => {
|
|
13
|
+
console.warn("[WARN]", ...args);
|
|
14
|
+
},
|
|
15
|
+
|
|
16
|
+
error: (...args: any[]) => {
|
|
17
|
+
console.error("[ERROR]", ...args);
|
|
18
|
+
},
|
|
19
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "../../tsconfig.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"outDir": "./dist",
|
|
5
|
+
"rootDir": "./src",
|
|
6
|
+
"declaration": true,
|
|
7
|
+
"declarationMap": true,
|
|
8
|
+
"composite": true,
|
|
9
|
+
"strictNullChecks": true
|
|
10
|
+
},
|
|
11
|
+
"include": ["src/**/*"],
|
|
12
|
+
"exclude": ["node_modules", "dist", "test/**/*"]
|
|
13
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@reliverse/rempts-monorepo",
|
|
3
|
+
"description": "Monorepo template for multi-package Rempts projects",
|
|
4
|
+
"variables": [
|
|
5
|
+
{
|
|
6
|
+
"name": "name",
|
|
7
|
+
"message": "Project name",
|
|
8
|
+
"type": "string",
|
|
9
|
+
"default": "my-rempts-monorepo"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"name": "description",
|
|
13
|
+
"message": "Project description",
|
|
14
|
+
"type": "string",
|
|
15
|
+
"default": "A monorepo CLI project built with Rempts"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "author",
|
|
19
|
+
"message": "Author name",
|
|
20
|
+
"type": "string",
|
|
21
|
+
"default": ""
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
"files": {
|
|
25
|
+
"exclude": ["node_modules/**", ".git/**", "template.json"]
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2022",
|
|
4
|
+
"module": "ESNext",
|
|
5
|
+
"moduleResolution": "bundler",
|
|
6
|
+
"strict": true,
|
|
7
|
+
"esModuleInterop": true,
|
|
8
|
+
"skipLibCheck": true,
|
|
9
|
+
"forceConsistentCasingInFileNames": true,
|
|
10
|
+
"resolveJsonModule": true,
|
|
11
|
+
"types": ["bun"]
|
|
12
|
+
},
|
|
13
|
+
"exclude": ["node_modules", "dist", "build", ".turbo"]
|
|
14
|
+
}
|