@arkitect-ui/cli 0.2.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/LICENSE +21 -0
- package/README.md +101 -0
- package/dist/package.json +48 -0
- package/dist/src/commands/add.d.ts +13 -0
- package/dist/src/commands/add.d.ts.map +1 -0
- package/dist/src/commands/add.js +85 -0
- package/dist/src/commands/add.js.map +1 -0
- package/dist/src/commands/init.d.ts +14 -0
- package/dist/src/commands/init.d.ts.map +1 -0
- package/dist/src/commands/init.js +140 -0
- package/dist/src/commands/init.js.map +1 -0
- package/dist/src/commands/list.d.ts +4 -0
- package/dist/src/commands/list.d.ts.map +1 -0
- package/dist/src/commands/list.js +45 -0
- package/dist/src/commands/list.js.map +1 -0
- package/dist/src/main.d.ts +3 -0
- package/dist/src/main.d.ts.map +1 -0
- package/dist/src/main.js +19 -0
- package/dist/src/main.js.map +1 -0
- package/dist/src/schemas/components-config.d.ts +116 -0
- package/dist/src/schemas/components-config.d.ts.map +1 -0
- package/dist/src/schemas/components-config.js +38 -0
- package/dist/src/schemas/components-config.js.map +1 -0
- package/package.json +48 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Devx Services
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# arkitect-ui CLI
|
|
2
|
+
|
|
3
|
+
A modern CLI built with Effect-TS for creating and managing Arkitect UI projects and components.
|
|
4
|
+
|
|
5
|
+
## 🎯 Features
|
|
6
|
+
|
|
7
|
+
1. **Create monorepos** with predefined templates
|
|
8
|
+
2. **Component registry** Shadcn-style for reusable UI libraries (React & Solid)
|
|
9
|
+
3. **Framework Agnostic** Support for React and SolidJS
|
|
10
|
+
4. **Automated Setup** Init command to configure your project
|
|
11
|
+
|
|
12
|
+
## 🚀 Installation and Usage
|
|
13
|
+
|
|
14
|
+
### Prerequisites
|
|
15
|
+
|
|
16
|
+
- Node.js 18+
|
|
17
|
+
- pnpm (recommended), npm, or yarn
|
|
18
|
+
|
|
19
|
+
### Installation
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm install -g @arkitect-ui/cli
|
|
23
|
+
# or
|
|
24
|
+
pnpm add -g @arkitect-ui/cli
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## 📖 Available Commands
|
|
28
|
+
|
|
29
|
+
### `init` - Initialize Project
|
|
30
|
+
|
|
31
|
+
Configures your project for Arkitect UI components. Detects your framework (React/Solid), sets up paths, creates `components.json`, and installs base dependencies.
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
arkitect-ui init
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### `list` - List Components
|
|
38
|
+
|
|
39
|
+
Lists all available components in the Arkitect UI registry.
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
arkitect-ui list
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### `add` - Add Component
|
|
46
|
+
|
|
47
|
+
Installs a component into your project. Automatically handles dependencies and file placement using `shadcn`.
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
# Add specific component
|
|
51
|
+
arkitect-ui add button
|
|
52
|
+
|
|
53
|
+
# Add multiple components
|
|
54
|
+
arkitect-ui add button card input
|
|
55
|
+
|
|
56
|
+
# Add ALL available components
|
|
57
|
+
arkitect-ui add --all
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
**Options:**
|
|
61
|
+
|
|
62
|
+
- `--all`: Install all components available in the registry.
|
|
63
|
+
- `--overwrite`: Overwrite existing files.
|
|
64
|
+
|
|
65
|
+
### `create` - Create Project (Beta)
|
|
66
|
+
|
|
67
|
+
Creates a new project from a predefined template.
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
arkitect-ui create [options] <project-name>
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## 🛠️ Development
|
|
74
|
+
|
|
75
|
+
### Local Setup
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
# Clone the monorepo
|
|
79
|
+
git clone https://github.com/devx-op/arkitect-ui.git
|
|
80
|
+
cd arkitect-ui
|
|
81
|
+
|
|
82
|
+
# Install dependencies
|
|
83
|
+
pnpm install
|
|
84
|
+
|
|
85
|
+
# Build CLI
|
|
86
|
+
pnpm nx build cli
|
|
87
|
+
|
|
88
|
+
# Link locally
|
|
89
|
+
cd apps/cli
|
|
90
|
+
pnpm link --global
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Running Locally
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
arkitect-ui --help
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## 📄 License
|
|
100
|
+
|
|
101
|
+
MIT
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@arkitect-ui/cli",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "CLI tool for creating Effect-TS monorepos and managing components",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"arkitect-ui": "./dist/src/main.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist",
|
|
11
|
+
"templates",
|
|
12
|
+
"registry"
|
|
13
|
+
],
|
|
14
|
+
"dependencies": {
|
|
15
|
+
"@effect/cli": "catalog:",
|
|
16
|
+
"@effect/platform": "catalog:",
|
|
17
|
+
"@effect/platform-node": "catalog:",
|
|
18
|
+
"chalk": "^5.3.0",
|
|
19
|
+
"effect": "catalog:",
|
|
20
|
+
"handlebars": "^4.7.8",
|
|
21
|
+
"tar": "^7.4.3"
|
|
22
|
+
},
|
|
23
|
+
"devDependencies": {
|
|
24
|
+
"@types/handlebars": "^4.1.0",
|
|
25
|
+
"@types/node": "catalog:",
|
|
26
|
+
"@types/tar": "^6.1.13",
|
|
27
|
+
"@effect/vitest": "catalog:",
|
|
28
|
+
"typescript": "catalog:"
|
|
29
|
+
},
|
|
30
|
+
"keywords": [
|
|
31
|
+
"effect-ts",
|
|
32
|
+
"cli",
|
|
33
|
+
"monorepo",
|
|
34
|
+
"scaffold",
|
|
35
|
+
"template",
|
|
36
|
+
"generator"
|
|
37
|
+
],
|
|
38
|
+
"author": "Andres Jimenez",
|
|
39
|
+
"license": "MIT",
|
|
40
|
+
"repository": {
|
|
41
|
+
"type": "git",
|
|
42
|
+
"url": "https://github.com/devx-op/arkitect-ui.git",
|
|
43
|
+
"directory": "apps/cli"
|
|
44
|
+
},
|
|
45
|
+
"types": "./src/main.d.ts",
|
|
46
|
+
"module": "./src/main.js",
|
|
47
|
+
"main": "./src/main.js"
|
|
48
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as Command from "@effect/cli/Command";
|
|
2
|
+
import * as Option from "effect/Option";
|
|
3
|
+
import * as FileSystem from "@effect/platform/FileSystem";
|
|
4
|
+
import * as Path from "@effect/platform/Path";
|
|
5
|
+
import * as HttpClient from "@effect/platform/HttpClient";
|
|
6
|
+
export declare const addCommand: Command.Command<"add", FileSystem.FileSystem | Path.Path | HttpClient.HttpClient | import("@effect/platform/CommandExecutor").CommandExecutor, Error | import("@effect/platform/Error").PlatformError | import("effect/ParseResult").ParseError | import("@effect/platform/HttpClientError").HttpClientError, {
|
|
7
|
+
readonly componentName: Option.Option<string>;
|
|
8
|
+
readonly all: boolean;
|
|
9
|
+
readonly overwrite: boolean;
|
|
10
|
+
readonly cwd: string;
|
|
11
|
+
readonly dryRun: boolean;
|
|
12
|
+
}>;
|
|
13
|
+
//# sourceMappingURL=add.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/commands/add.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAA;AAK9C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,UAAU,MAAM,6BAA6B,CAAA;AACzD,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAA;AAE7C,OAAO,KAAK,UAAU,MAAM,6BAA6B,CAAA;AA2CzD,eAAO,MAAM,UAAU;;;;;;EAsGtB,CAAA"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import * as Args from "@effect/cli/Args";
|
|
2
|
+
import * as Command from "@effect/cli/Command";
|
|
3
|
+
import * as Options from "@effect/cli/Options";
|
|
4
|
+
import * as PlatformCommand from "@effect/platform/Command";
|
|
5
|
+
import * as Console from "effect/Console";
|
|
6
|
+
import * as Effect from "effect/Effect";
|
|
7
|
+
import * as Option from "effect/Option";
|
|
8
|
+
import * as FileSystem from "@effect/platform/FileSystem";
|
|
9
|
+
import * as Path from "@effect/platform/Path";
|
|
10
|
+
import * as Schema from "effect/Schema";
|
|
11
|
+
import * as HttpClient from "@effect/platform/HttpClient";
|
|
12
|
+
import * as HttpClientResponse from "@effect/platform/HttpClientResponse";
|
|
13
|
+
import { ComponentsConfig } from "../schemas/components-config.js";
|
|
14
|
+
const REGISTRY_BASE_URL = "https://devx-op.github.io/arkitect-ui/r";
|
|
15
|
+
// Arguments and options for add command
|
|
16
|
+
const componentNameArg = Args.text({ name: "component-name" }).pipe(Args.withDescription("Name of the component to add"), Args.optional);
|
|
17
|
+
const allOption = Options.boolean("all").pipe(Options.withAlias("a"), Options.withDescription("Install all available components"), Options.withDefault(false));
|
|
18
|
+
const overwriteOption = Options.boolean("overwrite").pipe(Options.withAlias("o"), Options.withDescription("Overwrite existing files"), Options.withDefault(false));
|
|
19
|
+
const cwdOption = Options.text("cwd").pipe(Options.withDescription("Current working directory"), Options.withDefault(process.cwd()));
|
|
20
|
+
const dryRunOption = Options.boolean("dry-run").pipe(Options.withDescription("Simulate installation without running commands"), Options.withDefault(false));
|
|
21
|
+
// Export the add command
|
|
22
|
+
export const addCommand = Command.make("add", {
|
|
23
|
+
componentName: componentNameArg,
|
|
24
|
+
all: allOption,
|
|
25
|
+
overwrite: overwriteOption,
|
|
26
|
+
cwd: cwdOption,
|
|
27
|
+
dryRun: dryRunOption,
|
|
28
|
+
}, (options) => Effect.gen(function* () {
|
|
29
|
+
const fs = yield* FileSystem.FileSystem;
|
|
30
|
+
const path = yield* Path.Path;
|
|
31
|
+
const http = (yield* HttpClient.HttpClient).pipe(HttpClient.filterStatusOk);
|
|
32
|
+
// 1. Check for components.json and detect framework
|
|
33
|
+
const configPath = path.join(options.cwd, "components.json");
|
|
34
|
+
const hasConfig = yield* fs.exists(configPath);
|
|
35
|
+
if (!hasConfig) {
|
|
36
|
+
return yield* Effect.fail(new Error("⚠️ components.json not found. Please run 'init' first."));
|
|
37
|
+
}
|
|
38
|
+
const configContent = yield* fs.readFileString(configPath);
|
|
39
|
+
const config = yield* Schema.decodeUnknown(Schema.parseJson(ComponentsConfig))(configContent);
|
|
40
|
+
const framework = Option.fromNullable(config.arkitect?.framework).pipe(Option.orElse(() => Option.fromNullable(config.rsc).pipe(Option.map((rsc) => (rsc ? "react" : "react")))), Option.getOrElse(() => "react"));
|
|
41
|
+
// Determine Registry URL path segment
|
|
42
|
+
// React -> r/r, Solid -> r/s
|
|
43
|
+
const frameworkPath = framework === "solid" ? "s" : "r";
|
|
44
|
+
// 2. Resolve components to install
|
|
45
|
+
let componentsToInstall = [];
|
|
46
|
+
if (options.all) {
|
|
47
|
+
yield* Console.log("📦 Fetching all components from registry...");
|
|
48
|
+
const RegistryIndex = Schema.Struct({
|
|
49
|
+
items: Schema.Array(Schema.Struct({ name: Schema.String, type: Schema.String })),
|
|
50
|
+
});
|
|
51
|
+
const response = yield* http.get(`${REGISTRY_BASE_URL}/index.json`);
|
|
52
|
+
const registry = yield* HttpClientResponse.schemaBodyJson(RegistryIndex)(response);
|
|
53
|
+
componentsToInstall = registry.items
|
|
54
|
+
.filter((item) => item.type === "registry:ui")
|
|
55
|
+
.map((item) => item.name);
|
|
56
|
+
if (componentsToInstall.length === 0) {
|
|
57
|
+
return yield* Console.log("⚠️ No components found to install.");
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
else if (Option.isSome(options.componentName)) {
|
|
61
|
+
componentsToInstall = [options.componentName.value];
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
return yield* Effect.fail(new Error("⚠️ Please specify a component name or use --all"));
|
|
65
|
+
}
|
|
66
|
+
// 3. Install Components
|
|
67
|
+
yield* Console.log(`🚀 Installing ${componentsToInstall.length} component(s) for ${framework}...`);
|
|
68
|
+
// Install sequentially to avoid race conditions in shadcn
|
|
69
|
+
for (const name of componentsToInstall) {
|
|
70
|
+
const url = `${REGISTRY_BASE_URL}/${frameworkPath}/${name}.json`;
|
|
71
|
+
const args = ["shadcn@latest", "add", url];
|
|
72
|
+
if (options.overwrite)
|
|
73
|
+
args.push("--overwrite");
|
|
74
|
+
const command = PlatformCommand.make("npx", ...args).pipe(PlatformCommand.workingDirectory(options.cwd));
|
|
75
|
+
yield* Console.log(`Installing ${name}...`);
|
|
76
|
+
if (options.dryRun) {
|
|
77
|
+
yield* Console.log(`[Dry Run] Would execute: npx ${args.join(" ")}`);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
yield* PlatformCommand.string(command).pipe(Effect.catchAll((err) => Effect.fail(new Error(`Failed to install ${name}: ${err}`))));
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
yield* Console.log("✅ All components installed successfully.");
|
|
84
|
+
}));
|
|
85
|
+
//# sourceMappingURL=add.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/commands/add.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as Command from "@effect/cli/Command";
|
|
2
|
+
import * as FileSystem from "@effect/platform/FileSystem";
|
|
3
|
+
import * as Option from "effect/Option";
|
|
4
|
+
export declare const initCommand: Command.Command<"init", FileSystem.FileSystem | import("@effect/platform/CommandExecutor").CommandExecutor | import("@effect/platform/Terminal").Terminal, Error | import("@effect/platform/Error").PlatformError | import("effect/ParseResult").ParseError, {
|
|
5
|
+
readonly cwd: string;
|
|
6
|
+
readonly framework: Option.Option<"react" | "solid">;
|
|
7
|
+
readonly srcDir: Option.Option<string>;
|
|
8
|
+
readonly componentsDir: Option.Option<string>;
|
|
9
|
+
readonly utilsPath: Option.Option<string>;
|
|
10
|
+
readonly cssPath: Option.Option<string>;
|
|
11
|
+
readonly yes: boolean;
|
|
12
|
+
readonly installDeps: Option.Option<boolean>;
|
|
13
|
+
}>;
|
|
14
|
+
//# sourceMappingURL=init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAA;AAI9C,OAAO,KAAK,UAAU,MAAM,6BAA6B,CAAA;AAGzD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAyDvC,eAAO,MAAM,WAAW;;;;;;;;;EAgLvB,CAAA"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import * as Command from "@effect/cli/Command";
|
|
2
|
+
import * as Options from "@effect/cli/Options";
|
|
3
|
+
import * as Prompt from "@effect/cli/Prompt";
|
|
4
|
+
import * as PlatformCommand from "@effect/platform/Command";
|
|
5
|
+
import * as FileSystem from "@effect/platform/FileSystem";
|
|
6
|
+
import * as Console from "effect/Console";
|
|
7
|
+
import * as Effect from "effect/Effect";
|
|
8
|
+
import * as Option from "effect/Option";
|
|
9
|
+
import * as Schema from "effect/Schema";
|
|
10
|
+
import { ComponentsConfig } from "../schemas/components-config.js";
|
|
11
|
+
// Options for the init command
|
|
12
|
+
const cwdOption = Options.text("cwd").pipe(Options.withDescription("Current working directory"), Options.withDefault(process.cwd()));
|
|
13
|
+
const frameworkOption = Options.choice("framework", ["react", "solid"]).pipe(Options.withDescription("Framework to use"), Options.optional);
|
|
14
|
+
const srcDirOption = Options.text("src-dir").pipe(Options.withDescription("Source directory"), Options.optional);
|
|
15
|
+
const componentsDirOption = Options.text("components-dir").pipe(Options.withDescription("Components directory"), Options.optional);
|
|
16
|
+
const utilsPathOption = Options.text("utils-path").pipe(Options.withDescription("Utils file path"), Options.optional);
|
|
17
|
+
const cssPathOption = Options.text("css-path").pipe(Options.withDescription("Global CSS file path"), Options.optional);
|
|
18
|
+
const yesOption = Options.boolean("yes").pipe(Options.withAlias("y"), Options.withDescription("Skip prompts and use defaults/flags"));
|
|
19
|
+
const installDepsOption = Options.boolean("install-deps").pipe(Options.withDescription("Install dependencies automatically"), Options.optional);
|
|
20
|
+
// Export the init command
|
|
21
|
+
export const initCommand = Command.make("init", {
|
|
22
|
+
cwd: cwdOption,
|
|
23
|
+
framework: frameworkOption,
|
|
24
|
+
srcDir: srcDirOption,
|
|
25
|
+
componentsDir: componentsDirOption,
|
|
26
|
+
utilsPath: utilsPathOption,
|
|
27
|
+
cssPath: cssPathOption,
|
|
28
|
+
yes: yesOption,
|
|
29
|
+
installDeps: installDepsOption,
|
|
30
|
+
}, (options) => Effect.gen(function* () {
|
|
31
|
+
const fs = yield* FileSystem.FileSystem;
|
|
32
|
+
yield* Console.log("🚀 Initializing Arkitect UI configuration...");
|
|
33
|
+
// 1. Detect Framework
|
|
34
|
+
let detectedFramework = "react";
|
|
35
|
+
const packageJsonPath = `${options.cwd}/package.json`;
|
|
36
|
+
const hasPackageJson = yield* fs.exists(packageJsonPath);
|
|
37
|
+
if (hasPackageJson) {
|
|
38
|
+
const packageJsonContent = yield* fs.readFileString(packageJsonPath);
|
|
39
|
+
const packageJson = JSON.parse(packageJsonContent);
|
|
40
|
+
const deps = {
|
|
41
|
+
...packageJson.dependencies,
|
|
42
|
+
...packageJson.devDependencies,
|
|
43
|
+
};
|
|
44
|
+
if (deps["solid-js"]) {
|
|
45
|
+
detectedFramework = "solid";
|
|
46
|
+
}
|
|
47
|
+
else if (deps["react"]) {
|
|
48
|
+
detectedFramework = "react";
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// Determine Framework
|
|
52
|
+
const framework = yield* Option.match(options.framework, {
|
|
53
|
+
onNone: () => options.yes
|
|
54
|
+
? Effect.succeed(detectedFramework)
|
|
55
|
+
: Prompt.select({
|
|
56
|
+
message: "Which framework are you using?",
|
|
57
|
+
choices: [
|
|
58
|
+
{
|
|
59
|
+
title: "React",
|
|
60
|
+
value: "react",
|
|
61
|
+
selected: detectedFramework === "react",
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
title: "Solid",
|
|
65
|
+
value: "solid",
|
|
66
|
+
selected: detectedFramework === "solid",
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
}).pipe(Effect.map((f) => f)),
|
|
70
|
+
onSome: (f) => Effect.succeed(f),
|
|
71
|
+
});
|
|
72
|
+
// 2. Resolve Paths
|
|
73
|
+
const resolvePath = (option, promptMsg, defaultValue) => Option.match(option, {
|
|
74
|
+
onNone: () => options.yes
|
|
75
|
+
? Effect.succeed(defaultValue)
|
|
76
|
+
: Prompt.text({ message: promptMsg, default: defaultValue }),
|
|
77
|
+
onSome: Effect.succeed,
|
|
78
|
+
});
|
|
79
|
+
const srcDir = yield* resolvePath(options.srcDir, "Where is your source directory?", "src");
|
|
80
|
+
const componentsDir = yield* resolvePath(options.componentsDir, "Where would you like to install components?", `${srcDir}/components/ui`);
|
|
81
|
+
const utilsPath = yield* resolvePath(options.utilsPath, "Where is your utils file located?", `${srcDir}/lib/utils.ts`);
|
|
82
|
+
const cssPath = yield* resolvePath(options.cssPath, "Where is your global CSS file?", `${srcDir}/index.css`);
|
|
83
|
+
// 3. Generate components.json
|
|
84
|
+
const componentsConfig = new ComponentsConfig({
|
|
85
|
+
$schema: "https://ui.shadcn.com/schema.json",
|
|
86
|
+
style: "default",
|
|
87
|
+
rsc: framework === "react",
|
|
88
|
+
tsx: true,
|
|
89
|
+
tailwind: {
|
|
90
|
+
config: "tailwind.config.js",
|
|
91
|
+
css: cssPath,
|
|
92
|
+
baseColor: "slate",
|
|
93
|
+
cssVariables: true,
|
|
94
|
+
prefix: "",
|
|
95
|
+
},
|
|
96
|
+
aliases: {
|
|
97
|
+
components: `@/${componentsDir.replace(`${srcDir}/`, "")}`,
|
|
98
|
+
utils: `@/${utilsPath.replace(`${srcDir}/`, "").replace(".ts", "")}`,
|
|
99
|
+
ui: `@/${componentsDir.replace(`${srcDir}/`, "")}`,
|
|
100
|
+
},
|
|
101
|
+
arkitect: {
|
|
102
|
+
framework: framework,
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
const encodedConfig = yield* Schema.encode(Schema.parseJson(ComponentsConfig))(componentsConfig);
|
|
106
|
+
yield* fs.writeFileString(`${options.cwd}/components.json`, encodedConfig);
|
|
107
|
+
yield* Console.log("✅ components.json created successfully.");
|
|
108
|
+
// 4. Install Dependencies
|
|
109
|
+
const shouldInstallDeps = yield* Option.match(options.installDeps, {
|
|
110
|
+
onNone: () => options.yes
|
|
111
|
+
? Effect.succeed(true)
|
|
112
|
+
: Prompt.confirm({
|
|
113
|
+
message: "Would you like to install required dependencies now?",
|
|
114
|
+
initial: true,
|
|
115
|
+
}),
|
|
116
|
+
onSome: Effect.succeed,
|
|
117
|
+
});
|
|
118
|
+
if (shouldInstallDeps) {
|
|
119
|
+
const baseDeps = ["clsx", "tailwind-merge", "class-variance-authority"];
|
|
120
|
+
const frameworkDeps = framework === "react" ? ["@ark-ui/react"] : ["@ark-ui/solid"];
|
|
121
|
+
const allDeps = [...baseDeps, ...frameworkDeps];
|
|
122
|
+
yield* Console.log(`📦 Installing dependencies: ${allDeps.join(", ")}...`);
|
|
123
|
+
let pm = "npm";
|
|
124
|
+
const hasPnpmLock = yield* fs.exists(`${options.cwd}/pnpm-lock.yaml`);
|
|
125
|
+
const hasYarnLock = yield* fs.exists(`${options.cwd}/yarn.lock`);
|
|
126
|
+
const hasBunLock = yield* fs.exists(`${options.cwd}/bun.lockb`);
|
|
127
|
+
if (hasPnpmLock)
|
|
128
|
+
pm = "pnpm";
|
|
129
|
+
else if (hasYarnLock)
|
|
130
|
+
pm = "yarn";
|
|
131
|
+
else if (hasBunLock)
|
|
132
|
+
pm = "bun";
|
|
133
|
+
const installCmd = pm === "npm" ? "install" : "add";
|
|
134
|
+
const args = [installCmd, ...allDeps];
|
|
135
|
+
const command = PlatformCommand.make(pm, ...args).pipe(PlatformCommand.workingDirectory(options.cwd));
|
|
136
|
+
yield* PlatformCommand.string(command).pipe(Effect.catchAll((err) => Effect.fail(new Error(`Failed to install dependencies: ${err}`))));
|
|
137
|
+
yield* Console.log("✅ Dependencies installed successfully.");
|
|
138
|
+
}
|
|
139
|
+
}));
|
|
140
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import * as Command from "@effect/cli/Command";
|
|
2
|
+
import * as FileSystem from "@effect/platform/FileSystem";
|
|
3
|
+
export declare const listCommand: Command.Command<"list", FileSystem.FileSystem, Error | import("@effect/platform/Error").PlatformError, {}>;
|
|
4
|
+
//# sourceMappingURL=list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAA;AAI9C,OAAO,KAAK,UAAU,MAAM,6BAA6B,CAAA;AAgBzD,eAAO,MAAM,WAAW,4GAsDnB,CAAA"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import * as Command from "@effect/cli/Command";
|
|
2
|
+
import * as Console from "effect/Console";
|
|
3
|
+
import * as Effect from "effect/Effect";
|
|
4
|
+
import * as Option from "effect/Option";
|
|
5
|
+
import * as FileSystem from "@effect/platform/FileSystem";
|
|
6
|
+
import * as Schema from "effect/Schema";
|
|
7
|
+
import { ComponentsConfig } from "../schemas/components-config.js";
|
|
8
|
+
const REGISTRY_INDEX_URL = "https://devx-op.github.io/arkitect-ui/r/index.json";
|
|
9
|
+
export const listCommand = Command.make("list", {}, () => Effect.gen(function* () {
|
|
10
|
+
const fs = yield* FileSystem.FileSystem;
|
|
11
|
+
yield* Console.log("🔍 Fetching components from Arkitect UI registry...");
|
|
12
|
+
// Detect framework from components.json if available
|
|
13
|
+
let framework = Option.none();
|
|
14
|
+
const hasConfig = yield* fs.exists("components.json");
|
|
15
|
+
if (hasConfig) {
|
|
16
|
+
const configContent = yield* fs.readFileString("components.json");
|
|
17
|
+
const config = yield* Effect.option(Schema.decodeUnknown(Schema.parseJson(ComponentsConfig))(configContent));
|
|
18
|
+
framework = Option.flatMap(config, (c) => Option.fromNullable(c.arkitect?.framework));
|
|
19
|
+
}
|
|
20
|
+
// Fetch registry index
|
|
21
|
+
const response = yield* Effect.tryPromise({
|
|
22
|
+
try: () => fetch(REGISTRY_INDEX_URL),
|
|
23
|
+
catch: (err) => new Error(`Failed to fetch registry: ${err}`),
|
|
24
|
+
});
|
|
25
|
+
if (!response.ok) {
|
|
26
|
+
yield* Effect.fail(new Error(`Failed to fetch registry: ${response.statusText}`));
|
|
27
|
+
}
|
|
28
|
+
const registry = (yield* Effect.tryPromise({
|
|
29
|
+
try: () => response.json(),
|
|
30
|
+
catch: (err) => new Error(`Failed to parse registry json: ${err}`),
|
|
31
|
+
}));
|
|
32
|
+
const components = registry.items.filter((item) => item.type === "registry:ui");
|
|
33
|
+
if (components.length === 0) {
|
|
34
|
+
yield* Console.log("⚠️ No components found in the registry.");
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
yield* Console.log("\nAvailable components:");
|
|
38
|
+
for (const component of components) {
|
|
39
|
+
yield* Console.log(`- ${component.name}: ${component.description}`);
|
|
40
|
+
}
|
|
41
|
+
if (Option.isSome(framework)) {
|
|
42
|
+
yield* Console.log(`\nFiltered for framework: ${framework.value} (Note: Registry index lists generic components, installation handles framework specifics)`);
|
|
43
|
+
}
|
|
44
|
+
}));
|
|
45
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":""}
|
package/dist/src/main.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import * as Command from "@effect/cli/Command";
|
|
3
|
+
import * as NodeContext from "@effect/platform-node/NodeContext";
|
|
4
|
+
import * as NodeRuntime from "@effect/platform-node/NodeRuntime";
|
|
5
|
+
import * as NodeHttpClient from "@effect/platform-node/NodeHttpClient";
|
|
6
|
+
import * as Console from "effect/Console";
|
|
7
|
+
import * as Effect from "effect/Effect";
|
|
8
|
+
import { addCommand } from "./commands/add";
|
|
9
|
+
import { initCommand } from "./commands/init";
|
|
10
|
+
import { listCommand } from "./commands/list";
|
|
11
|
+
// Main CLI command
|
|
12
|
+
const arkitectUiCommand = Command.make("arkitect-ui", {}, () => Console.log("🚀 arkitect-ui CLI - Use --help to see available commands")).pipe(Command.withSubcommands([addCommand, initCommand, listCommand]));
|
|
13
|
+
// Run the CLI
|
|
14
|
+
const cli = Command.run(arkitectUiCommand, {
|
|
15
|
+
name: "arkitect-ui CLI",
|
|
16
|
+
version: "0.1.0",
|
|
17
|
+
});
|
|
18
|
+
cli(process.argv).pipe(Effect.provide(NodeContext.layer), Effect.provide(NodeHttpClient.layer), NodeRuntime.runMain);
|
|
19
|
+
//# sourceMappingURL=main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAA;AAC9C,OAAO,KAAK,WAAW,MAAM,mCAAmC,CAAA;AAChE,OAAO,KAAK,WAAW,MAAM,mCAAmC,CAAA;AAChE,OAAO,KAAK,cAAc,MAAM,sCAAsC,CAAA;AACtE,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAE7C,mBAAmB;AACnB,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,CACpC,aAAa,EACb,EAAE,EACF,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAC/E,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;AAEvE,cAAc;AACd,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE;IACzC,IAAI,EAAE,iBAAiB;IACvB,OAAO,EAAE,OAAO;CACjB,CAAC,CAAA;AAEF,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CACpB,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,EACjC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,EACpC,WAAW,CAAC,OAAO,CACpB,CAAA"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import * as Schema from "effect/Schema";
|
|
2
|
+
declare const ComponentsConfig_base: Schema.Class<ComponentsConfig, {
|
|
3
|
+
$schema: typeof Schema.String;
|
|
4
|
+
style: Schema.Literal<["default", "new-york", "radix-vega", "radix-nova", "radix-maia", "radix-lyra", "radix-mira", "base-vega", "base-nova", "base-maia", "base-lyra", "base-mira"]>;
|
|
5
|
+
rsc: typeof Schema.Boolean;
|
|
6
|
+
tsx: Schema.optional<typeof Schema.Boolean>;
|
|
7
|
+
tailwind: Schema.Struct<{
|
|
8
|
+
config: typeof Schema.String;
|
|
9
|
+
css: typeof Schema.String;
|
|
10
|
+
baseColor: typeof Schema.String;
|
|
11
|
+
cssVariables: typeof Schema.Boolean;
|
|
12
|
+
prefix: Schema.optional<typeof Schema.String>;
|
|
13
|
+
}>;
|
|
14
|
+
aliases: Schema.Struct<{
|
|
15
|
+
utils: typeof Schema.String;
|
|
16
|
+
components: typeof Schema.String;
|
|
17
|
+
ui: Schema.optional<typeof Schema.String>;
|
|
18
|
+
lib: Schema.optional<typeof Schema.String>;
|
|
19
|
+
hooks: Schema.optional<typeof Schema.String>;
|
|
20
|
+
}>;
|
|
21
|
+
iconLibrary: Schema.optional<typeof Schema.String>;
|
|
22
|
+
menuColor: Schema.optional<Schema.Literal<["default", "inverted"]>>;
|
|
23
|
+
menuAccent: Schema.optional<Schema.Literal<["subtle", "bold"]>>;
|
|
24
|
+
rtl: Schema.optional<typeof Schema.Boolean>;
|
|
25
|
+
registries: Schema.optional<Schema.Record$<typeof Schema.String, Schema.Union<[typeof Schema.String, Schema.Struct<{
|
|
26
|
+
url: typeof Schema.String;
|
|
27
|
+
params: Schema.optional<Schema.Record$<typeof Schema.String, typeof Schema.String>>;
|
|
28
|
+
headers: Schema.optional<Schema.Record$<typeof Schema.String, typeof Schema.String>>;
|
|
29
|
+
}>]>>>;
|
|
30
|
+
arkitect: Schema.optional<Schema.Struct<{
|
|
31
|
+
framework: Schema.Literal<["react", "solid"]>;
|
|
32
|
+
}>>;
|
|
33
|
+
}, Schema.Struct.Encoded<{
|
|
34
|
+
$schema: typeof Schema.String;
|
|
35
|
+
style: Schema.Literal<["default", "new-york", "radix-vega", "radix-nova", "radix-maia", "radix-lyra", "radix-mira", "base-vega", "base-nova", "base-maia", "base-lyra", "base-mira"]>;
|
|
36
|
+
rsc: typeof Schema.Boolean;
|
|
37
|
+
tsx: Schema.optional<typeof Schema.Boolean>;
|
|
38
|
+
tailwind: Schema.Struct<{
|
|
39
|
+
config: typeof Schema.String;
|
|
40
|
+
css: typeof Schema.String;
|
|
41
|
+
baseColor: typeof Schema.String;
|
|
42
|
+
cssVariables: typeof Schema.Boolean;
|
|
43
|
+
prefix: Schema.optional<typeof Schema.String>;
|
|
44
|
+
}>;
|
|
45
|
+
aliases: Schema.Struct<{
|
|
46
|
+
utils: typeof Schema.String;
|
|
47
|
+
components: typeof Schema.String;
|
|
48
|
+
ui: Schema.optional<typeof Schema.String>;
|
|
49
|
+
lib: Schema.optional<typeof Schema.String>;
|
|
50
|
+
hooks: Schema.optional<typeof Schema.String>;
|
|
51
|
+
}>;
|
|
52
|
+
iconLibrary: Schema.optional<typeof Schema.String>;
|
|
53
|
+
menuColor: Schema.optional<Schema.Literal<["default", "inverted"]>>;
|
|
54
|
+
menuAccent: Schema.optional<Schema.Literal<["subtle", "bold"]>>;
|
|
55
|
+
rtl: Schema.optional<typeof Schema.Boolean>;
|
|
56
|
+
registries: Schema.optional<Schema.Record$<typeof Schema.String, Schema.Union<[typeof Schema.String, Schema.Struct<{
|
|
57
|
+
url: typeof Schema.String;
|
|
58
|
+
params: Schema.optional<Schema.Record$<typeof Schema.String, typeof Schema.String>>;
|
|
59
|
+
headers: Schema.optional<Schema.Record$<typeof Schema.String, typeof Schema.String>>;
|
|
60
|
+
}>]>>>;
|
|
61
|
+
arkitect: Schema.optional<Schema.Struct<{
|
|
62
|
+
framework: Schema.Literal<["react", "solid"]>;
|
|
63
|
+
}>>;
|
|
64
|
+
}>, never, {
|
|
65
|
+
readonly $schema: string;
|
|
66
|
+
} & {
|
|
67
|
+
readonly rsc: boolean;
|
|
68
|
+
} & {
|
|
69
|
+
readonly style: "default" | "new-york" | "radix-vega" | "radix-nova" | "radix-maia" | "radix-lyra" | "radix-mira" | "base-vega" | "base-nova" | "base-maia" | "base-lyra" | "base-mira";
|
|
70
|
+
} & {
|
|
71
|
+
readonly tsx?: boolean | undefined;
|
|
72
|
+
} & {
|
|
73
|
+
readonly tailwind: {
|
|
74
|
+
readonly config: string;
|
|
75
|
+
readonly css: string;
|
|
76
|
+
readonly baseColor: string;
|
|
77
|
+
readonly cssVariables: boolean;
|
|
78
|
+
readonly prefix?: string | undefined;
|
|
79
|
+
};
|
|
80
|
+
} & {
|
|
81
|
+
readonly aliases: {
|
|
82
|
+
readonly utils: string;
|
|
83
|
+
readonly components: string;
|
|
84
|
+
readonly ui?: string | undefined;
|
|
85
|
+
readonly lib?: string | undefined;
|
|
86
|
+
readonly hooks?: string | undefined;
|
|
87
|
+
};
|
|
88
|
+
} & {
|
|
89
|
+
readonly iconLibrary?: string | undefined;
|
|
90
|
+
} & {
|
|
91
|
+
readonly menuColor?: "default" | "inverted" | undefined;
|
|
92
|
+
} & {
|
|
93
|
+
readonly menuAccent?: "subtle" | "bold" | undefined;
|
|
94
|
+
} & {
|
|
95
|
+
readonly rtl?: boolean | undefined;
|
|
96
|
+
} & {
|
|
97
|
+
readonly registries?: {
|
|
98
|
+
readonly [x: string]: string | {
|
|
99
|
+
readonly url: string;
|
|
100
|
+
readonly params?: {
|
|
101
|
+
readonly [x: string]: string;
|
|
102
|
+
} | undefined;
|
|
103
|
+
readonly headers?: {
|
|
104
|
+
readonly [x: string]: string;
|
|
105
|
+
} | undefined;
|
|
106
|
+
};
|
|
107
|
+
} | undefined;
|
|
108
|
+
} & {
|
|
109
|
+
readonly arkitect?: {
|
|
110
|
+
readonly framework: "react" | "solid";
|
|
111
|
+
} | undefined;
|
|
112
|
+
}, {}, {}>;
|
|
113
|
+
export declare class ComponentsConfig extends ComponentsConfig_base {
|
|
114
|
+
}
|
|
115
|
+
export {};
|
|
116
|
+
//# sourceMappingURL=components-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components-config.d.ts","sourceRoot":"","sources":["../../../src/schemas/components-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEvC,qBAAa,gBAAiB,SAAQ,qBA4DpC;CAAG"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as Schema from "effect/Schema";
|
|
2
|
+
export class ComponentsConfig extends Schema.Class("ComponentsConfig")({
|
|
3
|
+
$schema: Schema.String,
|
|
4
|
+
style: Schema.Literal("default", "new-york", "radix-vega", "radix-nova", "radix-maia", "radix-lyra", "radix-mira", "base-vega", "base-nova", "base-maia", "base-lyra", "base-mira"),
|
|
5
|
+
rsc: Schema.Boolean,
|
|
6
|
+
tsx: Schema.optional(Schema.Boolean),
|
|
7
|
+
tailwind: Schema.Struct({
|
|
8
|
+
config: Schema.String,
|
|
9
|
+
css: Schema.String,
|
|
10
|
+
baseColor: Schema.String,
|
|
11
|
+
cssVariables: Schema.Boolean,
|
|
12
|
+
prefix: Schema.optional(Schema.String),
|
|
13
|
+
}),
|
|
14
|
+
aliases: Schema.Struct({
|
|
15
|
+
utils: Schema.String,
|
|
16
|
+
components: Schema.String,
|
|
17
|
+
ui: Schema.optional(Schema.String),
|
|
18
|
+
lib: Schema.optional(Schema.String),
|
|
19
|
+
hooks: Schema.optional(Schema.String),
|
|
20
|
+
}),
|
|
21
|
+
iconLibrary: Schema.optional(Schema.String),
|
|
22
|
+
menuColor: Schema.optional(Schema.Literal("default", "inverted")),
|
|
23
|
+
menuAccent: Schema.optional(Schema.Literal("subtle", "bold")),
|
|
24
|
+
rtl: Schema.optional(Schema.Boolean),
|
|
25
|
+
registries: Schema.optional(Schema.Record({
|
|
26
|
+
key: Schema.String,
|
|
27
|
+
value: Schema.Union(Schema.String, Schema.Struct({
|
|
28
|
+
url: Schema.String,
|
|
29
|
+
params: Schema.optional(Schema.Record({ key: Schema.String, value: Schema.String })),
|
|
30
|
+
headers: Schema.optional(Schema.Record({ key: Schema.String, value: Schema.String })),
|
|
31
|
+
})),
|
|
32
|
+
})),
|
|
33
|
+
arkitect: Schema.optional(Schema.Struct({
|
|
34
|
+
framework: Schema.Literal("react", "solid"),
|
|
35
|
+
})),
|
|
36
|
+
}) {
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=components-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components-config.js","sourceRoot":"","sources":["../../../src/schemas/components-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,MAAM,OAAO,gBAAiB,SAAQ,MAAM,CAAC,KAAK,CAChD,kBAAkB,CACnB,CAAC;IACA,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,KAAK,EAAE,MAAM,CAAC,OAAO,CACnB,SAAS,EACT,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,WAAW,EACX,WAAW,EACX,WAAW,EACX,WAAW,CACZ;IACD,GAAG,EAAE,MAAM,CAAC,OAAO;IACnB,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,GAAG,EAAE,MAAM,CAAC,MAAM;QAClB,SAAS,EAAE,MAAM,CAAC,MAAM;QACxB,YAAY,EAAE,MAAM,CAAC,OAAO;QAC5B,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;KACvC,CAAC;IACF,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC,MAAM;QACpB,UAAU,EAAE,MAAM,CAAC,MAAM;QACzB,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;QAClC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;QACnC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;KACtC,CAAC;IACF,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IAC3C,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACjE,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC7D,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC,QAAQ,CACzB,MAAM,CAAC,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC,MAAM;QAClB,KAAK,EAAE,MAAM,CAAC,KAAK,CACjB,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,MAAM,CAAC;YACZ,GAAG,EAAE,MAAM,CAAC,MAAM;YAClB,MAAM,EAAE,MAAM,CAAC,QAAQ,CACrB,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAC5D;YACD,OAAO,EAAE,MAAM,CAAC,QAAQ,CACtB,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAC5D;SACF,CAAC,CACH;KACF,CAAC,CACH;IACD,QAAQ,EAAE,MAAM,CAAC,QAAQ,CACvB,MAAM,CAAC,MAAM,CAAC;QACZ,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;KAC5C,CAAC,CACH;CACF,CAAC;CAAG"}
|
package/package.json
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@arkitect-ui/cli",
|
|
3
|
+
"version": "0.2.1",
|
|
4
|
+
"description": "CLI tool for creating Effect-TS monorepos and managing components",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"arkitect-ui": "./dist/src/main.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist",
|
|
11
|
+
"templates",
|
|
12
|
+
"registry"
|
|
13
|
+
],
|
|
14
|
+
"dependencies": {
|
|
15
|
+
"@effect/cli": "0.73.2",
|
|
16
|
+
"@effect/platform": "0.94.0",
|
|
17
|
+
"@effect/platform-node": "0.104.1",
|
|
18
|
+
"chalk": "^5.3.0",
|
|
19
|
+
"effect": "3.19.16",
|
|
20
|
+
"handlebars": "^4.7.8",
|
|
21
|
+
"tar": "^7.4.3"
|
|
22
|
+
},
|
|
23
|
+
"devDependencies": {
|
|
24
|
+
"@types/handlebars": "^4.1.0",
|
|
25
|
+
"@types/node": "20.19.25",
|
|
26
|
+
"@types/tar": "^6.1.13",
|
|
27
|
+
"@effect/vitest": "0.27.0",
|
|
28
|
+
"typescript": "5.9.3"
|
|
29
|
+
},
|
|
30
|
+
"keywords": [
|
|
31
|
+
"effect-ts",
|
|
32
|
+
"cli",
|
|
33
|
+
"monorepo",
|
|
34
|
+
"scaffold",
|
|
35
|
+
"template",
|
|
36
|
+
"generator"
|
|
37
|
+
],
|
|
38
|
+
"author": "Andres Jimenez",
|
|
39
|
+
"license": "MIT",
|
|
40
|
+
"repository": {
|
|
41
|
+
"type": "git",
|
|
42
|
+
"url": "https://github.com/devx-op/arkitect-ui.git",
|
|
43
|
+
"directory": "apps/cli"
|
|
44
|
+
},
|
|
45
|
+
"publishConfig": {
|
|
46
|
+
"access": "public"
|
|
47
|
+
}
|
|
48
|
+
}
|