@aerogel/plugin-local-first 0.0.0 → 0.1.0-next.c4b24f52d8b652bd5c14c2d12e1b38b779ab7682
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/aerogel-plugin-local-first.d.ts +48 -17
- package/dist/aerogel-plugin-local-first.js +1219 -1232
- package/dist/aerogel-plugin-local-first.js.map +1 -1
- package/package.json +5 -5
- package/src/components/Account.vue +9 -0
- package/src/components/AccountLoggedIn.vue +85 -0
- package/src/components/AccountLoggedOut.vue +26 -0
- package/src/components/AccountLoginModal.vue +36 -0
- package/src/components/AccountModal.vue +206 -0
- package/src/components/index.ts +5 -3
- package/src/components/settings/PurgeData.vue +43 -0
- package/src/components/settings/index.ts +10 -0
- package/src/index.css +1 -0
- package/src/index.ts +5 -1
- package/src/jobs/Migrate.test.ts +1 -1
- package/src/jobs/Migrate.ts +8 -1
- package/src/jobs/Sync.test.ts +313 -35
- package/src/jobs/Sync.ts +183 -77
- package/src/jobs/mixins/LoadsChildren.ts +48 -31
- package/src/jobs/mixins/LoadsTypeIndex.ts +7 -5
- package/src/jobs/mixins/TracksLocalModels.ts +4 -4
- package/src/lib/mirroring.ts +45 -21
- package/src/services/Cloud.ts +84 -25
- package/src/services/DocumentsCache.ts +6 -2
- package/src/testing/cloud.ts +1 -1
- package/src/testing/setup.ts +3 -2
- package/src/testing/stubs/Person.schema.ts +9 -0
- package/src/testing/stubs/Person.ts +18 -0
- package/src/testing/stubs/Post.schema.ts +17 -0
- package/src/testing/stubs/Post.ts +18 -0
- package/dist/InruptAuthenticator.lazy-BvpQLGoj-BvpQLGoj.js +0 -9
- package/dist/InruptAuthenticator.lazy-BvpQLGoj-BvpQLGoj.js.map +0 -1
- package/dist/LegacyAuthenticator.lazy-ChFFqP14-ChFFqP14.js +0 -5
- package/dist/LegacyAuthenticator.lazy-ChFFqP14-ChFFqP14.js.map +0 -1
- package/src/components/AGCloudStatus.vue +0 -31
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AcceptRefs } from '@aerogel/core';
|
|
1
2
|
import { Authenticator } from '@aerogel/plugin-solid';
|
|
2
3
|
import { ComponentOptionsMixin } from 'vue';
|
|
3
4
|
import { ComponentProvideOptions } from 'vue';
|
|
@@ -9,6 +10,7 @@ import { Facade } from '@noeldemartin/utils';
|
|
|
9
10
|
import { Job } from '@aerogel/core';
|
|
10
11
|
import { JobListener } from '@aerogel/core';
|
|
11
12
|
import { JobStatus } from '@aerogel/core';
|
|
13
|
+
import { ModalExpose } from '@aerogel/core';
|
|
12
14
|
import { Nullable } from '@noeldemartin/utils';
|
|
13
15
|
import { ObjectsMap } from '@noeldemartin/utils';
|
|
14
16
|
import { Plugin as Plugin_2 } from '@aerogel/core';
|
|
@@ -16,6 +18,7 @@ import { PublicProps } from 'vue';
|
|
|
16
18
|
import { Replace } from '@aerogel/core';
|
|
17
19
|
import { Semaphore } from '@noeldemartin/utils';
|
|
18
20
|
import { ServiceWithState } from '@aerogel/core';
|
|
21
|
+
import { ShallowUnwrapRef } from 'vue';
|
|
19
22
|
import { SolidContainer } from 'soukai-solid';
|
|
20
23
|
import { SolidDocument } from 'soukai-solid';
|
|
21
24
|
import { SolidModel } from 'soukai-solid';
|
|
@@ -24,11 +27,17 @@ import { SolidSchemaDefinition } from 'soukai-solid';
|
|
|
24
27
|
import { SolidTypeIndex } from 'soukai-solid';
|
|
25
28
|
import { Tombstone } from 'soukai-solid';
|
|
26
29
|
|
|
27
|
-
export declare const
|
|
28
|
-
|
|
29
|
-
}, string, PublicProps, Readonly<{}> & Readonly<{
|
|
30
|
-
|
|
31
|
-
}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {},
|
|
30
|
+
export declare const Account: DefineComponent< {}, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
|
|
31
|
+
|
|
32
|
+
export declare const AccountLoggedIn: DefineComponent< {}, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, HTMLDivElement>;
|
|
33
|
+
|
|
34
|
+
export declare const AccountLoggedOut: DefineComponent< {}, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
|
|
35
|
+
|
|
36
|
+
export declare const AccountLoginModal: DefineComponent< {}, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
|
|
37
|
+
|
|
38
|
+
export declare const AccountModal: DefineComponent< {}, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {
|
|
39
|
+
$modalRef: ShallowUnwrapRef<AcceptRefs<ModalExpose<void>>> | null;
|
|
40
|
+
}, any>;
|
|
32
41
|
|
|
33
42
|
export declare const Cloud: Facade<CloudService>;
|
|
34
43
|
|
|
@@ -63,6 +72,8 @@ export declare class CloudService extends _default {
|
|
|
63
72
|
protected login(authenticator: Authenticator): void;
|
|
64
73
|
protected logout(): void;
|
|
65
74
|
private syncOnStartup;
|
|
75
|
+
private bustDocumentsCache;
|
|
76
|
+
private registerModels;
|
|
66
77
|
}
|
|
67
78
|
|
|
68
79
|
declare const CloudStatus: {
|
|
@@ -126,27 +137,30 @@ declare class LoadsChildren {
|
|
|
126
137
|
protected loadContainedModels(model: SolidContainer, options?: {
|
|
127
138
|
ignoreTombstones?: boolean;
|
|
128
139
|
status?: ResourceJobStatus;
|
|
129
|
-
|
|
130
|
-
|
|
140
|
+
onDocumentLoaded?: () => unknown;
|
|
141
|
+
onDocumentError?: (error: unknown) => unknown;
|
|
142
|
+
onDocumentRead?: (document: SolidDocument) => unknown;
|
|
131
143
|
}): Promise<SolidModel[]>;
|
|
132
|
-
protected loadDocumentChildren(model:
|
|
144
|
+
protected loadDocumentChildren(model: SolidContainer, documentUrl: string, documents: ObjectsMap<SolidDocument>, onDocumentError?: (error: unknown) => unknown, onDocumentRead?: (document: SolidDocument) => unknown): Promise<{
|
|
133
145
|
children: Record<string, SolidModel[]>;
|
|
134
146
|
tombstones: Tombstone[];
|
|
135
147
|
}>;
|
|
136
148
|
protected loadDocumentChildrenFromLocal(model: SolidModel, document: SolidDocument): Promise<Record<string, SolidModel[]>>;
|
|
137
|
-
protected loadDocumentChildrenFromRemote(model:
|
|
149
|
+
protected loadDocumentChildrenFromRemote(model: SolidContainer, documentUrl: string, onDocumentError?: (error: unknown) => unknown, onDocumentRead?: (document: SolidDocument) => unknown): Promise<{
|
|
138
150
|
children: Record<string, SolidModel[]>;
|
|
139
151
|
tombstones: Tombstone[];
|
|
140
152
|
}>;
|
|
141
153
|
}
|
|
142
154
|
|
|
143
155
|
declare class LoadsTypeIndex {
|
|
144
|
-
protected loadTypeIndex(options: {
|
|
145
|
-
create: true;
|
|
146
|
-
}): Promise<SolidTypeIndex>;
|
|
147
156
|
protected loadTypeIndex(options?: {
|
|
148
|
-
create
|
|
157
|
+
create?: false;
|
|
158
|
+
fresh?: boolean;
|
|
149
159
|
}): Promise<SolidTypeIndex | null>;
|
|
160
|
+
protected loadTypeIndex(options?: {
|
|
161
|
+
create?: true;
|
|
162
|
+
fresh?: boolean;
|
|
163
|
+
}): Promise<SolidTypeIndex>;
|
|
150
164
|
}
|
|
151
165
|
|
|
152
166
|
declare function localFirst(): Plugin_2;
|
|
@@ -156,6 +170,7 @@ export declare type LocalFirstServices = typeof services;
|
|
|
156
170
|
|
|
157
171
|
declare class Migrate extends Migrate_base {
|
|
158
172
|
static restore(status: MigrateJobStatus): Migrate;
|
|
173
|
+
constructor();
|
|
159
174
|
protected _models?: SolidModel[];
|
|
160
175
|
get models(): SolidModel[] | undefined;
|
|
161
176
|
set models(models: SolidModel[] | undefined);
|
|
@@ -195,21 +210,28 @@ declare const services: {
|
|
|
195
210
|
};
|
|
196
211
|
|
|
197
212
|
declare class Sync extends Sync_base {
|
|
213
|
+
readonly documentsWithErrors: Set<string>;
|
|
198
214
|
protected models?: SolidModel[];
|
|
199
215
|
protected dirtyRemoteModels?: SolidModel[];
|
|
200
216
|
protected rootLocalModels: SolidModel[];
|
|
201
217
|
protected tombstones: ObjectsMap<Tombstone>;
|
|
202
|
-
protected
|
|
218
|
+
protected syncedModelUrls: Set<string>;
|
|
203
219
|
protected documentsModifiedAt: Record<string, Date>;
|
|
220
|
+
protected screenLock: Promise<void | {
|
|
221
|
+
release(): Promise<void>;
|
|
222
|
+
}> | null;
|
|
204
223
|
protected localModels: ObjectsMap<SolidModel>;
|
|
205
224
|
constructor(models?: SolidModel[]);
|
|
206
225
|
protected run(): Promise<void>;
|
|
226
|
+
protected lockScreen(): void;
|
|
227
|
+
protected releaseScreen(): void;
|
|
207
228
|
protected getInitialStatus(): SyncJobStatus;
|
|
208
229
|
protected calculateCurrentProgress(status?: JobStatus): number;
|
|
209
230
|
private pullChanges;
|
|
210
231
|
private pushChanges;
|
|
211
232
|
private fetchRemoteModels;
|
|
212
233
|
private fetchRemoteModelsForLocal;
|
|
234
|
+
private getTypeRegistrations;
|
|
213
235
|
private updateTypeRegistrations;
|
|
214
236
|
private loadChildren;
|
|
215
237
|
private deleteChild;
|
|
@@ -218,7 +240,8 @@ declare class Sync extends Sync_base {
|
|
|
218
240
|
private reconcileInconsistencies;
|
|
219
241
|
private synchronizeContainerDocuments;
|
|
220
242
|
private rememberModelDocuments;
|
|
221
|
-
private
|
|
243
|
+
private ignoringDocumentErrors;
|
|
244
|
+
private handleDocumentError;
|
|
222
245
|
}
|
|
223
246
|
|
|
224
247
|
declare const Sync_base: typeof Job<JobListener, SyncJobStatus, SyncJobStatus> & Cr<LoadsChildren & LoadsTypeIndex & TracksLocalModels>;
|
|
@@ -229,9 +252,10 @@ declare interface SyncJobStatus extends JobStatus {
|
|
|
229
252
|
}
|
|
230
253
|
|
|
231
254
|
export declare interface SyncOptions extends JobListener {
|
|
232
|
-
refreshUserProfile?: boolean;
|
|
233
255
|
model?: SolidModel;
|
|
234
256
|
models?: SolidModel[];
|
|
257
|
+
refreshUserProfile?: boolean;
|
|
258
|
+
syncDirty?: boolean;
|
|
235
259
|
}
|
|
236
260
|
|
|
237
261
|
declare interface SyncPullJobStatus extends JobStatus {
|
|
@@ -241,7 +265,7 @@ declare interface SyncPullJobStatus extends JobStatus {
|
|
|
241
265
|
declare type TCloudStatus = (typeof CloudStatus)[keyof typeof CloudStatus];
|
|
242
266
|
|
|
243
267
|
declare class TracksLocalModels {
|
|
244
|
-
protected localModels
|
|
268
|
+
protected localModels: ObjectsMap<SolidModel>;
|
|
245
269
|
protected indexLocalModels(models: SolidModel[]): Promise<void>;
|
|
246
270
|
protected addLocalModel(localModel: SolidModel): Promise<void>;
|
|
247
271
|
}
|
|
@@ -267,3 +291,10 @@ declare module '@aerogel/core' {
|
|
|
267
291
|
'cloud:sync-completed': SolidModel[] | undefined;
|
|
268
292
|
}
|
|
269
293
|
}
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
declare module 'soukai-solid' {
|
|
297
|
+
namespace SolidModel {
|
|
298
|
+
const cloud: boolean | RegisterOptions | undefined;
|
|
299
|
+
}
|
|
300
|
+
}
|