@pie-element/cli 0.1.3-next.20261002220849 → 0.1.3-next.20261002233132

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 (113) hide show
  1. package/README.md +4 -138
  2. package/dist/commands/verify/controllers.js +1 -6
  3. package/dist/commands/verify/controllers.js.map +1 -1
  4. package/dist/lib/{upstream/sync-demo-metadata.js → demo/demo-metadata.js} +1 -1
  5. package/dist/lib/demo/demo-metadata.js.map +1 -0
  6. package/dist/utils/package-json.d.ts +0 -1
  7. package/dist/utils/package-json.js +0 -19
  8. package/dist/utils/package-json.js.map +1 -1
  9. package/package.json +2 -5
  10. package/dist/commands/packages/create-controllers.d.ts +0 -12
  11. package/dist/commands/packages/create-controllers.js +0 -103
  12. package/dist/commands/packages/create-controllers.js.map +0 -1
  13. package/dist/commands/packages/create-lib-react.d.ts +0 -16
  14. package/dist/commands/packages/create-lib-react.js +0 -226
  15. package/dist/commands/packages/create-lib-react.js.map +0 -1
  16. package/dist/commands/packages/create-react-elements.d.ts +0 -15
  17. package/dist/commands/packages/create-react-elements.js +0 -239
  18. package/dist/commands/packages/create-react-elements.js.map +0 -1
  19. package/dist/commands/packages/init-synced-elements.d.ts +0 -15
  20. package/dist/commands/packages/init-synced-elements.js +0 -202
  21. package/dist/commands/packages/init-synced-elements.js.map +0 -1
  22. package/dist/commands/upstream/analyze-esm.d.ts +0 -58
  23. package/dist/commands/upstream/analyze-esm.js +0 -1452
  24. package/dist/commands/upstream/analyze-esm.js.map +0 -1
  25. package/dist/commands/upstream/check.d.ts +0 -14
  26. package/dist/commands/upstream/check.js +0 -165
  27. package/dist/commands/upstream/check.js.map +0 -1
  28. package/dist/commands/upstream/deps.d.ts +0 -14
  29. package/dist/commands/upstream/deps.js +0 -174
  30. package/dist/commands/upstream/deps.js.map +0 -1
  31. package/dist/commands/upstream/sync.d.ts +0 -34
  32. package/dist/commands/upstream/sync.js +0 -886
  33. package/dist/commands/upstream/sync.js.map +0 -1
  34. package/dist/commands/upstream/track.d.ts +0 -14
  35. package/dist/commands/upstream/track.js +0 -115
  36. package/dist/commands/upstream/track.js.map +0 -1
  37. package/dist/commands/upstream/update.d.ts +0 -14
  38. package/dist/commands/upstream/update.js +0 -128
  39. package/dist/commands/upstream/update.js.map +0 -1
  40. package/dist/lib/upstream/editor-runtime.d.ts +0 -15
  41. package/dist/lib/upstream/editor-runtime.js +0 -55
  42. package/dist/lib/upstream/editor-runtime.js.map +0 -1
  43. package/dist/lib/upstream/repo-utils.d.ts +0 -8
  44. package/dist/lib/upstream/repo-utils.js +0 -10
  45. package/dist/lib/upstream/repo-utils.js.map +0 -1
  46. package/dist/lib/upstream/sync-compatibility.d.ts +0 -20
  47. package/dist/lib/upstream/sync-compatibility.js +0 -39
  48. package/dist/lib/upstream/sync-compatibility.js.map +0 -1
  49. package/dist/lib/upstream/sync-constants.d.ts +0 -86
  50. package/dist/lib/upstream/sync-constants.js +0 -130
  51. package/dist/lib/upstream/sync-constants.js.map +0 -1
  52. package/dist/lib/upstream/sync-controllers-strategy.d.ts +0 -17
  53. package/dist/lib/upstream/sync-controllers-strategy.js +0 -253
  54. package/dist/lib/upstream/sync-controllers-strategy.js.map +0 -1
  55. package/dist/lib/upstream/sync-demo-metadata.js.map +0 -1
  56. package/dist/lib/upstream/sync-entry-discovery.d.ts +0 -3
  57. package/dist/lib/upstream/sync-entry-discovery.js +0 -23
  58. package/dist/lib/upstream/sync-entry-discovery.js.map +0 -1
  59. package/dist/lib/upstream/sync-externals.d.ts +0 -29
  60. package/dist/lib/upstream/sync-externals.js +0 -180
  61. package/dist/lib/upstream/sync-externals.js.map +0 -1
  62. package/dist/lib/upstream/sync-filesystem.d.ts +0 -20
  63. package/dist/lib/upstream/sync-filesystem.js +0 -64
  64. package/dist/lib/upstream/sync-filesystem.js.map +0 -1
  65. package/dist/lib/upstream/sync-imports.d.ts +0 -297
  66. package/dist/lib/upstream/sync-imports.js +0 -1318
  67. package/dist/lib/upstream/sync-imports.js.map +0 -1
  68. package/dist/lib/upstream/sync-package-json.d.ts +0 -8
  69. package/dist/lib/upstream/sync-package-json.js +0 -15
  70. package/dist/lib/upstream/sync-package-json.js.map +0 -1
  71. package/dist/lib/upstream/sync-package-manager.d.ts +0 -66
  72. package/dist/lib/upstream/sync-package-manager.js +0 -959
  73. package/dist/lib/upstream/sync-package-manager.js.map +0 -1
  74. package/dist/lib/upstream/sync-pielib-strategy.d.ts +0 -27
  75. package/dist/lib/upstream/sync-pielib-strategy.js +0 -463
  76. package/dist/lib/upstream/sync-pielib-strategy.js.map +0 -1
  77. package/dist/lib/upstream/sync-presets.d.ts +0 -57
  78. package/dist/lib/upstream/sync-presets.js +0 -262
  79. package/dist/lib/upstream/sync-presets.js.map +0 -1
  80. package/dist/lib/upstream/sync-react-strategy.d.ts +0 -59
  81. package/dist/lib/upstream/sync-react-strategy.js +0 -941
  82. package/dist/lib/upstream/sync-react-strategy.js.map +0 -1
  83. package/dist/lib/upstream/sync-source-edit.d.ts +0 -14
  84. package/dist/lib/upstream/sync-source-edit.js +0 -89
  85. package/dist/lib/upstream/sync-source-edit.js.map +0 -1
  86. package/dist/lib/upstream/sync-source-tree.d.ts +0 -22
  87. package/dist/lib/upstream/sync-source-tree.js +0 -101
  88. package/dist/lib/upstream/sync-source-tree.js.map +0 -1
  89. package/dist/lib/upstream/sync-strategy.d.ts +0 -49
  90. package/dist/lib/upstream/sync-strategy.js +0 -2
  91. package/dist/lib/upstream/sync-strategy.js.map +0 -1
  92. package/dist/lib/upstream/sync-summary.d.ts +0 -19
  93. package/dist/lib/upstream/sync-summary.js +0 -157
  94. package/dist/lib/upstream/sync-summary.js.map +0 -1
  95. package/dist/lib/upstream/sync-transforms.d.ts +0 -62
  96. package/dist/lib/upstream/sync-transforms.js +0 -105
  97. package/dist/lib/upstream/sync-transforms.js.map +0 -1
  98. package/dist/lib/upstream/sync-vite-config.d.ts +0 -21
  99. package/dist/lib/upstream/sync-vite-config.js +0 -239
  100. package/dist/lib/upstream/sync-vite-config.js.map +0 -1
  101. package/dist/lib/upstream/workspace-pie-lib.d.ts +0 -2
  102. package/dist/lib/upstream/workspace-pie-lib.js +0 -29
  103. package/dist/lib/upstream/workspace-pie-lib.js.map +0 -1
  104. package/dist/utils/compatibility.d.ts +0 -126
  105. package/dist/utils/compatibility.js +0 -151
  106. package/dist/utils/compatibility.js.map +0 -1
  107. package/dist/utils/conversion.d.ts +0 -19
  108. package/dist/utils/conversion.js +0 -102
  109. package/dist/utils/conversion.js.map +0 -1
  110. package/dist/utils/git.d.ts +0 -12
  111. package/dist/utils/git.js +0 -58
  112. package/dist/utils/git.js.map +0 -1
  113. /package/dist/lib/{upstream/sync-demo-metadata.d.ts → demo/demo-metadata.d.ts} +0 -0
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @pie-element/cli
2
2
 
