@comapeo/core 4.3.0 → 4.4.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.
@@ -77,9 +77,7 @@ export class CoreOwnership extends TypedEmitter<CoreOwnershipEvents> {
77
77
  updatedAt: string;
78
78
  links: string[];
79
79
  deleted: boolean;
80
- } & {
81
- forks: string[];
82
- }>;
80
+ } & import("./datatype/index.js").DerivedDocFields>;
83
81
  getAll(): Promise<({
84
82
  schemaName: "coreOwnership";
85
83
  authCoreId: string;
@@ -94,9 +92,7 @@ export class CoreOwnership extends TypedEmitter<CoreOwnershipEvents> {
94
92
  updatedAt: string;
95
93
  links: string[];
96
94
  deleted: boolean;
97
- } & {
98
- forks: string[];
99
- })[]>;
95
+ } & import("./datatype/index.js").DerivedDocFields)[]>;
100
96
  #private;
101
97
  }
102
98
  export type CoreOwnershipEvents = {
@@ -1 +1 @@
1
- {"version":3,"file":"core-ownership.d.ts","sourceRoot":"","sources":["../src/core-ownership.js"],"names":[],"mappings":"AAmJA;;;;;;;;;;;GAWG;AACH,iDAJW,2BAA2B,wBAC3B,OAAO,iBAAiB,EAAE,eAAe,GACvC,OAAO,iBAAiB,EAAE,aAAa,CAiBnD;;AA3JD;;;;;;;GAOG;AAEH;;;GAGG;AAEH;;GAEG;AACH;IAGE;;;;;;;;;;;;OAYG;IACH,yDAVG;QAMQ,QAAQ,EANR,OAAO,qBAAqB,EAAE,QAAQ,CAChD,OAAW,sBAAsB,EAAE,SAAS,CAAC,MAAM,CAAC,EACpD,cAAkB,qBAAqB,EAAE,kBAAkB,EAC3D,eAAmB,EACnB,OAAW,iBAAiB,EAAE,aAAa,EAC3C,OAAW,iBAAiB,EAAE,kBAAkB,CAC7C;QACwC,YAAY,EAA7C,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC;QACZ,eAAe,EAA7B,OAAO;KACjB,EAyBA;IAED;;;OAGG;IACH,iBAHW,MAAM,GACJ,OAAO,CAAC,MAAM,CAAC,CAc3B;IAED;;;;;OAKG;IACH,oBAJW,MAAM,aACN,SAAS,GACP,OAAO,CAAC,MAAM,CAAC,CAK3B;IAED;;;;OAIG;IACH,cAFW,MAAM;;;;;;;;;;;;;;;;OAKhB;IAED;;;;;;;;;;;;;;;;UAGC;;CAyBF;;;;;YAnHa,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI;;iDALjC,YAAY;6BATO,oBAAoB;+BASvC,YAAY;6BAAZ,YAAY"}
1
+ {"version":3,"file":"core-ownership.d.ts","sourceRoot":"","sources":["../src/core-ownership.js"],"names":[],"mappings":"AAmJA;;;;;;;;;;;GAWG;AACH,iDAJW,2BAA2B,wBAC3B,OAAO,iBAAiB,EAAE,eAAe,GACvC,OAAO,iBAAiB,EAAE,aAAa,CAiBnD;;AA3JD;;;;;;;GAOG;AAEH;;;GAGG;AAEH;;GAEG;AACH;IAGE;;;;;;;;;;;;OAYG;IACH,yDAVG;QAMQ,QAAQ,EANR,OAAO,qBAAqB,EAAE,QAAQ,CAChD,OAAW,sBAAsB,EAAE,SAAS,CAAC,MAAM,CAAC,EACpD,cAAkB,qBAAqB,EAAE,kBAAkB,EAC3D,eAAmB,EACnB,OAAW,iBAAiB,EAAE,aAAa,EAC3C,OAAW,iBAAiB,EAAE,kBAAkB,CAC7C;QACwC,YAAY,EAA7C,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC;QACZ,eAAe,EAA7B,OAAO;KACjB,EAyBA;IAED;;;OAGG;IACH,iBAHW,MAAM,GACJ,OAAO,CAAC,MAAM,CAAC,CAc3B;IAED;;;;;OAKG;IACH,oBAJW,MAAM,aACN,SAAS,GACP,OAAO,CAAC,MAAM,CAAC,CAK3B;IAED;;;;OAIG;IACH,cAFW,MAAM;;;;;;;;;;;;;;wDAKhB;IAED;;;;;;;;;;;;;;2DAGC;;CAyBF;;;;;YAnHa,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI;;iDALjC,YAAY;6BATO,oBAAoB;+BASvC,YAAY;6BAAZ,YAAY"}
@@ -17,13 +17,20 @@ export class DataType<TDataStore extends DataStore, TTable extends MapeoDocTable
17
17
  * @param {TTable} opts.table
18
18
  * @param {TDataStore} opts.dataStore
19
19
  * @param {import('drizzle-orm/better-sqlite3').BetterSQLite3Database} opts.db
20
- * @param {import('../translation-api.js').default['get']} opts.getTranslations
20
+ * @param {import('../translation-api.js').default['get']} [opts.getTranslations]
21
+ * @param {(versionId: string) => Promise<string>} opts.getDeviceIdForVersionId
21
22
  */
22
- constructor({ dataStore, table, db, getTranslations }: {
23
+ constructor({ dataStore, table, db, getTranslations, getDeviceIdForVersionId, }: {
23
24
  table: TTable;
24
25
  dataStore: TDataStore;
25
26
  db: import("drizzle-orm/better-sqlite3").BetterSQLite3Database;
26
- getTranslations: import("../translation-api.js").default["get"];
27
+ getTranslations?: ((value: import("type-fest").SetOptional<Omit<import("@comapeo/schema").TranslationValue, "schemaName" | "message" | "docRef">, "propertyRef" | "regionCode"> & {
28
+ docRef: {
29
+ docId: string;
30
+ versionId?: string | undefined;
31
+ };
32
+ }) => Promise<import("@comapeo/schema").Translation[]>) | undefined;
33
+ getDeviceIdForVersionId: (versionId: string) => Promise<string>;
27
34
  });
28
35
  /** @returns {TSchemaName} */
29
36
  get schemaName(): TSchemaName;
@@ -32,61 +39,51 @@ export class DataType<TDataStore extends DataStore, TTable extends MapeoDocTable
32
39
  /**
33
40
  * @template {Exact<ExcludeSchema<TValue, 'coreOwnership'>, T>} T
34
41
  * @param {T} value
35
- * @returns {Promise<TDoc & { forks: string[] }>}
42
+ * @returns {Promise<TDoc & DerivedDocFields>}
36
43
  */
37
- create<T extends Exact<ExcludeSchema<TValue, "coreOwnership">, T>>(value: T): Promise<TDoc & {
38
- forks: string[];
39
- }>;
44
+ create<T extends Exact<ExcludeSchema<TValue, "coreOwnership">, T>>(value: T): Promise<TDoc & DerivedDocFields>;
40
45
  /**
41
46
  * @overload
42
47
  * @param {string} docId
43
48
  * @param {object} [options]
44
49
  * @param {true} [options.mustBeFound]
45
50
  * @param {string} [options.lang]
46
- * @returns {Promise<TDoc & { forks: string[] }>}
51
+ * @returns {Promise<TDoc & DerivedDocFields>}
47
52
  */
48
53
  getByDocId(docId: string, options?: {
49
54
  mustBeFound?: true | undefined;
50
55
  lang?: string | undefined;
51
- } | undefined): Promise<TDoc & {
52
- forks: string[];
53
- }>;
56
+ } | undefined): Promise<TDoc & DerivedDocFields>;
54
57
  /**
55
58
  * @param {string} versionId
56
59
  * @param {{ lang?: string }} [opts]
57
- * @returns {Promise<TDoc>}
60
+ * @returns {Promise<TDoc & DerivedDocFields>}
58
61
  */
59
62
  getByVersionId(versionId: string, { lang }?: {
60
63
  lang?: string;
61
- } | undefined): Promise<TDoc>;
64
+ } | undefined): Promise<TDoc & DerivedDocFields>;
62
65
  /**
63
66
  * @param {object} opts
64
67
  * @param {boolean} [opts.includeDeleted]
65
68
  * @param {string} [opts.lang]
66
- * @returns {Promise<Array<TDoc & { forks: string[] }>>}
69
+ * @returns {Promise<Array<TDoc & DerivedDocFields>>}
67
70
  */
