@comapeo/core 2.0.1 → 2.1.0

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.
Files changed (71) hide show
  1. package/dist/blob-store/index.d.ts +5 -8
  2. package/dist/blob-store/index.d.ts.map +1 -1
  3. package/dist/constants.d.ts +2 -1
  4. package/dist/constants.d.ts.map +1 -1
  5. package/dist/core-manager/index.d.ts +10 -0
  6. package/dist/core-manager/index.d.ts.map +1 -1
  7. package/dist/datastore/index.d.ts +5 -4
  8. package/dist/datastore/index.d.ts.map +1 -1
  9. package/dist/generated/extensions.d.ts +31 -0
  10. package/dist/generated/extensions.d.ts.map +1 -1
  11. package/dist/index.d.ts +2 -0
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/lib/drizzle-helpers.d.ts +6 -0
  14. package/dist/lib/drizzle-helpers.d.ts.map +1 -0
  15. package/dist/lib/error.d.ts +37 -0
  16. package/dist/lib/error.d.ts.map +1 -0
  17. package/dist/lib/get-own.d.ts +9 -0
  18. package/dist/lib/get-own.d.ts.map +1 -0
  19. package/dist/lib/is-hostname-ip-address.d.ts +17 -0
  20. package/dist/lib/is-hostname-ip-address.d.ts.map +1 -0
  21. package/dist/lib/ws-core-replicator.d.ts +11 -0
  22. package/dist/lib/ws-core-replicator.d.ts.map +1 -0
  23. package/dist/mapeo-manager.d.ts +18 -22
  24. package/dist/mapeo-manager.d.ts.map +1 -1
  25. package/dist/mapeo-project.d.ts +448 -15
  26. package/dist/mapeo-project.d.ts.map +1 -1
  27. package/dist/member-api.d.ts +40 -1
  28. package/dist/member-api.d.ts.map +1 -1
  29. package/dist/schema/client.d.ts +17 -5
  30. package/dist/schema/client.d.ts.map +1 -1
  31. package/dist/schema/project.d.ts +210 -0
  32. package/dist/schema/project.d.ts.map +1 -1
  33. package/dist/sync/peer-sync-controller.d.ts.map +1 -1
  34. package/dist/sync/sync-api.d.ts +28 -2
  35. package/dist/sync/sync-api.d.ts.map +1 -1
  36. package/dist/types.d.ts +3 -2
  37. package/dist/types.d.ts.map +1 -1
  38. package/drizzle/client/0001_chubby_cargill.sql +12 -0
  39. package/drizzle/client/meta/0001_snapshot.json +208 -0
  40. package/drizzle/client/meta/_journal.json +7 -0
  41. package/drizzle/project/0001_medical_wendell_rand.sql +22 -0
  42. package/drizzle/project/meta/0001_snapshot.json +1267 -0
  43. package/drizzle/project/meta/_journal.json +7 -0
  44. package/package.json +9 -5
  45. package/src/blob-store/index.js +3 -2
  46. package/src/constants.js +4 -1
  47. package/src/core-manager/index.js +58 -2
  48. package/src/datastore/README.md +1 -2
  49. package/src/datastore/index.js +4 -5
  50. package/src/fastify-plugins/blobs.js +1 -0
  51. package/src/generated/extensions.d.ts +31 -0
  52. package/src/generated/extensions.js +150 -0
  53. package/src/generated/extensions.ts +181 -0
  54. package/src/index.js +10 -0
  55. package/src/invite-api.js +1 -1
  56. package/src/lib/drizzle-helpers.js +79 -0
  57. package/src/lib/error.js +47 -0
  58. package/src/lib/get-own.js +10 -0
  59. package/src/lib/is-hostname-ip-address.js +26 -0
  60. package/src/lib/ws-core-replicator.js +47 -0
  61. package/src/mapeo-manager.js +71 -43
  62. package/src/mapeo-project.js +153 -43
  63. package/src/member-api.js +253 -2
  64. package/src/schema/client.js +4 -3
  65. package/src/schema/project.js +7 -0
  66. package/src/sync/peer-sync-controller.js +1 -0
  67. package/src/sync/sync-api.js +171 -3
  68. package/src/types.ts +4 -3
  69. package/dist/lib/timing-safe-equal.d.ts +0 -15
  70. package/dist/lib/timing-safe-equal.d.ts.map +0 -1
  71. package/src/lib/timing-safe-equal.js +0 -34
@@ -6,11 +6,13 @@
6
6
  * ProjectSettingsValue
7
7
  * } from '@comapeo/schema'
8
8
  */
9
+ /** @import { Promisable } from 'type-fest' */
9
10
  /** @import { Invite, InviteResponse } from './generated/rpc.js' */
10
11
  /** @import { DataType } from './datatype/index.js' */
11
12
  /** @import { DataStore } from './datastore/index.js' */
12
13
  /** @import { deviceInfoTable } from './schema/project.js' */
13
14
  /** @import { projectSettingsTable } from './schema/client.js' */
15
+ /** @import { ReplicationStream } from './types.js' */
14
16
  /** @typedef {DataType<DataStore<'config'>, typeof deviceInfoTable, "deviceInfo", DeviceInfo, DeviceInfoValue>} DeviceInfoDataType */
15
17
  /** @typedef {DataType<DataStore<'config'>, typeof projectSettingsTable, "projectSettings", ProjectSettings, ProjectSettingsValue>} ProjectDataType */
16
18
  /**
@@ -20,6 +22,8 @@
20
22
  * @prop {DeviceInfo['name']} [name]
21
23
  * @prop {DeviceInfo['deviceType']} [deviceType]
22
24
  * @prop {DeviceInfo['createdAt']} [joinedAt]
25
+ * @prop {object} [selfHostedServerDetails]
26
+ * @prop {string} selfHostedServerDetails.baseUrl
23
27
  */