3
- CLI tools for managing PIE Elements NG - synchronization, package generation, and verification.
3
+ CLI tools for managing PIE Elements NG - demos, package management, docs generation, and verification.
4
4
 
5
5
  ## Installation
6
6
 
@@ -21,7 +21,7 @@ From the root of the monorepo:
21
21
  bun run cli --help
22
22
 
23
23
  # Show command help
24
- bun run cli upstream:sync --help
24
+ bun run cli dev:demo --help
25
25
  ```
26
26
 
27
27
  ## Commands
@@ -40,87 +40,6 @@ bun run cli dev:demo
40
40
  bun run cli dev:demo --port 5180 --build --no-open
41
41
  ```
42
42
 
43
- ### Upstream Synchronization
44
-
45
- #### `upstream:sync`
46
-
47
- Synchronize code from upstream pie-elements repository.
48
-
49
- ```bash
50
- # Dry run to preview changes
51
- bun run cli upstream:sync --dry-run
52
-
53
- # Sync specific element
54
- bun run cli upstream:sync --element multiple-choice
55
-
56
- # Sync all compatible elements (controllers + React UI + demos)
57
- bun run cli upstream:sync
58
-
59
- # Verbose output
60
- bun run cli upstream:sync --verbose
61
- ```
62
-
63
- #### `upstream:check`
64
-
65
- Check for changes in upstream repositories.
66
-
67
- ```bash
68
- # Check all elements
69
- bun run cli upstream:check
70
-
71
- # Check specific element
72
- bun run cli upstream:check --element multiple-choice
73
-
74
- # Verbose output
75
- bun run cli upstream:check --verbose
76
- ```
77
-
78
- #### `upstream:track`
79
-
80
- Track upstream repository changes.
81
-
82
- ```bash
83
- # Show new commits since last check
84
- bun run cli upstream:track show
85
-
86
- # Record current upstream state
87
- bun run cli upstream:track record
88
-
89
- # Compare with specific commit
90
- bun run cli upstream:track compare <commit-sha>
91
- ```
92
-
93
- #### `upstream:deps`
94
-
95
- Compare dependencies with upstream repositories.
96
-
97
- ```bash
98
- bun run cli upstream:deps
99
- ```
100
-
101
- #### `upstream:analyze-esm`
102
-
103
- Analyze ESM compatibility of elements and packages.
104
-
105
- ```bash
106
- # Analyze and generate report
107
- bun run cli upstream:analyze-esm
108
-
109
- # Verbose output
110
- bun run cli upstream:analyze-esm --verbose
111
-
112
- # Custom output path
113
- bun run cli upstream:analyze-esm --output ./my-report.json
114
- ```
115
-
116
- #### `upstream:update`
117
-
118
- Recommended wrapper that runs analyze + sync.
119
-
120
- ```bash
121
- bun run cli upstream:update
122
- ```
123
-
124
43
  ### Package Management
125
44
 
126
45
  #### `packages:enable-publishing`
@@ -135,42 +54,6 @@ bun run cli packages:enable-publishing --dry-run
135
54
  bun run cli packages:enable-publishing