68
71
  getMany({ includeDeleted, lang }?: {
69
72
  includeDeleted?: boolean | undefined;
70
73
  lang?: string | undefined;
71
- }): Promise<Array<TDoc & {
72
- forks: string[];
73
- }>>;
74
+ }): Promise<Array<TDoc & DerivedDocFields>>;
74
75
  /**
75
76
  * @template {Exact<ExcludeSchema<TValue, 'coreOwnership'>, T>} T
76
77
  * @param {string | string[]} versionId
77
78
  * @param {T} value
78
- * @returns {Promise<TDoc & { forks: string[] }>}
79
+ * @returns {Promise<TDoc & DerivedDocFields>}
79
80
  */
80
- update<T extends Exact<ExcludeSchema<TValue, "coreOwnership">, T>>(versionId: string | string[], value: T): Promise<TDoc & {
81
- forks: string[];
82
- }>;
81
+ update<T extends Exact<ExcludeSchema<TValue, "coreOwnership">, T>>(versionId: string | string[], value: T): Promise<TDoc & DerivedDocFields>;
83
82
  /**
84
83
  * @param {string} docId
85
- * @returns {Promise<TDoc & { forks: string[] }>}
84
+ * @returns {Promise<TDoc & DerivedDocFields>}
86
85
  */
87
- delete(docId: string): Promise<TDoc & {
88
- forks: string[];
89
- }>;
86
+ delete(docId: string): Promise<TDoc & DerivedDocFields>;
90
87
  /** @returns {TTable} */
91
88
  get [kTable](): TTable;
92
89
  /** @returns {TDataStore} */
@@ -95,13 +92,11 @@ export class DataType<TDataStore extends DataStore, TTable extends MapeoDocTable
95
92
  * @param {string} docId
96
93
  * @param {ExcludeSchema<TValue, 'coreOwnership'> | CoreOwnershipWithSignaturesValue} value
97
94
  * @param {{ checkExisting?: boolean }} [opts] - only used internally to skip the checkExisting check when creating a document with a random ID (collisions should be too small probability to be worth checking for)
98
- * @returns {Promise<TDoc & { forks: string[] }>}
95
+ * @returns {Promise<TDoc & DerivedDocFields>}
99
96
  */
