@absolutejs/absolute 0.20.0-beta.107 → 0.20.0-beta.109

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.
@@ -1,35 +1,10 @@
1
- /** Dev-only Vue composable state tracking for bundled client output.
2
- *
3
- * The first HMR cycle of a Vue page starts from the BUNDLED graph (the
4
- * hydration index / page bundle / shared chunks emitted by `Bun.build`), not
5
- * from the dev module server. Every later cycle re-imports the edited
6
- * composable through `/@src/...`, where `moduleServer.injectComposableTracking`
7
- * wraps each `use*` export so ref values survive a reload. For that first
8
- * cycle to preserve state too, the bundled copy of each composable has to
9
- * record its refs under the SAME module id the module server will use —
10
- * the absolute path of the composable's source file.
11
- *
12
- * This pass finds every top-level `var useXxx = ...` in a bundled output,
13
- * resolves the source file it came from (Bun prints a `// <path>` comment at
14
- * each module boundary of unminified output), and wraps the initializer with
15
- * `__hmr_wrap(<moduleId>, <name>, <fn>)`. With code splitting on, a
16
- * composable shared by several pages lives in a `/chunk-*.js` file, so the
17
- * pass runs over the page bundles AND every chunk they (transitively) import.
18
- *
19
- * The statement end is located on `maskLiterals`-masked text: template
20
- * literals and comments are opaque placeholders there, so Bun's formatting
21
- * invariant ("nested code is indented, only top-level statements start at
22
- * column 0") is enough to find the terminating `;` without parsing — no
23
- * brace counting that a quote inside a comment or regex literal could
24
- * desynchronise. A `use*` binding whose end cannot be located is left
25
- * untouched rather than emitted half-wrapped. */
26
1
  export type VueComposableModuleIdOptions = {
27
2
  /** Directory Bun printed its module-boundary comments relative to. */
28
3
  projectRoot: string;
29
4
  /** Absolute path of the configured Vue directory (`vueDirectory`). */
30
5
  vueDir?: string;
31
6
  /** `<generatedRoot>/vue` — compileVue writes transpiled TS helpers to
32
- * `<generatedVueDir>/client/<path relative to vueDir>.js`. */
7
+ * a source mirror contained inside `<generatedVueDir>/client/`. */
33
8
  generatedVueDir?: string;
34
9
  };
35
10
  type ModuleIdResolver = (commentPath: string | undefined) => string;