136
55
  ```
137
56
 
138
- #### `packages:create-controllers`
139
-
140
- Generate package.json files for controller packages.
141
-
142
- ```bash
143
- bun run cli packages:create-controllers
144
- ```
145
-
146
- #### `packages:create-lib-react`
147
-
148
- Generate configuration files for @pie-lib React packages.
149
-
150
- ```bash
151
- # Dry run
152
- bun run cli packages:create-lib-react --dry-run
153
-
154
- # Generate files
155
- bun run cli packages:create-lib-react
156
- ```
157
-
158
- #### `packages:create-react-elements`
159
-
160
- Generate configuration files for React element packages.
161
-
162
- ```bash
163
- bun run cli packages:create-react-elements
164
- ```
165
-
166
- #### `packages:init-synced-elements`
167
-
168
- Initialize package scaffolding for synced elements.
169
-
170
- ```bash
171
- bun run cli packages:init-synced-elements
172
- ```
173
-
174
57
  ### Documentation
175
58
 
176
59
  #### `docs:generate`
@@ -242,7 +125,7 @@ bun run cli verify:dependency-integrity --fail-on-hoist
242
125
  bun run build
243
126
 
244
127
  # Run in development mode (with source maps)
245
- bun run dev upstream:sync --help
128
+ bun run dev dev:demo --help
246
129
 
247
130
  # Lint
248
131
  bun run lint
@@ -254,24 +137,7 @@ The CLI is built with [oclif](https://oclif.io/), following the same architectur
254
137
 
255
138
  - **Commands**: Located in `src/commands/` organized by topic
256
139
  - **Utilities**: Shared utilities in `src/utils/`
257
- - **Topics**: Commands are grouped into topics (upstream, packages, docs, verify)
258
-
259
- ## Migration from Scripts
260
-
261
- This CLI replaces the scripts in `./scripts` directory:
262
-
263
- | Old Script | New CLI Command |
264
- | ------------------------------------------- | -------------------------------------------- |
265
- | `bun scripts/sync-upstream.ts` | `bun run cli upstream:sync` |
266
- | `bun scripts/check-upstream.ts` | `bun run cli upstream:check` |
267
- | `bun scripts/track-upstream.ts show` | `bun run cli upstream:track show` |
268
- | `bun scripts/check-deps.ts` | `bun run cli upstream:deps` |
269
- | `bun scripts/analyze-esm-compatibility.ts` | `bun run cli upstream:analyze-esm` |
270
- | `bun scripts/enable-react-publishing.ts` | `bun run cli packages:enable-publishing` |
271
- | `bun scripts/create-controller-packages.ts` | `bun run cli packages:create-controllers` |
272
- | `bun scripts/create-lib-react-packages.ts` | `bun run cli packages:create-lib-react` |
273
- | `bun scripts/create-react-packages.ts` | `bun run cli packages:create-react-elements` |
274
- | `bun scripts/verify-react-build.ts` | `bun run cli verify:react-build` |
140
+ - **Topics**: Commands are grouped into topics (dev, packages, docs, verify)
275
141
 
276
142
  ## License
277
143
 
@@ -3,7 +3,6 @@ import { Logger } from '../../utils/logger.js';
3
3
  import { existsSync } from 'node:fs';
4
4
  import { readdir, readFile } from 'node:fs/promises';
5
5
  import { join } from 'node:path';
6
- import { EXCLUDED_UPSTREAM_ELEMENTS } from '../../lib/upstream/sync-constants.js';
7
6
  const ELEMENTS_REACT_DIR = 'packages/elements-react';
8
7
  const ELEMENTS_SVELTE_DIR = 'packages/elements-svelte';
9
8
  function hasAnyControllerSource(elementDir) {
@@ -217,12 +216,8 @@ export default class VerifyControllers extends Command {
217
216
  const { flags } = await this.parse(VerifyControllers);
218
217
  this.logger = new Logger(flags.verbose);
219
218
  this.logger.section('🧩 Verifying published controller modules');
220
- const excludedElements = new Set(EXCLUDED_UPSTREAM_ELEMENTS);
221
219
  const reactItems = await readdir(ELEMENTS_REACT_DIR, { withFileTypes: true });
222
- const reactNames = reactItems
223
- .filter((d) => d.isDirectory())
224
- .map((d) => d.name)
225
- .filter((name) => !excludedElements.has(name));
220
+ const reactNames = reactItems.filter((d) => d.isDirectory()).map((d) => d.name);
226
221
  const svelteItems = await readdir(ELEMENTS_SVELTE_DIR, { withFileTypes: true });
227
222
  const svelteNames = svelteItems.filter((d) => d.isDirectory()).map((d) => d.name);
228
223
  let jobs = [];
@@ -1 +1 @@
1
- {"version":3,"file":"controllers.js","sourceRoot":"","sources":["../../../src/commands/verify/controllers.ts"],"names":[],"mappings":"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","sourcesContent":["import { Command, Flags } from '@oclif/core';\nimport { Logger } from '../../utils/logger.js';\nimport { existsSync } from 'node:fs';\nimport { readdir, readFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { EXCLUDED_UPSTREAM_ELEMENTS } from '../../lib/upstream/sync-constants.js';\n\ntype CheckResult = {\n element: string;\n elementDir: string;\n ok: boolean;\n errors: string[];\n warnings: string[];\n};\n\nconst ELEMENTS_REACT_DIR = 'packages/elements-react';\nconst ELEMENTS_SVELTE_DIR = 'packages/elements-svelte';\n\nfunction hasAnyControllerSource(elementDir: string): boolean {\n const base = join(elementDir, 'src', 'controller', 'index');\n return (\n existsSync(base + '.ts') ||\n existsSync(base + '.tsx') ||\n existsSync(base + '.js') ||\n existsSync(base + '.jsx')\n );\n}\n\nfunction hasAnyPrintSource(elementDir: string): boolean {\n const base = join(elementDir, 'src', 'print', 'index');\n return (\n existsSync(base + '.ts') ||\n existsSync(base + '.tsx') ||\n existsSync(base + '.js') ||\n existsSync(base + '.jsx')\n );\n}\n\nfunction hasAnyAuthorOrConfigureSource(elementDir: string): boolean {\n for (const view of ['author', 'configure']) {\n const base = join(elementDir, 'src', view, 'index');\n if (\n existsSync(base + '.ts') ||\n existsSync(base + '.tsx') ||\n existsSync(base + '.js') ||\n existsSync(base + '.jsx')\n ) {\n return true;\n }\n }\n return false;\n}\n\nasync function verifyControllerPackage(elementDir: string, element: string): Promise<CheckResult> {\n const pkgPath = join(elementDir, 'package.json');\n if (!existsSync(pkgPath)) {\n return {\n element,\n elementDir,\n ok: false,\n errors: ['Missing package.json'],\n warnings: [],\n };\n }\n\n const hasController = hasAnyControllerSource(elementDir);\n const hasAuthorOrConfigure = hasAnyAuthorOrConfigureSource(elementDir);\n const hasPrint = hasAnyPrintSource(elementDir);\n if (!hasController && !hasAuthorOrConfigure && !hasPrint) {\n return { element, elementDir, ok: true, errors: [], warnings: [] };\n }\n\n const pkgRaw = await readFile(pkgPath, 'utf-8');\n const pkg = JSON.parse(pkgRaw) as any;\n const exportsObj = pkg?.exports as any;\n const controllerExport = exportsObj?.['./controller'];\n const controllerJsExport = exportsObj?.['./controller.js'];\n const configureExport = exportsObj?.['./configure'];\n const printExport = exportsObj?.['./print'];\n const printJsExport = exportsObj?.['./print.js'];\n const expectedControllerSpecifier = `${pkg.name}/controller`;\n const expectedConfigureSpecifier = `${pkg.name}/configure`;\n const expectedShim = \"export * from './dist/controller/index.js';\\n\";\n\n const errors: string[] = [];\n const warnings: string[] = [];\n const files = Array.isArray(pkg.files) ? pkg.files : [];\n\n if (hasController) {\n if (pkg?.pie?.controller !== expectedControllerSpecifier) {\n errors.push(`package.json pie.controller must be \"${expectedControllerSpecifier}\"`);\n }\n if (!files.includes('controller.js')) {\n errors.push('package.json files[] must include \"controller.js\"');\n }\n }\n if (hasAuthorOrConfigure) {\n if (pkg?.pie?.configure !== expectedConfigureSpecifier) {\n errors.push(`package.json pie.configure must be \"${expectedConfigureSpecifier}\"`);\n }\n if (!configureExport) {\n errors.push('Missing exports[\"./configure\"] in package.json');\n }\n if (!files.includes('configure.js')) {\n errors.push('package.json files[] must include \"configure.js\"');\n }\n }\n\n if (hasController && !controllerExport) {\n errors.push('Missing exports[\"./controller\"] in package.json');\n } else if (controllerExport) {\n const jsPath = controllerExport?.default as string | undefined;\n const dtsPath = controllerExport?.types as string | undefined;\n\n if (!jsPath || typeof jsPath !== 'string') {\n errors.push('exports[\"./controller\"].default is missing');\n } else {\n const abs = join(elementDir, jsPath.replace(/^\\.\\//, ''));\n if (!existsSync(abs)) {\n errors.push(`Controller JS artifact missing: ${jsPath}`);\n }\n }\n\n if (!dtsPath || typeof dtsPath !== 'string') {\n warnings.push('exports[\"./controller\"].types is missing');\n } else {\n const abs = join(elementDir, dtsPath.replace(/^\\.\\//, ''));\n if (!existsSync(abs)) {\n warnings.push(`Controller d.ts artifact missing: ${dtsPath}`);\n }\n }\n }\n\n if (hasController && !controllerJsExport) {\n errors.push('Missing exports[\"./controller.js\"] in package.json');\n } else if (controllerJsExport) {\n const jsPath = controllerJsExport?.default as string | undefined;\n const dtsPath = controllerJsExport?.types as string | undefined;\n if (controllerExport && jsPath !== controllerExport?.default) {\n errors.push('exports[\"./controller.js\"].default must match exports[\"./controller\"].default');\n }\n if (controllerExport && dtsPath !== controllerExport?.types) {\n errors.push('exports[\"./controller.js\"].types must match exports[\"./controller\"].types');\n }\n }\n\n if (configureExport) {\n const configureTarget = configureExport?.default as string | undefined;\n if (!configureTarget || typeof configureTarget !== 'string') {\n errors.push('exports[\"./configure\"].default is missing');\n } else {\n const abs = join(elementDir, configureTarget.replace(/^\\.\\//, ''));\n if (!existsSync(abs)) {\n errors.push(`Configure JS artifact missing: ${configureTarget}`);\n }\n const configureShimPath = join(elementDir, 'configure.js');\n const expectedConfigureShim = `export { default } from '${configureTarget}';\\nexport * from '${configureTarget}';\\n`;\n if (!existsSync(configureShimPath)) {\n errors.push('Missing root configure.js compatibility shim');\n } else {\n const configureShim = await readFile(configureShimPath, 'utf-8');\n if (configureShim !== expectedConfigureShim) {\n errors.push(`Root configure.js shim must re-export ${configureTarget}`);\n }\n }\n }\n }\n\n // Print is checked on the same terms as controller and configure: the root shim is a\n // publish contract, because a directory-aliasing bundler resolves `<pkg>/print` to it\n // rather than through the exports map.\n if (hasPrint) {\n if (!files.includes('print.js')) {\n errors.push('package.json files[] must include \"print.js\"');\n }\n if (!printExport) {\n errors.push('Missing exports[\"./print\"] in package.json');\n }\n if (!printJsExport) {\n errors.push('Missing exports[\"./print.js\"] in package.json');\n } else if (printExport) {\n if (printJsExport?.default !== printExport?.default) {\n errors.push('exports[\"./print.js\"].default must match exports[\"./print\"].default');\n }\n if (printJsExport?.types !== printExport?.types) {\n errors.push('exports[\"./print.js\"].types must match exports[\"./print\"].types');\n }\n }\n\n const printTarget = (printExport?.default as string | undefined) ?? './dist/print/index.js';\n const printArtifact = join(elementDir, printTarget.replace(/^\\.\\//, ''));\n if (!existsSync(printArtifact)) {\n errors.push(`Print JS artifact missing: ${printTarget}`);\n }\n\n const printShimPath = join(elementDir, 'print.js');\n const expectedPrintShim = `export { default } from '${printTarget}';\\nexport * from '${printTarget}';\\n`;\n if (!existsSync(printShimPath)) {\n errors.push('Missing root print.js compatibility shim');\n } else {\n const printShim = await readFile(printShimPath, 'utf-8');\n if (printShim !== expectedPrintShim) {\n errors.push(`Root print.js shim must re-export ${printTarget}`);\n }\n }\n }\n\n if (hasController) {\n const shimPath = join(elementDir, 'controller.js');\n if (!existsSync(shimPath)) {\n errors.push('Missing root controller.js compatibility shim');\n } else {\n const shim = await readFile(shimPath, 'utf-8');\n if (shim !== expectedShim) {\n errors.push('Root controller.js shim must re-export ./dist/controller/index.js');\n }\n }\n }\n\n return { element, elementDir, ok: errors.length === 0, errors, warnings };\n}\n\nexport default class VerifyControllers extends Command {\n static override description =\n 'Verify that element packages will publish controller modules correctly (exports + dist artifacts)';\n\n static override examples = [\n 'bun run cli <%= command.id %>',\n 'bun cli <%= command.id %>',\n '<%= config.bin %> <%= command.id %>',\n ];\n\n static override flags = {\n verbose: Flags.boolean({\n char: 'v',\n description: 'Show detailed output',\n default: false,\n }),\n element: Flags.string({\n description: 'Check only specified element (react or svelte package name)',\n }),\n };\n\n private logger = new Logger();\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(VerifyControllers);\n this.logger = new Logger(flags.verbose);\n\n this.logger.section('🧩 Verifying published controller modules');\n\n const excludedElements = new Set<string>(EXCLUDED_UPSTREAM_ELEMENTS as readonly string[]);\n\n const reactItems = await readdir(ELEMENTS_REACT_DIR, { withFileTypes: true });\n const reactNames = reactItems\n .filter((d) => d.isDirectory())\n .map((d) => d.name)\n .filter((name) => !excludedElements.has(name));\n\n const svelteItems = await readdir(ELEMENTS_SVELTE_DIR, { withFileTypes: true });\n const svelteNames = svelteItems.filter((d) => d.isDirectory()).map((d) => d.name);\n\n type Job = { name: string; dir: string };\n let jobs: Job[] = [];\n\n if (flags.element) {\n const r = join(ELEMENTS_REACT_DIR, flags.element);\n const s = join(ELEMENTS_SVELTE_DIR, flags.element);\n if (reactNames.includes(flags.element) && existsSync(join(r, 'package.json'))) {\n jobs = [{ name: flags.element, dir: r }];\n } else if (svelteNames.includes(flags.element) && existsSync(join(s, 'package.json'))) {\n jobs = [{ name: flags.element, dir: s }];\n } else {\n this.error(\n `Element '${flags.element}' not found under ${ELEMENTS_REACT_DIR} or ${ELEMENTS_SVELTE_DIR}`\n );\n }\n } else {\n jobs = [\n ...reactNames.sort().map((name) => ({ name, dir: join(ELEMENTS_REACT_DIR, name) })),\n ...svelteNames.sort().map((name) => ({ name, dir: join(ELEMENTS_SVELTE_DIR, name) })),\n ];\n }\n\n const results: CheckResult[] = [];\n for (const { name, dir } of jobs) {\n results.push(await verifyControllerPackage(dir, name));\n }\n\n const failed = results.filter((r) => !r.ok);\n const warned = results.filter((r) => r.warnings.length > 0);\n const checked = results.filter((r) => hasAnyControllerSource(r.elementDir));\n\n this.log(`\\n${'='.repeat(60)}`);\n this.log('šŸ“Š CONTROLLER PUBLISH VERIFICATION REPORT');\n this.log('='.repeat(60));\n this.log(`Elements scanned: ${results.length}`);\n this.log(`Elements with controllers: ${checked.length}`);\n this.log(`Passed: ${results.length - failed.length} āœ…`);\n this.log(`Failed: ${failed.length} āŒ`);\n this.log(`Warnings: ${warned.length} āš ļø`);\n\n if (failed.length > 0) {\n this.log('\\nāŒ FAILURES:');\n for (const f of failed) {\n this.log(` - ${f.element}`);\n for (const e of f.errors) this.log(` • ${e}`);\n }\n this.log('\\nšŸ’” Fixes:');\n this.log(' - Ensure package.json exports include \"./controller\" and \"./controller.js\"');\n this.log(' - Ensure package.json pie.controller is \"@pie-element/<element>/controller\"');\n this.log(' - Ensure package.json files[] includes \"controller.js\"');\n this.log(' - Ensure root controller.js re-exports \"./dist/controller/index.js\"');\n this.log(' - Ensure print-bearing elements publish \"print.js\" and export \"./print.js\"');\n this.log(' - Ensure build outputs exist under dist/controller/');\n this.log(` - Rebuild: cd ${ELEMENTS_REACT_DIR}/<element> && bun run build`);\n this.log(` - Or: cd ${ELEMENTS_SVELTE_DIR}/<element> && bun run build`);\n this.error('Some controller publish checks failed', { exit: 1 });\n }\n\n if (warned.length > 0) {\n this.log('\\nāš ļø WARNINGS (non-blocking):');\n for (const w of warned) {\n this.log(` - ${w.element}`);\n for (const msg of w.warnings) this.log(` • ${msg}`);\n }\n }\n\n this.log(`\\n${'='.repeat(60)}\\n`);\n }\n}\n"]}
1
+ {"version":3,"file":"controllers.js","sourceRoot":"","sources":["../../../src/commands/verify/controllers.ts"],"names":[],"mappings":"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","sourcesContent":["import { Command, Flags } from '@oclif/core';\nimport { Logger } from '../../utils/logger.js';\nimport { existsSync } from 'node:fs';\nimport { readdir, readFile } from 'node:fs/promises';\nimport { join } from 'node:path';\n\ntype CheckResult = {\n element: string;\n elementDir: string;\n ok: boolean;\n errors: string[];\n warnings: string[];\n};\n\nconst ELEMENTS_REACT_DIR = 'packages/elements-react';\nconst ELEMENTS_SVELTE_DIR = 'packages/elements-svelte';\n\nfunction hasAnyControllerSource(elementDir: string): boolean {\n const base = join(elementDir, 'src', 'controller', 'index');\n return (\n existsSync(base + '.ts') ||\n existsSync(base + '.tsx') ||\n existsSync(base + '.js') ||\n existsSync(base + '.jsx')\n );\n}\n\nfunction hasAnyPrintSource(elementDir: string): boolean {\n const base = join(elementDir, 'src', 'print', 'index');\n return (\n existsSync(base + '.ts') ||\n existsSync(base + '.tsx') ||\n existsSync(base + '.js') ||\n existsSync(base + '.jsx')\n );\n}\n\nfunction hasAnyAuthorOrConfigureSource(elementDir: string): boolean {\n for (const view of ['author', 'configure']) {\n const base = join(elementDir, 'src', view, 'index');\n if (\n existsSync(base + '.ts') ||\n existsSync(base + '.tsx') ||\n existsSync(base + '.js') ||\n existsSync(base + '.jsx')\n ) {\n return true;\n }\n }\n return false;\n}\n\nasync function verifyControllerPackage(elementDir: string, element: string): Promise<CheckResult> {\n const pkgPath = join(elementDir, 'package.json');\n if (!existsSync(pkgPath)) {\n return {\n element,\n elementDir,\n ok: false,\n errors: ['Missing package.json'],\n warnings: [],\n };\n }\n\n const hasController = hasAnyControllerSource(elementDir);\n const hasAuthorOrConfigure = hasAnyAuthorOrConfigureSource(elementDir);\n const hasPrint = hasAnyPrintSource(elementDir);\n if (!hasController && !hasAuthorOrConfigure && !hasPrint) {\n return { element, elementDir, ok: true, errors: [], warnings: [] };\n }\n\n const pkgRaw = await readFile(pkgPath, 'utf-8');\n const pkg = JSON.parse(pkgRaw) as any;\n const exportsObj = pkg?.exports as any;\n const controllerExport = exportsObj?.['./controller'];\n const controllerJsExport = exportsObj?.['./controller.js'];\n const configureExport = exportsObj?.['./configure'];\n const printExport = exportsObj?.['./print'];\n const printJsExport = exportsObj?.['./print.js'];\n const expectedControllerSpecifier = `${pkg.name}/controller`;\n const expectedConfigureSpecifier = `${pkg.name}/configure`;\n const expectedShim = \"export * from './dist/controller/index.js';\\n\";\n\n const errors: string[] = [];\n const warnings: string[] = [];\n const files = Array.isArray(pkg.files) ? pkg.files : [];\n\n if (hasController) {\n if (pkg?.pie?.controller !== expectedControllerSpecifier) {\n errors.push(`package.json pie.controller must be \"${expectedControllerSpecifier}\"`);\n }\n if (!files.includes('controller.js')) {\n errors.push('package.json files[] must include \"controller.js\"');\n }\n }\n if (hasAuthorOrConfigure) {\n if (pkg?.pie?.configure !== expectedConfigureSpecifier) {\n errors.push(`package.json pie.configure must be \"${expectedConfigureSpecifier}\"`);\n }\n if (!configureExport) {\n errors.push('Missing exports[\"./configure\"] in package.json');\n }\n if (!files.includes('configure.js')) {\n errors.push('package.json files[] must include \"configure.js\"');\n }\n }\n\n if (hasController && !controllerExport) {\n errors.push('Missing exports[\"./controller\"] in package.json');\n } else if (controllerExport) {\n const jsPath = controllerExport?.default as string | undefined;\n const dtsPath = controllerExport?.types as string | undefined;\n\n if (!jsPath || typeof jsPath !== 'string') {\n errors.push('exports[\"./controller\"].default is missing');\n } else {\n const abs = join(elementDir, jsPath.replace(/^\\.\\//, ''));\n if (!existsSync(abs)) {\n errors.push(`Controller JS artifact missing: ${jsPath}`);\n }\n }\n\n if (!dtsPath || typeof dtsPath !== 'string') {\n warnings.push('exports[\"./controller\"].types is missing');\n } else {\n const abs = join(elementDir, dtsPath.replace(/^\\.\\//, ''));\n if (!existsSync(abs)) {\n warnings.push(`Controller d.ts artifact missing: ${dtsPath}`);\n }\n }\n }\n\n if (hasController && !controllerJsExport) {\n errors.push('Missing exports[\"./controller.js\"] in package.json');\n } else if (controllerJsExport) {\n const jsPath = controllerJsExport?.default as string | undefined;\n const dtsPath = controllerJsExport?.types as string | undefined;\n if (controllerExport && jsPath !== controllerExport?.default) {\n errors.push('exports[\"./controller.js\"].default must match exports[\"./controller\"].default');\n }\n if (controllerExport && dtsPath !== controllerExport?.types) {\n errors.push('exports[\"./controller.js\"].types must match exports[\"./controller\"].types');\n }\n }\n\n if (configureExport) {\n const configureTarget = configureExport?.default as string | undefined;\n if (!configureTarget || typeof configureTarget !== 'string') {\n errors.push('exports[\"./configure\"].default is missing');\n } else {\n const abs = join(elementDir, configureTarget.replace(/^\\.\\//, ''));\n if (!existsSync(abs)) {\n errors.push(`Configure JS artifact missing: ${configureTarget}`);\n }\n const configureShimPath = join(elementDir, 'configure.js');\n const expectedConfigureShim = `export { default } from '${configureTarget}';\\nexport * from '${configureTarget}';\\n`;\n if (!existsSync(configureShimPath)) {\n errors.push('Missing root configure.js compatibility shim');\n } else {\n const configureShim = await readFile(configureShimPath, 'utf-8');\n if (configureShim !== expectedConfigureShim) {\n errors.push(`Root configure.js shim must re-export ${configureTarget}`);\n }\n }\n }\n }\n\n // Print is checked on the same terms as controller and configure: the root shim is a\n // publish contract, because a directory-aliasing bundler resolves `<pkg>/print` to it\n // rather than through the exports map.\n if (hasPrint) {\n if (!files.includes('print.js')) {\n errors.push('package.json files[] must include \"print.js\"');\n }\n if (!printExport) {\n errors.push('Missing exports[\"./print\"] in package.json');\n }\n if (!printJsExport) {\n errors.push('Missing exports[\"./print.js\"] in package.json');\n } else if (printExport) {\n if (printJsExport?.default !== printExport?.default) {\n errors.push('exports[\"./print.js\"].default must match exports[\"./print\"].default');\n }\n if (printJsExport?.types !== printExport?.types) {\n errors.push('exports[\"./print.js\"].types must match exports[\"./print\"].types');\n }\n }\n\n const printTarget = (printExport?.default as string | undefined) ?? './dist/print/index.js';\n const printArtifact = join(elementDir, printTarget.replace(/^\\.\\//, ''));\n if (!existsSync(printArtifact)) {\n errors.push(`Print JS artifact missing: ${printTarget}`);\n }\n\n const printShimPath = join(elementDir, 'print.js');\n const expectedPrintShim = `export { default } from '${printTarget}';\\nexport * from '${printTarget}';\\n`;\n if (!existsSync(printShimPath)) {\n errors.push('Missing root print.js compatibility shim');\n } else {\n const printShim = await readFile(printShimPath, 'utf-8');\n if (printShim !== expectedPrintShim) {\n errors.push(`Root print.js shim must re-export ${printTarget}`);\n }\n }\n }\n\n if (hasController) {\n const shimPath = join(elementDir, 'controller.js');\n if (!existsSync(shimPath)) {\n errors.push('Missing root controller.js compatibility shim');\n } else {\n const shim = await readFile(shimPath, 'utf-8');\n if (shim !== expectedShim) {\n errors.push('Root controller.js shim must re-export ./dist/controller/index.js');\n }\n }\n }\n\n return { element, elementDir, ok: errors.length === 0, errors, warnings };\n}\n\nexport default class VerifyControllers extends Command {\n static override description =\n 'Verify that element packages will publish controller modules correctly (exports + dist artifacts)';\n\n static override examples = [\n 'bun run cli <%= command.id %>',\n 'bun cli <%= command.id %>',\n '<%= config.bin %> <%= command.id %>',\n ];\n\n static override flags = {\n verbose: Flags.boolean({\n char: 'v',\n description: 'Show detailed output',\n default: false,\n }),\n element: Flags.string({\n description: 'Check only specified element (react or svelte package name)',\n }),\n };\n\n private logger = new Logger();\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(VerifyControllers);\n this.logger = new Logger(flags.verbose);\n\n this.logger.section('🧩 Verifying published controller modules');\n\n const reactItems = await readdir(ELEMENTS_REACT_DIR, { withFileTypes: true });\n const reactNames = reactItems.filter((d) => d.isDirectory()).map((d) => d.name);\n\n const svelteItems = await readdir(ELEMENTS_SVELTE_DIR, { withFileTypes: true });\n const svelteNames = svelteItems.filter((d) => d.isDirectory()).map((d) => d.name);\n\n type Job = { name: string; dir: string };\n let jobs: Job[] = [];\n\n if (flags.element) {\n const r = join(ELEMENTS_REACT_DIR, flags.element);\n const s = join(ELEMENTS_SVELTE_DIR, flags.element);\n if (reactNames.includes(flags.element) && existsSync(join(r, 'package.json'))) {\n jobs = [{ name: flags.element, dir: r }];\n } else if (svelteNames.includes(flags.element) && existsSync(join(s, 'package.json'))) {\n jobs = [{ name: flags.element, dir: s }];\n } else {\n this.error(\n `Element '${flags.element}' not found under ${ELEMENTS_REACT_DIR} or ${ELEMENTS_SVELTE_DIR}`\n );\n }\n } else {\n jobs = [\n ...reactNames.sort().map((name) => ({ name, dir: join(ELEMENTS_REACT_DIR, name) })),\n ...svelteNames.sort().map((name) => ({ name, dir: join(ELEMENTS_SVELTE_DIR, name) })),\n ];\n }\n\n const results: CheckResult[] = [];\n for (const { name, dir } of jobs) {\n results.push(await verifyControllerPackage(dir, name));\n }\n\n const failed = results.filter((r) => !r.ok);\n const warned = results.filter((r) => r.warnings.length > 0);\n const checked = results.filter((r) => hasAnyControllerSource(r.elementDir));\n\n this.log(`\\n${'='.repeat(60)}`);\n this.log('šŸ“Š CONTROLLER PUBLISH VERIFICATION REPORT');\n this.log('='.repeat(60));\n this.log(`Elements scanned: ${results.length}`);\n this.log(`Elements with controllers: ${checked.length}`);\n this.log(`Passed: ${results.length - failed.length} āœ…`);\n this.log(`Failed: ${failed.length} āŒ`);\n this.log(`Warnings: ${warned.length} āš ļø`);\n\n if (failed.length > 0) {\n this.log('\\nāŒ FAILURES:');\n for (const f of failed) {\n this.log(` - ${f.element}`);\n for (const e of f.errors) this.log(` • ${e}`);\n }\n this.log('\\nšŸ’” Fixes:');\n this.log(' - Ensure package.json exports include \"./controller\" and \"./controller.js\"');\n this.log(' - Ensure package.json pie.controller is \"@pie-element/<element>/controller\"');\n this.log(' - Ensure package.json files[] includes \"controller.js\"');\n this.log(' - Ensure root controller.js re-exports \"./dist/controller/index.js\"');\n this.log(' - Ensure print-bearing elements publish \"print.js\" and export \"./print.js\"');\n this.log(' - Ensure build outputs exist under dist/controller/');\n this.log(` - Rebuild: cd ${ELEMENTS_REACT_DIR}/<element> && bun run build`);\n this.log(` - Or: cd ${ELEMENTS_SVELTE_DIR}/<element> && bun run build`);\n this.error('Some controller publish checks failed', { exit: 1 });\n }\n\n if (warned.length > 0) {\n this.log('\\nāš ļø WARNINGS (non-blocking):');\n for (const w of warned) {\n this.log(` - ${w.element}`);\n for (const msg of w.warnings) this.log(` • ${msg}`);\n }\n }\n\n this.log(`\\n${'='.repeat(60)}\\n`);\n }\n}\n"]}
@@ -170,4 +170,4 @@ export async function generateDemoMetadata() {
170
170
  await generateRegistry(elements);
171
171
  console.log('[demo-metadata] āœ“ Demo metadata generation complete');
172
172
  }