24
28
  export class MemberApi extends TypedEmitter<import("tiny-typed-emitter").DefaultListener> {
25
29
  /**
@@ -28,19 +32,25 @@ export class MemberApi extends TypedEmitter<import("tiny-typed-emitter").Default
28
32
  * @param {import('./roles.js').Roles} opts.roles
29
33
  * @param {import('./core-ownership.js').CoreOwnership} opts.coreOwnership
30
34
  * @param {import('./generated/keys.js').EncryptionKeys} opts.encryptionKeys
35
+ * @param {() => Promisable<undefined | string>} opts.getProjectName
31
36
  * @param {Buffer} opts.projectKey
32
37
  * @param {import('./local-peers.js').LocalPeers} opts.rpc
38
+ * @param {() => ReplicationStream} opts.getReplicationStream
39
+ * @param {(deviceId: string, abortSignal: AbortSignal) => Promise<void>} opts.waitForInitialSyncWithPeer
33
40
  * @param {Object} opts.dataTypes
34
41
  * @param {Pick<DeviceInfoDataType, 'getByDocId' | 'getMany'>} opts.dataTypes.deviceInfo
35
42
  * @param {Pick<ProjectDataType, 'getByDocId'>} opts.dataTypes.project
36
43
  */
37
- constructor({ deviceId, roles, coreOwnership, encryptionKeys, projectKey, rpc, dataTypes, }: {
44
+ constructor({ deviceId, roles, coreOwnership, encryptionKeys, getProjectName, projectKey, rpc, getReplicationStream, waitForInitialSyncWithPeer, dataTypes, }: {
38
45
  deviceId: string;
39
46
  roles: import("./roles.js").Roles;
40
47
  coreOwnership: import("./core-ownership.js").CoreOwnership;
41
48
  encryptionKeys: import("./generated/keys.js").EncryptionKeys;
49
+ getProjectName: () => Promisable<undefined | string>;
42
50
  projectKey: Buffer;
43
51
  rpc: import("./local-peers.js").LocalPeers;
52
+ getReplicationStream: () => ReplicationStream;
53
+ waitForInitialSyncWithPeer: (deviceId: string, abortSignal: AbortSignal) => Promise<void>;
44
54
  dataTypes: {
45
55
  deviceInfo: Pick<DeviceInfoDataType, "getByDocId" | "getMany">;
46
56
  project: Pick<ProjectDataType, "getByDocId">;
@@ -77,6 +87,30 @@ export class MemberApi extends TypedEmitter<import("tiny-typed-emitter").Default
77
87
  * @returns {void}
78
88
  */
79
89
  requestCancelInvite(deviceId: string): void;
90
+ /**
91
+ * Add a server peer.
92
+ *
93
+ * Can reject with any of the following error codes (accessed via `err.code`):
94
+ *
95
+ * - `INVALID_URL`: the base URL is invalid, likely due to user error.
96
+ * - `MISSING_DATA`: some required data is missing in order to add the server
97
+ * peer. For example, the project must have a name.
98
+ * - `NETWORK_ERROR`: there was an issue connecting to the server. Is the
99
+ * device online? Is the server online?
100
+ * - `INVALID_SERVER_RESPONSE`: we connected to the server but it returned
101
+ * an unexpected response. Is the server running a compatible version of
102
+ * CoMapeo Cloud?
103
+ *
104
+ * If `err.code` is not specified, that indicates a bug in this module.
105
+ *
106
+ * @param {string} baseUrl
107
+ * @param {object} [options]
108
+ * @param {boolean} [options.dangerouslyAllowInsecureConnections] Allow insecure network connections. Should only be used in tests.
109
+ * @returns {Promise<void>}
110
+ */
111
+ addServerPeer(baseUrl: string, { dangerouslyAllowInsecureConnections }?: {
112
+ dangerouslyAllowInsecureConnections?: boolean | undefined;
113
+ } | undefined): Promise<void>;
80
114
  /**
81
115
  * @param {string} deviceId
82
116
  * @returns {Promise<MemberInfo>}
@@ -102,9 +136,14 @@ export type MemberInfo = {
102
136
  name?: string | undefined;
103
137
  deviceType?: "UNRECOGNIZED" | "device_type_unspecified" | "mobile" | "tablet" | "desktop" | "selfHostedServer" | undefined;
104
138
  joinedAt?: string | undefined;
139
+ selfHostedServerDetails?: {
140
+ baseUrl: string;
141
+ } | undefined;
105
142
  };
106
143
  import { TypedEmitter } from 'tiny-typed-emitter';
107
144
  import { InviteResponse_Decision } from './generated/rpc.js';
145
+ import type { Promisable } from 'type-fest';
146
+ import type { ReplicationStream } from './types.js';
108
147
  import type { DataStore } from './datastore/index.js';
109
148
  import type { deviceInfoTable } from './schema/project.js';
110
149
  import type { DeviceInfo } from '@comapeo/schema';
@@ -1 +1 @@
1
- {"version":3,"file":"member-api.d.ts","sourceRoot":"","sources":["../src/member-api.js"],"names":[],"mappings":"AAeA;;;;;;;GAOG;AACH,mEAAmE;AACnE,sDAAsD;AACtD,wDAAwD;AACxD,6DAA6D;AAC7D,iEAAiE;AAEjE,qIAAqI;AACrI,sJAAsJ;AACtJ;;;;;;;GAOG;AAEH;IAYE;;;;;;;;;;;OAWG;IACH,6FAVG;QAAqB,QAAQ,EAArB,MAAM;QAC2B,KAAK,EAAtC,OAAO,YAAY,EAAE,KAAK;QACwB,aAAa,EAA/D,OAAO,qBAAqB,EAAE,aAAa;QACQ,cAAc,EAAjE,OAAO,qBAAqB,EAAE,cAAc;QAC/B,UAAU,EAAvB,MAAM;QACsC,GAAG,EAA/C,OAAO,kBAAkB,EAAE,UAAU;QACxB,SAAS,EAC9B;YAA2E,UAAU,EAA7E,IAAI,CAAC,kBAAkB,EAAE,YAAY,GAAG,SAAS,CAAC;YACE,OAAO,EAA3D,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC;SAC7C;KAAA,EAkBA;IAED;;;;;;;;;;;;;;;OAeG;IACH,iBAZW,MAAM,8DAEd;QAAsD,MAAM,EAApD,OAAO,YAAY,EAAE,kBAAkB;QACzB,QAAQ;QACR,eAAe;QACf,kBAAkB;KACxC,GAAU,OAAO,CAAC,CACpB,OAAW,uBAAuB,CAAC,MAAM,GACzC,OAAW,uBAAuB,CAAC,MAAM,GACzC,OAAW,uBAAuB,CAAC,OAAO,CACvC,CAAC,CAuFJ;IAmDD;;;;;;;OAOG;IACH,8BAHW,MAAM,GACJ,IAAI,CAIhB;IAED;;;OAGG;IACH,kBAHW,MAAM,GACJ,OAAO,CAAC,UAAU,CAAC,CA4B/B;IAED;;OAEG;IACH,WAFa,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAmCtC;IAED;;;;OAIG;IACH,qBAJW,MAAM,UACN,OAAO,YAAY,EAAE,wBAAwB,GAC3C,OAAO,CAAC,IAAI,CAAC,CAIzB;;CACF;iCAxSa,SAAS,UAAU,QAAQ,CAAC,EAAE,sBAAsB,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,CAAC;8BAChG,SAAS,UAAU,QAAQ,CAAC,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,eAAe,EAAE,oBAAoB,CAAC;;cAGxH,MAAM;UACN,OAAO,YAAY,EAAE,IAAI;;;;;6BAjCN,oBAAoB;wCAET,oBAAoB;+BAsB7B,sBAAsB;qCAChB,qBAAqB;gCALhD,iBAAiB;qCAAjB,iBAAiB;8BAGG,qBAAqB;0CAGT,oBAAoB;qCANpD,iBAAiB;0CAAjB,iBAAiB"}
1
+ {"version":3,"file":"member-api.d.ts","sourceRoot":"","sources":["../src/member-api.js"],"names":[],"mappings":"AAqBA;;;;;;;GAOG;AACH,8CAA8C;AAC9C,mEAAmE;AACnE,sDAAsD;AACtD,wDAAwD;AACxD,6DAA6D;AAC7D,iEAAiE;AACjE,sDAAsD;AAEtD,qIAAqI;AACrI,sJAAsJ;AACtJ;;;;;;;;;GASG;AAEH;IAeE;;;;;;;;;;;;;;OAcG;IACH,+JAbG;QAAqB,QAAQ,EAArB,MAAM;QAC2B,KAAK,EAAtC,OAAO,YAAY,EAAE,KAAK;QACwB,aAAa,EAA/D,OAAO,qBAAqB,EAAE,aAAa;QACQ,cAAc,EAAjE,OAAO,qBAAqB,EAAE,cAAc;QACD,cAAc,EAAzD,MAAM,WAAW,SAAS,GAAG,MAAM,CAAC;QACvB,UAAU,EAAvB,MAAM;QACsC,GAAG,EAA/C,OAAO,kBAAkB,EAAE,UAAU;QACP,oBAAoB,EAAlD,MAAM,iBAAiB;QAC6C,0BAA0B,EAA9F,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC;QAChD,SAAS,EAC9B;YAA2E,UAAU,EAA7E,IAAI,CAAC,kBAAkB,EAAE,YAAY,GAAG,SAAS,CAAC;YACE,OAAO,EAA3D,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC;SAC7C;KAAA,EAwBA;IAED;;;;;;;;;;;;;;;OAeG;IACH,iBAZW,MAAM,8DAEd;QAAsD,MAAM,EAApD,OAAO,YAAY,EAAE,kBAAkB;QACzB,QAAQ;QACR,eAAe;QACf,kBAAkB;KACxC,GAAU,OAAO,CAAC,CACpB,OAAW,uBAAuB,CAAC,MAAM,GACzC,OAAW,uBAAuB,CAAC,MAAM,GACzC,OAAW,uBAAuB,CAAC,OAAO,CACvC,CAAC,CAuFJ;IAmDD;;;;;;;OAOG;IACH,8BAHW,MAAM,GACJ,IAAI,CAIhB;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,uBALW,MAAM;;oBAGJ,OAAO,CAAC,IAAI,CAAC,CAqBzB;IAuID;;;OAGG;IACH,kBAHW,MAAM,GACJ,OAAO,CAAC,UAAU,CAAC,CA4B/B;IAED;;OAEG;IACH,WAFa,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAqCtC;IAED;;;;OAIG;IACH,qBAJW,MAAM,UACN,OAAO,YAAY,EAAE,wBAAwB,GAC3C,OAAO,CAAC,IAAI,CAAC,CAIzB;;CACF;iCAvea,SAAS,UAAU,QAAQ,CAAC,EAAE,sBAAsB,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,CAAC;8BAChG,SAAS,UAAU,QAAQ,CAAC,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,eAAe,EAAE,oBAAoB,CAAC;;cAGxH,MAAM;UACN,OAAO,YAAY,EAAE,IAAI;;;;;iBAKzB,MAAM;;;6BA5Ca,oBAAoB;wCAET,oBAAoB;gCAwB5B,WAAW;uCAMJ,YAAY;+BAHpB,sBAAsB;qCAChB,qBAAqB;gCANhD,iBAAiB;qCAAjB,iBAAiB;8BAIG,qBAAqB;0CAGT,oBAAoB;qCAPpD,iBAAiB;0CAAjB,iBAAiB"}
@@ -246,13 +246,13 @@ export const projectKeysTable: import("drizzle-orm/sqlite-core").SQLiteTableWith
246
246
  };
247
247
  dialect: "sqlite";
248
248
  }>;
249
- export const localDeviceInfoTable: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
250
- name: "localDeviceInfo";
249
+ export const deviceSettingsTable: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
250
+ name: "deviceSettings";
251
251
  schema: undefined;
252
252
  columns: {
253
253
  deviceId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
254
254
  name: "deviceId";
255
- tableName: "localDeviceInfo";
255
+ tableName: "deviceSettings";
256
256
  dataType: "string";
257
257
  columnType: "SQLiteText";
258
258
  data: string;
@@ -264,12 +264,24 @@ export const localDeviceInfoTable: import("drizzle-orm/sqlite-core").SQLiteTable
264
264
  }, object>;
265
265
  deviceInfo: import("drizzle-orm/sqlite-core").SQLiteColumn<{
266
266
  name: "deviceInfo";
267
- tableName: "localDeviceInfo";
267
+ tableName: "deviceSettings";
268
268
  dataType: "custom";
269
269
  columnType: "SQLiteCustomColumn";
270
270
  data: DeviceInfoParam;
271
271
  driverParam: unknown;
272
- notNull: true;
272
+ notNull: false;
273
+ hasDefault: false;
274
+ enumValues: undefined;
275
+ baseColumn: never;
276
+ }, object>;
277
+ isArchiveDevice: import("drizzle-orm/sqlite-core").SQLiteColumn<{
278
+ name: "isArchiveDevice";
279
+ tableName: "deviceSettings";
280
+ dataType: "boolean";
281
+ columnType: "SQLiteBoolean";
282
+ data: boolean;
283
+ driverParam: number;
284
+ notNull: false;
273
285
  hasDefault: false;
274
286
  enumValues: undefined;
275
287
  baseColumn: never;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/schema/client.js"],"names":[],"mappings":"AAsBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAGC;AACD;;;;;;;;;;;;;;;;;;GAAuE;AACvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAYE;AAYF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAGE;;;;8BAZW,IAAI,CAAC,OAAO,iBAAiB,EAAE,eAAe,EAAE,YAAY,CAAC"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/schema/client.js"],"names":[],"mappings":"AAsBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAGC;AACD;;;;;;;;;;;;;;;;;;GAAuE;AACvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAYE;AAYF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAIE;;;;8BAbW,IAAI,CAAC,OAAO,iBAAiB,EAAE,eAAe,EAAE,YAAY,CAAC"}
@@ -551,6 +551,183 @@ export const trackTable: import("drizzle-orm/sqlite-core").SQLiteTableWithColumn
551
551
  };
552
552
  dialect: "sqlite";
553
553
  }>;
554
+ export const remoteDetectionAlertTable: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
555
+ name: "remoteDetectionAlert";
556
+ schema: undefined;
557
+ columns: {
558
+ readonly docId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
559
+ name: "docId";
560
+ tableName: "remoteDetectionAlert";
561
+ dataType: "string";
562
+ columnType: "SQLiteText";
563
+ data: string;
564
+ driverParam: string;
565
+ notNull: true;
566
+ hasDefault: false;
567
+ enumValues: [string, ...string[]];
568
+ baseColumn: never;
569
+ }, object>;
570
+ readonly versionId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
571
+ name: "versionId";
572
+ tableName: "remoteDetectionAlert";
573
+ dataType: "string";
574
+ columnType: "SQLiteText";
575
+ data: string;
576
+ driverParam: string;
577
+ notNull: true;
578
+ hasDefault: false;
579
+ enumValues: [string, ...string[]];
580
+ baseColumn: never;
581
+ }, object>;
582
+ readonly originalVersionId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
583
+ name: "originalVersionId";
584
+ tableName: "remoteDetectionAlert";
585
+ dataType: "string";
586
+ columnType: "SQLiteText";
587
+ data: string;
588
+ driverParam: string;
589
+ notNull: true;
590
+ hasDefault: false;
591
+ enumValues: [string, ...string[]];
592
+ baseColumn: never;
593
+ }, object>;
594
+ readonly schemaName: import("drizzle-orm/sqlite-core").SQLiteColumn<{
595
+ name: "schemaName";
596
+ tableName: "remoteDetectionAlert";
597
+ dataType: "string";
598
+ columnType: "SQLiteText";
599
+ data: "remoteDetectionAlert";
600
+ driverParam: string;
601
+ notNull: true;
602
+ hasDefault: false;
603
+ enumValues: ["remoteDetectionAlert"];
604
+ baseColumn: never;
605
+ }, object>;
606
+ readonly createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
607
+ name: "createdAt";
608
+ tableName: "remoteDetectionAlert";
609
+ dataType: "string";
610
+ columnType: "SQLiteText";
611
+ data: string;
612
+ driverParam: string;
613
+ notNull: true;
614
+ hasDefault: false;
615
+ enumValues: [string, ...string[]];
616
+ baseColumn: never;
617
+ }, object>;
618
+ readonly updatedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
619
+ name: "updatedAt";
620
+ tableName: "remoteDetectionAlert";
621
+ dataType: "string";
622
+ columnType: "SQLiteText";
623
+ data: string;
624
+ driverParam: string;
625
+ notNull: true;
626
+ hasDefault: false;
627
+ enumValues: [string, ...string[]];
628
+ baseColumn: never;
629
+ }, object>;
630
+ readonly links: import("drizzle-orm/sqlite-core").SQLiteColumn<{
631
+ name: "links";
632
+ tableName: "remoteDetectionAlert";
633
+ dataType: "custom";
634
+ columnType: "SQLiteCustomColumn";
635
+ data: string[];
636
+ driverParam: string;
637
+ notNull: true;
638
+ hasDefault: false;
639
+ enumValues: undefined;
640
+ baseColumn: never;
641
+ }, object>;
642
+ readonly deleted: import("drizzle-orm/sqlite-core").SQLiteColumn<{
643
+ name: "deleted";
644
+ tableName: "remoteDetectionAlert";
645
+ dataType: "boolean";
646
+ columnType: "SQLiteBoolean";
647
+ data: boolean;
648
+ driverParam: number;
649
+ notNull: true;
650
+ hasDefault: false;
651
+ enumValues: undefined;
652
+ baseColumn: never;
653
+ }, object>;
654
+ readonly detectionDateStart: import("drizzle-orm/sqlite-core").SQLiteColumn<{
655
+ name: "detectionDateStart";
656
+ tableName: "remoteDetectionAlert";
657
+ dataType: "string";
658
+ columnType: "SQLiteText";
659
+ data: string;
660
+ driverParam: string;
661
+ notNull: true;
662
+ hasDefault: false;
663
+ enumValues: [string, ...string[]];
664
+ baseColumn: never;
665
+ }, object>;
666
+ readonly detectionDateEnd: import("drizzle-orm/sqlite-core").SQLiteColumn<{
667
+ name: "detectionDateEnd";
668
+ tableName: "remoteDetectionAlert";
669
+ dataType: "string";
670
+ columnType: "SQLiteText";
671
+ data: string;
672
+ driverParam: string;
673
+ notNull: true;
674
+ hasDefault: false;
675
+ enumValues: [string, ...string[]];
676
+ baseColumn: never;
677
+ }, object>;
678
+ readonly sourceId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
679
+ name: "sourceId";
680
+ tableName: "remoteDetectionAlert";
681
+ dataType: "string";
682
+ columnType: "SQLiteText";
683
+ data: string;
684
+ driverParam: string;
685
+ notNull: true;
686
+ hasDefault: false;
687
+ enumValues: [string, ...string[]];
688
+ baseColumn: never;
689
+ }, object>;
690
+ readonly metadata: import("drizzle-orm/sqlite-core").SQLiteColumn<{
691
+ name: "metadata";
692
+ tableName: "remoteDetectionAlert";
693
+ dataType: "custom";
694
+ columnType: "SQLiteCustomColumn";
695
+ data: {
696
+ [k: string]: string | number | boolean | (string | number | boolean | null)[] | null;
697
+ };
698
+ driverParam: string;
699
+ notNull: true;
700
+ hasDefault: false;
701
+ enumValues: undefined;
702
+ baseColumn: never;
703
+ }, object>;
704
+ readonly geometry: import("drizzle-orm/sqlite-core").SQLiteColumn<{
705
+ name: "geometry";
706
+ tableName: "remoteDetectionAlert";
707
+ dataType: "custom";
708
+ columnType: "SQLiteCustomColumn";
709
+ data: import("@comapeo/schema/dist/schema/remoteDetectionAlert.js").Geometry;
710
+ driverParam: string;
711
+ notNull: true;
712
+ hasDefault: false;
713
+ enumValues: undefined;
714
+ baseColumn: never;
715
+ }, object>;
716
+ forks: import("drizzle-orm/sqlite-core").SQLiteColumn<{
717
+ name: "forks";
718
+ tableName: "remoteDetectionAlert";
719
+ dataType: "custom";
720
+ columnType: "SQLiteCustomColumn";
721
+ data: string[];
722
+ driverParam: string;
723
+ notNull: true;
724
+ hasDefault: false;
725
+ enumValues: undefined;
726
+ baseColumn: never;
727
+ }, object>;
728
+ };
729
+ dialect: "sqlite";
730
+ }>;
554
731
  export const presetTable: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
555
732
  name: "preset";
556
733
  schema: undefined;
@@ -1444,6 +1621,20 @@ export const deviceInfoTable: import("drizzle-orm/sqlite-core").SQLiteTableWithC
1444
1621
  enumValues: ["device_type_unspecified", "mobile", "tablet", "desktop", "selfHostedServer", "UNRECOGNIZED"];
1445
1622
  baseColumn: never;
1446
1623
  }, object>;
1624
+ readonly selfHostedServerDetails: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1625
+ name: "selfHostedServerDetails";
1626
+ tableName: "deviceInfo";
1627
+ dataType: "custom";
1628
+ columnType: "SQLiteCustomColumn";
1629
+ data: {
1630
+ baseUrl: string;
1631
+ } | undefined;
1632
+ driverParam: string;
1633
+ notNull: false;
1634
+ hasDefault: false;
1635
+ enumValues: undefined;
1636
+ baseColumn: never;
1637
+ }, object>;
1447
1638
  forks: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1448
1639
  name: "forks";
1449
1640
  tableName: "deviceInfo";
@@ -1664,6 +1855,25 @@ export const trackBacklinkTable: import("drizzle-orm/sqlite-core").SQLiteTableWi
1664
1855
  };
1665
1856
  dialect: "sqlite";
1666
1857
  }>;
1858
+ export const remoteDetectionAlertBacklinkTable: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
1859
+ name: string;
1860
+ schema: undefined;
1861
+ columns: {
1862
+ versionId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1863
+ name: "versionId";
1864
+ tableName: string;
1865
+ dataType: "string";
1866
+ columnType: "SQLiteText";
1867
+ data: string;
1868
+ driverParam: string;
1869
+ notNull: true;
1870
+ hasDefault: false;
1871
+ enumValues: [string, ...string[]];
1872
+ baseColumn: never;
1873
+ }, object>;
1874
+ };
1875
+ dialect: "sqlite";
1876
+ }>;
1667
1877
  export const presetBacklinkTable: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
1668
1878
  name: string;
1669
1879
  schema: undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/schema/project.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/schema/project.js"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"peer-sync-controller.d.ts","sourceRoot":"","sources":["../../src/sync/peer-sync-controller.js"],"names":[],"mappings":"AAKA,6DAA6D;AAC7D,0CAA0C;AAC1C,wDAAwD;AACxD,+CAA+C;AAC/C,iFAAiF;AAEjF;;GAEG;AAEH;IAsBE;;;;;;;OAOG;IACH,iEANG;QAAoD,QAAQ,EAApD,OAAO,UAAU,EAAE,iBAAiB,CAAC;QACgB,WAAW,EAAhE,OAAO,0BAA0B,EAAE,WAAW;QACJ,SAAS,EAAnD,OAAO,iBAAiB,EAAE,SAAS;QACD,KAAK,EAAvC,OAAO,aAAa,EAAE,KAAK;QACb,MAAM;KAAC,EAkB/B;IAED,sBAEC;IAED,qBAEC;IAED,gGAEC;IAED,iDAAiD;IACjD,sCADY,gBAAgB,QAO3B;IAED;;OAEG;IACH,iCAFW,MAAM,QAoBhB;;CAoMF;wBAGY,GAAG,SAAsB,IAAT,SAAS,CAAC,CAAC,EAAE,OAAO,sBAAsB,EAAE,kBAAkB,GAAE;yBAG/E,MAAM,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;6BAvSpD,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,GAAG,SAAS;sCALV,eAAe;uCAEd,uCAAuC;uBAPvD,cAAc;+BAMN,aAAa;0BAFlB,aAAa"}
1
+ {"version":3,"file":"peer-sync-controller.d.ts","sourceRoot":"","sources":["../../src/sync/peer-sync-controller.js"],"names":[],"mappings":"AAKA,6DAA6D;AAC7D,0CAA0C;AAC1C,wDAAwD;AACxD,+CAA+C;AAC/C,iFAAiF;AAEjF;;GAEG;AAEH;IAsBE;;;;;;;OAOG;IACH,iEANG;QAAoD,QAAQ,EAApD,OAAO,UAAU,EAAE,iBAAiB,CAAC;QACgB,WAAW,EAAhE,OAAO,0BAA0B,EAAE,WAAW;QACJ,SAAS,EAAnD,OAAO,iBAAiB,EAAE,SAAS;QACD,KAAK,EAAvC,OAAO,aAAa,EAAE,KAAK;QACb,MAAM;KAAC,EAkB/B;IAED,sBAEC;IAED,qBAEC;IAED,gGAEC;IAED,iDAAiD;IACjD,sCADY,gBAAgB,QAO3B;IAED;;OAEG;IACH,iCAFW,MAAM,QAoBhB;;CAqMF;wBAGY,GAAG,SAAsB,IAAT,SAAS,CAAC,CAAC,EAAE,OAAO,sBAAsB,EAAE,kBAAkB,GAAE;yBAG/E,MAAM,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;6BAxSpD,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,GAAG,SAAS;sCALV,eAAe;uCAEd,uCAAuC;uBAPvD,cAAc;+BAMN,aAAa;0BAFlB,aAAa"}
@@ -1,10 +1,14 @@
1
1
  /** @import { CoreOwnership as CoreOwnershipDoc } from '@comapeo/schema' */
2
+ /** @import * as http from 'node:http' */
2
3
  /** @import { CoreOwnership } from '../core-ownership.js' */
3
4
  /** @import { OpenedNoiseStream } from '../lib/noise-secret-stream-helpers.js' */
5
+ /** @import { ReplicationStream } from '../types.js' */
4
6
  export const kHandleDiscoveryKey: unique symbol;
5
7
  export const kSyncState: unique symbol;
6
8
  export const kRequestFullStop: unique symbol;
7
9
  export const kRescindFullStopRequest: unique symbol;
10
+ export const kWaitForInitialSyncWithPeer: unique symbol;
11
+ export const kSetBlobDownloadFilter: unique symbol;
8
12
  /**
9
13
  * @typedef {'initial' | 'full'} SyncType
10
14
  */
@@ -39,18 +43,23 @@ export const kRescindFullStopRequest: unique symbol;
39
43
  */
40
44
  export class SyncApi extends TypedEmitter<SyncEvents> {
41
45
  /**
42
- *
43
46
  * @param {object} opts
44
47
  * @param {import('../core-manager/index.js').CoreManager} opts.coreManager
45
48
  * @param {CoreOwnership} opts.coreOwnership
46
49
  * @param {import('../roles.js').Roles} opts.roles
50
+ * @param {() => Promise<Iterable<string>>} opts.getServerWebsocketUrls
51
+ * @param {() => ReplicationStream} opts.getReplicationStream
52
+ * @param {import('../types.js').BlobFilter | null} opts.blobDownloadFilter
47
53
  * @param {number} [opts.throttleMs]
48
54
  * @param {Logger} [opts.logger]
49
55
  */
50
- constructor({ coreManager, throttleMs, roles, logger, coreOwnership }: {
56
+ constructor({ coreManager, throttleMs, roles, getServerWebsocketUrls, getReplicationStream, logger, coreOwnership, blobDownloadFilter, }: {
51
57
  coreManager: import("../core-manager/index.js").CoreManager;
52
58
  coreOwnership: CoreOwnership;
53
59
  roles: import("../roles.js").Roles;
60
+ getServerWebsocketUrls: () => Promise<Iterable<string>>;
61
+ getReplicationStream: () => ReplicationStream;
62
+ blobDownloadFilter: import("../types.js").BlobFilter | null;
54
63
  throttleMs?: number | undefined;
55
64
  logger?: Logger | undefined;
56
65
  });
@@ -59,6 +68,14 @@ export class SyncApi extends TypedEmitter<SyncEvents> {
59
68
  * @returns {State}
60
69
  */
61
70
  getState(): State;
71
+ /**
72
+ * @returns {void}
73
+ */
74
+ connectServers(): void;
75
+ /**
76
+ * @returns {void}
77
+ */
78
+ disconnectServers(): void;
62
79
  /**
63
80
  * Start syncing data cores.
64
81
  *
@@ -89,6 +106,8 @@ export class SyncApi extends TypedEmitter<SyncEvents> {
89
106
  * @returns {Promise<void>}
90
107
  */
91
108
  waitForSync(type: SyncType): Promise<void>;
109
+ /** @param {import('../types.js').BlobFilter | null} blobDownloadFilter */
110
+ [kSetBlobDownloadFilter](blobDownloadFilter: import("../types.js").BlobFilter | null): void;
92
111
  [kHandleDiscoveryKey](discoveryKey: Buffer, protomux: import("protomux")<import("@hyperswarm/secret-stream")>): void;
93
112
  /**
94
113
  * Request a graceful stop to all sync.
@@ -98,6 +117,12 @@ export class SyncApi extends TypedEmitter<SyncEvents> {
98
117
  * Rescind any requests for a full stop.
99
118
  */
100
119
  [kRescindFullStopRequest](): void;
120
+ /**
121
+ * @param {string} deviceId
122
+ * @param {AbortSignal} abortSignal
123
+ * @returns {Promise<void>}
124
+ */
125
+ [kWaitForInitialSyncWithPeer](deviceId: string, abortSignal: AbortSignal): Promise<void>;
101
126
  [kSyncState]: SyncState;
102
127
  #private;
103
128
  }
@@ -154,5 +179,6 @@ export type SyncEvents = {
154
179
  import { TypedEmitter } from 'tiny-typed-emitter';
155
180
  import { SyncState } from './sync-state.js';
156
181
  import type { CoreOwnership } from '../core-ownership.js';
182
+ import type { ReplicationStream } from '../types.js';
157
183
  import { Logger } from '../logger.js';
158
184
  //# sourceMappingURL=sync-api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync-api.d.ts","sourceRoot":"","sources":["../../src/sync/sync-api.js"],"names":[],"mappings":"AAWA,2EAA2E;AAC3E,4DAA4D;AAC5D,iFAAiF;AAEjF,gDAAiE;AACjE,uCAA8C;AAC9C,6CAAoD;AACpD,oDAA2D;AAE3D;;GAEG;AAEH;;GAEG;AAEH;;;;;;GAMG;AAEH;;;;;GAKG;AAEH;;;;;GAKG;AAEH;;;GAGG;AAEH;;GAEG;AACH;IAsBE;;;;;;;;OAQG;IACH,uEANG;QAA6D,WAAW,EAAhE,OAAO,0BAA0B,EAAE,WAAW;QAC1B,aAAa,EAAjC,aAAa;QACqB,KAAK,EAAvC,OAAO,aAAa,EAAE,KAAK;QACb,UAAU;QACV,MAAM;KAAC,EAoC/B;IA8BD;;;OAGG;IACH,YAFa,KAAK,CAIjB;IAqHD;;;;;;;;;;OAUG;IACH;;yBAOC;IAED;;;;OAIG;IACH,aAGC;IAkBD;;;OAGG;IACH,kDAHW,IAAI,GAAG,MAAM,GACX,IAAI,CAOhB;IAED;;;OAGG;IACH,kBAHW,QAAQ,GACN,OAAO,CAAC,IAAI,CAAC,CAazB;oFApH4B,2BAG7B;IAuEA;;OAEG;IACH,2BAGC;IAED;;OAEG;IACH,kCAGC;IAjOC,wBAKE;;CAuYL;uBAtdY,SAAS,GAAG,MAAM;+BAIlB,MAAM,GAAG,SAAS,GAAG,KAAK;;;;;mBAMzB,OAAO;;;;UACP,MAAM;;;;YACN,MAAM;;;;;;;;;aAMN,mCAAmC;;;;UACnC,mCAAmC;;;;;;aAKnC;QAAE,aAAa,EAAE,OAAO,CAAA;KAAE;;;;UAC1B;QAAE,aAAa,EAAE,OAAO,CAAA;KAAE;;;;2BAC1B,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC;;;kBAKrC,CAAC,SAAS,EAAE,KAAK,KAAK,IAAI;;6BApDX,oBAAoB;0BACvB,iBAAiB;mCAWR,sBAAsB;uBATlC,cAAc"}
1
+ {"version":3,"file":"sync-api.d.ts","sourceRoot":"","sources":["../../src/sync/sync-api.js"],"names":[],"mappings":"AAcA,2EAA2E;AAC3E,yCAAyC;AACzC,4DAA4D;AAC5D,iFAAiF;AACjF,uDAAuD;AAEvD,gDAAiE;AACjE,uCAA8C;AAC9C,6CAAoD;AACpD,oDAA2D;AAC3D,wDAEC;AACD,mDAAmE;AAEnE;;GAEG;AAEH;;GAEG;AAEH;;;;;;GAMG;AAEH;;;;;GAKG;AAEH;;;;;GAKG;AAEH;;;GAGG;AAEH;;GAEG;AACH;IA4BE;;;;;;;;;;OAUG;IACH,0IATG;QAA6D,WAAW,EAAhE,OAAO,0BAA0B,EAAE,WAAW;QAC1B,aAAa,EAAjC,aAAa;QACqB,KAAK,EAAvC,OAAO,aAAa,EAAE,KAAK;QACW,sBAAsB,EAA5D,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACD,oBAAoB,EAAlD,MAAM,iBAAiB;QACuB,kBAAkB,EAAhE,OAAO,aAAa,EAAE,UAAU,GAAG,IAAI;QACzB,UAAU;QACV,MAAM;KAAC,EAgD/B;IAuCD;;;OAGG;IACH,YAFa,KAAK,CAIjB;IAqHD;;OAEG;IACH,kBAFa,IAAI,CAsDhB;IAED;;OAEG;IACH,qBAFa,IAAI,CAQhB;IAED;;;;;;;;;;OAUG;IACH;;yBAOC;IAED;;;;OAIG;IACH,aAGC;IAkBD;;;OAGG;IACH,kDAHW,IAAI,GAAG,MAAM,GACX,IAAI,CAOhB;IAED;;;OAGG;IACH,kBAHW,QAAQ,GACN,OAAO,CAAC,IAAI,CAAC,CAazB;IA5SD,0EAA0E;IAC1E,6CADY,OAAO,aAAa,EAAE,UAAU,GAAG,IAAI,QAOlD;oFA8E4E,2BACtD;IA4KvB;;OAEG;IACH,2BAGC;IAED;;OAEG;IACH,kCAGC;IA8BD;;;;OAIG;IACH,wCAJW,MAAM,eACN,WAAW,GACT,OAAO,CAAC,IAAI,CAAC,CA6BzB;IA5WC,wBAKE;;CAyfL;uBA5lBY,SAAS,GAAG,MAAM;+BAIlB,MAAM,GAAG,SAAS,GAAG,KAAK;;;;;mBAMzB,OAAO;;;;UACP,MAAM;;;;YACN,MAAM;;;;;;;;;aAMN,mCAAmC;;;;UACnC,mCAAmC;;;;;;aAKnC;QAAE,aAAa,EAAE,OAAO,CAAA;KAAE;;;;UAC1B;QAAE,aAAa,EAAE,OAAO,CAAA;KAAE;;;;2BAC1B,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC;;;kBAKrC,CAAC,SAAS,EAAE,KAAK,KAAK,IAAI;;6BA7DX,oBAAoB;0BAEvB,iBAAiB;mCAcR,sBAAsB;uCAElB,aAAa;uBAd7B,cAAc"}
package/dist/types.d.ts CHANGED
@@ -25,10 +25,11 @@ type BlobIdBase<T extends BlobType> = {
25
25
  export type BlobId = Simplify<ValueOf<{
26
26
  [KeyType in BlobType]: BlobIdBase<KeyType>;
27
27
  }>>;
28
- type ArrayAtLeastOne<T> = [T, ...T[]];
29
28
  export type BlobFilter = RequireAtLeastOne<{
30
- [KeyType in BlobType]: ArrayAtLeastOne<BlobVariant<KeyType>>;
29
+ [KeyType in BlobType]: Array<BlobVariant<KeyType>>;
31
30
  }>;
31
+ /** Map of blob types to array of blob variants */
32
+ export type GenericBlobFilter = Record<string, string[]>;
32
33
  export type MapeoDocMap = {
33
34
  [K in MapeoDoc['schemaName']]: Extract<MapeoDoc, {
34
35
  schemaName: K;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,YAAY,EACZ,OAAO,EACP,iBAAiB,EACjB,WAAW,EACZ,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AAC/D,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAC3E,OAAO,KAAK,cAAc,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAA;AACpC,OAAO,KAAK,WAAW,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,mBAAmB,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEhD,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAA;AAEnD,KAAK,qBAAqB,GAAG,OAAO,uBAAuB,CAAA;AAC3D,MAAM,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAA;AAClD,MAAM,MAAM,WAAW,CAAC,SAAS,SAAS,QAAQ,IAAI,YAAY,CAChE,qBAAqB,CAAC,SAAS,CAAC,CACjC,CAAA;AAED,KAAK,UAAU,CAAC,CAAC,SAAS,QAAQ,IAAI;IACpC,mBAAmB;IACnB,IAAI,EAAE,CAAC,CAAA;IACP,oFAAoF;IACpF,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;IACvB,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAA;IACZ,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAGD,MAAM,MAAM,MAAM,GAAG,QAAQ,CAC3B,OAAO,CAAC;KACL,OAAO,IAAI,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC;CAC3C,CAAC,CACH,CAAA;AAED,KAAK,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;AAErC,MAAM,MAAM,UAAU,GAAG,iBAAiB,CAAC;KACxC,OAAO,IAAI,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;CAC7D,CAAC,CAAA;AAEF,MAAM,MAAM,WAAW,GAAG;KACvB,CAAC,IAAI,QAAQ,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,QAAQ,EAAE;QAAE,UAAU,EAAE,CAAC,CAAA;KAAE,CAAC;CACpE,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;KACzB,CAAC,IAAI,UAAU,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,UAAU,EAAE;QAAE,UAAU,EAAE,CAAC,CAAA;KAAE,CAAC;CACxE,CAAA;AAGD,MAAM,MAAM,2BAA2B,GAAG,OAAO,CAC/C,UAAU,CAAC,OAAO,MAAM,CAAC,EACzB;IAAE,UAAU,EAAE,eAAe,CAAA;CAAE,CAChC,CAAA;AACD,MAAM,MAAM,gCAAgC,GAAG,IAAI,CACjD,2BAA2B,EAC3B,OAAO,CAAC,MAAM,WAAW,EAAE,YAAY,CAAC,CACzC,CAAA;AAED,KAAK,cAAc,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AACpD,KAAK,UAAU,CAAC,CAAC,IAAI;KAClB,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;CACpC,CAAA;AAED,KAAK,QAAQ,CAAC,IAAI,IAAI,WAAW,CAE/B;KAEG,GAAG,IAAI,MAAM,IAAI,GAAG,IAAI,SAAS,IAAI,CAAC,GAAG,CAAC,GAEvC,GAAG,GAEH,KAAK;CAGV,CAAC,MAAM,IAAI,CAAC,CACd,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;KACzB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;CACpD,CAAA;AAED;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC3E,MAAM,MAAM,OAAO,GAAG;IACpB,SAAS,EAAE,SAAS,CAAA;IACpB,SAAS,EAAE,SAAS,CAAA;CACrB,CAAA;AAED,qBAAqB;AACrB,MAAM,MAAM,SAAS,GAAG,MAAM,CAAA;AAC9B,qBAAqB;AACrB,MAAM,MAAM,SAAS,GAAG,MAAM,CAAA;AAC9B,MAAM,MAAM,eAAe,GAAG,OAAO,CAAA;AAErC,KAAK,2BAA2B,GAAG;IACjC,QAAQ,EAAE,WAAW,CAAA;CACtB,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,cAAc,CAAC,2BAA2B,CAAC,CAAA;IACnD,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;CAC5B,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,QAAQ,CAAA;IAClB,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,EAAE,uBAAuB,CAAA;IACvC,UAAU,EAAE,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IAClE,OAAO,EAAE,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;CAC7E,CAAA;AAED,KAAK,cAAc,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,GAAG;IACpD,QAAQ,EAAE,QAAQ,CAAA;CACnB,CAAA;AACD,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG;IAAE,WAAW,EAAE,cAAc,CAAA;CAAE,CAAA;AAExE,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,mBAAmB,CAAA;AAE/D,MAAM,MAAM,oBAAoB,CAC9B,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,GAAG,eAAe,IAC9C;IACF,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,CAAA;IAC3D,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,CAAA;CAC/D,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /*
2
+ Manually generated migration because SQLITE and Drizzle do not support
3
+ altering a column to be nullable.
4
+ */
5
+ ALTER TABLE `localDeviceInfo` RENAME TO `deviceSettings`;--> statement-breakpoint
6
+ DROP INDEX IF EXISTS `localDeviceInfo_deviceId_unique`;--> statement-breakpoint
7
+ ALTER TABLE deviceSettings ADD `isArchiveDevice` integer;--> statement-breakpoint
8
+ ALTER TABLE deviceSettings RENAME COLUMN `deviceInfo` TO `deviceInfoOld`;--> statement-breakpoint
9
+ ALTER TABLE deviceSettings ADD `deviceInfo` text;--> statement-breakpoint
10
+ UPDATE deviceSettings SET `deviceInfo` = `deviceInfoOld`;--> statement-breakpoint
11
+ ALTER TABLE deviceSettings DROP COLUMN `deviceInfoOld`;--> statement-breakpoint
12
+ CREATE UNIQUE INDEX `deviceSettings_deviceId_unique` ON `deviceSettings` (`deviceId`);