@absolutejs/absolute 0.20.0-beta.77 → 0.20.0-beta.79
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/angular/components/core/streamingSlotRegistrar.js +1 -1
- package/dist/angular/components/core/streamingSlotRegistry.js +2 -2
- package/dist/build.js +41 -27
- package/dist/build.js.map +5 -5
- package/dist/cli/{buildDepVendor-521faxfs.js → buildDepVendor-rz5w5cp0.js} +18 -9
- package/dist/cli/{compile-1gkn94ek.js → compile-ee32zv39.js} +3 -3
- package/dist/cli/{dev-p8403w4q.js → dev-b1m7jp2t.js} +8 -8
- package/dist/cli/{expoDevController-787dw9bz.js → expoDevController-bdm4cq6m.js} +12 -6
- package/dist/cli/{expoProject-7mdpssp7.js → expoProject-c6tpj156.js} +2 -2
- package/dist/cli/{index-sghxp2cp.js → index-7q7wjgkq.js} +1 -1
- package/dist/cli/{index-jqc26p92.js → index-ar4gz15x.js} +3 -3
- package/dist/cli/{index-1twzwcga.js → index-eyx1hnm6.js} +23 -10
- package/dist/cli/{index-v0mxg0na.js → index-wt6kdy5f.js} +2 -2
- package/dist/cli/index.js +11 -6
- package/dist/cli/migrate-p4rp5r6b.js +521 -0
- package/dist/cli/{mobile-nymyq2t8.js → mobile-hyxr0n58.js} +4 -4
- package/dist/cli/{nativeAuth-kq81zgy3.js → nativeAuth-zx4tsb1f.js} +1 -1
- package/dist/cli/{start-yrhe9s4e.js → start-ty8jjzn8.js} +4 -4
- package/dist/cli/{workspace-weacygfv.js → workspace-h7czpaqh.js} +29 -2
- package/dist/index.js +41 -27
- package/dist/index.js.map +5 -5
- package/dist/mobile/index.js +49 -22
- package/dist/mobile/index.js.map +6 -6
- package/dist/mobile/remoteMacAgentEntry.js +62 -49
- package/dist/src/build/buildDepVendor.d.ts +1 -0
- package/dist/src/cli/scripts/migrate.d.ts +2 -0
- package/dist/src/cli/scripts/workspace.d.ts +14 -0
- package/dist/src/dev/moduleServer.d.ts +4 -0
- package/dist/src/migrate/detect.d.ts +25 -0
- package/dist/src/migrate/scan.d.ts +14 -0
- package/dist/src/migrate/substitutions.d.ts +37 -0
- package/dist/src/migrate/types.d.ts +40 -0
- package/dist/src/mobile/androidUpgradeConformance.d.ts +2 -0
- package/dist/src/mobile/nativeAuth.d.ts +3 -3
- package/package.json +3 -2
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
export declare const collectTransitiveImports: (specs: Iterable<string>, alreadyVendored: Set<string>, alreadyScanned: Set<string>) => Promise<Set<string>>;
|
|
1
2
|
export declare const buildDepVendor: (buildDir: string, directories: string[], files?: string[]) => Promise<Record<string, string>>;
|
|
2
3
|
export declare const computeDepVendorPaths: (directories: string[], files?: string[]) => Promise<Record<string, string>>;
|
|
@@ -8,5 +8,19 @@ export declare const findSharedWorkspaceBuildDirectories: (services: WorkspaceCo
|
|
|
8
8
|
buildDirectory: string;
|
|
9
9
|
names: string[];
|
|
10
10
|
}[];
|
|
11
|
+
/** Start every service, and tear down whatever already started if any of them
|
|
12
|
+
* never becomes ready.
|
|
13
|
+
*
|
|
14
|
+
* Without this a readiness timeout rejects out of the whole command while the
|
|
15
|
+
* children it already spawned keep running. The result is worse than a clean
|
|
16
|
+
* failure: an orphaned server still holding the port, with no supervisor and
|
|
17
|
+
* no hot reload, which looks like a working server right up until an edit
|
|
18
|
+
* never lands or a click hits a stale bundle. Failing to start must leave
|
|
19
|
+
* nothing behind. */
|
|
20
|
+
export declare const startWorkspaceOrShutDown: ({ onFailure, shutdown, start }: {
|
|
21
|
+
onFailure: (message: string) => void;
|
|
22
|
+
shutdown: (exitCode: number) => Promise<void> | void;
|
|
23
|
+
start: () => Promise<void>;
|
|
24
|
+
}) => Promise<boolean>;
|
|
11
25
|
export declare const workspace: (subcommand: string | undefined, options: WorkspaceDevOptions) => Promise<void>;
|
|
12
26
|
export {};
|
|
@@ -11,6 +11,10 @@ type ModuleServerConfig = {
|
|
|
11
11
|
};
|
|
12
12
|
stylePreprocessors?: StylePreprocessorConfig;
|
|
13
13
|
};
|
|
14
|
+
/** The named bindings of an import clause, so a stub can export exactly what
|
|
15
|
+
* the importer expects. Aliases keep the source name (`{ a as b }` needs `a`
|
|
16
|
+
* exported); a namespace or default import needs nothing extra. */
|
|
17
|
+
export declare const importedBindingNames: (clause: string) => string[];
|
|
14
18
|
export declare const isReactFastRefreshSupported: () => boolean;
|
|
15
19
|
export declare const warnIfReactFastRefreshUnsupported: () => void;
|
|
16
20
|
export declare const warmCompilers: (frameworks: {
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { StackDetection } from './types';
|
|
2
|
+
/** Below this, a caller should ask rather than assume. A single weak signal
|
|
3
|
+
* — say a `vite` devDependency in an otherwise unrecognisable repo — is a
|
|
4
|
+
* hint, not a verdict. */
|
|
5
|
+
export declare const CONFIDENT = 0.7;
|
|
6
|
+
type Manifest = {
|
|
7
|
+
dependencies?: Record<string, string>;
|
|
8
|
+
devDependencies?: Record<string, string>;
|
|
9
|
+
peerDependencies?: Record<string, string>;
|
|
10
|
+
scripts?: Record<string, string>;
|
|
11
|
+
};
|
|
12
|
+
export type DetectionInput = {
|
|
13
|
+
/** Parsed package.json, or null when the repo has none. */
|
|
14
|
+
manifest: Manifest | null;
|
|
15
|
+
/** Repo-relative paths of files at or near the root. Directory entries
|
|
16
|
+
* may be included; only names are ever compared. */
|
|
17
|
+
files: readonly string[];
|
|
18
|
+
};
|
|
19
|
+
/** Identify the framework a project is built on.
|
|
20
|
+
*
|
|
21
|
+
* Returns `unknown` with zero confidence rather than guessing when nothing
|
|
22
|
+
* matches — a wrong stack sends a migration down a path that cannot work,
|
|
23
|
+
* which is worse than admitting ignorance and asking. */
|
|
24
|
+
export declare const detectStack: ({ manifest, files }: DetectionInput) => StackDetection;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type CatalogEntryLike, type SubstitutionRule } from './substitutions';
|
|
2
|
+
import type { MigrationPlan } from './types';
|
|
3
|
+
/** Repo-relative paths, skipping build output and vendored code. */
|
|
4
|
+
export declare const listProjectFiles: (root: string, limit?: number) => string[];
|
|
5
|
+
/** Which files import each of `packages`. A plain substring test over the
|
|
6
|
+
* quoted specifier: an import map does not need a parser, and being wrong
|
|
7
|
+
* here costs a slightly long list, not a bad edit. */
|
|
8
|
+
export declare const findImporters: (root: string, files: readonly string[], packages: readonly string[]) => Record<string, string[]>;
|
|
9
|
+
export type ScanOptions = {
|
|
10
|
+
catalog?: readonly CatalogEntryLike[];
|
|
11
|
+
rules?: readonly SubstitutionRule[];
|
|
12
|
+
};
|
|
13
|
+
/** Read a project and produce the plan. Does not modify anything. */
|
|
14
|
+
export declare const scanProject: (root: string, { catalog, rules }?: ScanOptions) => MigrationPlan;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export type SubstitutionRule = {
|
|
2
|
+
/** The third-party dependency, as it appears in package.json. */
|
|
3
|
+
from: string;
|
|
4
|
+
/** The first-party package that covers it. */
|
|
5
|
+
to: string;
|
|
6
|
+
/** One line a reader can judge without opening documentation. */
|
|
7
|
+
rationale: string;
|
|
8
|
+
};
|
|
9
|
+
/** Minimum a caller must tell us about the catalog. Deliberately structural
|
|
10
|
+
* rather than an import of Studio's generated type: the CLI ships a
|
|
11
|
+
* snapshot, Studio passes its live catalog, and neither should have to
|
|
12
|
+
* match the other's exact shape. */
|
|
13
|
+
export type CatalogEntryLike = {
|
|
14
|
+
name: string;
|
|
15
|
+
};
|
|
16
|
+
export declare const DEFAULT_SUBSTITUTION_RULES: readonly SubstitutionRule[];
|
|
17
|
+
export type SubstitutionInput = {
|
|
18
|
+
/** Dependency names declared by the project, any section. */
|
|
19
|
+
dependencies: readonly string[];
|
|
20
|
+
/** Repo-relative files importing each dependency. A dependency absent
|
|
21
|
+
* from this map is reported with an empty `usedIn` — declared but never
|
|
22
|
+
* imported is still worth knowing, for a different reason. */
|
|
23
|
+
importsByPackage?: Readonly<Record<string, readonly string[]>>;
|
|
24
|
+
/** The packages that actually exist. Suggestions are filtered to these. */
|
|
25
|
+
catalog: readonly CatalogEntryLike[];
|
|
26
|
+
rules?: readonly SubstitutionRule[];
|
|
27
|
+
};
|
|
28
|
+
/** Find dependencies that have a first-party equivalent.
|
|
29
|
+
*
|
|
30
|
+
* Ordered by how much evidence there is that the dependency is really in
|
|
31
|
+
* use, so a caller rendering the top few shows the ones that matter. */
|
|
32
|
+
export declare const planSubstitutions: ({ dependencies, importsByPackage, catalog, rules }: SubstitutionInput) => {
|
|
33
|
+
from: string;
|
|
34
|
+
rationale: string;
|
|
35
|
+
to: string;
|
|
36
|
+
usedIn: string[];
|
|
37
|
+
}[];
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/** Frameworks the detector can recognise in a project it did not create. */
|
|
2
|
+
export type StackKind = 'absolutejs' | 'astro' | 'create-react-app' | 'nextjs' | 'nuxt' | 'remix' | 'sveltekit' | 'unknown' | 'vite';
|
|
3
|
+
/** Why the detector reached its conclusion, so a human (or a model) can
|
|
4
|
+
* disagree with it on evidence rather than on trust. */
|
|
5
|
+
export type StackEvidence = {
|
|
6
|
+
/** Repo-relative path the signal came from. */
|
|
7
|
+
source: string;
|
|
8
|
+
/** What was found there, in one line. */
|
|
9
|
+
detail: string;
|
|
10
|
+
};
|
|
11
|
+
export type StackDetection = {
|
|
12
|
+
kind: StackKind;
|
|
13
|
+
/** 0-1. Below `CONFIDENT` the caller should ask rather than assume. */
|
|
14
|
+
confidence: number;
|
|
15
|
+
evidence: StackEvidence[];
|
|
16
|
+
/** Every stack that matched at all, strongest first — a Next.js app that
|
|
17
|
+
* also uses Vite should not silently lose the second fact. */
|
|
18
|
+
alternates: StackKind[];
|
|
19
|
+
};
|
|
20
|
+
/** A dependency that has a first-party equivalent. Suggestion only: the
|
|
21
|
+
* engine never rewrites imports on its own, because silently swapping
|
|
22
|
+
* somebody's auth library is not a refactor, it is a surprise. */
|
|
23
|
+
export type PackageSubstitution = {
|
|
24
|
+
/** The dependency currently in package.json. */
|
|
25
|
+
from: string;
|
|
26
|
+
/** The `@absolutejs/*` package that covers it. */
|
|
27
|
+
to: string;
|
|
28
|
+
/** Where `from` is required, repo-relative. Empty when it is declared but
|
|
29
|
+
* never imported — still worth reporting, for a different reason. */
|
|
30
|
+
usedIn: string[];
|
|
31
|
+
/** One line a human can judge without opening docs. */
|
|
32
|
+
rationale: string;
|
|
33
|
+
};
|
|
34
|
+
/** How a caller wants edits applied. Mirrors the shape people already know
|
|
35
|
+
* from an editor agent: propose and wait, or apply and let them review. */
|
|
36
|
+
export type ApplyMode = 'apply' | 'propose';
|
|
37
|
+
export type MigrationPlan = {
|
|
38
|
+
detection: StackDetection;
|
|
39
|
+
substitutions: PackageSubstitution[];
|
|
40
|
+
};
|
|
@@ -44,4 +44,6 @@ export type RunAbsoluteAndroidUpgradeConformanceOptions = {
|
|
|
44
44
|
};
|
|
45
45
|
export declare const inspectAbsoluteAndroidInstalledApp: (adb: string, serial: string, appId: string, run?: (command: string[]) => Promise<AbsoluteAndroidUpgradeCommandResult>) => Promise<AbsoluteAndroidInstalledApp>;
|
|
46
46
|
export declare const parseAbsoluteAndroidInstalledApp: (appId: string, output: string) => AbsoluteAndroidInstalledApp | null;
|
|
47
|
+
/** Prove that two package inspections describe one app upgraded in place. */
|
|
48
|
+
export declare const assertAbsoluteAndroidInstalledAppUpgrade: (before: AbsoluteAndroidInstalledApp, after: AbsoluteAndroidInstalledApp) => void;
|
|
47
49
|
export declare const runAbsoluteAndroidUpgradeConformance: (options: RunAbsoluteAndroidUpgradeConformanceOptions) => Promise<AbsoluteAndroidUpgradeConformanceResult>;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { NormalizedAbsoluteMobileConfig } from './config';
|
|
2
2
|
export declare const ABSOLUTE_AUTH_PACKAGE: "@absolutejs/auth";
|
|
3
|
-
export declare const ABSOLUTE_EXPO_AUTH_CORE_VERSION: "0.
|
|
3
|
+
export declare const ABSOLUTE_EXPO_AUTH_CORE_VERSION: "0.76.3";
|
|
4
4
|
export declare const ABSOLUTE_EXPO_AUTH_PACKAGE: "@absolutejs/auth-expo";
|
|
5
|
-
export declare const ABSOLUTE_EXPO_AUTH_VERSION: "0.0.
|
|
5
|
+
export declare const ABSOLUTE_EXPO_AUTH_VERSION: "0.0.6";
|
|
6
6
|
export declare const ABSOLUTE_EXPO_SYNC_CORE_VERSION: "2.31.0";
|
|
7
7
|
export declare const ABSOLUTE_EXPO_SYNC_PACKAGE: "@absolutejs/sync-expo";
|
|
8
|
-
export declare const ABSOLUTE_EXPO_SYNC_VERSION: "0.0.
|
|
8
|
+
export declare const ABSOLUTE_EXPO_SYNC_VERSION: "0.0.4";
|
|
9
9
|
export declare const ABSOLUTE_NATIVE_AUTH_CLIENTS_ENV: "ABSOLUTE_AUTH_NATIVE_CLIENTS";
|
|
10
10
|
export declare const ABSOLUTE_NATIVE_AUTH_SCOPES: readonly ["openid", "profile"];
|
|
11
11
|
export declare const ABSOLUTE_SYNC_PACKAGE: "@absolutejs/sync";
|
package/package.json
CHANGED
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"@absolutejs/scoped-state": "0.2.2",
|
|
37
37
|
"@absolutejs/sync": "2.31.0",
|
|
38
38
|
"@absolutejs/sync-capacitor": "0.9.2",
|
|
39
|
-
"@absolutejs/sync-expo": "0.0.
|
|
39
|
+
"@absolutejs/sync-expo": "0.0.4",
|
|
40
40
|
"@angular/animations": "21.2.6",
|
|
41
41
|
"@angular/cdk": "21.2.6",
|
|
42
42
|
"@angular/common": "21.2.6",
|
|
@@ -462,6 +462,7 @@
|
|
|
462
462
|
"test:native:android:updates": "ABSOLUTE_TEST_NATIVE_ANDROID=1 bun test tests/native/android-embedded-bundle-conformance.test.ts -t 'signed web updates'",
|
|
463
463
|
"test:native:android:upgrade": "ABSOLUTE_TEST_NATIVE_ANDROID=1 bun test tests/native/android-embedded-bundle-conformance.test.ts -t 'installed APK upgrade'",
|
|
464
464
|
"test:native:expo:android:observability": "ABSOLUTE_TEST_NATIVE_EXPO_ANDROID=1 bun test tests/native/expo-android-observability-conformance.test.ts",
|
|
465
|
+
"test:native:expo:android:upgrade": "ABSOLUTE_TEST_NATIVE_EXPO_ANDROID_UPGRADE=1 bun test tests/native/expo-android-upgrade-conformance.test.ts",
|
|
465
466
|
"test:native:ios": "bun run test:native:ios:lifecycle && bun run test:native:ios:bundle",
|
|
466
467
|
"test:native:ios:bundle": "ABSOLUTE_TEST_NATIVE_IOS=1 bun test tests/native/ios-embedded-bundle-conformance.test.ts",
|
|
467
468
|
"test:native:ios:lifecycle": "ABSOLUTE_TEST_NATIVE_IOS=1 bun test tests/native/ios-lifecycle-conformance.test.ts",
|
|
@@ -515,7 +516,7 @@
|
|
|
515
516
|
]
|
|
516
517
|
}
|
|
517
518
|
},
|
|
518
|
-
"version": "0.20.0-beta.
|
|
519
|
+
"version": "0.20.0-beta.79",
|
|
519
520
|
"workspaces": [
|
|
520
521
|
"tests/fixtures/*",
|
|
521
522
|
"tests/fixtures/_packages/*"
|