@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.
Files changed (89) hide show
  1. package/LICENSE +21 -0
  2. package/dist/codegen.d.ts +12 -0
  3. package/dist/codegen.d.ts.map +1 -0
  4. package/dist/codegen.js +107 -0
  5. package/dist/commands/add.d.ts +26 -0
  6. package/dist/commands/add.d.ts.map +1 -0
  7. package/dist/commands/add.js +548 -0
  8. package/dist/commands/browse.d.ts +8 -0
  9. package/dist/commands/browse.d.ts.map +1 -0
  10. package/dist/commands/browse.js +116 -0
  11. package/dist/commands/create.d.ts +12 -0
  12. package/dist/commands/create.d.ts.map +1 -0
  13. package/dist/commands/create.js +218 -0
  14. package/dist/commands/db.d.ts +2 -0
  15. package/dist/commands/db.d.ts.map +1 -0
  16. package/dist/commands/db.js +64 -0
  17. package/dist/commands/disable.d.ts +5 -0
  18. package/dist/commands/disable.d.ts.map +1 -0
  19. package/dist/commands/disable.js +29 -0
  20. package/dist/commands/doctor.d.ts +2 -0
  21. package/dist/commands/doctor.d.ts.map +1 -0
  22. package/dist/commands/doctor.js +88 -0
  23. package/dist/commands/enable.d.ts +5 -0
  24. package/dist/commands/enable.d.ts.map +1 -0
  25. package/dist/commands/enable.js +29 -0
  26. package/dist/commands/info.d.ts +8 -0
  27. package/dist/commands/info.d.ts.map +1 -0
  28. package/dist/commands/info.js +84 -0
  29. package/dist/commands/list.d.ts +5 -0
  30. package/dist/commands/list.d.ts.map +1 -0
  31. package/dist/commands/list.js +44 -0
  32. package/dist/commands/marketplace.d.ts +11 -0
  33. package/dist/commands/marketplace.d.ts.map +1 -0
  34. package/dist/commands/marketplace.js +205 -0
  35. package/dist/commands/onboard.d.ts +2 -0
  36. package/dist/commands/onboard.d.ts.map +1 -0
  37. package/dist/commands/onboard.js +58 -0
  38. package/dist/commands/outdated.d.ts +8 -0
  39. package/dist/commands/outdated.d.ts.map +1 -0
  40. package/dist/commands/outdated.js +107 -0
  41. package/dist/commands/reconcile.d.ts +12 -0
  42. package/dist/commands/reconcile.d.ts.map +1 -0
  43. package/dist/commands/reconcile.js +175 -0
  44. package/dist/commands/run.d.ts +2 -0
  45. package/dist/commands/run.d.ts.map +1 -0
  46. package/dist/commands/run.js +37 -0
  47. package/dist/commands/sync.d.ts +5 -0
  48. package/dist/commands/sync.d.ts.map +1 -0
  49. package/dist/commands/sync.js +34 -0
  50. package/dist/commands/uninstall.d.ts +14 -0
  51. package/dist/commands/uninstall.d.ts.map +1 -0
  52. package/dist/commands/uninstall.js +190 -0
  53. package/dist/config.d.ts +19 -0
  54. package/dist/config.d.ts.map +1 -0
  55. package/dist/config.js +37 -0
  56. package/dist/index.d.ts +13 -0
  57. package/dist/index.d.ts.map +1 -0
  58. package/dist/index.js +181 -0
  59. package/dist/lib/github-auth.d.ts +8 -0
  60. package/dist/lib/github-auth.d.ts.map +1 -0
  61. package/dist/lib/github-auth.js +30 -0
  62. package/dist/lib/lock-file.d.ts +67 -0
  63. package/dist/lib/lock-file.d.ts.map +1 -0
  64. package/dist/lib/lock-file.js +117 -0
  65. package/dist/lib/marketplace-schema.d.ts +607 -0
  66. package/dist/lib/marketplace-schema.d.ts.map +1 -0
  67. package/dist/lib/marketplace-schema.js +111 -0
  68. package/dist/lib/marketplace.d.ts +57 -0
  69. package/dist/lib/marketplace.d.ts.map +1 -0
  70. package/dist/lib/marketplace.js +270 -0
  71. package/dist/lib/onboarding.d.ts +84 -0
  72. package/dist/lib/onboarding.d.ts.map +1 -0
  73. package/dist/lib/onboarding.js +1004 -0
  74. package/dist/lib/rewrite-extension-tsconfig.d.ts +22 -0
  75. package/dist/lib/rewrite-extension-tsconfig.d.ts.map +1 -0
  76. package/dist/lib/rewrite-extension-tsconfig.js +80 -0
  77. package/dist/lib/source-parser.d.ts +35 -0
  78. package/dist/lib/source-parser.d.ts.map +1 -0
  79. package/dist/lib/source-parser.js +121 -0
  80. package/dist/lib/validators.d.ts +73 -0
  81. package/dist/lib/validators.d.ts.map +1 -0
  82. package/dist/lib/validators.js +435 -0
  83. package/dist/paths.d.ts +46 -0
  84. package/dist/paths.d.ts.map +1 -0
  85. package/dist/paths.js +85 -0
  86. package/dist/scanner.d.ts +41 -0
  87. package/dist/scanner.d.ts.map +1 -0
  88. package/dist/scanner.js +100 -0
  89. package/package.json +49 -0
@@ -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
+ }