@absolutejs/absolute 0.20.0-beta.43 → 0.20.0-beta.45
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/browser.js +378 -361
- package/dist/angular/browser.js.map +2 -2
- package/dist/angular/components/core/streamingSlotRegistrar.js +7 -7
- package/dist/angular/components/core/streamingSlotRegistry.js +4 -4
- package/dist/angular/index.js +300 -294
- package/dist/angular/index.js.map +2 -2
- package/dist/angular/server.js +54 -50
- package/dist/angular/server.js.map +2 -2
- package/dist/build.js +201 -204
- package/dist/build.js.map +3 -3
- package/dist/cli/config/client.js +12 -12
- package/dist/cli/config/server.js +1096 -1090
- package/dist/cli/index.js +1573 -1297
- package/dist/client/index.js +29 -25
- package/dist/client/index.js.map +2 -2
- package/dist/core/streamingSlotRegistrar.js +15 -13
- package/dist/core/streamingSlotRegistrar.js.map +2 -2
- package/dist/core/streamingSlotRegistry.js +11 -9
- package/dist/core/streamingSlotRegistry.js.map +2 -2
- package/dist/image-client/imageClient.js +7 -7
- package/dist/index.js +810 -733
- package/dist/index.js.map +7 -6
- package/dist/islands/browser.js +11 -9
- package/dist/islands/browser.js.map +2 -2
- package/dist/islands/index.js +39 -35
- package/dist/islands/index.js.map +2 -2
- package/dist/mobile/browser.js +23 -22
- package/dist/mobile/browser.js.map +3 -3
- package/dist/mobile/index.js +739 -426
- package/dist/mobile/index.js.map +11 -11
- package/dist/mobile/remoteMacAgentEntry.js +227 -37
- package/dist/mobile/shellBootstrap.js +0 -1
- package/dist/mobile/shellExpoAuth.js +184 -0
- package/dist/mobile/shellExpoDevices.js +4 -5
- package/dist/mobile/shellExpoSync.js +104 -0
- package/dist/mobile/shellSync.js +4 -4
- package/dist/react/browser.js +17 -15
- package/dist/react/browser.js.map +2 -2
- package/dist/react/components/browser/index.js +107 -107
- package/dist/react/components/index.js +118 -116
- package/dist/react/components/index.js.map +2 -2
- package/dist/react/hooks/index.js +11 -9
- package/dist/react/hooks/index.js.map +2 -2
- package/dist/react/index.js +53 -49
- package/dist/react/index.js.map +2 -2
- package/dist/react/jsxDevRuntimeCompat.js +11 -9
- package/dist/react/jsxDevRuntimeCompat.js.map +2 -2
- package/dist/react/jsxRuntimeCompat.js +11 -9
- package/dist/react/jsxRuntimeCompat.js.map +2 -2
- package/dist/react/router/browser.js +9 -7
- package/dist/react/router/browser.js.map +2 -2
- package/dist/react/router/index.js +9 -7
- package/dist/react/router/index.js.map +2 -2
- package/dist/react/server.js +12 -10
- package/dist/react/server.js.map +2 -2
- package/dist/src/mobile/devDeviceAdapter.d.ts +1 -1
- package/dist/src/mobile/expoBridge.d.ts +12 -12
- package/dist/src/mobile/nativeAuth.d.ts +6 -0
- package/dist/src/mobile/shellExpoAuth.d.ts +12 -0
- package/dist/src/mobile/shellExpoSync.d.ts +18 -0
- package/dist/svelte/browser.js +12 -10
- package/dist/svelte/browser.js.map +2 -2
- package/dist/svelte/index.js +47 -43
- package/dist/svelte/index.js.map +2 -2
- package/dist/svelte/server.js +29 -27
- package/dist/svelte/server.js.map +2 -2
- package/dist/vue/browser.js +14 -12
- package/dist/vue/browser.js.map +2 -2
- package/dist/vue/components/Image.js +9 -7
- package/dist/vue/components/Image.js.map +2 -2
- package/dist/vue/components/index.js +11 -9
- package/dist/vue/components/index.js.map +2 -2
- package/dist/vue/index.js +52 -48
- package/dist/vue/index.js.map +2 -2
- package/dist/vue/server.js +14 -12
- package/dist/vue/server.js.map +2 -2
- package/package.json +3 -2
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
// src/mobile/shellExpoDevices.ts
|
|
2
|
+
import { createWebDeviceAdapter } from "@absolutejs/devices/web";
|
|
3
|
+
import { installDeviceAdapter } from "@absolutejs/devices/runtime";
|
|
4
|
+
var bridge = () => {
|
|
5
|
+
const value = Reflect.get(globalThis, "__absoluteExpoBridge");
|
|
6
|
+
if (typeof value !== "object" || value === null || typeof Reflect.get(value, "request") !== "function") {
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
return {
|
|
10
|
+
request: (method, params) => Promise.resolve(Reflect.apply(Reflect.get(value, "request"), value, [
|
|
11
|
+
method,
|
|
12
|
+
params
|
|
13
|
+
]))
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
var parseFetchResult = (value) => {
|
|
17
|
+
if (!value || typeof value !== "object")
|
|
18
|
+
throw new TypeError("The Expo HTTP bridge returned an invalid response.");
|
|
19
|
+
const body = Reflect.get(value, "body");
|
|
20
|
+
const headers = Reflect.get(value, "headers");
|
|
21
|
+
const status = Reflect.get(value, "status");
|
|
22
|
+
if (typeof body !== "string" || typeof status !== "number" || !Number.isInteger(status) || !headers || typeof headers !== "object") {
|
|
23
|
+
throw new TypeError("The Expo HTTP bridge returned an invalid response.");
|
|
24
|
+
}
|
|
25
|
+
const entries = Object.entries(headers);
|
|
26
|
+
if (!entries.every(([, header]) => typeof header === "string")) {
|
|
27
|
+
throw new TypeError("The Expo HTTP bridge returned invalid headers.");
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
body,
|
|
31
|
+
headers: Object.fromEntries(entries.map(([name, header]) => [name, String(header)])),
|
|
32
|
+
status
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
var requireBridge = () => {
|
|
36
|
+
const provider = bridge();
|
|
37
|
+
if (!provider)
|
|
38
|
+
throw new TypeError("The Expo WebView bridge is unavailable.");
|
|
39
|
+
return provider;
|
|
40
|
+
};
|
|
41
|
+
var createAbsoluteExpoBridgeFetch = () => async (input, init) => {
|
|
42
|
+
const request = new Request(input, init);
|
|
43
|
+
const body = request.method === "GET" || request.method === "DELETE" ? undefined : await request.text();
|
|
44
|
+
const headers = Object.fromEntries(request.headers);
|
|
45
|
+
const result = parseFetchResult(await requireBridge().request("http.fetch", {
|
|
46
|
+
...body === undefined ? {} : { body },
|
|
47
|
+
headers,
|
|
48
|
+
method: request.method,
|
|
49
|
+
url: request.url
|
|
50
|
+
}));
|
|
51
|
+
return new Response(result.body, {
|
|
52
|
+
headers: result.headers,
|
|
53
|
+
status: result.status
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
var installAbsoluteExpoWebDeviceAdapter = () => {
|
|
57
|
+
const web = createWebDeviceAdapter();
|
|
58
|
+
return installDeviceAdapter({
|
|
59
|
+
...web,
|
|
60
|
+
haptics: {
|
|
61
|
+
capability: async () => bridge() ? {
|
|
62
|
+
available: true,
|
|
63
|
+
fidelity: "native",
|
|
64
|
+
native: true
|
|
65
|
+
} : {
|
|
66
|
+
available: false,
|
|
67
|
+
message: "The Expo WebView bridge is unavailable.",
|
|
68
|
+
reason: "unavailable"
|
|
69
|
+
},
|
|
70
|
+
impact: async (style) => {
|
|
71
|
+
await requireBridge().request("devices.haptics.impact", {
|
|
72
|
+
style
|
|
73
|
+
});
|
|
74
|
+
},
|
|
75
|
+
notification: async (style) => {
|
|
76
|
+
await requireBridge().request("devices.haptics.impact", {
|
|
77
|
+
style
|
|
78
|
+
});
|
|
79
|
+
},
|
|
80
|
+
selectionChanged: async () => {
|
|
81
|
+
await requireBridge().request("devices.haptics.impact", {
|
|
82
|
+
style: "selection"
|
|
83
|
+
});
|
|
84
|
+
},
|
|
85
|
+
vibrate: async (durationMs) => {
|
|
86
|
+
await requireBridge().request("devices.haptics.impact", {
|
|
87
|
+
durationMs,
|
|
88
|
+
style: "vibrate"
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
runtime: "expo"
|
|
93
|
+
});
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
// src/mobile/shellExpoAuth.ts
|
|
97
|
+
import {
|
|
98
|
+
installAuthClientRuntimeTransport
|
|
99
|
+
} from "@absolutejs/auth/client/mobile";
|
|
100
|
+
var requireBridge2 = () => {
|
|
101
|
+
const value = Reflect.get(globalThis, "__absoluteExpoBridge");
|
|
102
|
+
if (typeof value !== "object" || value === null || typeof Reflect.get(value, "request") !== "function") {
|
|
103
|
+
throw new TypeError("The Expo Auth bridge is unavailable.");
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
on: typeof Reflect.get(value, "on") === "function" ? (event, listener) => Reflect.apply(Reflect.get(value, "on"), value, [
|
|
107
|
+
event,
|
|
108
|
+
listener
|
|
109
|
+
]) : undefined,
|
|
110
|
+
request: (method, params) => Promise.resolve(Reflect.apply(Reflect.get(value, "request"), value, [
|
|
111
|
+
method,
|
|
112
|
+
params
|
|
113
|
+
]))
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
var parseStatus = (value) => {
|
|
117
|
+
if (typeof value !== "object" || value === null)
|
|
118
|
+
throw new TypeError("The Expo Auth bridge returned an invalid status.");
|
|
119
|
+
const principal = Reflect.get(value, "principal");
|
|
120
|
+
if (principal !== null && (typeof principal !== "object" || principal === null || typeof Reflect.get(principal, "namespace") !== "string")) {
|
|
121
|
+
throw new TypeError("The Expo Auth bridge returned an invalid principal.");
|
|
122
|
+
}
|
|
123
|
+
return {
|
|
124
|
+
principal: principal === null ? null : { namespace: String(Reflect.get(principal, "namespace")) },
|
|
125
|
+
user: Reflect.get(value, "user") ?? null
|
|
126
|
+
};
|
|
127
|
+
};
|
|
128
|
+
var createAbsoluteExpoShellAuth = async (config) => {
|
|
129
|
+
const provider = requireBridge2();
|
|
130
|
+
const fetch = createAbsoluteExpoBridgeFetch();
|
|
131
|
+
const authFetch = (input, init) => {
|
|
132
|
+
const resolved = typeof input === "string" || input instanceof URL ? new URL(String(input), config.issuer) : input;
|
|
133
|
+
return fetch(resolved, init);
|
|
134
|
+
};
|
|
135
|
+
let status = { principal: null, user: null };
|
|
136
|
+
const listeners = new Set;
|
|
137
|
+
provider.on?.("auth.principal", (payload) => {
|
|
138
|
+
status = parseStatus({
|
|
139
|
+
principal: payload.principal,
|
|
140
|
+
user: status.user
|
|
141
|
+
});
|
|
142
|
+
for (const listener of listeners)
|
|
143
|
+
listener(status.principal);
|
|
144
|
+
});
|
|
145
|
+
installAuthClientRuntimeTransport({
|
|
146
|
+
fetch: authFetch,
|
|
147
|
+
signInEmail: async ({ email }) => {
|
|
148
|
+
status = parseStatus(await provider.request("auth.signIn", { email, signup: false }));
|
|
149
|
+
return { status: "authenticated" };
|
|
150
|
+
},
|
|
151
|
+
signOut: async () => {
|
|
152
|
+
await provider.request("auth.signOut", {});
|
|
153
|
+
status = { principal: null, user: null };
|
|
154
|
+
return null;
|
|
155
|
+
},
|
|
156
|
+
signUpEmail: async ({ email }) => {
|
|
157
|
+
status = parseStatus(await provider.request("auth.signIn", { email, signup: true }));
|
|
158
|
+
return { status: "authenticated" };
|
|
159
|
+
},
|
|
160
|
+
status: async () => {
|
|
161
|
+
status = parseStatus(await provider.request("auth.status", {}));
|
|
162
|
+
return { user: status.user };
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
status = parseStatus(await provider.request("auth.status", {}));
|
|
166
|
+
return {
|
|
167
|
+
clientId: config.clientId,
|
|
168
|
+
fetch,
|
|
169
|
+
issuer: config.issuer,
|
|
170
|
+
principal: status.principal,
|
|
171
|
+
redirectUri: config.redirectUri,
|
|
172
|
+
onPrincipalChange: (listener) => {
|
|
173
|
+
listeners.add(listener);
|
|
174
|
+
listener(status.principal);
|
|
175
|
+
return () => listeners.delete(listener);
|
|
176
|
+
},
|
|
177
|
+
socketTicket: async () => {
|
|
178
|
+
throw new TypeError("Expo socket tickets remain native-only until @absolutejs/sync-expo is installed.");
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
};
|
|
182
|
+
export {
|
|
183
|
+
createAbsoluteExpoShellAuth
|
|
184
|
+
};
|
|
@@ -40,11 +40,10 @@ var requireBridge = () => {
|
|
|
40
40
|
};
|
|
41
41
|
var createAbsoluteExpoBridgeFetch = () => async (input, init) => {
|
|
42
42
|
const request = new Request(input, init);
|
|
43
|
-
|
|
44
|
-
throw new TypeError("The experimental Expo envelope bridge currently supports GET only.");
|
|
45
|
-
}
|
|
43
|
+
const body = request.method === "GET" || request.method === "DELETE" ? undefined : await request.text();
|
|
46
44
|
const headers = Object.fromEntries(request.headers);
|
|
47
45
|
const result = parseFetchResult(await requireBridge().request("http.fetch", {
|
|
46
|
+
...body === undefined ? {} : { body },
|
|
48
47
|
headers,
|
|
49
48
|
method: request.method,
|
|
50
49
|
url: request.url
|
|
@@ -94,6 +93,6 @@ var installAbsoluteExpoWebDeviceAdapter = () => {
|
|
|
94
93
|
});
|
|
95
94
|
};
|
|
96
95
|
export {
|
|
97
|
-
|
|
98
|
-
|
|
96
|
+
createAbsoluteExpoBridgeFetch,
|
|
97
|
+
installAbsoluteExpoWebDeviceAdapter
|
|
99
98
|
};
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
// src/mobile/shellExpoSync.ts
|
|
2
|
+
import {
|
|
3
|
+
createExpoSyncBridgeLocalStore,
|
|
4
|
+
createExpoSyncBridgeWebSocket
|
|
5
|
+
} from "@absolutejs/sync-expo/client";
|
|
6
|
+
import { installSyncClientRuntimeTransport } from "@absolutejs/sync/client/runtime";
|
|
7
|
+
|
|
8
|
+
// src/mobile/syncRemediation.ts
|
|
9
|
+
import {
|
|
10
|
+
discardSyncRuntimeDeadLetter,
|
|
11
|
+
inspectSyncRuntime,
|
|
12
|
+
rebaseSyncRuntimeDeadLetter,
|
|
13
|
+
retrySyncRuntimeDeadLetter
|
|
14
|
+
} from "@absolutejs/sync/client/runtime";
|
|
15
|
+
var REMEDIATION_REGISTRY = Symbol.for("@absolutejs/mobile-sync-remediation");
|
|
16
|
+
var isRegistry = (value) => typeof value === "object" && value !== null && Array.isArray(Reflect.get(value, "installations"));
|
|
17
|
+
var resolveRegistry = () => {
|
|
18
|
+
const existing = Reflect.get(globalThis, REMEDIATION_REGISTRY);
|
|
19
|
+
if (isRegistry(existing))
|
|
20
|
+
return existing;
|
|
21
|
+
const created = { installations: [] };
|
|
22
|
+
Object.defineProperty(globalThis, REMEDIATION_REGISTRY, {
|
|
23
|
+
configurable: false,
|
|
24
|
+
enumerable: false,
|
|
25
|
+
value: created,
|
|
26
|
+
writable: false
|
|
27
|
+
});
|
|
28
|
+
return created;
|
|
29
|
+
};
|
|
30
|
+
var registry = resolveRegistry();
|
|
31
|
+
var installAbsoluteMobileSyncRemediation = (bridge = {
|
|
32
|
+
discard: discardSyncRuntimeDeadLetter,
|
|
33
|
+
inspect: inspectSyncRuntime,
|
|
34
|
+
rebase: rebaseSyncRuntimeDeadLetter,
|
|
35
|
+
retry: retrySyncRuntimeDeadLetter
|
|
36
|
+
}) => {
|
|
37
|
+
const installation = { bridge };
|
|
38
|
+
registry.installations.push(installation);
|
|
39
|
+
return () => {
|
|
40
|
+
const index = registry.installations.indexOf(installation);
|
|
41
|
+
if (index >= 0)
|
|
42
|
+
registry.installations.splice(index, 1);
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
// src/mobile/shellExpoSync.ts
|
|
47
|
+
var requireBridge = () => {
|
|
48
|
+
const value = Reflect.get(globalThis, "__absoluteExpoBridge");
|
|
49
|
+
if (typeof value !== "object" || value === null || typeof Reflect.get(value, "request") !== "function" || typeof Reflect.get(value, "on") !== "function")
|
|
50
|
+
throw new TypeError("The Expo Sync bridge is unavailable.");
|
|
51
|
+
return {
|
|
52
|
+
on: (event, listener) => Reflect.apply(Reflect.get(value, "on"), value, [event, listener]),
|
|
53
|
+
request: (method, params) => Promise.resolve(Reflect.apply(Reflect.get(value, "request"), value, [
|
|
54
|
+
method,
|
|
55
|
+
params
|
|
56
|
+
]))
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
var reportShellStatus = (status) => globalThis.dispatchEvent(new CustomEvent("absolute:sync-status", { detail: status }));
|
|
60
|
+
var installAbsoluteExpoShellSync = (auth, config, options = {}) => {
|
|
61
|
+
const provider = options.provider ?? requireBridge();
|
|
62
|
+
const namespace = auth.principal?.namespace;
|
|
63
|
+
const store = namespace && config ? createExpoSyncBridgeLocalStore({
|
|
64
|
+
provider,
|
|
65
|
+
storageSchema: config.storageSchema
|
|
66
|
+
}) : undefined;
|
|
67
|
+
const WebSocketImpl = createExpoSyncBridgeWebSocket(provider);
|
|
68
|
+
const reportStatus = options.reportStatus ?? reportShellStatus;
|
|
69
|
+
const removeTransport = installSyncClientRuntimeTransport({
|
|
70
|
+
...namespace && store ? { durable: { namespace, store } } : {},
|
|
71
|
+
webSocketImpl: WebSocketImpl,
|
|
72
|
+
registerClient: (client) => {
|
|
73
|
+
const removeStatus = client.subscribeStatus(reportStatus);
|
|
74
|
+
const removeWake = provider.on("sync.wake", () => {
|
|
75
|
+
client.reconnect();
|
|
76
|
+
client.flush({ timeoutMs: 1e4 }).catch(() => {
|
|
77
|
+
return;
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
return () => {
|
|
81
|
+
removeStatus();
|
|
82
|
+
removeWake();
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
const removeRemediation = installAbsoluteMobileSyncRemediation();
|
|
87
|
+
const reload = options.reload ?? (() => globalThis.location.reload());
|
|
88
|
+
const removePrincipalListener = auth.onPrincipalChange((principal) => {
|
|
89
|
+
if (principal?.namespace !== namespace)
|
|
90
|
+
reload();
|
|
91
|
+
});
|
|
92
|
+
let active = true;
|
|
93
|
+
return () => {
|
|
94
|
+
if (!active)
|
|
95
|
+
return;
|
|
96
|
+
active = false;
|
|
97
|
+
removePrincipalListener();
|
|
98
|
+
removeRemediation();
|
|
99
|
+
removeTransport();
|
|
100
|
+
};
|
|
101
|
+
};
|
|
102
|
+
export {
|
|
103
|
+
installAbsoluteExpoShellSync
|
|
104
|
+
};
|
package/dist/mobile/shellSync.js
CHANGED
|
@@ -165,9 +165,9 @@ var installAbsoluteMobileShellSync = (auth, config, options = {}) => {
|
|
|
165
165
|
};
|
|
166
166
|
};
|
|
167
167
|
export {
|
|
168
|
-
|
|
169
|
-
installAbsoluteMobileShellSync,
|
|
170
|
-
ABSOLUTE_MOBILE_SYNC_STATUS_EVENT,
|
|
168
|
+
ABSOLUTE_MOBILE_SYNC_SCHEMA_EVENT,
|
|
171
169
|
ABSOLUTE_MOBILE_SYNC_SCHEMA_STATE_KEY,
|
|
172
|
-
|
|
170
|
+
ABSOLUTE_MOBILE_SYNC_STATUS_EVENT,
|
|
171
|
+
installAbsoluteMobileShellSync,
|
|
172
|
+
readAbsoluteMobileSyncSchemaState
|
|
173
173
|
};
|
package/dist/react/browser.js
CHANGED
|
@@ -19,12 +19,14 @@ var __toESM = (mod, isNodeMode, target) => {
|
|
|
19
19
|
}
|
|
20
20
|
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
21
21
|
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
if (mod && typeof mod === "object" || typeof mod === "function") {
|
|
23
|
+
for (let key of __getOwnPropNames(mod))
|
|
24
|
+
if (!__hasOwnProp.call(to, key))
|
|
25
|
+
__defProp(to, key, {
|
|
26
|
+
get: __accessProp.bind(mod, key),
|
|
27
|
+
enumerable: true
|
|
28
|
+
});
|
|
29
|
+
}
|
|
28
30
|
if (canCache)
|
|
29
31
|
cache.set(mod, to);
|
|
30
32
|
return to;
|
|
@@ -204,25 +206,25 @@ var preserveIslandMarkup = (props) => {
|
|
|
204
206
|
};
|
|
205
207
|
|
|
206
208
|
// src/react/Island.browser.tsx
|
|
207
|
-
import {
|
|
209
|
+
import { jsx } from "react/jsx-runtime";
|
|
208
210
|
var Island = (props) => {
|
|
209
211
|
const { attributes, innerHTML } = preserveIslandMarkup(props);
|
|
210
|
-
return /* @__PURE__ */
|
|
212
|
+
return /* @__PURE__ */ jsx("div", {
|
|
211
213
|
...attributes,
|
|
212
214
|
dangerouslySetInnerHTML: { __html: innerHTML },
|
|
213
215
|
suppressHydrationWarning: true
|
|
214
|
-
}
|
|
216
|
+
});
|
|
215
217
|
};
|
|
216
218
|
// src/react/createIsland.browser.tsx
|
|
217
|
-
import {
|
|
219
|
+
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
218
220
|
var createTypedIsland = (_registry) => {
|
|
219
221
|
const Island2 = (props) => {
|
|
220
222
|
const { attributes, innerHTML } = preserveIslandMarkup(props);
|
|
221
|
-
return /* @__PURE__ */
|
|
223
|
+
return /* @__PURE__ */ jsx2("div", {
|
|
222
224
|
...attributes,
|
|
223
225
|
dangerouslySetInnerHTML: { __html: innerHTML },
|
|
224
226
|
suppressHydrationWarning: true
|
|
225
|
-
}
|
|
227
|
+
});
|
|
226
228
|
};
|
|
227
229
|
return Island2;
|
|
228
230
|
};
|
|
@@ -347,10 +349,10 @@ var useIslandStore = (store, selector) => useSyncExternalStore((listener) => sub
|
|
|
347
349
|
listener();
|
|
348
350
|
}), () => readIslandStore(store, selector), () => getIslandStoreServerSnapshot(store, selector));
|
|
349
351
|
export {
|
|
350
|
-
|
|
352
|
+
Island,
|
|
351
353
|
createTypedIsland,
|
|
352
|
-
|
|
354
|
+
useIslandStore
|
|
353
355
|
};
|
|
354
356
|
|
|
355
|
-
//# debugId=
|
|
357
|
+
//# debugId=6574EA60E3A5A24C64756E2164756E21
|
|
356
358
|
//# sourceMappingURL=browser.js.map
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"const reduxImpl = (reducer, initial) => (set, _get, api) => {\n api.dispatch = (action) => {\n set((state) => reducer(state, action), false, action);\n return action;\n };\n api.dispatchFromDevtools = true;\n return { dispatch: (...args) => api.dispatch(...args), ...initial };\n};\nconst redux = reduxImpl;\n\nconst shouldDispatchFromDevtools = (api) => !!api.dispatchFromDevtools && typeof api.dispatch === \"function\";\nconst trackedConnections = /* @__PURE__ */ new Map();\nconst getTrackedConnectionState = (name) => {\n const api = trackedConnections.get(name);\n if (!api) return {};\n return Object.fromEntries(\n Object.entries(api.stores).map(([key, api2]) => [key, api2.getState()])\n );\n};\nconst extractConnectionInformation = (store, extensionConnector, options) => {\n if (store === void 0) {\n return {\n type: \"untracked\",\n connection: extensionConnector.connect(options)\n };\n }\n const existingConnection = trackedConnections.get(options.name);\n if (existingConnection) {\n return { type: \"tracked\", store, ...existingConnection };\n }\n const newConnection = {\n connection: extensionConnector.connect(options),\n stores: {}\n };\n trackedConnections.set(options.name, newConnection);\n return { type: \"tracked\", store, ...newConnection };\n};\nconst removeStoreFromTrackedConnections = (name, store) => {\n if (store === void 0) return;\n const connectionInfo = trackedConnections.get(name);\n if (!connectionInfo) return;\n delete connectionInfo.stores[store];\n if (Object.keys(connectionInfo.stores).length === 0) {\n trackedConnections.delete(name);\n }\n};\nconst findCallerName = (stack) => {\n var _a, _b;\n if (!stack) return void 0;\n const traceLines = stack.split(\"\\n\");\n const apiSetStateLineIndex = traceLines.findIndex(\n (traceLine) => traceLine.includes(\"api.setState\")\n );\n if (apiSetStateLineIndex < 0) return void 0;\n const callerLine = ((_a = traceLines[apiSetStateLineIndex + 1]) == null ? void 0 : _a.trim()) || \"\";\n return (_b = /.+ (.+) .+/.exec(callerLine)) == null ? void 0 : _b[1];\n};\nconst devtoolsImpl = (fn, devtoolsOptions = {}) => (set, get, api) => {\n const { enabled, anonymousActionType, store, ...options } = devtoolsOptions;\n let extensionConnector;\n try {\n extensionConnector = (enabled != null ? enabled : (import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch (e) {\n }\n if (!extensionConnector) {\n return fn(set, get, api);\n }\n const { connection, ...connectionInformation } = extractConnectionInformation(store, extensionConnector, options);\n let isRecording = true;\n api.setState = ((state, replace, nameOrAction) => {\n const r = set(state, replace);\n if (!isRecording) return r;\n const action = nameOrAction === void 0 ? {\n type: anonymousActionType || findCallerName(new Error().stack) || \"anonymous\"\n } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction;\n if (store === void 0) {\n connection == null ? void 0 : connection.send(action, get());\n return r;\n }\n connection == null ? void 0 : connection.send(\n {\n ...action,\n type: `${store}/${action.type}`\n },\n {\n ...getTrackedConnectionState(options.name),\n [store]: api.getState()\n }\n );\n return r;\n });\n api.devtools = {\n cleanup: () => {\n if (connection && typeof connection.unsubscribe === \"function\") {\n connection.unsubscribe();\n }\n removeStoreFromTrackedConnections(options.name, store);\n }\n };\n const setStateFromDevtools = (...a) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a);\n isRecording = originalIsRecording;\n };\n const initialState = fn(api.setState, get, api);\n if (connectionInformation.type === \"untracked\") {\n connection == null ? void 0 : connection.init(initialState);\n } else {\n connectionInformation.stores[connectionInformation.store] = api;\n connection == null ? void 0 : connection.init(\n Object.fromEntries(\n Object.entries(connectionInformation.stores).map(([key, store2]) => [\n key,\n key === connectionInformation.store ? initialState : store2.getState()\n ])\n )\n );\n }\n if (shouldDispatchFromDevtools(api)) {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...args) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && args[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn(\n '[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.'\n );\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...args);\n };\n }\n connection.subscribe((message) => {\n var _a;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return parseJsonThen(\n message.payload,\n (action) => {\n if (action.type === \"__setState\") {\n if (store === void 0) {\n setStateFromDevtools(action.state);\n return;\n }\n if (Object.keys(action.state).length !== 1) {\n console.error(\n `\n [zustand devtools middleware] Unsupported __setState action format.\n When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),\n and value of this only key should be a state object. Example: { \"type\": \"__setState\", \"state\": { \"abc123Store\": { \"foo\": \"bar\" } } }\n `\n );\n }\n const stateFromDevtools = action.state[store];\n if (stateFromDevtools === void 0 || stateFromDevtools === null) {\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(stateFromDevtools)) {\n setStateFromDevtools(stateFromDevtools);\n }\n return;\n }\n if (shouldDispatchFromDevtools(api)) {\n api.dispatch(action);\n }\n }\n );\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState);\n if (store === void 0) {\n return connection == null ? void 0 : connection.init(api.getState());\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"COMMIT\":\n if (store === void 0) {\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n setStateFromDevtools(state[store]);\n connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(state[store])) {\n setStateFromDevtools(state[store]);\n }\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;\n if (!lastComputedState) return;\n if (store === void 0) {\n setStateFromDevtools(lastComputedState);\n } else {\n setStateFromDevtools(lastComputedState[store]);\n }\n connection == null ? void 0 : connection.send(\n null,\n // FIXME no-any\n nextLiftedState\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState;\n};\nconst devtools = devtoolsImpl;\nconst parseJsonThen = (stringified, fn) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n e\n );\n }\n if (parsed !== void 0) fn(parsed);\n};\n\nconst subscribeWithSelectorImpl = (fn) => (set, get, api) => {\n const origSubscribe = api.subscribe;\n api.subscribe = ((selector, optListener, options) => {\n let listener = selector;\n if (optListener) {\n const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n let currentSlice = selector(api.getState());\n listener = (state) => {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n optListener(currentSlice = nextSlice, previousSlice);\n }\n };\n if (options == null ? void 0 : options.fireImmediately) {\n optListener(currentSlice, currentSlice);\n }\n }\n return origSubscribe(listener);\n });\n const initialState = fn(set, get, api);\n return initialState;\n};\nconst subscribeWithSelector = subscribeWithSelectorImpl;\n\nfunction combine(initialState, create) {\n return (...args) => Object.assign({}, initialState, create(...args));\n}\n\nfunction createJSONStorage(getStorage, options) {\n let storage;\n try {\n storage = getStorage();\n } catch (e) {\n return;\n }\n const persistStorage = {\n getItem: (name) => {\n var _a;\n const parse = (str2) => {\n if (str2 === null) {\n return null;\n }\n return JSON.parse(str2, options == null ? void 0 : options.reviver);\n };\n const str = (_a = storage.getItem(name)) != null ? _a : null;\n if (str instanceof Promise) {\n return str.then(parse);\n }\n return parse(str);\n },\n setItem: (name, newValue) => storage.setItem(name, JSON.stringify(newValue, options == null ? void 0 : options.replacer)),\n removeItem: (name) => storage.removeItem(name)\n };\n return persistStorage;\n}\nconst toThenable = (fn) => (input) => {\n try {\n const result = fn(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e);\n }\n };\n }\n};\nconst persistImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n storage: createJSONStorage(() => window.localStorage),\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n let hydrationVersion = 0;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage = options.storage;\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const setItem = () => {\n const state = options.partialize({ ...get() });\n return storage.setItem(options.name, {\n state,\n version: options.version\n });\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n return setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n return setItem();\n },\n get,\n api\n );\n api.getInitialState = () => configResult;\n let stateFromStorage;\n const hydrate = () => {\n var _a, _b;\n if (!storage) return;\n const currentVersion = ++hydrationVersion;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => {\n var _a2;\n return cb((_a2 = get()) != null ? _a2 : configResult);\n });\n const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n const migration = options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n );\n if (migration instanceof Promise) {\n return migration.then((result) => [true, result]);\n }\n return [true, migration];\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return [false, deserializedStorageValue.state];\n }\n }\n return [false, void 0];\n }).then((migrationResult) => {\n var _a2;\n if (currentVersion !== hydrationVersion) {\n return;\n }\n const [migrated, migratedState] = migrationResult;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n if (migrated) {\n return setItem();\n }\n }).then(() => {\n if (currentVersion !== hydrationVersion) {\n return;\n }\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(get(), void 0);\n stateFromStorage = get();\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n if (currentVersion !== hydrationVersion) {\n return;\n }\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.storage) {\n storage = newOptions.storage;\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n if (!options.skipHydration) {\n hydrate();\n }\n return stateFromStorage || configResult;\n};\nconst persist = persistImpl;\n\nfunction ssrSafe(config, isSSR = typeof window === \"undefined\") {\n return (set, get, api) => {\n if (!isSSR) {\n return config(set, get, api);\n }\n const ssrSet = () => {\n throw new Error(\"Cannot set state of Zustand store in SSR\");\n };\n api.setState = ssrSet;\n return config(ssrSet, get, api);\n };\n}\n\nexport { combine, createJSONStorage, devtools, persist, redux, subscribeWithSelector, ssrSafe as unstable_ssrSafe };\n",
|
|
14
14
|
"import { createStore, type StateCreator, type StoreApi } from 'zustand/vanilla';\nimport { combine } from 'zustand/middleware';\n\nexport type IslandStoreState = object;\ntype IslandStoreSnapshot = Record<string, unknown>;\ntype IslandStoreShape<\n\tTState extends IslandStoreState,\n\tTActions extends object\n> = Omit<TState, keyof TActions> & TActions;\nexport type IslandStateSnapshot = Record<string, IslandStoreSnapshot>;\ntype AnyIslandStore = StoreApi<object>;\ntype IslandStoreInstance = {\n\tapplyExternalSnapshot: (snapshot: IslandStoreSnapshot) => void;\n\tstore: AnyIslandStore;\n};\n\nexport const ABSOLUTE_ISLAND_STATE = '__ABS_ISLAND_STATE__';\nexport const ABSOLUTE_ISLAND_STORES = '__ABS_ISLAND_STORES__';\n\ndeclare global {\n\tvar __ABS_ISLAND_STATE__: IslandStateSnapshot | undefined;\n\tvar __ABS_ISLAND_STORES__:\n\t\t| Map<string, Set<IslandStoreInstance>>\n\t\t| undefined;\n}\n\nconst getIslandStoreSnapshot = () => {\n\tglobalThis.__ABS_ISLAND_STATE__ ??= {};\n\n\treturn globalThis.__ABS_ISLAND_STATE__;\n};\n\nconst getIslandStores = () => {\n\tglobalThis.__ABS_ISLAND_STORES__ ??= new Map();\n\n\treturn globalThis.__ABS_ISLAND_STORES__;\n};\n\nconst isSerializableValue = (value: unknown) =>\n\ttypeof value !== 'function' && value !== undefined;\n\nconst toSerializableState = <T extends object>(state: T) =>\n\tObject.fromEntries(\n\t\tObject.entries(state).filter(([, value]) => isSerializableValue(value))\n\t);\n\nconst applySnapshot = <T extends object>(\n\tstore: StoreApi<T>,\n\tsnapshot: IslandStoreSnapshot | undefined\n) => {\n\tif (!snapshot) {\n\t\treturn;\n\t}\n\n\tstore.setState({\n\t\t...store.getState(),\n\t\t...snapshot\n\t});\n};\n\nconst getPeerStores = (\n\tstoreInstances: Set<IslandStoreInstance>,\n\townerStore: AnyIslandStore\n) => [...storeInstances].filter((peer) => peer.store !== ownerStore);\n\nconst syncIslandSnapshot = <\n\tTState extends IslandStoreState,\n\tTActions extends object\n>(\n\tstoreId: string,\n\tstate: IslandStoreShape<TState, TActions>,\n\tstoreInstances: Set<IslandStoreInstance>,\n\townerStore: AnyIslandStore\n) => {\n\tconst nextSnapshot = toSerializableState(state);\n\tgetIslandStoreSnapshot()[storeId] = nextSnapshot;\n\n\tfor (const peerStore of getPeerStores(storeInstances, ownerStore)) {\n\t\tpeerStore.applyExternalSnapshot(nextSnapshot);\n\t}\n};\n\nexport const createIslandStore = <\n\tTState extends IslandStoreState,\n\tTActions extends object\n>(\n\tstoreId: string,\n\tinitialState: TState,\n\tcreateState: StateCreator<TState, [], [], TActions>\n) => {\n\tconst store = createStore(combine(initialState, createState));\n\tconst stores = getIslandStores();\n\tconst storeInstances =\n\t\tstores.get(storeId) ?? new Set<IslandStoreInstance>();\n\tconst initialSnapshot = getIslandStoreSnapshot()[storeId];\n\tapplySnapshot(store, initialSnapshot);\n\tlet isApplyingExternalSnapshot = false;\n\n\tconst applyExternalSnapshot = (snapshot: IslandStoreSnapshot) => {\n\t\tisApplyingExternalSnapshot = true;\n\t\tapplySnapshot(store, snapshot);\n\t};\n\n\tstoreInstances.add({\n\t\tapplyExternalSnapshot,\n\t\tstore\n\t});\n\tstores.set(storeId, storeInstances);\n\n\tsyncIslandSnapshot(storeId, store.getState(), storeInstances, store);\n\tstore.subscribe((state) => {\n\t\tif (isApplyingExternalSnapshot) {\n\t\t\tisApplyingExternalSnapshot = false;\n\n\t\t\treturn;\n\t\t}\n\n\t\tsyncIslandSnapshot(storeId, state, storeInstances, store);\n\t});\n\n\treturn store;\n};\nexport const getIslandStoreServerSnapshot = <\n\tTState extends IslandStoreState,\n\tTSelected\n>(\n\tstore: StoreApi<TState>,\n\tselector: (state: TState) => TSelected\n) => selector(store.getInitialState());\nconst applySnapshotToStoreInstances = (\n\tstoreId: string,\n\tinstances: Set<IslandStoreInstance>,\n\tsnapshot: IslandStateSnapshot\n) => {\n\tfor (const instance of instances) {\n\t\tinstance.applyExternalSnapshot(snapshot[storeId] ?? {});\n\t}\n};\n\nexport const initializeIslandStores = (state: IslandStateSnapshot) => {\n\tconst currentSnapshot = getIslandStoreSnapshot();\n\tconst nextSnapshot: IslandStateSnapshot = {\n\t\t...state,\n\t\t...currentSnapshot\n\t};\n\n\tglobalThis.__ABS_ISLAND_STATE__ = nextSnapshot;\n\n\tfor (const [storeId, store] of getIslandStores()) {\n\t\tapplySnapshotToStoreInstances(storeId, store, nextSnapshot);\n\t}\n};\nexport const readIslandStore = <TState extends IslandStoreState, TSelected>(\n\tstore: StoreApi<TState>,\n\tselector: (state: TState) => TSelected\n) => selector(store.getState());\nexport const resetIslandStoreForTesting = () => {\n\tdelete globalThis.__ABS_ISLAND_STATE__;\n\tdelete globalThis.__ABS_ISLAND_STORES__;\n};\nexport const subscribeIslandStore = <\n\tTState extends IslandStoreState,\n\tTSelected\n>(\n\tstore: StoreApi<TState>,\n\tselector: (state: TState) => TSelected,\n\tlistener: (value: TSelected) => void\n) => {\n\tlet currentSelection = selector(store.getState());\n\n\treturn store.subscribe((state) => {\n\t\tconst nextSelection = selector(state);\n\t\tif (Object.is(nextSelection, currentSelection)) {\n\t\t\treturn;\n\t\t}\n\n\t\tcurrentSelection = nextSelection;\n\t\tlistener(nextSelection);\n\t});\n};\n"
|
|
15
15
|
],
|
|
16
|
-
"mappings": "
|
|
17
|
-
"debugId": "
|
|
16
|
+
"mappings": "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",
|
|
17
|
+
"debugId": "6574EA60E3A5A24C64756E2164756E21",
|
|
18
18
|
"names": []
|
|
19
19
|
}
|