@@ -54,8 +29,8 @@ export declare const injectVueComposableTrackingIntoContent: (content: string, r
54
29
  export declare const isSharedChunkPath: (path: string) => boolean;
55
30
  /** Map a Bun module-boundary comment path to the module id the dev module
56
31
  * server keys composable state by: the absolute source path. Transpiled TS
57
- * helpers under `<generatedVueDir>/client/` map back to their source under
58
- * `vueDir`; anything else (node_modules, other frameworks) resolves against
32
+ * helpers under `<generatedVueDir>/client/` map back to their original source
33
+ * paths; anything else (node_modules, other frameworks) resolves against
59
34
  * the project root and simply never matches a served module. */
60
35
  export declare const resolveVueComposableModuleId: (commentPath: string, options: VueComposableModuleIdOptions) => string;
61
36
  export {};
@@ -0,0 +1,7 @@
1
+ /** Mirror source paths under each compilation mode. Using the filesystem root
2
+ * preserves relative imports, including imports outside the configured Vue
3
+ * directory, without letting parent traversals escape the client/server tree.
4
+ * Encode the root separately so Windows drives and UNC roots cannot collide. */
5
+ export declare const vueModuleOutputPath: (outputDir: string, sourcePath: string) => string;
6
+ /** Reverse the generated mirror for composable hot-reload module identities. */
7
+ export declare const vueModuleSourcePath: (outputDir: string, outputPath: string) => string | null;
@@ -22,6 +22,13 @@ export type NormalizedAbsoluteMobileConfig = {
22
22
  platforms: MobilePlatform[];
23
23
  productionOrigin: string;
24
24
  pushAndroidGoogleServicesFile: string;
25
+ releaseCertification: {
26
+ channels: Record<string, {
27
+ android?: 'installed';
28
+ ios?: 'device' | 'simulator' | 'store';
29
+ }>;
30
+ googlePlayTracks: Record<string, 'installed'>;
31
+ };
25
32
  updates?: {
26
33
  bootTimeoutMs: number;
27
34
  channel: string;
@@ -1,5 +1,6 @@
1
- import type { AbsoluteAndroidRelease } from './androidReleaseAcceptance';
2
- import type { AbsoluteIosRelease } from './iosReleaseAcceptance';
1
+ import type { AbsoluteAndroidReleaseMetadata } from './androidRelease';
2
+ import type { NormalizedAbsoluteMobileConfig } from './config';
3
+ import type { AbsoluteIosReleaseMetadata } from './iosRelease';
3
4
  export declare const ABSOLUTE_MOBILE_RELEASE_CERTIFICATION_FORMAT: 1;
4
5
  export type AbsoluteMobileCertificationRequirement = 'device' | 'installed' | 'simulator' | 'store';
5
6
  export type AbsoluteMobileCertificationStrength = 'installed' | 'simulator' | 'device' | 'store';
@@ -36,7 +37,9 @@ export type AbsoluteMobileReleaseCertification = {
36
37
  status: 'certified';
37
38
  strength: AbsoluteMobileCertificationStrength;
38
39
  };
39
- export type AbsoluteMobileCertifiableRelease = AbsoluteAndroidRelease | AbsoluteIosRelease;
40
+ export type AbsoluteMobileCertifiableRelease = {
41
+ metadata: AbsoluteAndroidReleaseMetadata | AbsoluteIosReleaseMetadata;
42
+ };
40
43
  export type CreateAbsoluteMobileReleaseCertificationOptions = {
41
44
  evidencePaths: string[];
42
45
  generatedAt?: string;
@@ -49,6 +52,12 @@ export type AbsoluteMobileReleaseCertificationPaths = {
49
52
  jsonPath: string;
50
53
  markdownPath: string;
51
54
  };
55
+ export type AbsoluteMobileReleaseCertificationTarget = {
56
+ channel?: string;
57
+ googlePlayTrack?: string;
58
+ platform: 'android' | 'ios';
59
+ };
60
+ export declare const resolveAbsoluteMobileCertificationRequirement: (config: NormalizedAbsoluteMobileConfig, target: AbsoluteMobileReleaseCertificationTarget) => AbsoluteMobileCertificationRequirement | undefined;
52
61
  export declare const createAbsoluteMobileReleaseCertification: (options: CreateAbsoluteMobileReleaseCertificationOptions) => Promise<AbsoluteMobileReleaseCertification>;
53
62
  export declare const readAbsoluteMobileReleaseCertification: (projectRoot: string, requested: string) => Promise<{
54
63
  certification: AbsoluteMobileReleaseCertification;
@@ -1,5 +1,6 @@
1
1
  import type { AbsoluteAndroidReleaseMetadata } from './androidRelease';
2
2
  import type { AbsoluteIosReleaseMetadata } from './iosRelease';
3
+ import { type AbsoluteMobileCertificationRequirement, type AbsoluteMobileReleaseCertification } from './releaseCertification';
3
4
  export type AbsoluteGooglePlayReleaseTarget = {
4
5
  changesNotSentForReview?: boolean;
5
6
  inAppUpdatePriority?: number;
@@ -30,6 +31,12 @@ export type AbsoluteNativeReleasePublication = {
30
31
  metadata: AbsoluteAndroidReleaseMetadata | AbsoluteIosReleaseMetadata;
31
32
  };
32
33
  reused: boolean;
34
+ certification?: {
35
+ certificationId: string;
36
+ releaseId: string;
37
+ requirement: AbsoluteMobileCertificationRequirement;
38
+ strength: AbsoluteMobileReleaseCertification['strength'];
39
+ };
33
40
  googlePlay?: {
34
41
  receipt: {
35
42
  intent: {
@@ -83,6 +90,8 @@ export type AbsoluteNativeReleasePublisher = {
83
90
  allowUnsigned?: boolean;
84
91
  appStoreConnect?: AbsoluteAppStoreConnectReleaseTarget;
85
92
  channel?: string;
93
+ certification?: AbsoluteMobileReleaseCertification;
94
+ certificationRequirement?: AbsoluteMobileCertificationRequirement;
86
95
  googlePlay?: AbsoluteGooglePlayReleaseTarget;
87
96
  releaseRoot: string;
88
97
  signal?: AbortSignal;
@@ -104,6 +113,8 @@ export declare const prepareAbsoluteAndroidRelease: (publisher: AbsoluteNativeRe
104
113
  export type PublishAbsoluteAndroidReleaseOptions = {
105
114
  allowUnsigned?: boolean;
106
115
  channel?: string;
116
+ certification?: AbsoluteMobileReleaseCertification;
117
+ certificationRequirement?: AbsoluteMobileCertificationRequirement;
107
118
  googlePlay?: AbsoluteGooglePlayReleaseTarget;
108
119
  modulePath: string;
109
120
  projectRoot: string;
@@ -119,6 +130,8 @@ export declare const publishAbsoluteIosRelease: (options: {
119
130
  allowUnsigned?: boolean;
120
131
  appStoreConnect?: AbsoluteAppStoreConnectReleaseTarget;
121
132
  channel?: string;
133
+ certification?: AbsoluteMobileReleaseCertification;
134
+ certificationRequirement?: AbsoluteMobileCertificationRequirement;
122
135
  modulePath: string;
123
136
  projectRoot: string;
124
137
  release: {
@@ -77,6 +77,19 @@ type MobileSharedConfig = {
77
77
  /** Deployed AbsoluteJS origin used for page envelopes and API calls. */
78
78
  productionOrigin: string;
79
79
  };
80
+ /** Native-store and immutable-channel release policy. Production defaults
81
+ * require installed Android evidence and store-delivered iOS evidence. */
82
+ release?: {
83
+ certification?: false | {
84
+ /** Evidence required when an immutable release channel is moved. */
85
+ channels?: Readonly<Record<string, {
86
+ android?: false | 'installed';
87
+ ios?: false | 'device' | 'simulator' | 'store';
88
+ }>>;
89
+ /** Evidence required before committing a Google Play track. */
90
+ googlePlayTracks?: Readonly<Record<string, false | 'installed'>>;
91
+ };
92
+ };
80
93
  /** Shell-owned production error capture for web-rendered and Expo-native routes.
81
94
  * Events go only to the configured route on the trusted production origin. */
82
95
  observability?: {
package/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  "dependencies": {
10
10
  "@absolutejs/auth": ">=0.75.0 <0.77.0",
11
11
  "@absolutejs/beacon": ">=0.7.0-beta.4 <0.8.0",
12
- "@absolutejs/deploy": "0.25.14",
12
+ "@absolutejs/deploy": "0.26.0",
13
13
  "@absolutejs/devices": "0.7.0",
14
14
  "@absolutejs/devices-capacitor": "0.8.0",
15
15
  "@absolutejs/devices-expo": "0.0.11",
@@ -537,7 +537,7 @@
537
537
  ]
538
538
  }
539
539
  },
540
- "version": "0.20.0-beta.107",
540
+ "version": "0.20.0-beta.109",
541
541
  "workspaces": [
542
542
  "tests/fixtures/*",
543
543
  "tests/fixtures/_packages/*"