@doubledigit/cli 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/codegen.d.ts +12 -0
- package/dist/codegen.d.ts.map +1 -0
- package/dist/codegen.js +107 -0
- package/dist/commands/add.d.ts +26 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +548 -0
- package/dist/commands/browse.d.ts +8 -0
- package/dist/commands/browse.d.ts.map +1 -0
- package/dist/commands/browse.js +116 -0
- package/dist/commands/create.d.ts +12 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +218 -0
- package/dist/commands/db.d.ts +2 -0
- package/dist/commands/db.d.ts.map +1 -0
- package/dist/commands/db.js +64 -0
- package/dist/commands/disable.d.ts +5 -0
- package/dist/commands/disable.d.ts.map +1 -0
- package/dist/commands/disable.js +29 -0
- package/dist/commands/doctor.d.ts +2 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +88 -0
- package/dist/commands/enable.d.ts +5 -0
- package/dist/commands/enable.d.ts.map +1 -0
- package/dist/commands/enable.js +29 -0
- package/dist/commands/info.d.ts +8 -0
- package/dist/commands/info.d.ts.map +1 -0
- package/dist/commands/info.js +84 -0
- package/dist/commands/list.d.ts +5 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +44 -0
- package/dist/commands/marketplace.d.ts +11 -0
- package/dist/commands/marketplace.d.ts.map +1 -0
- package/dist/commands/marketplace.js +205 -0
- package/dist/commands/onboard.d.ts +2 -0
- package/dist/commands/onboard.d.ts.map +1 -0
- package/dist/commands/onboard.js +58 -0
- package/dist/commands/outdated.d.ts +8 -0
- package/dist/commands/outdated.d.ts.map +1 -0
- package/dist/commands/outdated.js +107 -0
- package/dist/commands/reconcile.d.ts +12 -0
- package/dist/commands/reconcile.d.ts.map +1 -0
- package/dist/commands/reconcile.js +175 -0
- package/dist/commands/run.d.ts +2 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +37 -0
- package/dist/commands/sync.d.ts +5 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +34 -0
- package/dist/commands/uninstall.d.ts +14 -0
- package/dist/commands/uninstall.d.ts.map +1 -0
- package/dist/commands/uninstall.js +190 -0
- package/dist/config.d.ts +19 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +37 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +181 -0
- package/dist/lib/github-auth.d.ts +8 -0
- package/dist/lib/github-auth.d.ts.map +1 -0
- package/dist/lib/github-auth.js +30 -0
- package/dist/lib/lock-file.d.ts +67 -0
- package/dist/lib/lock-file.d.ts.map +1 -0
- package/dist/lib/lock-file.js +117 -0
- package/dist/lib/marketplace-schema.d.ts +607 -0
- package/dist/lib/marketplace-schema.d.ts.map +1 -0
- package/dist/lib/marketplace-schema.js +111 -0
- package/dist/lib/marketplace.d.ts +57 -0
- package/dist/lib/marketplace.d.ts.map +1 -0
- package/dist/lib/marketplace.js +270 -0
- package/dist/lib/onboarding.d.ts +84 -0
- package/dist/lib/onboarding.d.ts.map +1 -0
- package/dist/lib/onboarding.js +1004 -0
- package/dist/lib/rewrite-extension-tsconfig.d.ts +22 -0
- package/dist/lib/rewrite-extension-tsconfig.d.ts.map +1 -0
- package/dist/lib/rewrite-extension-tsconfig.js +80 -0
- package/dist/lib/source-parser.d.ts +35 -0
- package/dist/lib/source-parser.d.ts.map +1 -0
- package/dist/lib/source-parser.js +121 -0
- package/dist/lib/validators.d.ts +73 -0
- package/dist/lib/validators.d.ts.map +1 -0
- package/dist/lib/validators.js +435 -0
- package/dist/paths.d.ts +46 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +85 -0
- package/dist/scanner.d.ts +41 -0
- package/dist/scanner.d.ts.map +1 -0
- package/dist/scanner.js +100 -0
- package/package.json +49 -0
package/dist/scanner.js
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scan workspace packages/ and extensions/ directories for micro-apps
|
|
3
|
+
* (ddapp: true) and standalone payload plugins (ddPackageType: 'payload-plugin').
|
|
4
|
+
*/
|
|
5
|
+
import fs from 'node:fs';
|
|
6
|
+
import path from 'node:path';
|
|
7
|
+
function toImportName(key) {
|
|
8
|
+
return key.replace(/-([a-z0-9])/g, (_, c) => c.toUpperCase());
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Classify a single package directory.
|
|
12
|
+
* Returns the package type or null if unrecognised.
|
|
13
|
+
*/
|
|
14
|
+
function classifyPackage(pkgDir, key) {
|
|
15
|
+
const pkgJsonPath = path.join(pkgDir, 'package.json');
|
|
16
|
+
if (!fs.existsSync(pkgJsonPath))
|
|
17
|
+
return null;
|
|
18
|
+
try {
|
|
19
|
+
const pkg = JSON.parse(fs.readFileSync(pkgJsonPath, 'utf-8'));
|
|
20
|
+
if (pkg.ddPackageType === 'payload-plugin') {
|
|
21
|
+
return {
|
|
22
|
+
type: 'payload-plugin',
|
|
23
|
+
entry: {
|
|
24
|
+
key,
|
|
25
|
+
npmName: pkg.name,
|
|
26
|
+
importName: toImportName(key),
|
|
27
|
+
dir: pkgDir,
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
if (pkg.ddapp === true) {
|
|
32
|
+
return {
|
|
33
|
+
type: 'micro-app',
|
|
34
|
+
entry: {
|
|
35
|
+
key,
|
|
36
|
+
npmName: pkg.name,
|
|
37
|
+
importName: toImportName(key),
|
|
38
|
+
dir: pkgDir,
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
// Skip malformed package.json
|
|
45
|
+
}
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
/** Scan a flat directory of package folders. First-seen key wins (dedup across roots). */
|
|
49
|
+
function scanDirectory(dir, result, seen) {
|
|
50
|
+
if (!fs.existsSync(dir))
|
|
51
|
+
return;
|
|
52
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
53
|
+
for (const entry of entries) {
|
|
54
|
+
if (!entry.isDirectory())
|
|
55
|
+
continue;
|
|
56
|
+
if (entry.name.startsWith('.') || entry.name.startsWith('_'))
|
|
57
|
+
continue;
|
|
58
|
+
if (seen.has(entry.name))
|
|
59
|
+
continue;
|
|
60
|
+
const pkgDir = path.join(dir, entry.name);
|
|
61
|
+
const classified = classifyPackage(pkgDir, entry.name);
|
|
62
|
+
if (!classified)
|
|
63
|
+
continue;
|
|
64
|
+
seen.add(entry.name);
|
|
65
|
+
if (classified.type === 'micro-app') {
|
|
66
|
+
result.microApps.push(classified.entry);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
result.payloadPlugins.push(classified.entry);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Scan packages/, packages/adapters/, extensions/micro-apps/, and
|
|
75
|
+
* extensions/payload-plugins/ for micro-apps and payload plugins.
|
|
76
|
+
*
|
|
77
|
+
* packages/ is scanned first so internal/legacy packages take precedence
|
|
78
|
+
* during the transition period.
|
|
79
|
+
*/
|
|
80
|
+
export function scanWorkspace(paths) {
|
|
81
|
+
const result = { microApps: [], payloadPlugins: [] };
|
|
82
|
+
const seen = new Set();
|
|
83
|
+
// Internal / legacy packages (scanned first for precedence)
|
|
84
|
+
scanDirectory(paths.packagesDir, result, seen);
|
|
85
|
+
scanDirectory(path.join(paths.packagesDir, 'adapters'), result, seen);
|
|
86
|
+
// Extension roots
|
|
87
|
+
scanDirectory(paths.extensionsMicroAppsDir, result, seen);
|
|
88
|
+
scanDirectory(paths.extensionsPayloadPluginsDir, result, seen);
|
|
89
|
+
result.microApps.sort((a, b) => a.key.localeCompare(b.key));
|
|
90
|
+
result.payloadPlugins.sort((a, b) => a.key.localeCompare(b.key));
|
|
91
|
+
return result;
|
|
92
|
+
}
|
|
93
|
+
/** @deprecated Use scanWorkspace(paths) instead — returns only micro-apps for backward compat. */
|
|
94
|
+
export function scanForDDApps(packagesDir) {
|
|
95
|
+
const result = { microApps: [], payloadPlugins: [] };
|
|
96
|
+
const seen = new Set();
|
|
97
|
+
scanDirectory(packagesDir, result, seen);
|
|
98
|
+
scanDirectory(path.join(packagesDir, 'adapters'), result, seen);
|
|
99
|
+
return result.microApps.sort((a, b) => a.key.localeCompare(b.key));
|
|
100
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@doubledigit/cli",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"private": false,
|
|
5
|
+
"description": "CLI for Double Digit local setup and extension management.",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"homepage": "https://github.com/vaishnavagrawal/micro-apps",
|
|
8
|
+
"bugs": {
|
|
9
|
+
"url": "https://github.com/vaishnavagrawal/micro-apps/issues"
|
|
10
|
+
},
|
|
11
|
+
"repository": {
|
|
12
|
+
"type": "git",
|
|
13
|
+
"url": "https://github.com/vaishnavagrawal/micro-apps.git",
|
|
14
|
+
"directory": "packages/cli"
|
|
15
|
+
},
|
|
16
|
+
"type": "module",
|
|
17
|
+
"main": "./dist/index.js",
|
|
18
|
+
"module": "./dist/index.js",
|
|
19
|
+
"types": "./dist/index.d.ts",
|
|
20
|
+
"bin": {
|
|
21
|
+
"dd": "./dist/index.js"
|
|
22
|
+
},
|
|
23
|
+
"files": [
|
|
24
|
+
"dist"
|
|
25
|
+
],
|
|
26
|
+
"exports": {
|
|
27
|
+
".": {
|
|
28
|
+
"import": "./dist/index.js",
|
|
29
|
+
"types": "./dist/index.d.ts",
|
|
30
|
+
"default": "./dist/index.js"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"embedded-postgres": "18.3.0-beta.16",
|
|
35
|
+
"giget": "^2.0.0",
|
|
36
|
+
"pg": "^8.20.0",
|
|
37
|
+
"zod": "^3.23.0"
|
|
38
|
+
},
|
|
39
|
+
"devDependencies": {
|
|
40
|
+
"typescript": "^5.7.0"
|
|
41
|
+
},
|
|
42
|
+
"publishConfig": {
|
|
43
|
+
"access": "public"
|
|
44
|
+
},
|
|
45
|
+
"scripts": {
|
|
46
|
+
"build": "tsc -p tsconfig.json",
|
|
47
|
+
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
48
|
+
}
|
|
49
|
+
}
|