173
- //# sourceMappingURL=sync-demo-metadata.js.map
173
+ //# sourceMappingURL=demo-metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demo-metadata.js","sourceRoot":"","sources":["../../../src/lib/demo/demo-metadata.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Generate demo metadata for SvelteKit demo app\n *\n * Scans packages/elements-react and packages/elements-svelte and rewrites the element registry\n * (lib/elements/registry.ts). Each element's demos live in lib/samples/<element>.json, which the\n * demo app reads; an element's docs/demo/config.mjs seeds that file only when it does not exist.\n */\nimport { existsSync, readdirSync, readFileSync } from 'node:fs';\nimport { mkdir, writeFile } from 'node:fs/promises';\nimport { join, dirname } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\nconst REPO_ROOT = join(__dirname, '../../../../..');\nconst DEMO_APP_PATH = join(REPO_ROOT, 'apps/element-demo');\nconst REGISTRY_PATH = join(DEMO_APP_PATH, 'src/lib/elements/registry.ts');\nconst SAMPLES_PATH = join(DEMO_APP_PATH, 'src/lib/samples');\nconst ELEMENT_ROOTS = ['packages/elements-react', 'packages/elements-svelte'];\n\nexport interface ElementMetadata {\n name: string;\n title: string;\n packageName: string;\n hasAuthor: boolean;\n hasPrint: boolean;\n hasConfig: boolean;\n hasSession: boolean;\n demoCount: number;\n}\n\n/**\n * Read the current registry entries, whose hand-set title and hasSession survive regeneration\n */\nfunction readExistingRegistry(): Map<string, ElementMetadata> {\n if (!existsSync(REGISTRY_PATH)) return new Map();\n\n const content = readFileSync(REGISTRY_PATH, 'utf-8');\n const match = content.match(/export const ELEMENT_REGISTRY[^=]*=\\s*(\\[[\\s\\S]*?\\]);/);\n if (!match) throw new Error(`Could not find ELEMENT_REGISTRY in ${REGISTRY_PATH}`);\n\n const entries: ElementMetadata[] = JSON.parse(match[1]);\n return new Map(entries.map((entry) => [entry.name, entry]));\n}\n\n/**\n * Convert old format (models array) to new format (demos array)\n */\nfunction toDemosFormat(configData: any): any {\n if (!configData?.models || configData?.demos) return configData;\n\n return {\n demos: configData.models.map((model: any, index: number) => ({\n id: index === 0 ? 'default' : `demo-${index + 1}`,\n title: index === 0 ? 'Default Demo' : `Demo ${index + 1}`,\n description: 'Default configuration',\n tags: [],\n model: model,\n session: { value: [] },\n })),\n };\n}\n\n/**\n * Load an element's samples JSON, seeding it from docs/demo/config.mjs when it does not exist\n */\nasync function loadSamples(name: string, elementPath: string): Promise<any | undefined> {\n const samplesPath = join(SAMPLES_PATH, `${name}.json`);\n const configPath = join(elementPath, 'docs/demo/config.mjs');\n const existing = existsSync(samplesPath)\n ? JSON.parse(readFileSync(samplesPath, 'utf-8'))\n : undefined;\n\n if (!existsSync(configPath)) return existing;\n\n let configData: any;\n try {\n configData = toDemosFormat((await import(`file://${configPath}`)).default);\n } catch (e) {\n console.warn(`[demo-metadata] Failed to convert config for ${name}:`, e);\n return existing;\n }\n\n if (existing) {\n if (JSON.stringify(configData) !== JSON.stringify(existing)) {\n console.warn(\n `[demo-metadata] ${name}: docs/demo/config.mjs differs from samples/${name}.json; ` +\n 'kept the samples file (delete it to regenerate from config.mjs)'\n );\n }\n return existing;\n }\n\n await mkdir(SAMPLES_PATH, { recursive: true });\n await writeFile(samplesPath, JSON.stringify(configData, null, 2) + '\\n', 'utf-8');\n console.log(`[demo-metadata] Seeded samples/${name}.json from docs/demo/config.mjs`);\n return configData;\n}\n\n/**\n * Scan the element package directories for all elements\n */\nasync function scanElements(existing: Map<string, ElementMetadata>): Promise<ElementMetadata[]> {\n const elements: ElementMetadata[] = [];\n\n for (const root of ELEMENT_ROOTS) {\n const rootPath = join(REPO_ROOT, root);\n if (!existsSync(rootPath)) continue;\n\n for (const dir of readdirSync(rootPath, { withFileTypes: true })) {\n if (!dir.isDirectory()) continue;\n\n // Check for required structure\n const elementPath = join(rootPath, dir.name);\n const srcPath = join(elementPath, 'src');\n if (!existsSync(join(srcPath, 'delivery'))) continue;\n\n const pkg = JSON.parse(readFileSync(join(elementPath, 'package.json'), 'utf-8'));\n const samples = await loadSamples(dir.name, elementPath);\n const previous = existing.get(dir.name);\n\n if (!previous) {\n console.log(\n `[demo-metadata] Added ${dir.name}; check its title and hasSession in registry.ts`\n );\n }\n\n elements.push({\n name: dir.name,\n // Generate title from name (e.g., \"multiple-choice\" -> \"Multiple Choice\")\n title:\n previous?.title ??\n dir.name\n .split('-')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' '),\n packageName: pkg.name,\n hasAuthor: existsSync(join(srcPath, 'author')),\n hasPrint: existsSync(join(srcPath, 'print')),\n hasConfig: samples !== undefined,\n hasSession: previous?.hasSession ?? true,\n demoCount: Array.isArray(samples?.demos) ? samples.demos.length : 0,\n });\n }\n }\n\n return elements.sort((a, b) => a.name.localeCompare(b.name));\n}\n\n/**\n * Generate registry.ts file\n */\nasync function generateRegistry(elements: ElementMetadata[]): Promise<void> {\n const content = `/**\n * Element Registry\n *\n * Generated by \\`bun tools/generate-demo-metadata.mjs\\` from packages/elements-react and\n * packages/elements-svelte. Edit \\`title\\` and \\`hasSession\\` here; regeneration keeps them and\n * overwrites the other fields.\n */\n\nexport interface ElementMetadata {\n name: string;\n title: string;\n packageName: string;\n hasAuthor: boolean;\n hasPrint: boolean;\n hasConfig: boolean;\n hasSession: boolean;\n demoCount: number;\n}\n\nexport const ELEMENT_REGISTRY: readonly ElementMetadata[] = ${JSON.stringify(elements, null, 2)};\n\nexport function getElement(name: string): ElementMetadata | undefined {\n return ELEMENT_REGISTRY.find((el) => el.name === name);\n}\n\nexport function getAllElements(): readonly ElementMetadata[] {\n return ELEMENT_REGISTRY;\n}\n`;\n\n await mkdir(dirname(REGISTRY_PATH), { recursive: true });\n await writeFile(REGISTRY_PATH, content, 'utf-8');\n console.log(`[demo-metadata] Generated registry with ${elements.length} elements`);\n}\n\n/**\n * Main entry point\n */\nexport async function generateDemoMetadata(): Promise<void> {\n console.log('[demo-metadata] Scanning elements...');\n\n const existing = readExistingRegistry();\n const elements = await scanElements(existing);\n\n for (const name of existing.keys()) {\n if (!elements.some((element) => element.name === name)) {\n console.log(`[demo-metadata] Removed ${name}; no element package found`);\n }\n }\n\n await generateRegistry(elements);\n\n console.log('[demo-metadata] āœ“ Demo metadata generation complete');\n}\n"]}
@@ -8,4 +8,3 @@ export interface PackageJson {
8
8
  }