100
97
  [kCreateWithDocId](docId: string, value: ExcludeSchema<TValue, "coreOwnership"> | CoreOwnershipWithSignaturesValue, { checkExisting }?: {
101
98
  checkExisting?: boolean;
102
- } | undefined): Promise<TDoc & {
103
- forks: string[];
104
- }>;
99
+ } | undefined): Promise<TDoc & DerivedDocFields>;
105
100
  [kSelect](): Promise<Omit<SQLiteSelectBase<import("drizzle-orm/query-builders/select.types").GetSelectTableName<TTable>, "sync", RunResult, import("drizzle-orm/query-builders/select.types").GetSelectTableSelection<TTable>, "single", import("drizzle-orm/query-builders/select.types").GetSelectTableName<TTable> extends infer T ? T extends import("drizzle-orm/query-builders/select.types").GetSelectTableName<TTable> ? T extends string ? Record<T, "not-null"> : {} : never : never, false, never, ({ [Key in keyof import("drizzle-orm/query-builders/select.types").GetSelectTableSelection<TTable> & string]: import("drizzle-orm/query-builders/select.types").SelectResultField<import("drizzle-orm/query-builders/select.types").GetSelectTableSelection<TTable>[Key], true>; } extends infer T_1 ? { [K in keyof T_1]: { [Key in keyof import("drizzle-orm/query-builders/select.types").GetSelectTableSelection<TTable> & string]: import("drizzle-orm/query-builders/select.types").SelectResultField<import("drizzle-orm/query-builders/select.types").GetSelectTableSelection<TTable>[Key], true>; }[K]; } : never)[], import("drizzle-orm/query-builders/select.types").BuildSubquerySelection<import("drizzle-orm/query-builders/select.types").GetSelectTableSelection<TTable>, import("drizzle-orm/query-builders/select.types").GetSelectTableName<TTable> extends infer T ? T extends import("drizzle-orm/query-builders/select.types").GetSelectTableName<TTable> ? T extends string ? Record<T, "not-null"> : {} : never : never>>, "then" | "catch" | "finally"> & {
106
101
  then?: undefined;
107
102
  catch?: undefined;
@@ -127,6 +122,11 @@ export type ExcludeSchema<T extends MapeoValue, S extends MapeoValue["schemaName
127
122
  export type DataTypeEvents<TDoc extends MapeoDoc> = {
128
123
  "updated-docs": (docs: TDoc[]) => void;
129
124
  };
125
+ export type DerivedDocFields = {
126
+ forks: string[];
127
+ createdBy: string;
128
+ updatedBy: string;
129
+ };
130
130
  import type { DataStore } from '../datastore/index.js';
131
131
  import type { MapeoDocMap } from '../types.js';
132
132
  import type { MapeoValueMap } from '../types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/datatype/index.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/datatype/index.js"],"names":[],"mappings":"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"}
@@ -1280,6 +1280,7 @@ export class MapeoProject extends TypedEmitter<{
1280
1280
  $hasSyncedProjectSettings(): Promise<boolean>;
1281
1281
  $getOwnRole(): Promise<import("./roles.js").Role<"a12a6702b93bd7ff" | "f7c150f5a3a9a855" | "012fd2d431c0bf60" | "9e6d29263cba36c9" | "8ced989b1904606b" | "08e4251e36f6e7ed">>;
1282
1282
  /**
1283
+ * @deprecated
1283
1284
  * @param {string} originalVersionId The `originalVersionId` from a document.
1284
1285
  * @returns {Promise<string>} The device ID for this creator.
1285
1286
  * @throws When device ID cannot be found.
@@ -1 +1 @@
1
- {"version":3,"file":"mapeo-project.d.ts","sourceRoot":"","sources":["../src/mapeo-project.js"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAiZT;IAED,8BAEC;IAoMD;;;;;;;;;;;OAWG;IACH,yCAPW,CACV,OAAW,GACX,OAAW,QAAQ,EAAE,MAAM,GAC3B,OAAW,SAAS,EAAE,MAAM,CACzB,GACS,iBAAiB,CAqB7B;IAED;;;OAGG;IACH,2BAHW,IAAI,CAAC,OAAO,iBAAiB,EAAE,eAAe,EAAE,MAAM,GAAG,YAAY,GAAG,yBAAyB,CAAC,GAChG,OAAO,CAAC,OAAO,iBAAiB,EAAE,UAAU,CAAC,CAwBzD;IAED,uCAAuC;IACvC,uCADY,OAAO,iBAGlB;IAED,yBAAyB;IACzB,kCAEC;IAsPD;;;;OAIG;IACH,iCAJW,OAAO,UACP,OAAO,GACL,OAAO,CAAC,MAAM,CAAC,CAY3B;IAmPD,iCAMC;IAED;;;OAGG;IACH,sBAFa,OAAO,CAAC,IAAI,CAAC,CAoCzB;;CAuKF;sCA75Ca,IAAI,CAAC,oBAAoB,EAAE,YAAY,CAAC;6BACxC,oBAAoB,CAAC,gBAAgB,CAAC;8BACtC,GAAG,CAAC,MAAM,EAAC,UAAU,CAAC;;cAE1B,MAAM,GAAC,SAAS;YAChB,MAAM;;;aAIF,MAAM,EAAE;YACR,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;;oBAIvB,MAAM;kBACN,KAAK;YACL,KAAK;aACL,KAAK;;6BAjFU,oBAAoB;wBAYzB,eAAe;0BAHb,sBAAsB;yBACL,qBAAqB;0BAuCtC,iBAAiB;wBAKpC,oBAAoB;2BAIA,sBAAsB;wBAFzB,eAAe;4BAhDX,yBAAyB;8BAuB9C,qBAAqB;0BApBF,uBAAuB;uCAoD8H,YAAY;4BAlD/J,yBAAyB;iCAkD0H,YAAY;0BAHjK,IAAI;uBALP,aAAa;0CAO0B,iBAAiB;gCACgG,YAAY;4BAAZ,YAAY"}
1
+ {"version":3,"file":"mapeo-project.d.ts","sourceRoot":"","sources":["../src/mapeo-project.js"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAqZT;IAED,8BAEC;IAqMD;;;;;;;;;;;OAWG;IACH,yCAPW,CACV,OAAW,GACX,OAAW,QAAQ,EAAE,MAAM,GAC3B,OAAW,SAAS,EAAE,MAAM,CACzB,GACS,iBAAiB,CAqB7B;IAED;;;OAGG;IACH,2BAHW,IAAI,CAAC,OAAO,iBAAiB,EAAE,eAAe,EAAE,MAAM,GAAG,YAAY,GAAG,yBAAyB,CAAC,GAChG,OAAO,CAAC,OAAO,iBAAiB,EAAE,UAAU,CAAC,CAwBzD;IAED,uCAAuC;IACvC,uCADY,OAAO,iBAGlB;IAED,yBAAyB;IACzB,kCAEC;IAsPD;;;;OAIG;IACH,iCAJW,OAAO,UACP,OAAO,GACL,OAAO,CAAC,MAAM,CAAC,CAY3B;IAmPD,iCAMC;IAED;;;OAGG;IACH,sBAFa,OAAO,CAAC,IAAI,CAAC,CAoCzB;;CAuKF;sCAl6Ca,IAAI,CAAC,oBAAoB,EAAE,YAAY,CAAC;6BACxC,oBAAoB,CAAC,gBAAgB,CAAC;8BACtC,GAAG,CAAC,MAAM,EAAC,UAAU,CAAC;;cAE1B,MAAM,GAAC,SAAS;YAChB,MAAM;;;aAIF,MAAM,EAAE;YACR,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;;oBAIvB,MAAM;kBACN,KAAK;YACL,KAAK;aACL,KAAK;;6BAjFU,oBAAoB;wBAYzB,eAAe;0BAHb,sBAAsB;yBACL,qBAAqB;0BAuCtC,iBAAiB;wBAKpC,oBAAoB;2BAIA,sBAAsB;wBAFzB,eAAe;4BAhDX,yBAAyB;8BAuB9C,qBAAqB;0BApBF,uBAAuB;uCAoD8H,YAAY;4BAlD/J,yBAAyB;iCAkD0H,YAAY;0BAHjK,IAAI;uBALP,aAAa;0CAO0B,iBAAiB;gCACgG,YAAY;4BAAZ,YAAY"}
@@ -38,9 +38,7 @@ export default class TranslationApi {
38
38
  updatedAt: string;
39
39
  links: string[];
40
40
  deleted: boolean;
41
- } & {
42
- forks: string[];
43
- }>;
41
+ } & import("./datatype/index.js").DerivedDocFields>;
44
42
  /** @typedef {SetOptional<TranslationValue['docRef'], 'versionId'>} DocRefWithOptionalVersionId */
45
43
  /**
46
44
  * @param {SetOptional<
@@ -1 +1 @@
1
- {"version":3,"file":"translation-api.d.ts","sourceRoot":"","sources":["../src/translation-api.js"],"names":[],"mappings":"AAKA,uEAAuE;AACvE,+CAA+C;AAE/C,iEAEC;AACD;IAQE;;;;;;;;;OASG;IACH,0BARG;QAMS,QAAQ,EANT,OAAO,qBAAqB,EAAE,QAAQ,CAChD,OAAW,sBAAsB,EAAE,SAAS,CAAC,QAAQ,CAAC,EACtD,cAAkB,qBAAqB,EAAE,gBAAgB,EACzD,aAAiB,EACjB,WAAe,EACf,gBAAoB,CACjB;KACH,EAWA;IAED,+BAA+B;IAC/B,SADc,OAAO,CAAC,IAAI,CAAC,CAG1B;IAED;;OAEG;IACH,WAFW,gBAAgB;;;;;;;;;;;;;;;;;;;;OAW1B;IAED,kGAAkG;IAElG;;;;;OAKG;IACH,WALW,YACR,IAAI,CAAC,gBAAgB,EAAC,YAAY,GAAG,SAAS,GAAG,QAAQ,CAAC,EAC5D,aAAe,GAAG,YAAY,CAAC,GAAG;QAAC,MAAM;;;UAA6B;KAAC,GAC3D,OAAO,CAAC,OAAO,iBAAiB,EAAE,WAAW,EAAE,CAAC,CAsC5D;IAED;;OAEG;IACH,WAFW,gBAAgB,QAkB1B;IAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAEC;IALD,mHAEC;;CAIF;sCAjIkD,iBAAiB;iCACnC,WAAW;iCADO,iBAAiB"}
1
+ {"version":3,"file":"translation-api.d.ts","sourceRoot":"","sources":["../src/translation-api.js"],"names":[],"mappings":"AAKA,uEAAuE;AACvE,+CAA+C;AAE/C,iEAEC;AACD;IAQE;;;;;;;;;OASG;IACH,0BARG;QAMS,QAAQ,EANT,OAAO,qBAAqB,EAAE,QAAQ,CAChD,OAAW,sBAAsB,EAAE,SAAS,CAAC,QAAQ,CAAC,EACtD,cAAkB,qBAAqB,EAAE,gBAAgB,EACzD,aAAiB,EACjB,WAAe,EACf,gBAAoB,CACjB;KACH,EAWA;IAED,+BAA+B;IAC/B,SADc,OAAO,CAAC,IAAI,CAAC,CAG1B;IAED;;OAEG;IACH,WAFW,gBAAgB;;;;;;;;;;;;;;;;;;wDAW1B;IAED,kGAAkG;IAElG;;;;;OAKG;IACH,WALW,YACR,IAAI,CAAC,gBAAgB,EAAC,YAAY,GAAG,SAAS,GAAG,QAAQ,CAAC,EAC5D,aAAe,GAAG,YAAY,CAAC,GAAG;QAAC,MAAM;;;UAA6B;KAAC,GAC3D,OAAO,CAAC,OAAO,iBAAiB,EAAE,WAAW,EAAE,CAAC,CAsC5D;IAED;;OAEG;IACH,WAFW,gBAAgB,QAkB1B;IAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAEC;IALD,mHAEC;;CAIF;sCAjIkD,iBAAiB;iCACnC,WAAW;iCADO,iBAAiB"}
package/dist/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { Simplify, TupleToUnion, ValueOf, RequireAtLeastOne, SetOptional } from 'type-fest';
1
+ import type { Simplify, TupleToUnion, ValueOf, RequireAtLeastOne } from 'type-fest';
2
2
  import { SUPPORTED_BLOB_VARIANTS } from './blob-store/index.js';
3
3
  import { MapeoCommon, MapeoDoc, MapeoValue, Observation, decode } from '@comapeo/schema';
4
4
  import type BigSparseArray from 'big-sparse-array';
@@ -46,13 +46,6 @@ export type CoreOwnershipWithSignatures = Extract<ReturnType<typeof decode>, {
46
46
  schemaName: 'coreOwnership';
47
47
  }>;
48
48
  export type CoreOwnershipWithSignaturesValue = Omit<CoreOwnershipWithSignatures, Exclude<keyof MapeoCommon, 'schemaName'>>;
49
- type NullToOptional<T> = SetOptional<T, NullKeys<T>>;
50
- type RemoveNull<T> = {
51
- [K in keyof T]: Exclude<T[K], null>;
52
- };
53
- type NullKeys<Base> = NonNullable<{
54
- [Key in keyof Base]: null extends Base[Key] ? Key : never;
55
- }[keyof Base]>;
56
49
  /**
57
50
  * Replace an object's `Buffer` values with `string`s. Useful for serialization.
58
51
  */
@@ -65,7 +58,14 @@ export type MapBuffers<T> = {
65
58
  * top-level optional props set to `null`) to the original types in
66
59
  * @comapeo/schema
67
60
  */
68
- export type NullableToOptional<T> = Simplify<RemoveNull<NullToOptional<T>>>;
61
+ export type NullableToOptional<T> = Simplify<{
62
+ [K in keyof T as null extends T[K] ? K : never]?: Exclude<T[K], null>;
63
+ } & {
64
+ [K in keyof T as null extends T[K] ? never : K]: T[K];
65
+ }>;
66
+ export type OptionalToNullable<T> = Simplify<{
67
+ [K in keyof T]-?: T[K] | (undefined extends T[K] ? null : never);
68
+ }>;
69
69
  export type KeyPair = {
70
70
  publicKey: PublicKey;
71
71
  secretKey: SecretKey;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/utils.d.ts CHANGED
@@ -45,13 +45,25 @@ export function isDefined<T>(value: undefined | T): value is T;
45
45
  */
46
46
  export function deNullify<T extends {}>(obj: T): import("./types.js").NullableToOptional<T>;
47
47
  /**
48
- * @template {import('@comapeo/schema').MapeoDoc & { forks?: string[] }} T
48
+ * __Mutating__
49
+ * When reading from SQLite, any optional properties are set to `null`. This
50
+ * converts `null` back to `undefined` to match the input types (e.g. the types
51
+ * defined in @comapeo/schema)
52
+ * @template {{}} T
53
+ * @param {T} obj
54
+ * @returns {import('./types.js').NullableToOptional<T>}
55
+ */
56
+ export function mutatingDeNullify<T extends {}>(obj: T): import("./types.js").NullableToOptional<T>;
57
+ /**
58
+ * @template {import('@comapeo/schema').MapeoDoc & { forks?: string[], createdBy?: string, updatedBy?: string }} T
49
59
  * @param {T} doc
50
- * @returns {Omit<T, 'docId' | 'versionId' | 'originalVersionId' | 'links' | 'forks' | 'createdAt' | 'updatedAt' | 'deleted'>}
60
+ * @returns {Omit<T, 'docId' | 'versionId' | 'originalVersionId' | 'links' | 'forks' | 'createdAt' | 'updatedAt' | 'createdBy' | 'updatedBy' | 'deleted' >}
51
61
  */
52
62
  export function valueOf<T extends import("@comapeo/schema").MapeoDoc & {
53
63
  forks?: string[];
54
- }>(doc: T): Omit<T, "docId" | "versionId" | "originalVersionId" | "links" | "forks" | "createdAt" | "updatedAt" | "deleted">;
64
+ createdBy?: string;
65
+ updatedBy?: string;
66
+ }>(doc: T): Omit<T, "docId" | "versionId" | "originalVersionId" | "links" | "forks" | "createdAt" | "updatedAt" | "createdBy" | "updatedBy" | "deleted">;
55
67
  /**
56
68
  * Create an internal ID from a project key
57
69
  * @param {Buffer} projectKey
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.js"],"names":[],"mappings":"AAUA;;;;GAIG;AACH,6BAHW,MAAM,SAAO,UASvB;AAUD;;GAEG;AACH,wBAFa,IAAI,CAEQ;AAEzB;;;;GAIG;AACH,kCAJW,OAAO,kBACP,MAAM,GAAG,KAAK,GACZ,QAAQ,SAAS,CAS7B;AAED;;;;;;;;;;;;;GAaG;AACH,uBATa,CAAC,OACH,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAUd,OAAO,KACL,KAAK,IAAI,CAAC,CAGxB;AAED;;;;GAIG;AACH,0BAJa,CAAC,SACH,SAAS,GAAG,CAAC,GACX,KAAK,IAAI,CAAC,CAItB;AAED;;;;;;;GAOG;AAEH,0BALkB,CAAC,SAAN,EAAI,OACN,CAAC,GACC,OAAO,YAAY,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAUtD;AAED;;;;GAIG;AACH,wBAJyE,CAAC,SAA5D,OAAO,iBAAiB,EAAE,QAAQ,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CAAG,OAC7D,CAAC,GACC,IAAI,CAAC,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,mBAAmB,GAAG,OAAO,GAAG,OAAO,GAAG,WAAW,GAAG,WAAW,GAAG,SAAS,CAAC,CAa5H;AAED;;;;GAIG;AACH,2CAHW,MAAM,GACJ,MAAM,CAIlB;AAED;;;;GAIG;AACH,iDAHW,MAAM,GACJ,MAAM,CAIlB;AAED;;;;GAIG;AACH,wDAHW,QAAQ,CAAC,MAAM,CAAC,GACd,MAAM,CAMlB;AAED;;;GAGG;AACH,4CAHW,MAAM,GACJ,MAAM,CAIlB;AAED;;;GAGG;AACH,wCAHW,2CAAkC,GAChC,MAAM,CAIlB;AAED;;;;;;;2DAO2D;AAC3D,0BALsB,CAAC,SAAV,MAAQ,EACF,CAAC,wBACT,aAAa,CAAC,CAAC,CAAC,SAChB,CAAC,GACC,MAAM,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAOtD;AAED;;;;GAIG;AACH,gCAHW,MAAM,UAQhB;AAED;;;;;GAKG;AACH,wCAJW,UAAU,oBACV,UAAU,GAAG,WAAW,GAAG,SAAS,GAClC,MAAM,CA0BlB;AArMD;IACE,2BAA2B;IAC3B,mBADY,KAAK,EAIhB;CACF;gCAvBqC,YAAY;4BAAZ,YAAY"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.js"],"names":[],"mappings":"AAUA;;;;GAIG;AACH,6BAHW,MAAM,SAAO,UASvB;AAUD;;GAEG;AACH,wBAFa,IAAI,CAEQ;AAEzB;;;;GAIG;AACH,kCAJW,OAAO,kBACP,MAAM,GAAG,KAAK,GACZ,QAAQ,SAAS,CAS7B;AAED;;;;;;;;;;;;;GAaG;AACH,uBATa,CAAC,OACH,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAUd,OAAO,KACL,KAAK,IAAI,CAAC,CAGxB;AAED;;;;GAIG;AACH,0BAJa,CAAC,SACH,SAAS,GAAG,CAAC,GACX,KAAK,IAAI,CAAC,CAItB;AAED;;;;;;;GAOG;AACH,0BAJkB,CAAC,SAAN,EAAI,OACN,CAAC,GACC,OAAO,YAAY,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAStD;AAED;;;;;;;;GAQG;AACH,kCAJkB,CAAC,SAAN,EAAI,OACN,CAAC,GACC,OAAO,YAAY,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAWtD;AAED;;;;GAIG;AACH,wBAJiH,CAAC,SAApG,OAAO,iBAAiB,EAAE,QAAQ,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAG,OACrG,CAAC,GACC,IAAI,CAAC,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,mBAAmB,GAAG,OAAO,GAAG,OAAO,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,SAAS,CAAE,CAezJ;AAED;;;;GAIG;AACH,2CAHW,MAAM,GACJ,MAAM,CAIlB;AAED;;;;GAIG;AACH,iDAHW,MAAM,GACJ,MAAM,CAIlB;AAED;;;;GAIG;AACH,wDAHW,QAAQ,CAAC,MAAM,CAAC,GACd,MAAM,CAMlB;AAED;;;GAGG;AACH,4CAHW,MAAM,GACJ,MAAM,CAIlB;AAED;;;GAGG;AACH,wCAHW,2CAAkC,GAChC,MAAM,CAIlB;AAED;;;;;;;2DAO2D;AAC3D,0BALsB,CAAC,SAAV,MAAQ,EACF,CAAC,wBACT,aAAa,CAAC,CAAC,CAAC,SAChB,CAAC,GACC,MAAM,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAOtD;AAED;;;;GAIG;AACH,gCAHW,MAAM,UAQhB;AAED;;;;;GAKG;AACH,wCAJW,UAAU,oBACV,UAAU,GAAG,WAAW,GAAG,SAAS,GAClC,MAAM,CA0BlB;AA1ND;IACE,2BAA2B;IAC3B,mBADY,KAAK,EAIhB;CACF;gCAvBqC,YAAY;4BAAZ,YAAY"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@comapeo/core",
3
- "version": "4.3.0",
3
+ "version": "4.4.0",
4
4
  "description": "Offline p2p mapping library",
5
5
  "main": "src/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -162,7 +162,7 @@
162
162
  },
163
163
  "dependencies": {
164
164
  "@comapeo/fallback-smp": "^1.0.0",
165
- "@comapeo/schema": "^2.1.1",
165
+ "@comapeo/schema": "2.1.1",
166
166
  "@digidem/types": "^2.3.0",
167
167
  "@fastify/error": "^3.4.1",
168
168
  "@fastify/type-provider-typebox": "^4.1.0",
@@ -2,7 +2,7 @@ import { validate } from '@comapeo/schema'
2
2
  import { getTableConfig } from 'drizzle-orm/sqlite-core'
3
3
  import { eq, inArray, sql } from 'drizzle-orm'
4
4
  import { randomBytes } from 'node:crypto'
5
- import { noop, deNullify } from '../utils.js'
5
+ import { noop, mutatingDeNullify } from '../utils.js'
6
6
  import { NotFoundError } from '../errors.js'
7
7
  import { TypedEmitter } from 'tiny-typed-emitter'
8
8
  import { parse as parseBCP47 } from 'bcp-47'
@@ -64,6 +64,13 @@ import { setProperty, getProperty } from 'dot-prop'
64
64
  * @property {(docs: TDoc[]) => void} updated-docs
65
65
  */
66
66
 
67
+ /**
68
+ * @typedef {object} DerivedDocFields
69
+ * @property {string[]} forks
70
+ * @property {string} createdBy
71
+ * @property {string} updatedBy
72
+ */
73
+
67
74
  function generateId() {
68
75
  return randomBytes(32).toString('hex')
69
76
  }
@@ -90,6 +97,7 @@ export class DataType extends TypedEmitter {
90
97
  #sql
91
98
  #db
92
99
  #getTranslations
100
+ #getDeviceIdForVersionId
93
101
 
94
102
  /**
95
103
  *
@@ -97,15 +105,23 @@ export class DataType extends TypedEmitter {
97
105
  * @param {TTable} opts.table
98
106
  * @param {TDataStore} opts.dataStore
99
107
  * @param {import('drizzle-orm/better-sqlite3').BetterSQLite3Database} opts.db
100
- * @param {import('../translation-api.js').default['get']} opts.getTranslations
108
+ * @param {import('../translation-api.js').default['get']} [opts.getTranslations]
109
+ * @param {(versionId: string) => Promise<string>} opts.getDeviceIdForVersionId
101
110
  */
102
- constructor({ dataStore, table, db, getTranslations }) {
111
+ constructor({
112
+ dataStore,
113
+ table,
114
+ db,
115
+ getTranslations,
116
+ getDeviceIdForVersionId,
117
+ }) {
103
118
  super()
104
119
  this.#dataStore = dataStore
105
120
  this.#table = table
106
121
  this.#schemaName = /** @type {TSchemaName} */ (getTableConfig(table).name)
107
122
  this.#db = db
108
123
  this.#getTranslations = getTranslations
124
+ this.#getDeviceIdForVersionId = getDeviceIdForVersionId
109
125
  this.#sql = {
110
126
  getByDocId: db
111
127
  .select()
@@ -157,7 +173,7 @@ export class DataType extends TypedEmitter {
157
173
  /**
158
174
  * @template {Exact<ExcludeSchema<TValue, 'coreOwnership'>, T>} T
159
175
  * @param {T} value
160
- * @returns {Promise<TDoc & { forks: string[] }>}
176
+ * @returns {Promise<TDoc & DerivedDocFields>}
161
177
  */
162
178
  async create(value) {
163
179
  const docId = generateId()
@@ -169,7 +185,7 @@ export class DataType extends TypedEmitter {
169
185
  * @param {string} docId
170
186
  * @param {ExcludeSchema<TValue, 'coreOwnership'> | CoreOwnershipWithSignaturesValue} value
171
187
  * @param {{ checkExisting?: boolean }} [opts] - only used internally to skip the checkExisting check when creating a document with a random ID (collisions should be too small probability to be worth checking for)
172
- * @returns {Promise<TDoc & { forks: string[] }>}
188
+ * @returns {Promise<TDoc & DerivedDocFields>}
173
189
  */
174
190
  async [kCreateWithDocId](docId, value, { checkExisting = true } = {}) {
175
191
  if (!validate(this.#schemaName, value)) {
@@ -203,20 +219,20 @@ export class DataType extends TypedEmitter {
203
219
  * @param {object} [options]
204
220
  * @param {true} [options.mustBeFound]
205
221
  * @param {string} [options.lang]
206
- * @returns {Promise<TDoc & { forks: string[] }>}
222
+ * @returns {Promise<TDoc & DerivedDocFields>}
207
223
  */
208
224
  /**
209
225
  * @param {string} docId
210
226
  * @param {object} [options]
211
227
  * @param {boolean} [options.mustBeFound]
212
228
  * @param {string} [options.lang]
213
- * @returns {Promise<null | (TDoc & { forks: string[] })>}
229
+ * @returns {Promise<null | (TDoc & DerivedDocFields)>}
214
230
  */
215
231
  async getByDocId(docId, { mustBeFound = true, lang } = {}) {
216
232
  await this.#dataStore.indexer.idle()
217
233
  const result = this.#sql.getByDocId.get({ docId })
218
234
  if (result) {
219
- return this.#translate(deNullify(result), { lang })
235
+ return this.#mutatingAddDerivedFields(result, { lang })
220
236
  } else if (mustBeFound) {
221
237
  throw new NotFoundError()
222
238
  } else {
@@ -227,48 +243,82 @@ export class DataType extends TypedEmitter {
227
243
  /**
228
244
  * @param {string} versionId
229
245
  * @param {{ lang?: string }} [opts]
230
- * @returns {Promise<TDoc>}
246
+ * @returns {Promise<TDoc & DerivedDocFields>}
231
247
  */
232
248
  async getByVersionId(versionId, { lang } = {}) {
233
249
  const result = await this.#dataStore.read(versionId)
234
250
  if (result.schemaName !== this.#schemaName) throw new NotFoundError()
235
- return this.#translate(deNullify(result), { lang })
251
+ return this.#mutatingAddDerivedFields(result, { lang })
236
252
  }
237
253
 
238
254
  /**
239
- * @param {any} doc
255
+ * @param {any} doc - not typesafe - this should be a MapeoDoc with nullable fields in place of optional fields, read from SQLite
240
256
  * @param {{ lang?: string }} [opts]
241
- * @returns {Promise<TDoc & { forks: string[] }>}
257
+ * @returns {Promise<TDoc & DerivedDocFields>}
258
+ */
259
+ async #mutatingAddDerivedFields(doc, { lang } = {}) {
260
+ mutatingDeNullify(doc)
261
+ const createdByPromise = this.#getDeviceIdForVersionId(
262
+ doc.originalVersionId
263
+ )
264
+ const updatedByPromise =
265
+ doc.originalVersionId === doc.versionId
266
+ ? createdByPromise
267
+ : this.#getDeviceIdForVersionId(doc.versionId)
268
+ if (lang) {
269
+ await this.#mutatingAddTranslations(doc, { lang })
270
+ }
271
+ const [createdBy, updatedBy] = await Promise.all([
272
+ createdByPromise,
273
+ updatedByPromise,
274
+ ])
275
+ doc.createdBy = createdBy
276
+ doc.updatedBy = updatedBy
277
+ return doc
278
+ }
279
+
280
+ /**
281
+ * @param {any} doc
282
+ * @param {{ lang: string }} opts
283
+ * @returns {Promise<any>}
242
284
  */
243
- async #translate(doc, { lang } = {}) {
244
- if (!lang) return doc
285
+ async #mutatingAddTranslations(doc, { lang }) {
286
+ if (!this.#getTranslations) return doc
245
287
 
246
288
  const { language, region } = parseBCP47(lang)
247
289
  if (!language) return doc
248
- const translatedDoc = JSON.parse(JSON.stringify(doc))
249
290
 
250
- const value = {
291
+ const translations = await this.#getTranslations({
251
292
  languageCode: language,
252
293
  docRef: {
253
- docId: translatedDoc.docId,
254
- versionId: translatedDoc.versionId,
294
+ docId: doc.docId,
295
+ versionId: doc.versionId,
255
296
  },
256
- docRefType: translatedDoc.schemaName,
257
- regionCode: region !== null ? region : undefined,
258
- }
259
- let translations = await this.#getTranslations(value)
260
- // if passing a region code returns no matches,
261
- // fallback to matching only languageCode
262
- if (translations.length === 0 && value.regionCode) {
263
- value.regionCode = undefined
264
- translations = await this.#getTranslations(value)
265
- }
297
+ docRefType: doc.schemaName,
298
+ })
266
299
 
300
+ /** @type {Set<string>} */
301
+ const translationsWithMatchingRegion = new Set()
267
302
  for (const translation of translations) {
268
303
  if (typeof getProperty(doc, translation.propertyRef) === 'string') {
269
- setProperty(doc, translation.propertyRef, translation.message)
304
+ const isMatchingRegion = region
305
+ ? translation.regionCode === region
306
+ : false
307
+ // Prefer translations with a matching region code, but fall back to
308
+ // translations without a region code if no matching region code has
309
+ // been found yet for this propertyRef
310
+ if (
311
+ isMatchingRegion ||
312
+ !translationsWithMatchingRegion.has(translation.propertyRef)
313
+ ) {
314
+ setProperty(doc, translation.propertyRef, translation.message)
315
+ }
316
+ if (isMatchingRegion) {
317
+ translationsWithMatchingRegion.add(translation.propertyRef)
318
+ }
270
319
  }
271
320
  }
321
+
272
322
  return doc
273
323
  }
274
324
 
@@ -276,7 +326,7 @@ export class DataType extends TypedEmitter {
276
326
  * @param {object} opts
277
327
  * @param {boolean} [opts.includeDeleted]
278
328
  * @param {string} [opts.lang]
279
- * @returns {Promise<Array<TDoc & { forks: string[] }>>}
329
+ * @returns {Promise<Array<TDoc & DerivedDocFields>>}
280
330
  */
281
331
  async getMany({ includeDeleted = false, lang } = {}) {
282
332
  await this.#dataStore.indexer.idle()
@@ -284,7 +334,7 @@ export class DataType extends TypedEmitter {
284
334
  ? this.#sql.getManyWithDeleted.all()
285
335
  : this.#sql.getMany.all()
286
336
  return await Promise.all(
287
- rows.map((doc) => this.#translate(deNullify(doc), { lang }))
337
+ rows.map((doc) => this.#mutatingAddDerivedFields(doc, { lang }))
288
338
  )
289
339
  }
290
340
 
@@ -292,7 +342,7 @@ export class DataType extends TypedEmitter {
292
342
  * @template {Exact<ExcludeSchema<TValue, 'coreOwnership'>, T>} T
293
343
  * @param {string | string[]} versionId
294
344
  * @param {T} value
295
- * @returns {Promise<TDoc & { forks: string[] }>}
345
+ * @returns {Promise<TDoc & DerivedDocFields>}
296
346
  */
297
347
  async update(versionId, value) {
298
348
  await this.#dataStore.indexer.idle()
@@ -316,7 +366,7 @@ export class DataType extends TypedEmitter {
316
366
 
317
367
  /**
318
368
  * @param {string} docId
319
- * @returns {Promise<TDoc & { forks: string[] }>}
369
+ * @returns {Promise<TDoc & DerivedDocFields>}
320
370
  */
321
371
  async delete(docId) {
322
372
  await this.#dataStore.indexer.idle()
@@ -383,15 +433,15 @@ export class DataType extends TypedEmitter {
383
433
  */
384
434
  #handleDataStoreUpdate = (docIds) => {
385
435
  if (this.listenerCount('updated-docs') === 0) return
386
- const updatedDocs = /** @type {TDoc[]} */ (
436
+ const updatedDocs = /** @type {Promise<TDoc[]>} */ Promise.all(
387
437
  this.#db
388
438
  .select()
389
439
  .from(this.#table)
390
440
  .where(inArray(this.#table.docId, [...docIds]))
391
441
  .all()
392
- .map((doc) => deNullify(doc))
442
+ .map((doc) => this.#mutatingAddDerivedFields(doc))
393
443
  )
394
- this.emit('updated-docs', updatedDocs)
444
+ updatedDocs.then((docs) => this.emit('updated-docs', docs))
395
445
  }
396
446
  }
397
447
 
@@ -287,74 +287,78 @@ export class MapeoProject extends TypedEmitter {
287
287
 
288
288
  /** @type {typeof TranslationApi.prototype.get} */
289
289
  const getTranslations = (...args) => this.$translation.get(...args)
290
+ /** @type {(versionId: string) => Promise<string>} */
291
+ const getDeviceIdForVersionId = (...args) =>
292
+ this.$originalVersionIdToDeviceId(...args)
293
+
290
294
  this.#dataTypes = {
291
295
  observation: new DataType({
292
296
  dataStore: this.#dataStores.data,
293
297
  table: observationTable,
294
298
  db,
295
- getTranslations,
299
+ getDeviceIdForVersionId,
296
300
  }),
297
301
  track: new DataType({
298
302
  dataStore: this.#dataStores.data,
299
303
  table: trackTable,
300
304
  db,
301
- getTranslations,
305
+ getDeviceIdForVersionId,
302
306
  }),
303
307
  remoteDetectionAlert: new DataType({
304
308
  dataStore: this.#dataStores.data,
305
309
  table: remoteDetectionAlertTable,
306
310
  db,
307
- getTranslations,
311
+ getDeviceIdForVersionId,
308
312
  }),
309
313
  preset: new DataType({
310
314
  dataStore: this.#dataStores.config,
311
315
  table: presetTable,
312
316
  db,
313
317
  getTranslations,
318
+ getDeviceIdForVersionId,
314
319
  }),
315
320
  field: new DataType({
316
321
  dataStore: this.#dataStores.config,
317
322
  table: fieldTable,
318
323
  db,
319
324
  getTranslations,
325
+ getDeviceIdForVersionId,
320
326
  }),
321
327
  projectSettings: new DataType({
322
328
  dataStore: this.#dataStores.config,
323
329
  table: projectSettingsTable,
324
330
  db: sharedDb,
325
- getTranslations,
331
+ getDeviceIdForVersionId,
326
332
  }),
327
333
  coreOwnership: new DataType({
328
334
  dataStore: this.#dataStores.auth,
329
335
  table: coreOwnershipTable,
330
336
  db,
331
- getTranslations,
337
+ getDeviceIdForVersionId: () => Promise.resolve(''),
332
338
  }),
333
339
  role: new DataType({
334
340
  dataStore: this.#dataStores.auth,
335
341
  table: roleTable,
336
342
  db,
337
- getTranslations,
343
+ getDeviceIdForVersionId: () => Promise.resolve(''),
338
344
  }),
339
345
  deviceInfo: new DataType({
340
346
  dataStore: this.#dataStores.config,
341
347
  table: deviceInfoTable,
342
348
  db,
343
- getTranslations,
349
+ getDeviceIdForVersionId: () => Promise.resolve(''),
344
350
  }),
345
351
  icon: new DataType({
346
352
  dataStore: this.#dataStores.config,
347
353
  table: iconTable,
348
354
  db,
349
- getTranslations,
355
+ getDeviceIdForVersionId,
350
356
  }),
351
357
  translation: new DataType({
352
358
  dataStore: this.#dataStores.config,
353
359
  table: translationTable,
354
360
  db,
355
- getTranslations: () => {
356
- throw new Error('Cannot get translation for translations')
357
- },
361
+ getDeviceIdForVersionId,
358
362
  }),
359
363
  }
360
364
  this.#identityKeypair = keyManager.getIdentityKeypair()
@@ -706,6 +710,7 @@ export class MapeoProject extends TypedEmitter {
706
710
  }
707
711
 
708
712
  /**
713
+ * @deprecated
709
714
  * @param {string} originalVersionId The `originalVersionId` from a document.
710
715
  * @returns {Promise<string>} The device ID for this creator.
711
716
  * @throws When device ID cannot be found.
@@ -35,7 +35,7 @@ export default class TranslationApi {
35
35
  docs.map((doc) => this.index(doc))
36
36
  })
37
37
  .catch((err) => {
38
- throw new Error(`error loading Translation cache: ${err}`)
38
+ console.error(`error loading Translation cache: ${err}`)
39
39
  })
40
40
  }
41
41
 
package/src/types.ts CHANGED
@@ -74,25 +74,6 @@ export type CoreOwnershipWithSignaturesValue = Omit<
74
74
  Exclude<keyof MapeoCommon, 'schemaName'>
75
75
  >
76
76
 
77
- type NullToOptional<T> = SetOptional<T, NullKeys<T>>
78
- type RemoveNull<T> = {
79
- [K in keyof T]: Exclude<T[K], null>
80
- }
81
-
82
- type NullKeys<Base> = NonNullable<
83
- // Wrap in `NonNullable` to strip away the `undefined` type from the produced union.
84
- {
85
- // Map through all the keys of the given base type.
86
- [Key in keyof Base]: null extends Base[Key] // Pick only keys with types extending the given `Condition` type.
87
- ? // Retain this key since the condition passes.
88
- Key
89
- : // Discard this key since the condition fails.
90
- never
91
-
92
- // Convert the produced object into a union type of the keys which passed the conditional test.
93
- }[keyof Base]
94
- >
95
-
96
77
  /**
97
78
  * Replace an object's `Buffer` values with `string`s. Useful for serialization.
98
79
  */
@@ -106,7 +87,17 @@ export type MapBuffers<T> = {
106
87
  * top-level optional props set to `null`) to the original types in
107
88
  * @comapeo/schema
108
89
  */
109
- export type NullableToOptional<T> = Simplify<RemoveNull<NullToOptional<T>>>
90
+ export type NullableToOptional<T> = Simplify<
91
+ {
92
+ [K in keyof T as null extends T[K] ? K : never]?: Exclude<T[K], null>
93
+ } & {
94
+ [K in keyof T as null extends T[K] ? never : K]: T[K]
95
+ }
96
+ >
97
+ export type OptionalToNullable<T> = Simplify<{
98
+ [K in keyof T]-?: T[K] | (undefined extends T[K] ? null : never)
99
+ }>
100
+
110
101
  export type KeyPair = {
111
102
  publicKey: PublicKey
112
103
  secretKey: SecretKey
package/src/utils.js CHANGED
@@ -87,7 +87,6 @@ export function isDefined(value) {
87
87
  * @param {T} obj
88
88
  * @returns {import('./types.js').NullableToOptional<T>}
89
89
  */
90
-
91
90
  export function deNullify(obj) {
92
91
  /** @type {Record<string, any>} */
93
92
  const objNoNulls = {}
@@ -98,9 +97,29 @@ export function deNullify(obj) {
98
97
  }
99
98
 
100
99
  /**
101
- * @template {import('@comapeo/schema').MapeoDoc & { forks?: string[] }} T
100
+ * __Mutating__
101
+ * When reading from SQLite, any optional properties are set to `null`. This
102
+ * converts `null` back to `undefined` to match the input types (e.g. the types
103
+ * defined in @comapeo/schema)
104
+ * @template {{}} T
105
+ * @param {T} obj
106
+ * @returns {import('./types.js').NullableToOptional<T>}
107
+ */
108
+ export function mutatingDeNullify(obj) {
109
+ for (const key of Object.keys(obj)) {
110
+ // @ts-expect-error
111
+ if (obj[key] === null) {
112
+ // @ts-expect-error
113
+ obj[key] = undefined
114
+ }
115
+ }
116
+ return /** @type {import('./types.js').NullableToOptional<T>} */ (obj)
117
+ }
118
+
119
+ /**
120
+ * @template {import('@comapeo/schema').MapeoDoc & { forks?: string[], createdBy?: string, updatedBy?: string }} T
102
121
  * @param {T} doc
103
- * @returns {Omit<T, 'docId' | 'versionId' | 'originalVersionId' | 'links' | 'forks' | 'createdAt' | 'updatedAt' | 'deleted'>}
122
+ * @returns {Omit<T, 'docId' | 'versionId' | 'originalVersionId' | 'links' | 'forks' | 'createdAt' | 'updatedAt' | 'createdBy' | 'updatedBy' | 'deleted' >}
104
123
  */
105
124
  export function valueOf(doc) {
106
125
  return omit(doc, [
@@ -111,6 +130,8 @@ export function valueOf(doc) {
111
130
  'forks',
112
131
  'createdAt',
113
132
  'updatedAt',
133
+ 'createdBy',
134
+ 'updatedBy',
114
135
  'deleted',
115
136
  ])
116
137
  }