@livestore/adapter-expo 0.4.0-dev.2 → 0.4.0-dev.20
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/.tsbuildinfo +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +58 -21
- package/dist/index.js.map +1 -1
- package/dist/make-sqlite-db.d.ts.map +1 -1
- package/dist/make-sqlite-db.js +1 -5
- package/dist/make-sqlite-db.js.map +1 -1
- package/dist/shutdown-channel.d.ts +1 -1
- package/dist/shutdown-channel.d.ts.map +1 -1
- package/package.json +9 -11
- package/src/index.ts +115 -28
- package/src/make-sqlite-db.ts +1 -5
package/dist/index.d.ts
CHANGED
|
@@ -15,9 +15,12 @@ export type MakeDbOptions = {
|
|
|
15
15
|
clientId?: string;
|
|
16
16
|
/** @default 'static' */
|
|
17
17
|
sessionId?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Warning: This will reset both the app and eventlog database. This should only be used during development.
|
|
20
|
+
*
|
|
21
|
+
* @default false
|
|
22
|
+
*/
|
|
23
|
+
resetPersistence?: boolean;
|
|
18
24
|
};
|
|
19
|
-
declare global {
|
|
20
|
-
var RN$Bridgeless: boolean | undefined;
|
|
21
|
-
}
|
|
22
25
|
export declare const makePersistedAdapter: (options?: MakeDbOptions) => Adapter;
|
|
23
26
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAA;AAEtB,OAAO,EACL,KAAK,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAA;AAEtB,OAAO,EACL,KAAK,OAAO,EAQZ,KAAK,WAAW,EAEjB,MAAM,mBAAmB,CAAA;AA2B1B,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,OAAO,CAAC,EAAE;QACR;;;;;WAKG;QACH,YAAY,CAAC,EAAE,MAAM,CAAA;KACtB,CAAA;IAED,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAWD,eAAO,MAAM,oBAAoB,GAC9B,UAAS,aAAkB,KAAG,OA6F2E,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,30 +1,40 @@
|
|
|
1
1
|
import "./polyfill.js";
|
|
2
|
-
import { ClientSessionLeaderThreadProxy, Devtools, liveStoreStorageFormatVersion, makeClientSession,
|
|
2
|
+
import { ClientSessionLeaderThreadProxy, Devtools, IntentionalShutdownCause, liveStoreStorageFormatVersion, makeClientSession, UnknownError, } from '@livestore/common';
|
|
3
3
|
import { Eventlog, LeaderThreadCtx, makeLeaderThreadLayer } from '@livestore/common/leader-thread';
|
|
4
4
|
import { LiveStoreEvent } from '@livestore/common/schema';
|
|
5
5
|
import { shouldNeverHappen } from '@livestore/utils';
|
|
6
|
-
import { Effect, Exit, FetchHttpClient, Fiber, Layer, Queue, Stream, SubscriptionRef } from '@livestore/utils/effect';
|
|
6
|
+
import { Effect, Exit, FetchHttpClient, Fiber, Layer, Queue, Schedule, Stream, SubscriptionRef, } from '@livestore/utils/effect';
|
|
7
7
|
import * as Webmesh from '@livestore/webmesh';
|
|
8
8
|
import * as ExpoApplication from 'expo-application';
|
|
9
9
|
import * as SQLite from 'expo-sqlite';
|
|
10
10
|
import * as RN from 'react-native';
|
|
11
11
|
import { makeSqliteDb } from "./make-sqlite-db.js";
|
|
12
12
|
import { makeShutdownChannel } from "./shutdown-channel.js";
|
|
13
|
-
|
|
13
|
+
// Expo Go with the New Architecture enables Fabric and TurboModules, but may not run in "bridgeless" mode.
|
|
14
|
+
// Rely on Fabric/TurboModules feature detection instead of RN$Bridgeless.
|
|
15
|
+
const IS_NEW_ARCH =
|
|
16
|
+
// Fabric global – set when the new renderer is enabled
|
|
17
|
+
Boolean(globalThis.nativeFabricUIManager) ||
|
|
18
|
+
// TurboModule proxy – indicates new arch TurboModules
|
|
19
|
+
Boolean(globalThis.__turboModuleProxy);
|
|
14
20
|
// TODO refactor with leader-thread code from `@livestore/common/leader-thread`
|
|
15
21
|
export const makePersistedAdapter = (options = {}) => (adapterArgs) => Effect.gen(function* () {
|
|
16
22
|
if (IS_NEW_ARCH === false) {
|
|
17
|
-
return yield*
|
|
23
|
+
return yield* UnknownError.make({
|
|
18
24
|
cause: new Error('The LiveStore Expo adapter requires the new React Native architecture (aka Fabric). See https://docs.expo.dev/guides/new-architecture'),
|
|
19
25
|
});
|
|
20
26
|
}
|
|
21
|
-
const { schema, shutdown, devtoolsEnabled, storeId, bootStatusQueue,
|
|
22
|
-
const { storage, clientId = yield* getDeviceId, sessionId = 'static', sync: syncOptions } = options;
|
|
27
|
+
const { schema, shutdown, devtoolsEnabled, storeId, bootStatusQueue, syncPayloadEncoded, syncPayloadSchema } = adapterArgs;
|
|
28
|
+
const { storage, clientId = yield* getDeviceId, sessionId = 'static', sync: syncOptions, resetPersistence = false, } = options;
|
|
23
29
|
yield* Queue.offer(bootStatusQueue, { stage: 'loading' });
|
|
24
30
|
const lockStatus = yield* SubscriptionRef.make('has-lock');
|
|
25
31
|
const shutdownChannel = yield* makeShutdownChannel(storeId);
|
|
32
|
+
if (resetPersistence === true) {
|
|
33
|
+
yield* shutdownChannel.send(IntentionalShutdownCause.make({ reason: 'adapter-reset' }));
|
|
34
|
+
yield* resetExpoPersistence({ storeId, storage, schema });
|
|
35
|
+
}
|
|
26
36
|
yield* shutdownChannel.listen.pipe(Stream.flatten(), Stream.tap((cause) => shutdown(cause._tag === 'LiveStore.IntentionalShutdownCause' ? Exit.succeed(cause) : Exit.fail(cause))), Stream.runDrain, Effect.interruptible, Effect.tapCauseLogPretty, Effect.forkScoped);
|
|
27
|
-
const devtoolsUrl = getDevtoolsUrl().toString();
|
|
37
|
+
const devtoolsUrl = devtoolsEnabled ? getDevtoolsUrl().toString() : 'ws://127.0.0.1:4242';
|
|
28
38
|
const { leaderThread, initialSnapshot } = yield* makeLeaderThread({
|
|
29
39
|
storeId,
|
|
30
40
|
clientId,
|
|
@@ -34,7 +44,8 @@ export const makePersistedAdapter = (options = {}) => (adapterArgs) => Effect.ge
|
|
|
34
44
|
storage: storage ?? {},
|
|
35
45
|
devtoolsEnabled,
|
|
36
46
|
bootStatusQueue,
|
|
37
|
-
|
|
47
|
+
syncPayloadEncoded,
|
|
48
|
+
syncPayloadSchema,
|
|
38
49
|
devtoolsUrl,
|
|
39
50
|
});
|
|
40
51
|
const sqliteDb = yield* makeSqliteDb({ _tag: 'in-memory' });
|
|
@@ -63,18 +74,18 @@ export const makePersistedAdapter = (options = {}) => (adapterArgs) => Effect.ge
|
|
|
63
74
|
// })
|
|
64
75
|
return () => { };
|
|
65
76
|
},
|
|
77
|
+
origin: undefined,
|
|
66
78
|
});
|
|
67
79
|
return clientSession;
|
|
68
|
-
}).pipe(
|
|
69
|
-
const makeLeaderThread = ({ storeId, clientId, schema, makeSqliteDb, syncOptions, storage, devtoolsEnabled, bootStatusQueue: bootStatusQueueClientSession,
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
const dbEventlogPath = `${'livestore-'}eventlog@${liveStoreStorageFormatVersion}.db`;
|
|
80
|
+
}).pipe(UnknownError.mapToUnknownError, Effect.provide(FetchHttpClient.layer), Effect.tapCauseLogPretty);
|
|
81
|
+
const makeLeaderThread = ({ storeId, clientId, schema, makeSqliteDb, syncOptions, storage, devtoolsEnabled, bootStatusQueue: bootStatusQueueClientSession, syncPayloadEncoded, syncPayloadSchema, devtoolsUrl, }) => Effect.gen(function* () {
|
|
82
|
+
const { directory, stateDatabaseName, eventlogDatabaseName } = resolveExpoPersistencePaths({
|
|
83
|
+
storeId,
|
|
84
|
+
storage,
|
|
85
|
+
schema,
|
|
86
|
+
});
|
|
76
87
|
const dbState = yield* makeSqliteDb({ _tag: 'file', databaseName: stateDatabaseName, directory });
|
|
77
|
-
const dbEventlog = yield* makeSqliteDb({ _tag: 'file', databaseName:
|
|
88
|
+
const dbEventlog = yield* makeSqliteDb({ _tag: 'file', databaseName: eventlogDatabaseName, directory });
|
|
78
89
|
const devtoolsOptions = yield* makeDevtoolsOptions({
|
|
79
90
|
devtoolsEnabled,
|
|
80
91
|
devtoolsUrl,
|
|
@@ -94,10 +105,11 @@ const makeLeaderThread = ({ storeId, clientId, schema, makeSqliteDb, syncOptions
|
|
|
94
105
|
shutdownChannel: yield* makeShutdownChannel(storeId),
|
|
95
106
|
storeId,
|
|
96
107
|
syncOptions,
|
|
97
|
-
|
|
108
|
+
syncPayloadEncoded,
|
|
109
|
+
syncPayloadSchema,
|
|
98
110
|
}).pipe(Layer.provideMerge(FetchHttpClient.layer)));
|
|
99
111
|
return yield* Effect.gen(function* () {
|
|
100
|
-
const { dbState: db, dbEventlog, syncProcessor, extraIncomingMessagesQueue, initialState, bootStatusQueue, } = yield* LeaderThreadCtx;
|
|
112
|
+
const { dbState: db, dbEventlog, syncProcessor, extraIncomingMessagesQueue, initialState, bootStatusQueue, networkStatus, } = yield* LeaderThreadCtx;
|
|
101
113
|
const bootStatusFiber = yield* Queue.takeBetween(bootStatusQueue, 1, 1000).pipe(Effect.tap((bootStatus) => Queue.offerAll(bootStatusQueueClientSession, bootStatus)), Effect.interruptible, Effect.tapCauseLogPretty, Effect.forkScoped);
|
|
102
114
|
yield* Queue.awaitShutdown(bootStatusQueueClientSession).pipe(Effect.andThen(Fiber.interrupt(bootStatusFiber)), Effect.tapCauseLogPretty, Effect.forkScoped);
|
|
103
115
|
const initialLeaderHead = Eventlog.getClientHeadFromDb(dbEventlog);
|
|
@@ -105,19 +117,44 @@ const makeLeaderThread = ({ storeId, clientId, schema, makeSqliteDb, syncOptions
|
|
|
105
117
|
events: {
|
|
106
118
|
pull: ({ cursor }) => syncProcessor.pull({ cursor }),
|
|
107
119
|
push: (batch) => syncProcessor
|
|
108
|
-
.push(batch.map((item) => new LiveStoreEvent.EncodedWithMeta(item)), { waitForProcessing: true })
|
|
120
|
+
.push(batch.map((item) => new LiveStoreEvent.Client.EncodedWithMeta(item)), { waitForProcessing: true })
|
|
109
121
|
.pipe(Effect.provide(layer), Effect.scoped),
|
|
110
122
|
},
|
|
111
123
|
initialState: { leaderHead: initialLeaderHead, migrationsReport: initialState.migrationsReport },
|
|
112
124
|
export: Effect.sync(() => db.export()),
|
|
113
125
|
getEventlogData: Effect.sync(() => dbEventlog.export()),
|
|
114
|
-
|
|
126
|
+
syncState: syncProcessor.syncState,
|
|
115
127
|
sendDevtoolsMessage: (message) => extraIncomingMessagesQueue.offer(message),
|
|
128
|
+
networkStatus,
|
|
116
129
|
});
|
|
117
130
|
const initialSnapshot = db.export();
|
|
118
131
|
return { leaderThread, initialSnapshot };
|
|
119
132
|
}).pipe(Effect.provide(layer));
|
|
120
133
|
});
|
|
134
|
+
const resolveExpoPersistencePaths = ({ storeId, storage, schema, }) => {
|
|
135
|
+
const subDirectory = storage?.subDirectory ? `${storage.subDirectory.replace(/\/$/, '')}/` : '';
|
|
136
|
+
const pathJoin = (...paths) => paths.join('/').replaceAll(/\/+/g, '/');
|
|
137
|
+
const directory = pathJoin(SQLite.defaultDatabaseDirectory, subDirectory, storeId);
|
|
138
|
+
const schemaHashSuffix = schema.state.sqlite.migrations.strategy === 'manual' ? 'fixed' : schema.state.sqlite.hash.toString();
|
|
139
|
+
const stateDatabaseName = `livestore-${schemaHashSuffix}@${liveStoreStorageFormatVersion}.db`;
|
|
140
|
+
const eventlogDatabaseName = `livestore-eventlog@${liveStoreStorageFormatVersion}.db`;
|
|
141
|
+
return { directory, stateDatabaseName, eventlogDatabaseName };
|
|
142
|
+
};
|
|
143
|
+
const resetExpoPersistence = ({ storeId, storage, schema, }) => Effect.try({
|
|
144
|
+
try: () => {
|
|
145
|
+
const { directory, stateDatabaseName, eventlogDatabaseName } = resolveExpoPersistencePaths({
|
|
146
|
+
storeId,
|
|
147
|
+
storage,
|
|
148
|
+
schema,
|
|
149
|
+
});
|
|
150
|
+
SQLite.deleteDatabaseSync(stateDatabaseName, directory);
|
|
151
|
+
SQLite.deleteDatabaseSync(eventlogDatabaseName, directory);
|
|
152
|
+
},
|
|
153
|
+
catch: (cause) => new UnknownError({
|
|
154
|
+
cause,
|
|
155
|
+
note: `@livestore/adapter-expo: Failed to reset persistence for store ${storeId}`,
|
|
156
|
+
}),
|
|
157
|
+
}).pipe(Effect.retry({ schedule: Schedule.exponentialBackoff10Sec }), Effect.withSpan('@livestore/adapter-expo:resetPersistence', { attributes: { storeId } }));
|
|
121
158
|
const makeDevtoolsOptions = ({ devtoolsEnabled, devtoolsUrl, dbState, dbEventlog, storeId, clientId, }) => Effect.sync(() => {
|
|
122
159
|
if (devtoolsEnabled === false) {
|
|
123
160
|
return {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAA;AAEtB,OAAO,EAGL,8BAA8B,EAC9B,QAAQ,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make-sqlite-db.d.ts","sourceRoot":"","sources":["../src/make-sqlite-db.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,eAAe,EAKrB,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"make-sqlite-db.d.ts","sourceRoot":"","sources":["../src/make-sqlite-db.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,eAAe,EAKrB,MAAM,mBAAmB,CAAA;AAM1B,KAAK,QAAQ,GAAG;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,eAAe,CAAA;IAChC,KAAK,EAAE,iBAAiB,CAAA;CACzB,CAAA;AAED,KAAK,iBAAiB,GAClB;IACE,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;CAClB,GACD;IACE,IAAI,EAAE,WAAW,CAAA;CAClB,CAAA;AAEL,MAAM,MAAM,gBAAgB,GAAG,YAAY,CAAC,QAAQ,EAAE,iBAAiB,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,QAAQ,CAAC,CAAA;AAErG,eAAO,MAAM,YAAY,EAAE,gBA8BvB,CAAA"}
|
package/dist/make-sqlite-db.js
CHANGED
|
@@ -2,10 +2,6 @@ import { SqliteDbHelper, SqliteError, } from '@livestore/common';
|
|
|
2
2
|
import { EventSequenceNumber } from '@livestore/common/schema';
|
|
3
3
|
import { ensureUint8ArrayBuffer, shouldNeverHappen } from '@livestore/utils';
|
|
4
4
|
import { Effect } from '@livestore/utils/effect';
|
|
5
|
-
// TODO remove `expo-file-system` dependency once expo-sqlite supports `import`
|
|
6
|
-
// // @ts-expect-error package misses `exports`
|
|
7
|
-
// import * as ExpoFs from 'expo-file-system/src/next'
|
|
8
|
-
// import * as ExpoFs from 'expo-file-system'
|
|
9
5
|
import * as SQLite from 'expo-sqlite';
|
|
10
6
|
export const makeSqliteDb = (input) => Effect.gen(function* () {
|
|
11
7
|
// console.log('makeSqliteDb', input)
|
|
@@ -41,7 +37,7 @@ const makeSqliteDb_ = ({ db, metadata, }) => {
|
|
|
41
37
|
_tag: 'SqliteDb',
|
|
42
38
|
debug: {
|
|
43
39
|
// Setting initially to root but will be set to correct value shortly after
|
|
44
|
-
head: EventSequenceNumber.ROOT,
|
|
40
|
+
head: EventSequenceNumber.Client.ROOT,
|
|
45
41
|
},
|
|
46
42
|
prepare: (queryStr) => {
|
|
47
43
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make-sqlite-db.js","sourceRoot":"","sources":["../src/make-sqlite-db.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,cAAc,EACd,WAAW,GACZ,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD
|
|
1
|
+
{"version":3,"file":"make-sqlite-db.js","sourceRoot":"","sources":["../src/make-sqlite-db.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { WebChannel } from '@livestore/utils/effect';
|
|
2
|
-
export declare const makeShutdownChannel: (storeId: string) => import("effect/Effect").Effect<WebChannel.WebChannel<import("@livestore/common").
|
|
2
|
+
export declare const makeShutdownChannel: (storeId: string) => import("effect/Effect").Effect<WebChannel.WebChannel<import("@livestore/common").UnknownError | import("@livestore/common").IntentionalShutdownCause | import("@livestore/common").IsOfflineError | import("@livestore/common").InvalidPushError | import("@livestore/common").InvalidPullError | import("@livestore/common").MaterializeError, import("@livestore/common").UnknownError | import("@livestore/common").IntentionalShutdownCause | import("@livestore/common").IsOfflineError | import("@livestore/common").InvalidPushError | import("@livestore/common").InvalidPullError | import("@livestore/common").MaterializeError, never>, never, import("effect/Scope").Scope>;
|
|
3
3
|
//# sourceMappingURL=shutdown-channel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shutdown-channel.d.ts","sourceRoot":"","sources":["../src/shutdown-channel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAGpD,eAAO,MAAM,mBAAmB,GAAI,SAAS,MAAM,
|
|
1
|
+
{"version":3,"file":"shutdown-channel.d.ts","sourceRoot":"","sources":["../src/shutdown-channel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAGpD,eAAO,MAAM,mBAAmB,GAAI,SAAS,MAAM,4pBAI/C,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@livestore/adapter-expo",
|
|
3
|
-
"version": "0.4.0-dev.
|
|
3
|
+
"version": "0.4.0-dev.20",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"exports": {
|
|
@@ -8,15 +8,14 @@
|
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"@opentelemetry/api": "1.9.0",
|
|
11
|
-
"@livestore/common": "0.4.0-dev.
|
|
12
|
-
"@livestore/utils": "0.4.0-dev.
|
|
13
|
-
"@livestore/webmesh": "0.4.0-dev.
|
|
11
|
+
"@livestore/common": "0.4.0-dev.20",
|
|
12
|
+
"@livestore/utils": "0.4.0-dev.20",
|
|
13
|
+
"@livestore/webmesh": "0.4.0-dev.20"
|
|
14
14
|
},
|
|
15
15
|
"devDependencies": {
|
|
16
|
-
"expo-application": "^
|
|
17
|
-
"expo-
|
|
18
|
-
"
|
|
19
|
-
"react-native": "^0.79.5"
|
|
16
|
+
"expo-application": "^7.0.7",
|
|
17
|
+
"expo-sqlite": "^16.0.8",
|
|
18
|
+
"react-native": "^0.81.4"
|
|
20
19
|
},
|
|
21
20
|
"files": [
|
|
22
21
|
"package.json",
|
|
@@ -25,9 +24,8 @@
|
|
|
25
24
|
],
|
|
26
25
|
"license": "Apache-2.0",
|
|
27
26
|
"peerDependencies": {
|
|
28
|
-
"expo-application": "^
|
|
29
|
-
"expo-
|
|
30
|
-
"expo-sqlite": "^15.2.14"
|
|
27
|
+
"expo-application": "^7.0.7",
|
|
28
|
+
"expo-sqlite": "^16.0.8"
|
|
31
29
|
},
|
|
32
30
|
"publishConfig": {
|
|
33
31
|
"access": "public"
|
package/src/index.ts
CHANGED
|
@@ -5,11 +5,12 @@ import {
|
|
|
5
5
|
type BootStatus,
|
|
6
6
|
ClientSessionLeaderThreadProxy,
|
|
7
7
|
Devtools,
|
|
8
|
+
IntentionalShutdownCause,
|
|
8
9
|
type LockStatus,
|
|
9
10
|
liveStoreStorageFormatVersion,
|
|
10
11
|
makeClientSession,
|
|
11
12
|
type SyncOptions,
|
|
12
|
-
|
|
13
|
+
UnknownError,
|
|
13
14
|
} from '@livestore/common'
|
|
14
15
|
import type { DevtoolsOptions, LeaderSqliteDb } from '@livestore/common/leader-thread'
|
|
15
16
|
import { Eventlog, LeaderThreadCtx, makeLeaderThreadLayer } from '@livestore/common/leader-thread'
|
|
@@ -17,7 +18,17 @@ import type { LiveStoreSchema } from '@livestore/common/schema'
|
|
|
17
18
|
import { LiveStoreEvent } from '@livestore/common/schema'
|
|
18
19
|
import { shouldNeverHappen } from '@livestore/utils'
|
|
19
20
|
import type { Schema, Scope } from '@livestore/utils/effect'
|
|
20
|
-
import {
|
|
21
|
+
import {
|
|
22
|
+
Effect,
|
|
23
|
+
Exit,
|
|
24
|
+
FetchHttpClient,
|
|
25
|
+
Fiber,
|
|
26
|
+
Layer,
|
|
27
|
+
Queue,
|
|
28
|
+
Schedule,
|
|
29
|
+
Stream,
|
|
30
|
+
SubscriptionRef,
|
|
31
|
+
} from '@livestore/utils/effect'
|
|
21
32
|
import * as Webmesh from '@livestore/webmesh'
|
|
22
33
|
import * as ExpoApplication from 'expo-application'
|
|
23
34
|
import * as SQLite from 'expo-sqlite'
|
|
@@ -43,13 +54,21 @@ export type MakeDbOptions = {
|
|
|
43
54
|
clientId?: string
|
|
44
55
|
/** @default 'static' */
|
|
45
56
|
sessionId?: string
|
|
57
|
+
/**
|
|
58
|
+
* Warning: This will reset both the app and eventlog database. This should only be used during development.
|
|
59
|
+
*
|
|
60
|
+
* @default false
|
|
61
|
+
*/
|
|
62
|
+
resetPersistence?: boolean
|
|
46
63
|
}
|
|
47
64
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
65
|
+
// Expo Go with the New Architecture enables Fabric and TurboModules, but may not run in "bridgeless" mode.
|
|
66
|
+
// Rely on Fabric/TurboModules feature detection instead of RN$Bridgeless.
|
|
67
|
+
const IS_NEW_ARCH =
|
|
68
|
+
// Fabric global – set when the new renderer is enabled
|
|
69
|
+
Boolean((globalThis as any).nativeFabricUIManager) ||
|
|
70
|
+
// TurboModule proxy – indicates new arch TurboModules
|
|
71
|
+
Boolean((globalThis as any).__turboModuleProxy)
|
|
53
72
|
|
|
54
73
|
// TODO refactor with leader-thread code from `@livestore/common/leader-thread`
|
|
55
74
|
export const makePersistedAdapter =
|
|
@@ -57,16 +76,23 @@ export const makePersistedAdapter =
|
|
|
57
76
|
(adapterArgs) =>
|
|
58
77
|
Effect.gen(function* () {
|
|
59
78
|
if (IS_NEW_ARCH === false) {
|
|
60
|
-
return yield*
|
|
79
|
+
return yield* UnknownError.make({
|
|
61
80
|
cause: new Error(
|
|
62
81
|
'The LiveStore Expo adapter requires the new React Native architecture (aka Fabric). See https://docs.expo.dev/guides/new-architecture',
|
|
63
82
|
),
|
|
64
83
|
})
|
|
65
84
|
}
|
|
66
85
|
|
|
67
|
-
const { schema, shutdown, devtoolsEnabled, storeId, bootStatusQueue,
|
|
86
|
+
const { schema, shutdown, devtoolsEnabled, storeId, bootStatusQueue, syncPayloadEncoded, syncPayloadSchema } =
|
|
87
|
+
adapterArgs
|
|
68
88
|
|
|
69
|
-
const {
|
|
89
|
+
const {
|
|
90
|
+
storage,
|
|
91
|
+
clientId = yield* getDeviceId,
|
|
92
|
+
sessionId = 'static',
|
|
93
|
+
sync: syncOptions,
|
|
94
|
+
resetPersistence = false,
|
|
95
|
+
} = options
|
|
70
96
|
|
|
71
97
|
yield* Queue.offer(bootStatusQueue, { stage: 'loading' })
|
|
72
98
|
|
|
@@ -74,6 +100,12 @@ export const makePersistedAdapter =
|
|
|
74
100
|
|
|
75
101
|
const shutdownChannel = yield* makeShutdownChannel(storeId)
|
|
76
102
|
|
|
103
|
+
if (resetPersistence === true) {
|
|
104
|
+
yield* shutdownChannel.send(IntentionalShutdownCause.make({ reason: 'adapter-reset' }))
|
|
105
|
+
|
|
106
|
+
yield* resetExpoPersistence({ storeId, storage, schema })
|
|
107
|
+
}
|
|
108
|
+
|
|
77
109
|
yield* shutdownChannel.listen.pipe(
|
|
78
110
|
Stream.flatten(),
|
|
79
111
|
Stream.tap((cause) =>
|
|
@@ -85,7 +117,7 @@ export const makePersistedAdapter =
|
|
|
85
117
|
Effect.forkScoped,
|
|
86
118
|
)
|
|
87
119
|
|
|
88
|
-
const devtoolsUrl = getDevtoolsUrl().toString()
|
|
120
|
+
const devtoolsUrl = devtoolsEnabled ? getDevtoolsUrl().toString() : 'ws://127.0.0.1:4242'
|
|
89
121
|
|
|
90
122
|
const { leaderThread, initialSnapshot } = yield* makeLeaderThread({
|
|
91
123
|
storeId,
|
|
@@ -96,7 +128,8 @@ export const makePersistedAdapter =
|
|
|
96
128
|
storage: storage ?? {},
|
|
97
129
|
devtoolsEnabled,
|
|
98
130
|
bootStatusQueue,
|
|
99
|
-
|
|
131
|
+
syncPayloadEncoded,
|
|
132
|
+
syncPayloadSchema,
|
|
100
133
|
devtoolsUrl,
|
|
101
134
|
})
|
|
102
135
|
|
|
@@ -128,10 +161,11 @@ export const makePersistedAdapter =
|
|
|
128
161
|
|
|
129
162
|
return () => {}
|
|
130
163
|
},
|
|
164
|
+
origin: undefined,
|
|
131
165
|
})
|
|
132
166
|
|
|
133
167
|
return clientSession
|
|
134
|
-
}).pipe(
|
|
168
|
+
}).pipe(UnknownError.mapToUnknownError, Effect.provide(FetchHttpClient.layer), Effect.tapCauseLogPretty)
|
|
135
169
|
|
|
136
170
|
const makeLeaderThread = ({
|
|
137
171
|
storeId,
|
|
@@ -142,7 +176,8 @@ const makeLeaderThread = ({
|
|
|
142
176
|
storage,
|
|
143
177
|
devtoolsEnabled,
|
|
144
178
|
bootStatusQueue: bootStatusQueueClientSession,
|
|
145
|
-
|
|
179
|
+
syncPayloadEncoded,
|
|
180
|
+
syncPayloadSchema,
|
|
146
181
|
devtoolsUrl,
|
|
147
182
|
}: {
|
|
148
183
|
storeId: string
|
|
@@ -155,21 +190,19 @@ const makeLeaderThread = ({
|
|
|
155
190
|
}
|
|
156
191
|
devtoolsEnabled: boolean
|
|
157
192
|
bootStatusQueue: Queue.Queue<BootStatus>
|
|
158
|
-
|
|
193
|
+
syncPayloadEncoded: Schema.JsonValue | undefined
|
|
194
|
+
syncPayloadSchema: Schema.Schema<any> | undefined
|
|
159
195
|
devtoolsUrl: string
|
|
160
196
|
}) =>
|
|
161
197
|
Effect.gen(function* () {
|
|
162
|
-
const
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
schema.state.sqlite.migrations.strategy === 'manual' ? 'fixed' : schema.state.sqlite.hash.toString()
|
|
168
|
-
const stateDatabaseName = `${'livestore-'}${schemaHashSuffix}@${liveStoreStorageFormatVersion}.db`
|
|
169
|
-
const dbEventlogPath = `${'livestore-'}eventlog@${liveStoreStorageFormatVersion}.db`
|
|
198
|
+
const { directory, stateDatabaseName, eventlogDatabaseName } = resolveExpoPersistencePaths({
|
|
199
|
+
storeId,
|
|
200
|
+
storage,
|
|
201
|
+
schema,
|
|
202
|
+
})
|
|
170
203
|
|
|
171
204
|
const dbState = yield* makeSqliteDb({ _tag: 'file', databaseName: stateDatabaseName, directory })
|
|
172
|
-
const dbEventlog = yield* makeSqliteDb({ _tag: 'file', databaseName:
|
|
205
|
+
const dbEventlog = yield* makeSqliteDb({ _tag: 'file', databaseName: eventlogDatabaseName, directory })
|
|
173
206
|
|
|
174
207
|
const devtoolsOptions = yield* makeDevtoolsOptions({
|
|
175
208
|
devtoolsEnabled,
|
|
@@ -192,7 +225,8 @@ const makeLeaderThread = ({
|
|
|
192
225
|
shutdownChannel: yield* makeShutdownChannel(storeId),
|
|
193
226
|
storeId,
|
|
194
227
|
syncOptions,
|
|
195
|
-
|
|
228
|
+
syncPayloadEncoded,
|
|
229
|
+
syncPayloadSchema,
|
|
196
230
|
}).pipe(Layer.provideMerge(FetchHttpClient.layer)),
|
|
197
231
|
)
|
|
198
232
|
|
|
@@ -204,6 +238,7 @@ const makeLeaderThread = ({
|
|
|
204
238
|
extraIncomingMessagesQueue,
|
|
205
239
|
initialState,
|
|
206
240
|
bootStatusQueue,
|
|
241
|
+
networkStatus,
|
|
207
242
|
} = yield* LeaderThreadCtx
|
|
208
243
|
|
|
209
244
|
const bootStatusFiber = yield* Queue.takeBetween(bootStatusQueue, 1, 1000).pipe(
|
|
@@ -227,7 +262,7 @@ const makeLeaderThread = ({
|
|
|
227
262
|
push: (batch) =>
|
|
228
263
|
syncProcessor
|
|
229
264
|
.push(
|
|
230
|
-
batch.map((item) => new LiveStoreEvent.EncodedWithMeta(item)),
|
|
265
|
+
batch.map((item) => new LiveStoreEvent.Client.EncodedWithMeta(item)),
|
|
231
266
|
{ waitForProcessing: true },
|
|
232
267
|
)
|
|
233
268
|
.pipe(Effect.provide(layer), Effect.scoped),
|
|
@@ -235,8 +270,9 @@ const makeLeaderThread = ({
|
|
|
235
270
|
initialState: { leaderHead: initialLeaderHead, migrationsReport: initialState.migrationsReport },
|
|
236
271
|
export: Effect.sync(() => db.export()),
|
|
237
272
|
getEventlogData: Effect.sync(() => dbEventlog.export()),
|
|
238
|
-
|
|
273
|
+
syncState: syncProcessor.syncState,
|
|
239
274
|
sendDevtoolsMessage: (message) => extraIncomingMessagesQueue.offer(message),
|
|
275
|
+
networkStatus,
|
|
240
276
|
})
|
|
241
277
|
|
|
242
278
|
const initialSnapshot = db.export()
|
|
@@ -245,6 +281,57 @@ const makeLeaderThread = ({
|
|
|
245
281
|
}).pipe(Effect.provide(layer))
|
|
246
282
|
})
|
|
247
283
|
|
|
284
|
+
const resolveExpoPersistencePaths = ({
|
|
285
|
+
storeId,
|
|
286
|
+
storage,
|
|
287
|
+
schema,
|
|
288
|
+
}: {
|
|
289
|
+
storeId: string
|
|
290
|
+
storage: { subDirectory?: string } | undefined
|
|
291
|
+
schema: LiveStoreSchema
|
|
292
|
+
}) => {
|
|
293
|
+
const subDirectory = storage?.subDirectory ? `${storage.subDirectory.replace(/\/$/, '')}/` : ''
|
|
294
|
+
const pathJoin = (...paths: string[]) => paths.join('/').replaceAll(/\/+/g, '/')
|
|
295
|
+
const directory = pathJoin(SQLite.defaultDatabaseDirectory, subDirectory, storeId)
|
|
296
|
+
|
|
297
|
+
const schemaHashSuffix =
|
|
298
|
+
schema.state.sqlite.migrations.strategy === 'manual' ? 'fixed' : schema.state.sqlite.hash.toString()
|
|
299
|
+
const stateDatabaseName = `livestore-${schemaHashSuffix}@${liveStoreStorageFormatVersion}.db`
|
|
300
|
+
const eventlogDatabaseName = `livestore-eventlog@${liveStoreStorageFormatVersion}.db`
|
|
301
|
+
|
|
302
|
+
return { directory, stateDatabaseName, eventlogDatabaseName }
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
const resetExpoPersistence = ({
|
|
306
|
+
storeId,
|
|
307
|
+
storage,
|
|
308
|
+
schema,
|
|
309
|
+
}: {
|
|
310
|
+
storeId: string
|
|
311
|
+
storage: MakeDbOptions['storage']
|
|
312
|
+
schema: LiveStoreSchema
|
|
313
|
+
}) =>
|
|
314
|
+
Effect.try({
|
|
315
|
+
try: () => {
|
|
316
|
+
const { directory, stateDatabaseName, eventlogDatabaseName } = resolveExpoPersistencePaths({
|
|
317
|
+
storeId,
|
|
318
|
+
storage,
|
|
319
|
+
schema,
|
|
320
|
+
})
|
|
321
|
+
|
|
322
|
+
SQLite.deleteDatabaseSync(stateDatabaseName, directory)
|
|
323
|
+
SQLite.deleteDatabaseSync(eventlogDatabaseName, directory)
|
|
324
|
+
},
|
|
325
|
+
catch: (cause) =>
|
|
326
|
+
new UnknownError({
|
|
327
|
+
cause,
|
|
328
|
+
note: `@livestore/adapter-expo: Failed to reset persistence for store ${storeId}`,
|
|
329
|
+
}),
|
|
330
|
+
}).pipe(
|
|
331
|
+
Effect.retry({ schedule: Schedule.exponentialBackoff10Sec }),
|
|
332
|
+
Effect.withSpan('@livestore/adapter-expo:resetPersistence', { attributes: { storeId } }),
|
|
333
|
+
)
|
|
334
|
+
|
|
248
335
|
const makeDevtoolsOptions = ({
|
|
249
336
|
devtoolsEnabled,
|
|
250
337
|
devtoolsUrl,
|
|
@@ -259,7 +346,7 @@ const makeDevtoolsOptions = ({
|
|
|
259
346
|
dbEventlog: LeaderSqliteDb
|
|
260
347
|
storeId: string
|
|
261
348
|
clientId: string
|
|
262
|
-
}): Effect.Effect<DevtoolsOptions,
|
|
349
|
+
}): Effect.Effect<DevtoolsOptions, UnknownError, Scope.Scope> =>
|
|
263
350
|
Effect.sync(() => {
|
|
264
351
|
if (devtoolsEnabled === false) {
|
|
265
352
|
return {
|
package/src/make-sqlite-db.ts
CHANGED
|
@@ -9,10 +9,6 @@ import {
|
|
|
9
9
|
import { EventSequenceNumber } from '@livestore/common/schema'
|
|
10
10
|
import { ensureUint8ArrayBuffer, shouldNeverHappen } from '@livestore/utils'
|
|
11
11
|
import { Effect } from '@livestore/utils/effect'
|
|
12
|
-
// TODO remove `expo-file-system` dependency once expo-sqlite supports `import`
|
|
13
|
-
// // @ts-expect-error package misses `exports`
|
|
14
|
-
// import * as ExpoFs from 'expo-file-system/src/next'
|
|
15
|
-
// import * as ExpoFs from 'expo-file-system'
|
|
16
12
|
import * as SQLite from 'expo-sqlite'
|
|
17
13
|
|
|
18
14
|
type Metadata = {
|
|
@@ -80,7 +76,7 @@ const makeSqliteDb_ = <TMetadata extends Metadata>({
|
|
|
80
76
|
_tag: 'SqliteDb',
|
|
81
77
|
debug: {
|
|
82
78
|
// Setting initially to root but will be set to correct value shortly after
|
|
83
|
-
head: EventSequenceNumber.ROOT,
|
|
79
|
+
head: EventSequenceNumber.Client.ROOT,
|
|
84
80
|
},
|
|
85
81
|
prepare: (queryStr) => {
|
|
86
82
|
try {
|