9
9
  export declare function loadPackageJson(path: string): Promise<PackageJson>;
10
10
  export declare function writePackageJson(path: string, pkg: PackageJson): Promise<void>;
11
- export declare function extractDependencies(content: string): string[];
@@ -7,23 +7,4 @@ export async function writePackageJson(path, pkg) {
7
7
  const content = `${JSON.stringify(pkg, null, 2)}\n`;
8
8
  await writeFile(path, content, 'utf-8');
9
9
  }
10
- export function extractDependencies(content) {
11
- const deps = new Set();
12
- // Match import statements
13
- const importRegex = /import\s+.+\s+from\s+['"]([^'"]+)['"]/g;
14
- let match = importRegex.exec(content);
15
- while (match !== null) {
16
- const dep = match[1];
17
- // Skip relative imports
18
- if (!dep.startsWith('.') && !dep.startsWith('/')) {
19
- // Extract package name (handle scoped packages)
20
- const pkgName = dep.startsWith('@')
21
- ? dep.split('/').slice(0, 2).join('/')
22
- : dep.split('/')[0];
23
- deps.add(pkgName);
24
- }
25
- match = importRegex.exec(content);
26
- }
27
- return Array.from(deps).sort();
28
- }
29
10
  //# sourceMappingURL=package-json.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"package-json.js","sourceRoot":"","sources":["../../src/utils/package-json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAWvD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY;IAChD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAgB,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAY,EAAE,GAAgB;IACnE,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;IACpD,MAAM,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,0BAA0B;IAC1B,MAAM,WAAW,GAAG,wCAAwC,CAAC;IAC7D,IAAI,KAAK,GAA2B,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAE9D,OAAO,KAAK,KAAK,IAAI,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,wBAAwB;QACxB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACjD,gDAAgD;YAChD,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;gBACjC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;gBACtC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACpB,CAAC;QACD,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AACjC,CAAC","sourcesContent":["import { readFile, writeFile } from 'node:fs/promises';\n\nexport interface PackageJson {\n name: string;\n version: string;\n private?: boolean;\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n [key: string]: unknown;\n}\n\nexport async function loadPackageJson(path: string): Promise<PackageJson> {\n const content = await readFile(path, 'utf-8');\n return JSON.parse(content) as PackageJson;\n}\n\nexport async function writePackageJson(path: string, pkg: PackageJson): Promise<void> {\n const content = `${JSON.stringify(pkg, null, 2)}\\n`;\n await writeFile(path, content, 'utf-8');\n}\n\nexport function extractDependencies(content: string): string[] {\n const deps = new Set<string>();\n\n // Match import statements\n const importRegex = /import\\s+.+\\s+from\\s+['\"]([^'\"]+)['\"]/g;\n let match: RegExpExecArray | null = importRegex.exec(content);\n\n while (match !== null) {\n const dep = match[1];\n // Skip relative imports\n if (!dep.startsWith('.') && !dep.startsWith('/')) {\n // Extract package name (handle scoped packages)\n const pkgName = dep.startsWith('@')\n ? dep.split('/').slice(0, 2).join('/')\n : dep.split('/')[0];\n deps.add(pkgName);\n }\n match = importRegex.exec(content);\n }\n\n return Array.from(deps).sort();\n}\n"]}
