@santi020k/lumen 1.7.0-rc.0 → 1.7.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/README.md CHANGED
@@ -8,8 +8,9 @@ Install the framework package directly:
8
8
  - `@santi020k/lumen-react`
9
9
  - `@santi020k/lumen-elements`
10
10
 
11
- Each adapter includes the shared foundation and exposes its own stylesheet entry. Install this
12
- umbrella package only when you want the framework-neutral CLI or registry APIs:
11
+ Each adapter includes the shared foundation, exposes its own stylesheet entry, and makes the
12
+ `lumen` CLI available to the consuming project. Install this umbrella package directly when you
13
+ also want to import its framework-neutral registry or diagnostics APIs:
13
14
 
14
15
  ```bash
15
16
  pnpm add @santi020k/lumen
@@ -45,6 +46,7 @@ lumen audit-tokens ./src
45
46
  lumen doctor --json
46
47
  lumen doctor-native --json
47
48
  lumen init --framework astro --tailwind
49
+ lumen migrate v2 --dry-run
48
50
  ```
49
51
 
50
52
  Use `lumen add <component>` for a local Astro wrapper, `--target react` for a React wrapper, or
@@ -55,20 +57,29 @@ Complete product recipes are also bundled for `analytics-dashboard`, `saas-admin
55
57
  `commerce-dashboard`, `project-workspace`, `auth-onboarding`, `docs-shell`, `marketing-shell`,
56
58
  `dashboard-shell`, and `validated-form`.
57
59
 
58
- Run `lumen doctor` to check adapter/style agreement, Tailwind layer order, Astro runtime mounts,
59
- and fragile internal selector dependencies. In a workspace, diagnostics are scoped to the nearest
60
- package boundary, generated build trees are ignored, and application-controlled Astro `Toggle`
61
- instances do not require the shared runtime. It also suggests matching Lumen primitives for likely
62
- hand-built dropdown, theme, dialog-focus, and keyboard-menu behavior. These suggestions stay
63
- advisory because product-specific composition can be intentional. Use `--json` for CI and rollout
64
- automation. `lumen init --framework <astro|react|elements> [--tailwind]` prints the canonical
65
- non-destructive setup.
60
+ External registry manifests are treated as untrusted input. Inline recipe files must use unique,
61
+ relative forward-slash paths and cannot traverse outside the selected `--cwd` or write through a
62
+ symbolic-link path segment. `loadLumenRegistry` bounds local and remote manifests to 5 MiB by
63
+ default; programmatic consumers can set `maxBytes` and `timeoutMs` for tighter deployment limits.
64
+
65
+ Run `lumen doctor` to check adapter/style agreement, duplicate stylesheet entrypoints, Tailwind
66
+ layer order, Astro runtime mounts, and fragile internal selector dependencies. In a workspace,
67
+ diagnostics are scoped to the nearest package boundary, generated build trees are ignored, and
68
+ application-controlled Astro `Toggle` instances do not require the shared runtime. It also suggests
69
+ matching Lumen primitives for likely hand-built dropdown, theme, dialog-focus, and keyboard-menu
70
+ behavior. These suggestions stay advisory because product-specific composition can be intentional.
71
+ Use `--json` for CI and rollout automation. `lumen init --framework <astro|react|elements>
72
+ [--tailwind]` prints the canonical non-destructive setup.
66
73
 
67
74
  Run `lumen doctor-native` in an Apple or Android consumer to report the resolved Swift package
68
75
  tag/revision or Compose artifact version, compare it with Lumen's bundled cross-platform release
69
- manifest, and audit public theme placement. Findings are suggestions or warnings: the command does
70
- not classify application-owned navigation or controls as migration failures. Pass `--manifest`
71
- to audit against a prerelease manifest and `--json` for CI.
76
+ manifest, and audit public theme placement. It also groups likely direct SwiftUI and Compose
77
+ primitives that have public Lumen equivalents; these remain non-authoritative suggestions and do
78
+ not classify application-owned navigation or controls as failures. Android consumers receive a
79
+ read-only preflight for the documented JDK, SDK, platform packages, optional NDK requirement, and
80
+ compatible Gradle/AGP/Kotlin baseline before native compilation begins. Missing required toolchain
81
+ pieces are failures, optional evidence and migration candidates are warnings or suggestions. Pass
82
+ `--manifest` to audit against a prerelease manifest and `--json` for CI.
72
83
 
73
84
  The same machine-readable metadata is published as
74
85
  `@santi020k/lumen/release-manifest.json`. It records every npm package version and peer range, the
@@ -79,6 +90,33 @@ Run `lumen audit-tokens [path]` before incremental adoption when an existing sty
79
90
  declare names such as `--surface`, `--ink`, or `--line`. The audit reports complete CSS colors that
80
91
  are incompatible with Lumen's HSL-channel token format and exits non-zero when it finds conflicts.
81
92
 
93
+ ## Lumen v2 migration preview
94
+
95
+ Run `lumen migrate v2 [--cwd <path>]` to preview the candidate v2 source migrations. Previewing is
96
+ the safe default; `--dry-run` makes that intent explicit, and `--json` emits a machine-readable
97
+ report. The migrator currently:
98
+
99
+ - moves `UIPrimitives` from the `@santi020k/lumen-astro` root barrel to the default export from
100
+ `@santi020k/lumen-astro/runtime`, including mixed and aliased named imports;
101
+ - renames literal `sm`, `default`, and `lg` visual `size` aliases to `visualSize` on imported Astro
102
+ `Input` and `NativeSelect` components, and to `visual-size` on `lumen-input` and
103
+ `lumen-native-select` elements; and
104
+ - rewrites `Sonner` and `SonnerProps` imports to the precise `ToastViewport` contract while
105
+ preserving local aliases, and renames `lumen-sonner` to `lumen-toast-viewport` without changing
106
+ placement, stack limits, or children;
107
+ - moves React Native date-field imports to `@santi020k/lumen-react-native/datetime`, preserving
108
+ aliases and type-only imports; and
109
+ - preserves numeric native `size` values while reporting dynamic, conflicting, and otherwise
110
+ ambiguous values for manual review.
111
+
112
+ After reviewing the report and committing a recoverable baseline, write the deterministic changes:
113
+
114
+ ```bash
115
+ lumen migrate v2 --apply
116
+ ```
117
+
118
+ The transform is idempotent. Re-running it after a successful apply produces no further changes.
119
+
82
120
  ## Coordinated consumer rollout
83
121
 
84
122
  Inventory one or more pnpm consumers before a release:
package/dist/cli.js CHANGED
@@ -5,6 +5,7 @@ import { createLumenSetup, formatLumenDiagnostics, inspectLumenIntegration } fro
5
5
  import { formatNativeAdoptionAudit, inspectNativeAdoption } from './native-audit.js';
6
6
  import { addLumenRegistryItem, getLumenRegistryEntries, getLumenRegistryItem, loadLumenRegistry, lumenRegistry } from './registry.js';
7
7
  import { auditLumenTokenCss } from './token-audit.js';
8
+ import { formatLumenV2Migration, migrateLumenV2 } from './v2-migration.js';
8
9
  const args = process.argv.slice(2);
9
10
  const [command = 'help', name] = args;
10
11
  const dryRun = args.includes('--dry-run');
@@ -166,6 +167,7 @@ const help = [
166
167
  ' lumen doctor-native Inspect native versions, package pins, and theme placement',
167
168
  ' lumen init Print canonical framework setup without changing files',
168
169
  ' lumen rollout [version] [repositories...] Inventory or upgrade pnpm consumers',
170
+ ' lumen migrate v2 Preview or apply the candidate Lumen v2 source migrations',
169
171
  '',
170
172
  'Options:',
171
173
  ' --cwd <path> Target directory for lumen add',
@@ -180,7 +182,7 @@ const help = [
180
182
  ' --tailwind Include the verified Tailwind cascade setup in lumen init',
181
183
  ' --json Print lumen doctor output as JSON',
182
184
  ' --manifest <path> Use a specific cross-platform release manifest',
183
- ' --apply Apply a rollout (requires a target version)',
185
+ ' --apply Apply a rollout or v2 migration (migrations default to dry-run)',
184
186
  ' --allow-dirty Allow rollout after recording an uncommitted baseline',
185
187
  ' --exclude <path> Exclude a repository (repeatable)',
186
188
  ' --no-verify Skip downstream check, typecheck, build, and browser scripts',
@@ -213,6 +215,8 @@ const run = async () => {
213
215
  case 'doctor-native': {
214
216
  const report = await inspectNativeAdoption(cwd ?? process.cwd(), manifestPath);
215
217
  output = json ? JSON.stringify(report, undefined, 2) : formatNativeAdoptionAudit(report);
218
+ if (!report.healthy)
219
+ process.exitCode = 1;
216
220
  break;
217
221
  }
218
222
  case 'init': {
@@ -227,6 +231,18 @@ const run = async () => {
227
231
  output = formatList(registry);
228
232
  break;
229
233
  }
234
+ case 'migrate': {
235
+ if (name !== 'v2')
236
+ throw new Error('Missing or invalid migration. Use lumen migrate v2.');
237
+ if (applyRollout && dryRun)
238
+ throw new Error('Choose either --dry-run or --apply for lumen migrate v2.');
239
+ const report = await migrateLumenV2({
240
+ apply: applyRollout,
241
+ cwd: cwd ?? process.cwd()
242
+ });
243
+ output = json ? JSON.stringify(report, undefined, 2) : formatLumenV2Migration(report);
244
+ break;
245
+ }
230
246
  case 'rollout': {
231
247
  const rollout = getRolloutArguments();
232
248
  const report = await runConsumerRollout({
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export { type ConsumerInventory, type ConsumerReference, type ConsumerRolloutOptions, type ConsumerRolloutReport, formatConsumerRollout, inspectLumenConsumer, type LumenFramework, runConsumerRollout, updateLumenManifestSource, updateLumenWorkspaceSource } from './consumer-rollout.js';
2
2
  export { formatNativeAdoptionAudit, inspectNativeAdoption, type NativeAuditFinding, type NativeAuditPlatform, type NativeAuditReport, type NativeAuditSeverity, type NativeResolvedVersion } from './native-audit.js';
3
3
  export { addLumenRegistryItem, getLumenRegistryEntries, getLumenRegistryItem, loadLumenRegistry, type LumenAddOptions, type LumenAddResult, type LumenAddTarget, type LumenMergeConflict, type LumenRegistry, lumenRegistry, type LumenRegistryComponent, type LumenRegistryEntry, type LumenRegistryFile, type LumenRegistryItem, type LumenRegistryLoadOptions } from './registry.js';
4
- export { alignLumenChartSeries, applyDataViewState, canPlaceScheduleEvent, coerceThemeBuilderExportFormat, coerceThemeBuilderMode, coerceThemeBuilderScheme, composeClassName, createDataViewRequestUrl, createDataViewSearchParams, createDataViewServerRequest, createDataViewState, createDataViewStorageKey, createLumenBarGeometry, createLumenFormFailure, createLumenFormSuccess, createLumenLineGeometry, createLumenPieGeometry, createScheduleSlots, createScheduleStorageKey, createThemeBuilderTokens, createThemePalette, expandRecurringScheduleEvent, exportThemeBuilderCss, exportThemeBuilderValue, exportThemeCss, filterDataRecords, getContrastRatio, getLumenChartCategories, getLumenChartDomain, getLumenChartTicks, getLumenChartValueRatio, getLumenFieldErrors, getScheduleConflicts, getVirtualRange, hasLumenPieData, loadDataViewState, loadScheduleEvents, type LumenBarChartLayout, type LumenBarGeometry, type LumenBarGeometryCategory, type LumenBarGeometryMark, type LumenBarGeometryOptions, lumenChart, type LumenChartDatum, type LumenChartDomain, type LumenChartGeometryPoint, type LumenChartOrientation, type LumenChartSeries, type LumenChartTone, lumenChartTones, type LumenCodeToken, lumenCodeTokenClassNames, type LumenCodeTokenKind, lumenColors, type LumenColorScheme, type LumenColorTokenName, lumenColorTokenNames, lumenColorTokens, type LumenComponentName, lumenComponentNames, type LumenContrastScore, lumenCssColorTokens, lumenDarkColors, lumenDarkTheme, type LumenDataRecord, type LumenDataViewServerRequest, type LumenDataViewState, lumenDurations, lumenEasings, lumenElevation, type LumenFieldError, lumenFontFamilies, lumenFontSizes, lumenFontWeights, type LumenFormErrorInput, type LumenFormErrors, type LumenFormFailure, type LumenFormResult, type LumenFormStatus, lumenFormStatuses, type LumenFormSuccess, lumenGlass, type LumenGlassColorTokenName, lumenGlassColorTokenNames, type LumenGlassEffectTokenName, lumenGlassEffectTokenNames, type LumenGlassTokenName, lumenGlassTokenNames, type LumenKeyValueReader, type LumenKeyValueStorage, type LumenKeyValueWriter, lumenLightTheme, type LumenLineGeometry, type LumenLineGeometryOptions, lumenPackages, type LumenPackageTarget, type LumenPieChartVariant, type LumenPieGeometry, type LumenPieGeometryOptions, type LumenPieGeometrySlice, lumenRadii, type LumenScheduleConflict, type LumenScheduleEvent, type LumenScheduleKeyValueReader, type LumenScheduleKeyValueStorage, type LumenScheduleKeyValueWriter, type LumenScheduleResizeEdge, type LumenScheduleResizeOptions, type LumenScheduleResource, type LumenScheduleSlot, type LumenSemanticColor, type LumenSemanticColorTokenName, lumenSemanticColorTokenNames, type LumenSortDirection, lumenSpacing, lumenThemeAttribute, type LumenThemeBuilderExportFormat, type LumenThemeBuilderMode, type LumenThemeBuilderOptions, type LumenThemeBuilderResult, type LumenThemeBuilderScheme, type LumenThemeContrastSuggestion, type LumenThemeTokens, lumenTokenNames, mergeThemeTokens, moveScheduleEvent, normalizeLumenCode, normalizeLumenFormErrors, normalizeThemeBuilderHex, normalizeThemeBuilderHue, paginateDataRecords, parseDataViewState, parseScheduleEvents, parseThemeCss, pinDataViewColumn, renderLumenCodeHtml, resizeScheduleEvent, resizeScheduleEvents, resolveLumenChartTone, saveDataViewState, saveScheduleEvents, scaleLumenChartValue, scheduleEventsOverlap, scoreThemeContrast, serializeDataViewState, serializeScheduleEvents, sortDataRecords, suggestReadableInk, themeBuilderHexToHsl, toggleDataViewSelection, tokenizeLumenCode, tuneThemeContrast, unpinDataViewColumn } from '@santi020k/lumen-core';
4
+ export { alignLumenChartSeries, applyDataViewState, canPlaceScheduleEvent, coerceThemeBuilderExportFormat, coerceThemeBuilderMode, coerceThemeBuilderScheme, composeClassName, createDataViewRequestUrl, createDataViewSearchParams, createDataViewServerRequest, createDataViewState, createDataViewStorageKey, createLumenBarGeometry, createLumenFormFailure, createLumenFormSuccess, createLumenLineGeometry, createLumenPieGeometry, createScheduleSlots, createScheduleStorageKey, createThemeBuilderTokens, createThemePalette, expandRecurringScheduleEvent, exportThemeBuilderCss, exportThemeBuilderValue, exportThemeCss, filterDataRecords, getContrastRatio, getLumenChartCategories, getLumenChartDomain, getLumenChartTicks, getLumenChartValueRatio, getLumenFieldErrors, getScheduleConflicts, getVirtualRange, hasLumenPieData, loadDataViewState, loadScheduleEvents, type LumenBarChartLayout, type LumenBarGeometry, type LumenBarGeometryCategory, type LumenBarGeometryMark, type LumenBarGeometryOptions, lumenChart, type LumenChartDatum, type LumenChartDomain, type LumenChartGeometryPoint, type LumenChartOrientation, type LumenChartSeries, type LumenChartTone, lumenChartTones, type LumenCodeToken, lumenCodeTokenClassNames, type LumenCodeTokenKind, lumenColors, type LumenColorScheme, type LumenColorTokenName, lumenColorTokenNames, lumenColorTokens, type LumenComponentName, lumenComponentNames, type LumenContrastScore, lumenCssColorTokens, lumenDarkColors, lumenDarkTheme, type LumenDataRecord, type LumenDataViewServerRequest, type LumenDataViewState, lumenDurations, lumenEasings, lumenElevation, type LumenFieldError, lumenFontFamilies, lumenFontSizes, lumenFontWeights, type LumenFormErrorInput, type LumenFormErrors, type LumenFormFailure, type LumenFormResult, type LumenFormStatus, lumenFormStatuses, type LumenFormSuccess, lumenGlass, type LumenGlassColorTokenName, lumenGlassColorTokenNames, type LumenGlassEffectTokenName, lumenGlassEffectTokenNames, type LumenGlassTokenName, lumenGlassTokenNames, type LumenKeyValueReader, type LumenKeyValueStorage, type LumenKeyValueWriter, lumenLightTheme, type LumenLineGeometry, type LumenLineGeometryOptions, lumenPackages, type LumenPackageTarget, type LumenPieChartVariant, type LumenPieGeometry, type LumenPieGeometryOptions, type LumenPieGeometrySlice, lumenRadii, type LumenScheduleConflict, type LumenScheduleEvent, type LumenScheduleKeyValueReader, type LumenScheduleKeyValueStorage, type LumenScheduleKeyValueWriter, type LumenScheduleResizeEdge, type LumenScheduleResizeOptions, type LumenScheduleResource, type LumenScheduleSlot, type LumenSemanticColor, type LumenSemanticColorTokenName, lumenSemanticColorTokenNames, type LumenSortDirection, lumenSpacing, type LumenTabsChangeDetail, type LumenTabsChangeEvent, lumenThemeAttribute, type LumenThemeBuilderExportFormat, type LumenThemeBuilderMode, type LumenThemeBuilderOptions, type LumenThemeBuilderResult, type LumenThemeBuilderScheme, type LumenThemeContrastSuggestion, type LumenThemeTokens, lumenTokenNames, mergeThemeTokens, moveScheduleEvent, normalizeLumenCode, normalizeLumenFormErrors, normalizeThemeBuilderHex, normalizeThemeBuilderHue, paginateDataRecords, parseDataViewState, parseScheduleEvents, parseThemeCss, pinDataViewColumn, renderLumenCodeHtml, resizeScheduleEvent, resizeScheduleEvents, resolveLumenChartTone, saveDataViewState, saveScheduleEvents, scaleLumenChartValue, scheduleEventsOverlap, scoreThemeContrast, serializeDataViewState, serializeScheduleEvents, sortDataRecords, suggestReadableInk, themeBuilderHexToHsl, toggleDataViewSelection, tokenizeLumenCode, tuneThemeContrast, unpinDataViewColumn } from '@santi020k/lumen-core';
5
5
  export declare const lumen: {
6
6
  readonly name: "Lumen";
7
7
  readonly packageName: "@santi020k/lumen";
@@ -9,4 +9,5 @@ export declare const lumen: {
9
9
  };
10
10
  export { createLumenSetup, formatLumenDiagnostics, inspectLumenIntegration, type LumenDiagnosticFinding, type LumenDiagnosticReport, type LumenDiagnosticSeverity } from './integration-diagnostics.js';
11
11
  export { auditLumenTokenCss, type LumenTokenAuditFinding } from './token-audit.js';
12
+ export { formatLumenV2Migration, type LumenV2MigrationFinding, type LumenV2MigrationKind, type LumenV2MigrationOptions, type LumenV2MigrationReport, type LumenV2SourceMigration, migrateLumenV2, migrateLumenV2Source } from './v2-migration.js';
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -9,3 +9,4 @@ export const lumen = {
9
9
  };
10
10
  export { createLumenSetup, formatLumenDiagnostics, inspectLumenIntegration } from './integration-diagnostics.js';
11
11
  export { auditLumenTokenCss } from './token-audit.js';
12
+ export { formatLumenV2Migration, migrateLumenV2, migrateLumenV2Source } from './v2-migration.js';
@@ -1 +1 @@
1
- {"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,kBAAkB,EAExB,MAAM,eAAe,CAAA;AAOtB,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,WAAW,GAAG,MAAM,CAAA;IACnD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,MAAM,CAAA;IAChD,QAAQ,CAAC,EAAE,aAAa,CAAA;IACxB,MAAM,CAAC,EAAE,cAAc,CAAA;CACxB;AAED,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,CAAA;AAE3D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,MAAM,EAAE,OAAO,CAAA;IACf,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,IAAI,EAAE,kBAAkB,CAAA;IACxB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAuND,eAAO,MAAM,oBAAoB,GAAU,MAAM,MAAM,EAAE,UAAS,eAAoB,KAAG,OAAO,CAAC,cAAc,CA2C9G,CAAA"}
1
+ {"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,kBAAkB,EAExB,MAAM,eAAe,CAAA;AAQtB,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,WAAW,GAAG,MAAM,CAAA;IACnD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,MAAM,CAAA;IAChD,QAAQ,CAAC,EAAE,aAAa,CAAA;IACxB,MAAM,CAAC,EAAE,cAAc,CAAA;CACxB;AAED,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,CAAA;AAE3D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,MAAM,EAAE,OAAO,CAAA;IACf,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,IAAI,EAAE,kBAAkB,CAAA;IACxB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AA8PD,eAAO,MAAM,oBAAoB,GAAU,MAAM,MAAM,EAAE,UAAS,eAAoB,KAAG,OAAO,CAAC,cAAc,CA6C9G,CAAA"}
package/dist/installer.js CHANGED
@@ -1,7 +1,8 @@
1
- import { access, mkdir, readdir, readFile, writeFile } from 'node:fs/promises';
2
- import { dirname, join, relative, sep } from 'node:path';
1
+ import { access, lstat, mkdir, readdir, readFile, writeFile } from 'node:fs/promises';
2
+ import { dirname, join, relative, resolve, sep } from 'node:path';
3
3
  import { fileURLToPath } from 'node:url';
4
4
  import { getLumenRegistryItem } from './registry.js';
5
+ import { assertSafeRegistryFilePath } from './registry-path.js';
5
6
  const templatesRoot = fileURLToPath(new URL('../templates/', import.meta.url));
6
7
  const productTemplateRecipes = new Set([
7
8
  'analytics-dashboard',
@@ -149,6 +150,34 @@ const writeInstallFile = async (target, source, dryRun) => {
149
150
  await mkdir(dirname(target), { recursive: true });
150
151
  await writeFile(target, source, 'utf8');
151
152
  };
153
+ const assertNoSymlinkSegments = async (cwd, path) => {
154
+ let current = resolve(cwd);
155
+ for (const segment of path.split('/')) {
156
+ current = join(current, segment);
157
+ try {
158
+ const details = await lstat(current);
159
+ if (details.isSymbolicLink()) {
160
+ throw new Error(`Refusing to write through a symbolic link: ${path}`);
161
+ }
162
+ }
163
+ catch (error) {
164
+ if (error instanceof Error && 'code' in error && error.code === 'ENOENT')
165
+ return;
166
+ throw error;
167
+ }
168
+ }
169
+ };
170
+ const validateInstallFiles = async (files, cwd) => {
171
+ const paths = new Set();
172
+ for (const file of files) {
173
+ assertSafeRegistryFilePath(file.path);
174
+ if (paths.has(file.path)) {
175
+ throw new Error(`Duplicate Lumen registry file path: ${file.path}`);
176
+ }
177
+ paths.add(file.path);
178
+ await assertNoSymlinkSegments(cwd, file.path);
179
+ }
180
+ };
152
181
  const installRegistryFile = async (file, cwd, options, conflict) => {
153
182
  const target = join(cwd, file.path);
154
183
  const exists = await fileExists(target);
@@ -171,6 +200,7 @@ export const addLumenRegistryItem = async (name, options = {}) => {
171
200
  if (!files.length) {
172
201
  throw new Error(`Registry item cannot be installed yet: ${name}`);
173
202
  }
203
+ await validateInstallFiles(files, cwd);
174
204
  const added = [];
175
205
  const conflict = getConflictMode(options);
176
206
  const merged = [];
@@ -1 +1 @@
1
- {"version":3,"file":"integration-diagnostics.d.ts","sourceRoot":"","sources":["../src/integration-diagnostics.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,uBAAuB,GAAG,UAAU,GAAG,OAAO,CAAA;AAE1D,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,uBAAuB,CAAA;CAClC;AAED,MAAM,WAAW,qBAAqB;IACpC,kBAAkB,EAAE,MAAM,CAAA;IAC1B,QAAQ,EAAE,sBAAsB,EAAE,CAAA;IAClC,UAAU,EAAE,CAAC,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC,EAAE,CAAA;IAC9C,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,iBAAiB,EAAE,MAAM,EAAE,CAAA;CAC5B;AA+dD,eAAO,MAAM,uBAAuB,GAAU,YAAY,MAAM,KAAG,OAAO,CAAC,qBAAqB,CA8C/F,CAAA;AAED,eAAO,MAAM,sBAAsB,GAAI,QAAQ,qBAAqB,KAAG,MAWtE,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,WAAW,OAAO,GAAG,UAAU,GAAG,OAAO,EAAE,kBAAgB,KAAG,MAsC9F,CAAA"}
1
+ {"version":3,"file":"integration-diagnostics.d.ts","sourceRoot":"","sources":["../src/integration-diagnostics.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,uBAAuB,GAAG,UAAU,GAAG,OAAO,CAAA;AAE1D,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,uBAAuB,CAAA;CAClC;AAED,MAAM,WAAW,qBAAqB;IACpC,kBAAkB,EAAE,MAAM,CAAA;IAC1B,QAAQ,EAAE,sBAAsB,EAAE,CAAA;IAClC,UAAU,EAAE,CAAC,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC,EAAE,CAAA;IAC9C,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,iBAAiB,EAAE,MAAM,EAAE,CAAA;CAC5B;AA8eD,eAAO,MAAM,uBAAuB,GAAU,YAAY,MAAM,KAAG,OAAO,CAAC,qBAAqB,CA8C/F,CAAA;AAED,eAAO,MAAM,sBAAsB,GAAI,QAAQ,qBAAqB,KAAG,MAWtE,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,WAAW,OAAO,GAAG,UAAU,GAAG,OAAO,EAAE,kBAAgB,KAAG,MAsC9F,CAAA"}
@@ -272,9 +272,15 @@ const collectFrameworkStyleFindings = (repositoryRoot, boundary, frameworks) =>
272
272
  if (references.length === 0) {
273
273
  return [finding(relative(repositoryRoot, boundary.root) || '.', 'framework-style-missing', `No ${styleImport} import was found in this application boundary.`, 'Load the matching adapter stylesheet once in the application root.')];
274
274
  }
275
- return references.flatMap(item => countOccurrences(item.source, styleImport) > 1 ?
275
+ const repeatedInFile = references.flatMap(item => countOccurrences(item.source, styleImport) > 1 ?
276
276
  [finding(relative(repositoryRoot, item.file), 'framework-style-duplicate', `The ${framework} stylesheet is loaded more than once in this file.`, 'Keep one stylesheet import in the application root.')] :
277
277
  []);
278
+ const orderedReferences = [...references].sort((left, right) => {
279
+ const layoutDifference = Number(layoutFilePattern.test(right.file)) - Number(layoutFilePattern.test(left.file));
280
+ return layoutDifference || left.file.localeCompare(right.file);
281
+ });
282
+ const repeatedAcrossBoundary = orderedReferences.slice(1).map(item => finding(relative(repositoryRoot, item.file), 'framework-style-duplicate', `The ${framework} stylesheet is loaded from multiple files in this application boundary.`, 'Keep one stylesheet import in the application root.'));
283
+ return [...repeatedInFile, ...repeatedAcrossBoundary];
278
284
  });
279
285
  const collectAdapterMismatchFindings = (repositoryRoot, boundary, frameworks) => {
280
286
  const adapters = Object.entries(styleImportByFramework)
@@ -356,7 +362,7 @@ export const createLumenSetup = (framework, tailwind = false) => {
356
362
  };
357
363
  const styles = tailwind ? setupByFramework[framework].tailwind : setupByFramework[framework].styles;
358
364
  if (framework === 'astro') {
359
- return `${styles}\n\n---\nimport { UIPrimitives } from '@santi020k/lumen-astro'\n---\n\n<UIPrimitives />`;
365
+ return `${styles}\n\n---\nimport UIPrimitives from '@santi020k/lumen-astro/runtime'\n---\n\n<UIPrimitives />`;
360
366
  }
361
367
  if (framework === 'elements') {
362
368
  return `${styles}\n\n` +
@@ -1,5 +1,6 @@
1
1
  export type NativeAuditPlatform = 'compose' | 'swift';
2
- export type NativeAuditSeverity = 'suggestion' | 'warning';
2
+ export type NativeAuditSeverity = 'failure' | 'suggestion' | 'warning';
3
+ type NativePreflightStatus = 'failure' | 'pass' | 'skipped' | 'warning';
3
4
  export interface NativeAuditFinding {
4
5
  file: string;
5
6
  message: string;
@@ -14,13 +15,53 @@ export interface NativeResolvedVersion {
14
15
  version?: string;
15
16
  }
16
17
  export interface NativeAuditReport {
18
+ adoptionInventory: NativeAdoptionInventory;
19
+ androidPreflight: AndroidPreflightReport | null;
17
20
  findings: NativeAuditFinding[];
18
21
  generatedAt: string;
22
+ healthy: boolean;
19
23
  platforms: NativeAuditPlatform[];
20
24
  releaseVersion: string;
21
25
  repository: string;
22
26
  resolved: NativeResolvedVersion[];
23
27
  }
24
- export declare const inspectNativeAdoption: (repository: string, manifestPath?: string) => Promise<NativeAuditReport>;
28
+ interface NativeAdoptionSuggestion {
29
+ family: string;
30
+ file: string;
31
+ line: number;
32
+ lumenComponent: string;
33
+ nativePrimitive: string;
34
+ platform: NativeAuditPlatform;
35
+ }
36
+ interface NativeAdoptionInventory {
37
+ families: {
38
+ count: number;
39
+ family: string;
40
+ }[];
41
+ suggestions: NativeAdoptionSuggestion[];
42
+ }
43
+ interface NativePreflightCheck {
44
+ detail: string;
45
+ id: string;
46
+ remediation?: string;
47
+ status: NativePreflightStatus;
48
+ }
49
+ interface AndroidPreflightReport {
50
+ checks: NativePreflightCheck[];
51
+ healthy: boolean;
52
+ sdkRoot?: string;
53
+ toolchain: ComposeToolchain;
54
+ }
55
+ interface ComposeToolchain {
56
+ androidGradlePlugin: string;
57
+ compileSdk: number;
58
+ gradle: string;
59
+ instrumentationApi: number;
60
+ jdk: number;
61
+ kotlin: string;
62
+ minSdk: number;
63
+ }
64
+ export declare const inspectNativeAdoption: (repository: string, manifestPath?: string, registryPath?: string, environment?: NodeJS.ProcessEnv) => Promise<NativeAuditReport>;
25
65
  export declare const formatNativeAdoptionAudit: (report: NativeAuditReport) => string;
66
+ export {};
26
67
  //# sourceMappingURL=native-audit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"native-audit.d.ts","sourceRoot":"","sources":["../src/native-audit.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAA;AACrD,MAAM,MAAM,mBAAmB,GAAG,YAAY,GAAG,SAAS,CAAA;AAE1D,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,mBAAmB,CAAA;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,kBAAkB,EAAE,CAAA;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,mBAAmB,EAAE,CAAA;IAChC,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,qBAAqB,EAAE,CAAA;CAClC;AAiOD,eAAO,MAAM,qBAAqB,GAChC,YAAY,MAAM,EAClB,qBAAkF,KACjF,OAAO,CAAC,iBAAiB,CA+B3B,CAAA;AAED,eAAO,MAAM,yBAAyB,GAAI,QAAQ,iBAAiB,KAAG,MAgBrE,CAAA"}
1
+ {"version":3,"file":"native-audit.d.ts","sourceRoot":"","sources":["../src/native-audit.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAA;AACrD,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,CAAA;AAEtE,KAAK,qBAAqB,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAA;AAEvE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,mBAAmB,CAAA;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,EAAE,uBAAuB,CAAA;IAC1C,gBAAgB,EAAE,sBAAsB,GAAG,IAAI,CAAA;IAC/C,QAAQ,EAAE,kBAAkB,EAAE,CAAA;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,mBAAmB,EAAE,CAAA;IAChC,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,qBAAqB,EAAE,CAAA;CAClC;AAED,UAAU,wBAAwB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,QAAQ,EAAE,mBAAmB,CAAA;CAC9B;AAED,UAAU,uBAAuB;IAC/B,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC7C,WAAW,EAAE,wBAAwB,EAAE,CAAA;CACxC;AAED,UAAU,oBAAoB;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,qBAAqB,CAAA;CAC9B;AAED,UAAU,sBAAsB;IAC9B,MAAM,EAAE,oBAAoB,EAAE,CAAA;IAC9B,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,gBAAgB,CAAA;CAC5B;AAWD,UAAU,gBAAgB;IACxB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,kBAAkB,EAAE,MAAM,CAAA;IAC1B,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAsiBD,eAAO,MAAM,qBAAqB,GAChC,YAAY,MAAM,EAClB,qBAAkF,EAClF,qBAAmF,EACnF,cAAa,MAAM,CAAC,UAAwB,KAC3C,OAAO,CAAC,iBAAiB,CA8C3B,CAAA;AAED,eAAO,MAAM,yBAAyB,GAAI,QAAQ,iBAAiB,KAAG,MAiCrE,CAAA"}