@doubling/types 0.5.0 → 0.6.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.
- package/README.md +3 -1
- package/dist/crdt-store.d.ts +39 -5
- package/dist/crdt-store.d.ts.map +1 -1
- package/dist/crdt-store.js +61 -9
- package/dist/crdt-store.js.map +1 -1
- package/dist/firestore.d.ts +1 -0
- package/dist/firestore.d.ts.map +1 -1
- package/dist/ids.d.ts +25 -0
- package/dist/ids.d.ts.map +1 -0
- package/dist/ids.js +57 -0
- package/dist/ids.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -21,7 +21,9 @@ The duplication was load-bearing for shipping (web and sync run in different env
|
|
|
21
21
|
- `src/crdt-store.ts`: `UpdateRecord`, `Snapshot`, `UpdateStore`,
|
|
22
22
|
`isAfterBaseline`, `isVisibleAfterFirestoreBaseline`,
|
|
23
23
|
`firestoreBaselineInclusiveMillis`,
|
|
24
|
-
`isReconnectFromCache`, `compactionPublishedCoveringBaseline
|
|
24
|
+
`isReconnectFromCache`, `compactionPublishedCoveringBaseline`
|
|
25
|
+
(covering also requires `remainingRows` and `refusedFutureRows` to be
|
|
26
|
+
absent or a finite zero),
|
|
25
27
|
`isTransientResyncError`, `snapshotReloadUnchanged`, and
|
|
26
28
|
`updateStoreConformance`. The CRDT update-store contract plus the
|
|
27
29
|
behavioural cases both `web/` and `sync/` run against their own backends.
|
package/dist/crdt-store.d.ts
CHANGED
|
@@ -135,11 +135,12 @@ export interface CompactionRequestResult {
|
|
|
135
135
|
* (`{ status: 'compacted' }`), or the httpsCallable wrap (`{ data }`).
|
|
136
136
|
* `undefined` is treated as covered so existing test callbacks that
|
|
137
137
|
* return void keep the reset they already assert. A `compacted`
|
|
138
|
-
* payload that also names `refusedFutureRows > 0`
|
|
139
|
-
* those rows stay in the log.
|
|
140
|
-
*
|
|
141
|
-
*
|
|
142
|
-
* empty payload must not
|
|
138
|
+
* payload that also names `refusedFutureRows > 0`, `remainingRows > 0`,
|
|
139
|
+
* or `settlingRows > 0` is not covering: those rows stay in the log.
|
|
140
|
+
* A present count of any of those fields that is not a finite value
|
|
141
|
+
* of zero or more fails closed the same way. Every other unrecognized
|
|
142
|
+
* shape fails closed: a version-skewed or empty payload must not
|
|
143
|
+
* clear the backlog. */
|
|
143
144
|
export declare function compactionPublishedCoveringBaseline(result: unknown): boolean;
|
|
144
145
|
/** True when a reconnect confirm-read matches the first snapshot read.
|
|
145
146
|
*
|
|
@@ -154,6 +155,39 @@ export declare function snapshotReloadUnchanged(first: Snapshot | null, confirm:
|
|
|
154
155
|
* Firestore readers attach this code so `isTransientResyncError`
|
|
155
156
|
* classifies them as terminal. */
|
|
156
157
|
export declare function snapshotDecodeError(message: string, cause?: unknown): Error;
|
|
158
|
+
/** Duck-typed Firestore Timestamp. Both SDKs expose `toMillis()`. */
|
|
159
|
+
export type MillisTimestamp = {
|
|
160
|
+
toMillis(): number;
|
|
161
|
+
};
|
|
162
|
+
export declare function isUsableTimestamp(value: unknown): value is MillisTimestamp;
|
|
163
|
+
export declare function codedFailedPrecondition(message: string): Error;
|
|
164
|
+
/** Bytes from a live yupdate doc. Missing or non-bytes is durable
|
|
165
|
+
* client-controlled corruption, not a skip. */
|
|
166
|
+
export declare function decodeYupdateBytes(update: unknown): Uint8Array;
|
|
167
|
+
/** A live listener fire. Missing `createdAt` is a pending
|
|
168
|
+
* `serverTimestamp()` write, not corruption: skip it. A present
|
|
169
|
+
* `update` that is not bytes is durable and must fail the binding. */
|
|
170
|
+
export declare function readLiveYupdate(data: {
|
|
171
|
+
createdAt?: unknown;
|
|
172
|
+
update?: unknown;
|
|
173
|
+
}): {
|
|
174
|
+
createdAt: MillisTimestamp;
|
|
175
|
+
update: Uint8Array;
|
|
176
|
+
} | null;
|
|
177
|
+
/** A declared CRDT file is empty only when the server showed a snapshot
|
|
178
|
+
* or at least one replay record. A miss with an empty log is missing
|
|
179
|
+
* history, not an empty document. Malformed rows do not revoke
|
|
180
|
+
* authority when a snapshot or other rows exist. */
|
|
181
|
+
export declare function isAuthoritativeCrdtLoad(input: {
|
|
182
|
+
observedSnapshotDoc: boolean;
|
|
183
|
+
updateCount: number;
|
|
184
|
+
fromServer: boolean;
|
|
185
|
+
allDecodable?: boolean;
|
|
186
|
+
}): boolean;
|
|
187
|
+
export declare function assertUsableSnapshotDoc(input: {
|
|
188
|
+
exists: boolean;
|
|
189
|
+
hasState: boolean;
|
|
190
|
+
}): void;
|
|
157
191
|
/** True when a reconnect snapshot reload should keep retrying.
|
|
158
192
|
*
|
|
159
193
|
* Permanent codes (permission-denied, unauthenticated, data-loss from
|
package/dist/crdt-store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crdt-store.d.ts","sourceRoot":"","sources":["../src/crdt-store.ts"],"names":[],"mappings":"AA6BA,qEAAqE;AACrE,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,8DAA8D;AAC9D,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,UAAU,CAAC;IAClB,6DAA6D;IAC7D,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,8CAA8C;AAC9C,MAAM,WAAW,mBAAmB;IAClC;;2EAEuE;IACvE,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,MAAM,WAAW,WAAW;IAC1B,YAAY,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IACtE,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACrE,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD;;;;;;;;;;;;;;;;;;;;;;2BAsBuB;IACvB,gBAAgB,CACd,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,EACxC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,EAC1B,QAAQ,CAAC,EAAE,MAAM,IAAI,GACpB,MAAM,IAAI,CAAC;CACf;AAED;;;;yDAIyD;AACzD,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAE9E;AAED;;;;;;gBAMgB;AAChB,wBAAgB,gCAAgC,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAM3E;AAED;;;;;;mBAMmB;AACnB,wBAAgB,+BAA+B,CAC7C,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,GAAG,IAAI,GACxB,OAAO,CAMT;AAED;;;;;;;;;;;;oEAYoE;AACpE,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAE1F;AAED;;kEAEkE;AAClE,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;CAClB;AAuBD
|
|
1
|
+
{"version":3,"file":"crdt-store.d.ts","sourceRoot":"","sources":["../src/crdt-store.ts"],"names":[],"mappings":"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"}
|
package/dist/crdt-store.js
CHANGED
|
@@ -108,18 +108,23 @@ function unwrapCallableData(result) {
|
|
|
108
108
|
* (`{ status: 'compacted' }`), or the httpsCallable wrap (`{ data }`).
|
|
109
109
|
* `undefined` is treated as covered so existing test callbacks that
|
|
110
110
|
* return void keep the reset they already assert. A `compacted`
|
|
111
|
-
* payload that also names `refusedFutureRows > 0`
|
|
112
|
-
* those rows stay in the log.
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
* empty payload must not
|
|
111
|
+
* payload that also names `refusedFutureRows > 0`, `remainingRows > 0`,
|
|
112
|
+
* or `settlingRows > 0` is not covering: those rows stay in the log.
|
|
113
|
+
* A present count of any of those fields that is not a finite value
|
|
114
|
+
* of zero or more fails closed the same way. Every other unrecognized
|
|
115
|
+
* shape fails closed: a version-skewed or empty payload must not
|
|
116
|
+
* clear the backlog. */
|
|
116
117
|
export function compactionPublishedCoveringBaseline(result) {
|
|
117
118
|
if (result === undefined)
|
|
118
119
|
return true;
|
|
119
120
|
const data = unwrapCallableData(result);
|
|
120
121
|
if (typeof data !== 'object' || data === null)
|
|
121
122
|
return false;
|
|
122
|
-
if (
|
|
123
|
+
if (unclaimedCountPreventsCoverage(data, 'refusedFutureRows'))
|
|
124
|
+
return false;
|
|
125
|
+
if (unclaimedCountPreventsCoverage(data, 'remainingRows'))
|
|
126
|
+
return false;
|
|
127
|
+
if (unclaimedCountPreventsCoverage(data, 'settlingRows'))
|
|
123
128
|
return false;
|
|
124
129
|
if ('covered' in data)
|
|
125
130
|
return data.covered === true;
|
|
@@ -127,10 +132,10 @@ export function compactionPublishedCoveringBaseline(result) {
|
|
|
127
132
|
return data.status === 'compacted';
|
|
128
133
|
return false;
|
|
129
134
|
}
|
|
130
|
-
function
|
|
131
|
-
if (!(
|
|
135
|
+
function unclaimedCountPreventsCoverage(data, key) {
|
|
136
|
+
if (!(key in data))
|
|
132
137
|
return false;
|
|
133
|
-
const n = data
|
|
138
|
+
const n = data[key];
|
|
134
139
|
if (typeof n !== 'number' || !Number.isFinite(n) || n < 0)
|
|
135
140
|
return true;
|
|
136
141
|
return n > 0;
|
|
@@ -157,6 +162,53 @@ export function snapshotDecodeError(message, cause) {
|
|
|
157
162
|
const err = cause !== undefined ? new Error(message, { cause }) : new Error(message);
|
|
158
163
|
return Object.assign(err, { code: 'data-loss' });
|
|
159
164
|
}
|
|
165
|
+
export function isUsableTimestamp(value) {
|
|
166
|
+
return typeof value === 'object'
|
|
167
|
+
&& value !== null
|
|
168
|
+
&& typeof value.toMillis === 'function';
|
|
169
|
+
}
|
|
170
|
+
export function codedFailedPrecondition(message) {
|
|
171
|
+
return Object.assign(new Error(message), { code: 'failed-precondition' });
|
|
172
|
+
}
|
|
173
|
+
/** Bytes from a live yupdate doc. Missing or non-bytes is durable
|
|
174
|
+
* client-controlled corruption, not a skip. */
|
|
175
|
+
export function decodeYupdateBytes(update) {
|
|
176
|
+
const field = update;
|
|
177
|
+
if (!field || typeof field.toUint8Array !== 'function') {
|
|
178
|
+
throw codedFailedPrecondition('Yjs update document is missing bytes');
|
|
179
|
+
}
|
|
180
|
+
try {
|
|
181
|
+
return field.toUint8Array();
|
|
182
|
+
}
|
|
183
|
+
catch {
|
|
184
|
+
throw codedFailedPrecondition('Yjs update document is not bytes');
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
/** A live listener fire. Missing `createdAt` is a pending
|
|
188
|
+
* `serverTimestamp()` write, not corruption: skip it. A present
|
|
189
|
+
* `update` that is not bytes is durable and must fail the binding. */
|
|
190
|
+
export function readLiveYupdate(data) {
|
|
191
|
+
if (data.createdAt == null)
|
|
192
|
+
return null;
|
|
193
|
+
if (!isUsableTimestamp(data.createdAt)) {
|
|
194
|
+
throw codedFailedPrecondition('Yjs update document createdAt is not a timestamp');
|
|
195
|
+
}
|
|
196
|
+
return { createdAt: data.createdAt, update: decodeYupdateBytes(data.update) };
|
|
197
|
+
}
|
|
198
|
+
/** A declared CRDT file is empty only when the server showed a snapshot
|
|
199
|
+
* or at least one replay record. A miss with an empty log is missing
|
|
200
|
+
* history, not an empty document. Malformed rows do not revoke
|
|
201
|
+
* authority when a snapshot or other rows exist. */
|
|
202
|
+
export function isAuthoritativeCrdtLoad(input) {
|
|
203
|
+
if (!input.fromServer)
|
|
204
|
+
return false;
|
|
205
|
+
return input.observedSnapshotDoc || input.updateCount > 0;
|
|
206
|
+
}
|
|
207
|
+
export function assertUsableSnapshotDoc(input) {
|
|
208
|
+
if (input.exists && !input.hasState) {
|
|
209
|
+
throw codedFailedPrecondition('Yjs snapshot exists without a usable state');
|
|
210
|
+
}
|
|
211
|
+
}
|
|
160
212
|
/** True when a reconnect snapshot reload should keep retrying.
|
|
161
213
|
*
|
|
162
214
|
* Permanent codes (permission-denied, unauthenticated, data-loss from
|
package/dist/crdt-store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crdt-store.js","sourceRoot":"","sources":["../src/crdt-store.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,EAAE;AACF,oCAAoC;AACpC,EAAE;AACF,gEAAgE;AAChE,yEAAyE;AACzE,uEAAuE;AACvE,yEAAyE;AACzE,sEAAsE;AACtE,wDAAwD;AACxD,wEAAwE;AACxE,oEAAoE;AACpE,uEAAuE;AACvE,mEAAmE;AACnE,2DAA2D;AAC3D,6CAA6C;AAC7C,EAAE;AACF,wEAAwE;AACxE,yEAAyE;AACzE,sEAAsE;AACtE,kCAAkC;AAClC,EAAE;AACF,oEAAoE;AACpE,uEAAuE;AACvE,wEAAwE;AACxE,sEAAsE;AACtE,qEAAqE;AACrE,6BAA6B;AAmG7B;;;;yDAIyD;AACzD,MAAM,UAAU,eAAe,CAAC,EAAU,EAAE,UAAyB;IACnE,OAAO,UAAU,KAAK,IAAI,IAAI,EAAE,GAAG,UAAU,CAAC;AAChD,CAAC;AAED;;;;;;gBAMgB;AAChB,MAAM,UAAU,gCAAgC,CAAC,UAAkB;IACjE,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACtD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;mBAMmB;AACnB,MAAM,UAAU,+BAA+B,CAC7C,EAAU,EACV,UAAyB;IAEzB,IAAI,UAAU,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,EAAE,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IACpC,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACpC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9C,OAAO,IAAI,IAAI,MAAM,CAAC;AACxB,CAAC;AAED;;;;;;;;;;;;oEAYoE;AACpE,MAAM,UAAU,oBAAoB,CAAC,eAAwB,EAAE,SAAkB;IAC/E,OAAO,eAAe,IAAI,CAAC,SAAS,CAAC;AACvC,CAAC;AASD,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IACpC,mBAAmB;IACnB,iBAAiB;IACjB,kBAAkB;IAClB,qBAAqB;IACrB,WAAW;CACZ,CAAC,CAAC;AAEH,SAAS,SAAS,CAAC,GAAY;IAC7B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACzD,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,IAAI,GAAI,GAAyB,CAAC,IAAI,CAAC;IAC7C,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAChD,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAe;IACzC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IACjE,IAAI,MAAM,IAAI,MAAM;QAAE,OAAQ,MAA4B,CAAC,IAAI,CAAC;IAChE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"crdt-store.js","sourceRoot":"","sources":["../src/crdt-store.ts"],"names":[],"mappings":"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"}
|
package/dist/firestore.d.ts
CHANGED
package/dist/firestore.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firestore.d.ts","sourceRoot":"","sources":["../src/firestore.ts"],"names":[],"mappings":"AAoBA,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;AAKvC,UAAU,UAAU;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"firestore.d.ts","sourceRoot":"","sources":["../src/firestore.ts"],"names":[],"mappings":"AAoBA,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;AAKvC,UAAU,UAAU;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAM5B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AASD,MAAM,WAAW,UAAW,SAAQ,UAAU;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IA4BtB,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAQhC,iBAAiB,CAAC,EAAE,IAAI,CAAC;CAC1B;AAGD,MAAM,WAAW,YAAa,SAAQ,UAAU;IAC9C,IAAI,EAAE,QAAQ,CAAC;CAChB;AAID,MAAM,MAAM,MAAM,GAAG,UAAU,GAAG,YAAY,CAAC;AAM/C,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAKD,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IAQjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAGD,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAGD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAKD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
|
package/dist/ids.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export declare const FIRESTORE_ID_MAX_BYTES = 1500;
|
|
2
|
+
export declare class InvalidIdError extends Error {
|
|
3
|
+
readonly code = "invalid-argument";
|
|
4
|
+
constructor(label: string, reason: string);
|
|
5
|
+
}
|
|
6
|
+
export declare function parseFirestoreId(raw: unknown, label: string): string;
|
|
7
|
+
export type OrgId = string & {
|
|
8
|
+
readonly __brand: 'OrgId';
|
|
9
|
+
};
|
|
10
|
+
export type FileId = string & {
|
|
11
|
+
readonly __brand: 'FileId';
|
|
12
|
+
};
|
|
13
|
+
export type Uid = string & {
|
|
14
|
+
readonly __brand: 'Uid';
|
|
15
|
+
};
|
|
16
|
+
export type TeamId = string & {
|
|
17
|
+
readonly __brand: 'TeamId';
|
|
18
|
+
};
|
|
19
|
+
export declare function parseOrgId(raw: unknown): OrgId;
|
|
20
|
+
export declare function parseFileId(raw: unknown): FileId;
|
|
21
|
+
export declare function parseUid(raw: unknown): Uid;
|
|
22
|
+
export declare function parseTeamId(raw: unknown): TeamId;
|
|
23
|
+
export declare function orgFileDocPath(orgId: OrgId, fileId: FileId): string;
|
|
24
|
+
export declare function orgDocPath(orgId: OrgId): string;
|
|
25
|
+
//# sourceMappingURL=ids.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../src/ids.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAE3C,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,IAAI,sBAAsB;gBACvB,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAI1C;AAID,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAcpE;AAED,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAC3D,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC;AAC7D,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAA;CAAE,CAAC;AACvD,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC;AAE7D,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK,CAE9C;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAEhD;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,CAE1C;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAEhD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAE/C"}
|
package/dist/ids.js
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// Branded Firestore path-segment ids.
|
|
2
|
+
//
|
|
3
|
+
// Callables used to interpolate caller-supplied orgId / fileId (and
|
|
4
|
+
// related ids) straight into document paths. A value carrying `/`
|
|
5
|
+
// steers the path at a different document. Today that usually dies
|
|
6
|
+
// later because a membership lookup interpolates the same tainted
|
|
7
|
+
// value, or because rules refuse even-segment writes under files.
|
|
8
|
+
// Those refusals are accidents of unrelated code, not a check.
|
|
9
|
+
//
|
|
10
|
+
// The only constructor for each brand is the parse function below.
|
|
11
|
+
// It refuses an empty string, `/`, `.`, `..`, and anything longer
|
|
12
|
+
// than Firestore's 1500-byte id limit. Handlers parse at the
|
|
13
|
+
// callable entry and pass the brand inward so a raw string cannot
|
|
14
|
+
// reach a path interpolation without a type error.
|
|
15
|
+
export const FIRESTORE_ID_MAX_BYTES = 1500;
|
|
16
|
+
export class InvalidIdError extends Error {
|
|
17
|
+
code = 'invalid-argument';
|
|
18
|
+
constructor(label, reason) {
|
|
19
|
+
super(`${label} is not a valid Firestore path segment: ${reason}`);
|
|
20
|
+
this.name = 'InvalidIdError';
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
const encoder = new TextEncoder();
|
|
24
|
+
export function parseFirestoreId(raw, label) {
|
|
25
|
+
if (typeof raw !== 'string' || raw.length === 0) {
|
|
26
|
+
throw new InvalidIdError(label, 'must be a non-empty string');
|
|
27
|
+
}
|
|
28
|
+
if (raw.includes('/')) {
|
|
29
|
+
throw new InvalidIdError(label, 'must not contain "/"');
|
|
30
|
+
}
|
|
31
|
+
if (raw === '.' || raw === '..') {
|
|
32
|
+
throw new InvalidIdError(label, 'must not be "." or ".."');
|
|
33
|
+
}
|
|
34
|
+
if (encoder.encode(raw).byteLength > FIRESTORE_ID_MAX_BYTES) {
|
|
35
|
+
throw new InvalidIdError(label, `must be at most ${FIRESTORE_ID_MAX_BYTES} bytes`);
|
|
36
|
+
}
|
|
37
|
+
return raw;
|
|
38
|
+
}
|
|
39
|
+
export function parseOrgId(raw) {
|
|
40
|
+
return parseFirestoreId(raw, 'orgId');
|
|
41
|
+
}
|
|
42
|
+
export function parseFileId(raw) {
|
|
43
|
+
return parseFirestoreId(raw, 'fileId');
|
|
44
|
+
}
|
|
45
|
+
export function parseUid(raw) {
|
|
46
|
+
return parseFirestoreId(raw, 'uid');
|
|
47
|
+
}
|
|
48
|
+
export function parseTeamId(raw) {
|
|
49
|
+
return parseFirestoreId(raw, 'teamId');
|
|
50
|
+
}
|
|
51
|
+
export function orgFileDocPath(orgId, fileId) {
|
|
52
|
+
return `orgs/${orgId}/files/${fileId}`;
|
|
53
|
+
}
|
|
54
|
+
export function orgDocPath(orgId) {
|
|
55
|
+
return `orgs/${orgId}`;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=ids.js.map
|
package/dist/ids.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../src/ids.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,EAAE;AACF,oEAAoE;AACpE,kEAAkE;AAClE,mEAAmE;AACnE,kEAAkE;AAClE,kEAAkE;AAClE,+DAA+D;AAC/D,EAAE;AACF,mEAAmE;AACnE,kEAAkE;AAClE,6DAA6D;AAC7D,kEAAkE;AAClE,mDAAmD;AAEnD,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAE3C,MAAM,OAAO,cAAe,SAAQ,KAAK;IAC9B,IAAI,GAAG,kBAAkB,CAAC;IACnC,YAAY,KAAa,EAAE,MAAc;QACvC,KAAK,CAAC,GAAG,KAAK,2CAA2C,MAAM,EAAE,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAElC,MAAM,UAAU,gBAAgB,CAAC,GAAY,EAAE,KAAa;IAC1D,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,cAAc,CAAC,KAAK,EAAE,4BAA4B,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,cAAc,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAChC,MAAM,IAAI,cAAc,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,GAAG,sBAAsB,EAAE,CAAC;QAC5D,MAAM,IAAI,cAAc,CAAC,KAAK,EAAE,mBAAmB,sBAAsB,QAAQ,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAOD,MAAM,UAAU,UAAU,CAAC,GAAY;IACrC,OAAO,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAU,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,OAAO,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAW,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,GAAY;IACnC,OAAO,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAQ,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,OAAO,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAW,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAY,EAAE,MAAc;IACzD,OAAO,QAAQ,KAAK,UAAU,MAAM,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAY;IACrC,OAAO,QAAQ,KAAK,EAAE,CAAC;AACzB,CAAC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,EAAE;AACF,6DAA6D;AAC7D,qEAAqE;AACrE,6DAA6D;AAC7D,qCAAqC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,EAAE;AACF,6DAA6D;AAC7D,qEAAqE;AACrE,6DAA6D;AAC7D,qCAAqC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@doubling/types",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Shared Firestore document interfaces, MIME / path helpers, and CRDT constants consumed by web/, sync/, and functions/. Single source of truth so consumers cannot drift on a document shape or a content-hash encoding.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|