@radkode/neo 1.5.0 → 1.7.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/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +15 -112
- package/dist/cli.js.map +1 -1
- package/dist/commands/agent/context/index.js +5 -10
- package/dist/commands/agent/context/index.js.map +1 -1
- package/dist/commands/ai/pr/index.d.ts.map +1 -1
- package/dist/commands/ai/pr/index.js +6 -10
- package/dist/commands/ai/pr/index.js.map +1 -1
- package/dist/commands/alias/setup/index.d.ts.map +1 -1
- package/dist/commands/alias/setup/index.js +5 -10
- package/dist/commands/alias/setup/index.js.map +1 -1
- package/dist/commands/changeset/index.d.ts.map +1 -1
- package/dist/commands/changeset/index.js +11 -19
- package/dist/commands/changeset/index.js.map +1 -1
- package/dist/commands/gh/pr/create/index.d.ts.map +1 -1
- package/dist/commands/gh/pr/create/index.js +21 -40
- package/dist/commands/gh/pr/create/index.js.map +1 -1
- package/dist/commands/git/branch/index.d.ts.map +1 -1
- package/dist/commands/git/branch/index.js +30 -50
- package/dist/commands/git/branch/index.js.map +1 -1
- package/dist/commands/git/commit/index.d.ts.map +1 -1
- package/dist/commands/git/commit/index.js +58 -79
- package/dist/commands/git/commit/index.js.map +1 -1
- package/dist/commands/git/pull/index.js +6 -10
- package/dist/commands/git/pull/index.js.map +1 -1
- package/dist/commands/git/push/index.d.ts.map +1 -1
- package/dist/commands/git/push/index.js +8 -10
- package/dist/commands/git/push/index.js.map +1 -1
- package/dist/commands/git/stash/index.d.ts.map +1 -1
- package/dist/commands/git/stash/index.js +35 -60
- package/dist/commands/git/stash/index.js.map +1 -1
- package/dist/commands/git/worktree/remove.d.ts.map +1 -1
- package/dist/commands/git/worktree/remove.js +9 -17
- package/dist/commands/git/worktree/remove.js.map +1 -1
- package/dist/commands/git/worktree/switch.d.ts.map +1 -1
- package/dist/commands/git/worktree/switch.js +8 -13
- package/dist/commands/git/worktree/switch.js.map +1 -1
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +3 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/init/index.d.ts.map +1 -1
- package/dist/commands/init/index.js +38 -14
- package/dist/commands/init/index.js.map +1 -1
- package/dist/commands/update/index.d.ts.map +1 -1
- package/dist/commands/update/index.js +9 -18
- package/dist/commands/update/index.js.map +1 -1
- package/dist/commands/work/finish/index.d.ts +22 -0
- package/dist/commands/work/finish/index.d.ts.map +1 -0
- package/dist/commands/work/finish/index.js +306 -0
- package/dist/commands/work/finish/index.js.map +1 -0
- package/dist/commands/work/index.d.ts +3 -0
- package/dist/commands/work/index.d.ts.map +1 -0
- package/dist/commands/work/index.js +33 -0
- package/dist/commands/work/index.js.map +1 -0
- package/dist/commands/work/ship/index.d.ts +27 -0
- package/dist/commands/work/ship/index.d.ts.map +1 -0
- package/dist/commands/work/ship/index.js +361 -0
- package/dist/commands/work/ship/index.js.map +1 -0
- package/dist/commands/work/start/index.d.ts +17 -0
- package/dist/commands/work/start/index.d.ts.map +1 -0
- package/dist/commands/work/start/index.js +250 -0
- package/dist/commands/work/start/index.js.map +1 -0
- package/dist/core/errors/index.d.ts +7 -129
- package/dist/core/errors/index.d.ts.map +1 -1
- package/dist/core/errors/index.js +0 -233
- package/dist/core/errors/index.js.map +1 -1
- package/dist/storage/db.d.ts +5 -3
- package/dist/storage/db.d.ts.map +1 -1
- package/dist/storage/db.js +87 -120
- package/dist/storage/db.js.map +1 -1
- package/dist/types/agent.d.ts +0 -8
- package/dist/types/agent.d.ts.map +1 -1
- package/dist/types/schemas.d.ts +1 -0
- package/dist/types/schemas.d.ts.map +1 -1
- package/dist/types/schemas.js +1 -0
- package/dist/types/schemas.js.map +1 -1
- package/dist/utils/agent.js +1 -1
- package/dist/utils/agent.js.map +1 -1
- package/dist/utils/config.d.ts +0 -6
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +0 -8
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/logger.d.ts +8 -2
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +8 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/prompt.d.ts.map +1 -1
- package/dist/utils/prompt.js +3 -6
- package/dist/utils/prompt.js.map +1 -1
- package/dist/utils/skill-installer.d.ts +10 -0
- package/dist/utils/skill-installer.d.ts.map +1 -0
- package/dist/utils/skill-installer.js +56 -0
- package/dist/utils/skill-installer.js.map +1 -0
- package/package.json +7 -15
- package/templates/skills/neo/SKILL.md +66 -0
- package/dist/core/container/index.d.ts +0 -27
- package/dist/core/container/index.d.ts.map +0 -1
- package/dist/core/container/index.js +0 -90
- package/dist/core/container/index.js.map +0 -1
- package/dist/core/interfaces/index.d.ts +0 -324
- package/dist/core/interfaces/index.d.ts.map +0 -1
- package/dist/core/interfaces/index.js +0 -19
- package/dist/core/interfaces/index.js.map +0 -1
- package/dist/core/plugins/command-registry.d.ts +0 -16
- package/dist/core/plugins/command-registry.d.ts.map +0 -1
- package/dist/core/plugins/command-registry.js +0 -40
- package/dist/core/plugins/command-registry.js.map +0 -1
- package/dist/core/plugins/event-bus.d.ts +0 -12
- package/dist/core/plugins/event-bus.d.ts.map +0 -1
- package/dist/core/plugins/event-bus.js +0 -56
- package/dist/core/plugins/event-bus.js.map +0 -1
- package/dist/core/plugins/index.d.ts +0 -6
- package/dist/core/plugins/index.d.ts.map +0 -1
- package/dist/core/plugins/index.js +0 -6
- package/dist/core/plugins/index.js.map +0 -1
- package/dist/core/plugins/plugin-context.d.ts +0 -3
- package/dist/core/plugins/plugin-context.d.ts.map +0 -1
- package/dist/core/plugins/plugin-context.js +0 -116
- package/dist/core/plugins/plugin-context.js.map +0 -1
- package/dist/core/plugins/plugin-loader.d.ts +0 -30
- package/dist/core/plugins/plugin-loader.d.ts.map +0 -1
- package/dist/core/plugins/plugin-loader.js +0 -149
- package/dist/core/plugins/plugin-loader.js.map +0 -1
- package/dist/core/plugins/plugin-registry.d.ts +0 -21
- package/dist/core/plugins/plugin-registry.d.ts.map +0 -1
- package/dist/core/plugins/plugin-registry.js +0 -150
- package/dist/core/plugins/plugin-registry.js.map +0 -1
- package/dist/utils/ui-examples.d.ts +0 -3
- package/dist/utils/ui-examples.d.ts.map +0 -1
- package/dist/utils/ui-examples.js +0 -188
- package/dist/utils/ui-examples.js.map +0 -1
package/dist/utils/prompt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/utils/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/utils/prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type SkillInstallStatus = 'installed' | 'updated' | 'unchanged' | 'skipped-divergent';
|
|
2
|
+
export interface SkillInstallResult {
|
|
3
|
+
status: SkillInstallStatus;
|
|
4
|
+
source: string;
|
|
5
|
+
destination: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function installClaudeSkill(options?: {
|
|
8
|
+
force?: boolean;
|
|
9
|
+
}): Promise<SkillInstallResult | null>;
|
|
10
|
+
//# sourceMappingURL=skill-installer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-installer.d.ts","sourceRoot":"","sources":["../../src/utils/skill-installer.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,mBAAmB,CAAC;AAE7F,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAwCD,wBAAsB,kBAAkB,CACtC,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAChC,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CA+BpC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { fileURLToPath } from 'url';
|
|
2
|
+
import { dirname, join, resolve } from 'path';
|
|
3
|
+
import { homedir } from 'os';
|
|
4
|
+
import { mkdir, copyFile, readFile, access } from 'fs/promises';
|
|
5
|
+
import { constants } from 'fs';
|
|
6
|
+
import { logger } from './logger.js';
|
|
7
|
+
const SKILL_NAME = 'neo';
|
|
8
|
+
const SKILL_REL_PATH = join('skills', SKILL_NAME, 'SKILL.md');
|
|
9
|
+
function resolveTemplatesDir() {
|
|
10
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
11
|
+
return resolve(here, '..', '..', 'templates');
|
|
12
|
+
}
|
|
13
|
+
function getClaudeSkillsDir() {
|
|
14
|
+
return join(homedir(), '.claude', 'skills');
|
|
15
|
+
}
|
|
16
|
+
async function fileExists(path) {
|
|
17
|
+
try {
|
|
18
|
+
await access(path, constants.F_OK);
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
async function filesIdentical(a, b) {
|
|
26
|
+
const [ba, bb] = await Promise.all([readFile(a), readFile(b)]);
|
|
27
|
+
return ba.equals(bb);
|
|
28
|
+
}
|
|
29
|
+
export async function installClaudeSkill(options = {}) {
|
|
30
|
+
const claudeDir = join(homedir(), '.claude');
|
|
31
|
+
if (!(await fileExists(claudeDir))) {
|
|
32
|
+
logger.debug(`Skipping skill install: ${claudeDir} does not exist`);
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
const source = join(resolveTemplatesDir(), SKILL_REL_PATH);
|
|
36
|
+
if (!(await fileExists(source))) {
|
|
37
|
+
logger.debug(`Skipping skill install: bundled template missing at ${source}`);
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
const destDir = join(getClaudeSkillsDir(), SKILL_NAME);
|
|
41
|
+
const destination = join(destDir, 'SKILL.md');
|
|
42
|
+
await mkdir(destDir, { recursive: true });
|
|
43
|
+
if (await fileExists(destination)) {
|
|
44
|
+
if (await filesIdentical(source, destination)) {
|
|
45
|
+
return { status: 'unchanged', source, destination };
|
|
46
|
+
}
|
|
47
|
+
if (!options.force) {
|
|
48
|
+
return { status: 'skipped-divergent', source, destination };
|
|
49
|
+
}
|
|
50
|
+
await copyFile(source, destination);
|
|
51
|
+
return { status: 'updated', source, destination };
|
|
52
|
+
}
|
|
53
|
+
await copyFile(source, destination);
|
|
54
|
+
return { status: 'installed', source, destination };
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=skill-installer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-installer.js","sourceRoot":"","sources":["../../src/utils/skill-installer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@radkode/neo",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.1",
|
|
4
4
|
"description": "Modern CLI toolkit with intelligent git workflows and configuration management",
|
|
5
5
|
"author": "Jacek Radko",
|
|
6
6
|
"license": "MIT",
|
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
},
|
|
13
13
|
"files": [
|
|
14
14
|
"dist",
|
|
15
|
-
"bin"
|
|
15
|
+
"bin",
|
|
16
|
+
"templates"
|
|
16
17
|
],
|
|
17
18
|
"keywords": [
|
|
18
19
|
"cli",
|
|
@@ -54,24 +55,17 @@
|
|
|
54
55
|
"version-packages": "changeset version && pnpm install --lockfile-only"
|
|
55
56
|
},
|
|
56
57
|
"engines": {
|
|
57
|
-
"node": ">=
|
|
58
|
-
"pnpm": ">=
|
|
59
|
-
},
|
|
60
|
-
"packageManager": "pnpm@10.24.0",
|
|
61
|
-
"pnpm": {
|
|
62
|
-
"onlyBuiltDependencies": [
|
|
63
|
-
"better-sqlite3"
|
|
64
|
-
]
|
|
58
|
+
"node": ">=22.13.0",
|
|
59
|
+
"pnpm": ">=11.0.0"
|
|
65
60
|
},
|
|
61
|
+
"packageManager": "pnpm@11.3.0",
|
|
66
62
|
"dependencies": {
|
|
67
63
|
"@commander-js/extra-typings": "^14.0.0",
|
|
68
|
-
"@inquirer/
|
|
69
|
-
"better-sqlite3": "^12.5.0",
|
|
64
|
+
"@inquirer/prompts": "^8.5.1",
|
|
70
65
|
"chalk": "^5.6.2",
|
|
71
66
|
"commander": "^14.0.2",
|
|
72
67
|
"execa": "^9.6.1",
|
|
73
68
|
"find-up": "^8.0.0",
|
|
74
|
-
"inquirer": "^13.0.2",
|
|
75
69
|
"nanoid": "^5.1.6",
|
|
76
70
|
"ora": "^9.0.0",
|
|
77
71
|
"which": "^6.0.0",
|
|
@@ -81,8 +75,6 @@
|
|
|
81
75
|
"@changesets/changelog-github": "^0.5.2",
|
|
82
76
|
"@changesets/cli": "^2.29.8",
|
|
83
77
|
"@eslint/js": "^9.39.1",
|
|
84
|
-
"@types/better-sqlite3": "^7.6.13",
|
|
85
|
-
"@types/inquirer": "^9.0.9",
|
|
86
78
|
"@types/node": "^24.10.1",
|
|
87
79
|
"@types/which": "^3.0.4",
|
|
88
80
|
"@typescript-eslint/eslint-plugin": "^8.48.1",
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: neo
|
|
3
|
+
description: Use when working in a repository where the `neo` CLI is installed (verify with `neo --version`). Neo wraps git, GitHub, and release workflows with safety rails — prefer `neo git push/pull/commit`, `neo work start/ship/finish`, `neo ai pr`, and `neo gh pr create` over raw `git`/`gh` for the operations it covers. Do NOT use for operations neo doesn't wrap (e.g. `git log`, `git rebase`, `git bisect`).
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Neo CLI
|
|
7
|
+
|
|
8
|
+
Neo is an opinionated CLI that wraps common git/GitHub workflows with guardrails (auto-stash on pull, pull-before-push, main-branch confirmation, conventional commits, changeset enforcement, etc.). When it's installed, prefer it over raw `git`/`gh` for the operations below — you get the safety net for free.
|
|
9
|
+
|
|
10
|
+
## Before you start
|
|
11
|
+
|
|
12
|
+
1. Confirm neo is available: `neo --version`. If absent, fall back to raw git/gh.
|
|
13
|
+
2. Neo auto-detects Claude Code via `CLAUDECODE=1` and switches to non-interactive defaults (no banner, no prompts, JSON-friendly). You usually don't need `--yes` / `--non-interactive` explicitly, but pass `--json` whenever you need to parse output.
|
|
14
|
+
3. Don't trust your training data for the command tree — query it: `neo schema --json | jq '.commands[].path'`. Use `neo <cmd> --help` for flags.
|
|
15
|
+
|
|
16
|
+
## The work lifecycle
|
|
17
|
+
|
|
18
|
+
The canonical flow is `start → ship → finish`. Use it for any non-trivial change.
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
neo work start <name> # creates a prefixed branch (add --worktree for an isolated worktree)
|
|
22
|
+
# ... edit, commit ...
|
|
23
|
+
neo work ship # verify + ensure changeset + push + open PR
|
|
24
|
+
# ... after merge ...
|
|
25
|
+
neo work finish # checkout base, pull, delete local branch + worktree
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
For one-off commits outside this flow, use `neo git commit` (interactive conventional) or `neo git commit --ai` (drafts a message from the staged diff via the Anthropic API).
|
|
29
|
+
|
|
30
|
+
## Command map
|
|
31
|
+
|
|
32
|
+
| Want to... | Use | Instead of |
|
|
33
|
+
|---|---|---|
|
|
34
|
+
| Push safely | `neo git push` | `git push` |
|
|
35
|
+
| Pull without losing WIP | `neo git pull` | `git stash && git pull && git stash pop` |
|
|
36
|
+
| Commit with conventional format | `neo git commit` (or `--ai`) | `git commit -m` |
|
|
37
|
+
| Open a PR | `neo gh pr create --title ... --body ...` | `gh pr create` |
|
|
38
|
+
| Generate a PR description | `neo ai pr --json --no-create` | hand-writing one |
|
|
39
|
+
| Start a new branch | `neo work start <name>` | `git checkout -b` |
|
|
40
|
+
| Ship a finished branch | `neo work ship` | push + `gh pr create` manually |
|
|
41
|
+
| Clean up after merge | `neo work finish` | `git checkout main && git pull && git branch -D` |
|
|
42
|
+
| Verify the repo is healthy | `neo verify` / `neo doctor` | ad-hoc checks |
|
|
43
|
+
|
|
44
|
+
## Agent patterns
|
|
45
|
+
|
|
46
|
+
Always pair `--json` with `jq` for parsing. Errors come back as `{"error": {...}}` on stdout; check exit codes.
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
# Open a PR programmatically
|
|
50
|
+
neo work ship --json | jq -r '.pr.url'
|
|
51
|
+
|
|
52
|
+
# Draft a PR body without opening
|
|
53
|
+
neo ai pr --json --no-create | jq -r '.body'
|
|
54
|
+
|
|
55
|
+
# Discover what flags a command takes
|
|
56
|
+
neo schema --json | jq '.commands[] | select(.path == "git push")'
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Exit codes: `0` success, `1` failure, `2` non-interactive prompt required (the JSON error carries `.error.flag` — supply it and retry).
|
|
60
|
+
|
|
61
|
+
## Anti-patterns
|
|
62
|
+
|
|
63
|
+
- Don't `git push` to bypass neo's main-branch confirmation. If you need to push to main, use explicit flags (`--force`, etc.) — neo will tell you what's missing.
|
|
64
|
+
- Don't open PRs with `gh pr create` when `neo work ship` is the right call. Ship handles verify + changeset + push + PR in one step.
|
|
65
|
+
- Don't skip changesets. `neo work ship` enforces them; if a change doesn't affect a published package, create an empty changeset (`---\n---`).
|
|
66
|
+
- Don't re-derive the command tree from memory. `neo schema --json` is authoritative and version-correct.
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import type { IContainer, InjectionToken, Provider } from '../interfaces/index.js';
|
|
2
|
-
export type Lifetime = 'singleton' | 'transient';
|
|
3
|
-
export declare class Container implements IContainer {
|
|
4
|
-
private registrations;
|
|
5
|
-
private instances;
|
|
6
|
-
private parent;
|
|
7
|
-
constructor(parent?: Container);
|
|
8
|
-
register<T>(token: InjectionToken<T>, provider: Provider<T>, lifetime?: Lifetime): void;
|
|
9
|
-
registerValue<T>(token: InjectionToken<T>, value: T): void;
|
|
10
|
-
registerClass<T>(token: InjectionToken<T>, cls: new (...args: unknown[]) => T, lifetime?: Lifetime): void;
|
|
11
|
-
registerFactory<T>(token: InjectionToken<T>, factory: () => T, lifetime?: Lifetime): void;
|
|
12
|
-
resolve<T>(token: InjectionToken<T>): T;
|
|
13
|
-
has<T>(token: InjectionToken<T>): boolean;
|
|
14
|
-
createScope(): IContainer;
|
|
15
|
-
clear(): void;
|
|
16
|
-
get size(): number;
|
|
17
|
-
private createInstance;
|
|
18
|
-
}
|
|
19
|
-
export declare const container: Container;
|
|
20
|
-
export declare const Tokens: {
|
|
21
|
-
readonly Logger: symbol;
|
|
22
|
-
readonly Config: symbol;
|
|
23
|
-
readonly EventBus: symbol;
|
|
24
|
-
readonly HttpClient: symbol;
|
|
25
|
-
readonly FileSystem: symbol;
|
|
26
|
-
};
|
|
27
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/container/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAKvF,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG,WAAW,CAAC;AAmCjD,qBAAa,SAAU,YAAW,UAAU;IAC1C,OAAO,CAAC,aAAa,CAA4C;IACjE,OAAO,CAAC,SAAS,CAA8B;IAC/C,OAAO,CAAC,MAAM,CAAwB;gBAE1B,MAAM,CAAC,EAAE,SAAS;IAW9B,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAE,QAAsB,GAAG,IAAI;IAUpG,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAO1D,aAAa,CAAC,CAAC,EACb,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,EACxB,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,EAClC,QAAQ,GAAE,QAAsB,GAC/B,IAAI;IAOP,eAAe,CAAC,CAAC,EACf,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,EACxB,OAAO,EAAE,MAAM,CAAC,EAChB,QAAQ,GAAE,QAAsB,GAC/B,IAAI;IAWP,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC;IA+BvC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,OAAO;IAczC,WAAW,IAAI,UAAU;IAOzB,KAAK,IAAI,IAAI;IAQb,IAAI,IAAI,IAAI,MAAM,CAEjB;IAKD,OAAO,CAAC,cAAc;CAmBvB;AAKD,eAAO,MAAM,SAAS,WAAkB,CAAC;AAKzC,eAAO,MAAM,MAAM;;;;;;CAMT,CAAC"}
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
function tokenToKey(token) {
|
|
2
|
-
if (typeof token === 'symbol') {
|
|
3
|
-
return token.toString();
|
|
4
|
-
}
|
|
5
|
-
if (typeof token === 'string') {
|
|
6
|
-
return token;
|
|
7
|
-
}
|
|
8
|
-
return token.name || token.toString();
|
|
9
|
-
}
|
|
10
|
-
export class Container {
|
|
11
|
-
registrations = new Map();
|
|
12
|
-
instances = new Map();
|
|
13
|
-
parent;
|
|
14
|
-
constructor(parent) {
|
|
15
|
-
this.parent = parent;
|
|
16
|
-
}
|
|
17
|
-
register(token, provider, lifetime = 'singleton') {
|
|
18
|
-
const key = tokenToKey(token);
|
|
19
|
-
this.registrations.set(key, { provider, lifetime });
|
|
20
|
-
this.instances.delete(key);
|
|
21
|
-
}
|
|
22
|
-
registerValue(token, value) {
|
|
23
|
-
this.register(token, { useValue: value }, 'singleton');
|
|
24
|
-
}
|
|
25
|
-
registerClass(token, cls, lifetime = 'singleton') {
|
|
26
|
-
this.register(token, { useClass: cls }, lifetime);
|
|
27
|
-
}
|
|
28
|
-
registerFactory(token, factory, lifetime = 'singleton') {
|
|
29
|
-
this.register(token, { useFactory: factory }, lifetime);
|
|
30
|
-
}
|
|
31
|
-
resolve(token) {
|
|
32
|
-
const key = tokenToKey(token);
|
|
33
|
-
const registration = this.registrations.get(key);
|
|
34
|
-
if (!registration) {
|
|
35
|
-
if (this.parent) {
|
|
36
|
-
return this.parent.resolve(token);
|
|
37
|
-
}
|
|
38
|
-
throw new Error(`No provider registered for token: ${key}`);
|
|
39
|
-
}
|
|
40
|
-
if (registration.lifetime === 'singleton' && this.instances.has(key)) {
|
|
41
|
-
return this.instances.get(key);
|
|
42
|
-
}
|
|
43
|
-
const instance = this.createInstance(registration.provider);
|
|
44
|
-
if (registration.lifetime === 'singleton') {
|
|
45
|
-
this.instances.set(key, instance);
|
|
46
|
-
}
|
|
47
|
-
return instance;
|
|
48
|
-
}
|
|
49
|
-
has(token) {
|
|
50
|
-
const key = tokenToKey(token);
|
|
51
|
-
if (this.registrations.has(key)) {
|
|
52
|
-
return true;
|
|
53
|
-
}
|
|
54
|
-
return this.parent?.has(token) ?? false;
|
|
55
|
-
}
|
|
56
|
-
createScope() {
|
|
57
|
-
return new Container(this);
|
|
58
|
-
}
|
|
59
|
-
clear() {
|
|
60
|
-
this.registrations.clear();
|
|
61
|
-
this.instances.clear();
|
|
62
|
-
}
|
|
63
|
-
get size() {
|
|
64
|
-
return this.registrations.size;
|
|
65
|
-
}
|
|
66
|
-
createInstance(provider) {
|
|
67
|
-
if ('useValue' in provider) {
|
|
68
|
-
return provider.useValue;
|
|
69
|
-
}
|
|
70
|
-
if ('useClass' in provider) {
|
|
71
|
-
return new provider.useClass();
|
|
72
|
-
}
|
|
73
|
-
if ('useFactory' in provider) {
|
|
74
|
-
return provider.useFactory();
|
|
75
|
-
}
|
|
76
|
-
if ('useExisting' in provider) {
|
|
77
|
-
return this.resolve(provider.useExisting);
|
|
78
|
-
}
|
|
79
|
-
throw new Error('Invalid provider configuration');
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
export const container = new Container();
|
|
83
|
-
export const Tokens = {
|
|
84
|
-
Logger: Symbol('Logger'),
|
|
85
|
-
Config: Symbol('Config'),
|
|
86
|
-
EventBus: Symbol('EventBus'),
|
|
87
|
-
HttpClient: Symbol('HttpClient'),
|
|
88
|
-
FileSystem: Symbol('FileSystem'),
|
|
89
|
-
};
|
|
90
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/container/index.ts"],"names":[],"mappings":"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"}
|