1
+ {"version":3,"file":"package-json.js","sourceRoot":"","sources":["../../src/utils/package-json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAWvD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY;IAChD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAgB,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAY,EAAE,GAAgB;IACnE,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;IACpD,MAAM,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC","sourcesContent":["import { readFile, writeFile } from 'node:fs/promises';\n\nexport interface PackageJson {\n name: string;\n version: string;\n private?: boolean;\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n [key: string]: unknown;\n}\n\nexport async function loadPackageJson(path: string): Promise<PackageJson> {\n const content = await readFile(path, 'utf-8');\n return JSON.parse(content) as PackageJson;\n}\n\nexport async function writePackageJson(path: string, pkg: PackageJson): Promise<void> {\n const content = `${JSON.stringify(pkg, null, 2)}\\n`;\n await writeFile(path, content, 'utf-8');\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-element/cli",
3
- "version": "0.1.3-next.20261002220849",
3
+ "version": "0.1.3-next.20261002233132",
4
4
  "description": "CLI tools for managing PIE Elements NG",
5
5
  "type": "module",
6
6
  "bin": {
@@ -38,11 +38,8 @@
38
38
  "dev": {
39
39
  "description": "Development server and tools"
40
40
  },
41
- "upstream": {
42
- "description": "Manage synchronization with upstream pie-elements repository"
43
- },
44
41
  "packages": {
45
- "description": "Generate and manage package configurations"
42
+ "description": "Package publishing settings"
46
43
  },
47
44
  "docs": {
48
45
  "description": "Generate and verify framework-agnostic element documentation"
@@ -1,12 +0,0 @@
1
- import { Command } from '@oclif/core';
2
- export default class CreateControllers extends Command {
3
- static description: string;
4
- static examples: string[];
5
- static flags: {
6
- verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
- };
8
- private logger;
9
- run(): Promise<void>;
10
- private scanController;
11
- private generatePackageJson;
12
- }
@@ -1,103 +0,0 @@
1
- import { Command, Flags } from '@oclif/core';
2
- import { Logger } from '../../utils/logger.js';
3
- import { extractDependencies } from '../../utils/package-json.js';
4
- import { existsSync } from 'node:fs';
5
- import { readdir, readFile, writeFile } from 'node:fs/promises';
6
- import { join } from 'node:path';
7
- const SHARED_DIR = 'packages/shared';
8
- export default class CreateControllers extends Command {
9
- static description = 'Create package.json files for synced controllers';
10
- static examples = ['<%= config.bin %> <%= command.id %>'];
11
- static flags = {
12
- verbose: Flags.boolean({
13
- char: 'v',
14
- description: 'Show detailed output',
15
- default: false,
16
- }),
17
- };
18
- logger = new Logger();
19
- async run() {
20
- const { flags } = await this.parse(CreateControllers);
21
- this.logger = new Logger(flags.verbose);
22
- this.logger.section('šŸ“¦ Creating package.json files for controllers');
23
- const controllers = await readdir(SHARED_DIR);
24
- let created = 0;
25
- let skipped = 0;
26
- for (const controller of controllers) {
27
- const controllerDir = join(SHARED_DIR, controller);
28
- const packageJsonPath = join(controllerDir, 'package.json');
29
- // Skip if package.json already exists
30
- if (existsSync(packageJsonPath)) {
31
- this.logger.info(` ā­ļø ${controller}: package.json already exists`);
32
- skipped++;
33
- continue;
34
- }
35
- // Scan for dependencies
36
- const deps = await this.scanController(controllerDir);
37
- // Generate package.json
38
- const content = this.generatePackageJson(controller, deps);
39
- // Write file
40
- await writeFile(packageJsonPath, content, 'utf-8');
41
- this.logger.success(` āœ… ${controller}: Created package.json (${deps.length} dependencies)`);
42
- created++;
43
- }
44
- this.logger.section(`\nšŸ“Š Summary: ${created} created, ${skipped} skipped`);
45
- }
46
- async scanController(controllerDir) {
47
- const srcDir = join(controllerDir, 'src');
48
- const deps = new Set();
49
- if (!existsSync(srcDir)) {
50
- return [];
51
- }
52
- const files = await readdir(srcDir);
53
- for (const file of files) {
54
- if (!file.endsWith('.ts'))
55
- continue;
56
- const filePath = join(srcDir, file);
57
- const content = await readFile(filePath, 'utf-8');
58
- const fileDeps = extractDependencies(content);
59
- for (const dep of fileDeps)
60
- deps.add(dep);
61
- }
62
- return Array.from(deps).sort();
63
- }
64
- generatePackageJson(name, deps) {
65
- const dependencies = {};
66
- for (const dep of deps) {
67
- // Use * for external dependencies (they're in root package.json)
68
- dependencies[dep] = '*';
69
- }
70
- const pkg = {
71
- name: `@pie-element/${name}`,
72
- version: '0.1.0',
73
- description: `Framework-agnostic ${name.replace('-controller', '')} controller synced from pie-elements`,
74
- type: 'module',
75
- main: './src/index.ts',
76
- types: './src/index.ts',
77
- exports: {
78
- '.': {
79
- types: './src/index.ts',
80
- default: './src/index.ts',
81
- },
82
- },
83
- files: ['src'],
84
- scripts: {
85
- build: "echo 'Controllers are consumed as TypeScript source'",
86
- lint: 'biome check .',
87
- 'lint:fix': 'biome check --write .',
88
- },
89
- dependencies: Object.keys(dependencies).length > 0 ? dependencies : undefined,
90
- keywords: ['pie', 'pie-element', 'controller', name.replace('-controller', ''), 'assessment'],
91
- license: 'ISC',
92
- repository: {
93
- type: 'git',
94
- url: 'https://github.com/pie-framework/pie-elements-ng.git',
95
- directory: `packages/shared/${name}`,
96
- },
97
- };
98
- // Remove undefined fields
99
- const cleaned = JSON.parse(JSON.stringify(pkg));
100
- return `${JSON.stringify(cleaned, null, 2)}\n`;
101
- }
102
- }
103
- //# sourceMappingURL=create-controllers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-controllers.js","sourceRoot":"","sources":["../../../src/commands/packages/create-controllers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,UAAU,GAAG,iBAAiB,CAAC;AAErC,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,OAAO;IACpD,MAAM,CAAU,WAAW,GAAG,kDAAkD,CAAC;IAEjF,MAAM,CAAU,QAAQ,GAAG,CAAC,qCAAqC,CAAC,CAAC;IAEnE,MAAM,CAAU,KAAK,GAAG;QACtB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;YACrB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,sBAAsB;YACnC,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAC;IAEM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;IAEvB,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAEtD,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAExC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC;QAEtE,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YACnD,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;YAE5D,sCAAsC;YACtC,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,UAAU,+BAA+B,CAAC,CAAC;gBACrE,OAAO,EAAE,CAAC;gBACV,SAAS;YACX,CAAC;YAED,wBAAwB;YACxB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YAEtD,wBAAwB;YACxB,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAE3D,aAAa;YACb,MAAM,SAAS,CAAC,eAAe,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YACnD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,UAAU,2BAA2B,IAAI,CAAC,MAAM,gBAAgB,CAAC,CAAC;YAC7F,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,OAAO,aAAa,OAAO,UAAU,CAAC,CAAC;IAC9E,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,aAAqB;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAE/B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;QAEpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,SAAS;YAEpC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACpC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAClD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAE9C,KAAK,MAAM,GAAG,IAAI,QAAQ;gBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;IAEO,mBAAmB,CAAC,IAAY,EAAE,IAAc;QACtD,MAAM,YAAY,GAA2B,EAAE,CAAC;QAEhD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,iEAAiE;YACjE,YAAY,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QAC1B,CAAC;QAED,MAAM,GAAG,GAAG;YACV,IAAI,EAAE,gBAAgB,IAAI,EAAE;YAC5B,OAAO,EAAE,OAAO;YAChB,WAAW,EAAE,sBAAsB,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,sCAAsC;YACxG,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,gBAAgB;YACtB,KAAK,EAAE,gBAAgB;YACvB,OAAO,EAAE;gBACP,GAAG,EAAE;oBACH,KAAK,EAAE,gBAAgB;oBACvB,OAAO,EAAE,gBAAgB;iBAC1B;aACF;YACD,KAAK,EAAE,CAAC,KAAK,CAAC;YACd,OAAO,EAAE;gBACP,KAAK,EAAE,sDAAsD;gBAC7D,IAAI,EAAE,eAAe;gBACrB,UAAU,EAAE,uBAAuB;aACpC;YACD,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;YAC7E,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,YAAY,CAAC;YAC7F,OAAO,EAAE,KAAK;YACd,UAAU,EAAE;gBACV,IAAI,EAAE,KAAK;gBACX,GAAG,EAAE,sDAAsD;gBAC3D,SAAS,EAAE,mBAAmB,IAAI,EAAE;aACrC;SACF,CAAC;QAEF,0BAA0B;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAEhD,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;IACjD,CAAC","sourcesContent":["import { Command, Flags } from '@oclif/core';\nimport { Logger } from '../../utils/logger.js';\nimport { extractDependencies } from '../../utils/package-json.js';\nimport { existsSync } from 'node:fs';\nimport { readdir, readFile, writeFile } from 'node:fs/promises';\nimport { join } from 'node:path';\n\nconst SHARED_DIR = 'packages/shared';\n\nexport default class CreateControllers extends Command {\n static override description = 'Create package.json files for synced controllers';\n\n static override examples = ['<%= config.bin %> <%= command.id %>'];\n\n static override flags = {\n verbose: Flags.boolean({\n char: 'v',\n description: 'Show detailed output',\n default: false,\n }),\n };\n\n private logger = new Logger();\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(CreateControllers);\n\n this.logger = new Logger(flags.verbose);\n\n this.logger.section('šŸ“¦ Creating package.json files for controllers');\n\n const controllers = await readdir(SHARED_DIR);\n let created = 0;\n let skipped = 0;\n\n for (const controller of controllers) {\n const controllerDir = join(SHARED_DIR, controller);\n const packageJsonPath = join(controllerDir, 'package.json');\n\n // Skip if package.json already exists\n if (existsSync(packageJsonPath)) {\n this.logger.info(` ā­ļø ${controller}: package.json already exists`);\n skipped++;\n continue;\n }\n\n // Scan for dependencies\n const deps = await this.scanController(controllerDir);\n\n // Generate package.json\n const content = this.generatePackageJson(controller, deps);\n\n // Write file\n await writeFile(packageJsonPath, content, 'utf-8');\n this.logger.success(` āœ… ${controller}: Created package.json (${deps.length} dependencies)`);\n created++;\n }\n\n this.logger.section(`\\nšŸ“Š Summary: ${created} created, ${skipped} skipped`);\n }\n\n private async scanController(controllerDir: string): Promise<string[]> {\n const srcDir = join(controllerDir, 'src');\n const deps = new Set<string>();\n\n if (!existsSync(srcDir)) {\n return [];\n }\n\n const files = await readdir(srcDir);\n\n for (const file of files) {\n if (!file.endsWith('.ts')) continue;\n\n const filePath = join(srcDir, file);\n const content = await readFile(filePath, 'utf-8');\n const fileDeps = extractDependencies(content);\n\n for (const dep of fileDeps) deps.add(dep);\n }\n\n return Array.from(deps).sort();\n }\n\n private generatePackageJson(name: string, deps: string[]): string {\n const dependencies: Record<string, string> = {};\n\n for (const dep of deps) {\n // Use * for external dependencies (they're in root package.json)\n dependencies[dep] = '*';\n }\n\n const pkg = {\n name: `@pie-element/${name}`,\n version: '0.1.0',\n description: `Framework-agnostic ${name.replace('-controller', '')} controller synced from pie-elements`,\n type: 'module',\n main: './src/index.ts',\n types: './src/index.ts',\n exports: {\n '.': {\n types: './src/index.ts',\n default: './src/index.ts',\n },\n },\n files: ['src'],\n scripts: {\n build: \"echo 'Controllers are consumed as TypeScript source'\",\n lint: 'biome check .',\n 'lint:fix': 'biome check --write .',\n },\n dependencies: Object.keys(dependencies).length > 0 ? dependencies : undefined,\n keywords: ['pie', 'pie-element', 'controller', name.replace('-controller', ''), 'assessment'],\n license: 'ISC',\n repository: {\n type: 'git',\n url: 'https://github.com/pie-framework/pie-elements-ng.git',\n directory: `packages/shared/${name}`,\n },\n };\n\n // Remove undefined fields\n const cleaned = JSON.parse(JSON.stringify(pkg));\n\n return `${JSON.stringify(cleaned, null, 2)}\\n`;\n }\n}\n"]}
@@ -1,16 +0,0 @@
1
- import { Command } from '@oclif/core';
2
- export default class CreateLibReact extends Command {
3
- static description: string;
4
- static examples: string[];
5
- static flags: {
6
- 'dry-run': import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
- verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
- };
9
- private logger;
10
- run(): Promise<void>;
11
- private getUpstreamPackageJson;
12
- private convertDependencies;
13
- private createPackageJson;
14
- private createViteConfig;
15
- private createTsConfig;
16
- }