@doubling/types 0.6.1 → 0.7.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.
@@ -0,0 +1,65 @@
1
+ /** The halt entry on an agent policy document. An empty or absent
2
+ * `installIds` is a uid-wide halt: every install under the uid is
3
+ * refused, and that is the control for a hostile process. A non-empty
4
+ * `installIds` names the installs to halt, so one machine stops while
5
+ * the same user's others keep syncing; a caller that cannot present an
6
+ * install id under a named halt is refused. The install id is
7
+ * self-reported, so a named halt scopes enforcement rather than
8
+ * providing it: a caller that presents a different id escapes it. */
9
+ export interface AgentHalt {
10
+ haltedAt?: string | null;
11
+ reason?: string | null;
12
+ actor?: string | null;
13
+ installIds?: string[] | null;
14
+ }
15
+ export interface AgentPolicy {
16
+ /** Lowest agent version allowed to mint. Absent means no floor. */
17
+ minAgentVersion?: string | null;
18
+ /** Present means this uid is halted. */
19
+ halt?: AgentHalt | null;
20
+ }
21
+ export type AgentPolicyState = {
22
+ kind: 'ok';
23
+ } | {
24
+ kind: 'halted';
25
+ reason: string;
26
+ } | {
27
+ kind: 'below-floor';
28
+ floor: string;
29
+ }
30
+ /** The policy could not be read. Never treat this as ok. */
31
+ | {
32
+ kind: 'unknown';
33
+ message: string;
34
+ };
35
+ export type MintRefusalReason = 'operator-halt' | 'below-min-version';
36
+ export type MintDecision = {
37
+ allowed: true;
38
+ } | {
39
+ allowed: false;
40
+ reason: MintRefusalReason;
41
+ message: string;
42
+ };
43
+ export interface MintGuardInput {
44
+ uid: string;
45
+ installId?: string | null;
46
+ agentVersion?: string | null;
47
+ }
48
+ /** Compare two dotted numeric versions. Missing segments are zero and a
49
+ * pre-release or build suffix is ignored, which is what an equality
50
+ * floor wants: `1.16.10` and `1.16.10-beta.1` compare equal. */
51
+ export declare function compareVersions(a: string, b: string): number;
52
+ /** The shared decision, used by the daemon listener and the mint guard.
53
+ * A halt wins over a floor so the surfaced reason is the operator
54
+ * action, not the version. `installId` is the install the caller
55
+ * believes it is; it only matters when the halt names installs. */
56
+ export declare function evaluateAgentPolicy(policy: AgentPolicy | null | undefined, agentVersion: string, installId?: string | null): AgentPolicyState;
57
+ /** The mint-facing decision. A uid-wide halt (no install ids) refuses
58
+ * every install for the uid; a named-install halt refuses only the
59
+ * installs named, with a missing install id refused fail-closed. */
60
+ export declare function guardMint(input: MintGuardInput, policy: AgentPolicy | null | undefined): MintDecision;
61
+ /** Combine the per-agent document with the fleet floor document. The
62
+ * halt is per agent; the floor is the stricter of the two, so a fleet
63
+ * floor applies to every agent including one with no per-agent floor. */
64
+ export declare function mergeAgentPolicies(perAgent: AgentPolicy | null | undefined, fleet: AgentPolicy | null | undefined): AgentPolicy | null;
65
+ //# sourceMappingURL=agent-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-policy.d.ts","sourceRoot":"","sources":["../src/agent-policy.ts"],"names":[],"mappings":"AAQA;;;;;;;sEAOsE;AACtE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,WAAW;IAC1B,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,wCAAwC;IACxC,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,GACd;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AACxC,4DAA4D;GAC1D;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC,MAAM,MAAM,iBAAiB,GAAG,eAAe,GAAG,mBAAmB,CAAC;AAEtE,MAAM,MAAM,YAAY,GACpB;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,GACjB;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnE,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAcD;;iEAEiE;AACjE,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAW5D;AAED;;;oEAGoE;AACpE,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,EACtC,YAAY,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GACxB,gBAAgB,CAyBlB;AAED;;qEAEqE;AACrE,wBAAgB,SAAS,CACvB,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GACrC,YAAY,CAiBd;AAED;;0EAE0E;AAC1E,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,EACxC,KAAK,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GACpC,WAAW,GAAG,IAAI,CAepB"}
@@ -0,0 +1,110 @@
1
+ // Agent policy: the operator halt and the fleet minimum agent version
2
+ // (DOU-622, DOU-623). One document per agent at `agentPolicy/{uid}`,
3
+ // written only by the operator surface on the Admin SDK and read by the
4
+ // daemon and the web provider. This module holds the pure decision so
5
+ // the Cloud Function mint path and the daemon's listener cannot drift:
6
+ // the daemon stops when it reads the document, and the mint refuses a
7
+ // daemon that ignores it.
8
+ function parseVersion(version) {
9
+ const core = version.trim().split('-')[0] ?? '';
10
+ const parts = core.split('.');
11
+ const out = [];
12
+ for (const part of parts) {
13
+ const n = Number.parseInt(part, 10);
14
+ if (!Number.isFinite(n))
15
+ return out;
16
+ out.push(n);
17
+ }
18
+ return out;
19
+ }
20
+ /** Compare two dotted numeric versions. Missing segments are zero and a
21
+ * pre-release or build suffix is ignored, which is what an equality
22
+ * floor wants: `1.16.10` and `1.16.10-beta.1` compare equal. */
23
+ export function compareVersions(a, b) {
24
+ const pa = parseVersion(a);
25
+ const pb = parseVersion(b);
26
+ const len = Math.max(pa.length, pb.length);
27
+ for (let i = 0; i < len; i++) {
28
+ const x = pa[i] ?? 0;
29
+ const y = pb[i] ?? 0;
30
+ if (x < y)
31
+ return -1;
32
+ if (x > y)
33
+ return 1;
34
+ }
35
+ return 0;
36
+ }
37
+ /** The shared decision, used by the daemon listener and the mint guard.
38
+ * A halt wins over a floor so the surfaced reason is the operator
39
+ * action, not the version. `installId` is the install the caller
40
+ * believes it is; it only matters when the halt names installs. */
41
+ export function evaluateAgentPolicy(policy, agentVersion, installId) {
42
+ if (!policy)
43
+ return { kind: 'ok' };
44
+ const halt = policy.halt;
45
+ if (halt && typeof halt === 'object') {
46
+ const named = Array.isArray(halt.installIds)
47
+ ? halt.installIds.filter((id) => typeof id === 'string' && id !== '')
48
+ : [];
49
+ const reason = typeof halt.reason === 'string' && halt.reason ? halt.reason : 'no reason given';
50
+ if (named.length === 0)
51
+ return { kind: 'halted', reason };
52
+ // A named-install halt scopes enforcement to those installs. A
53
+ // caller that cannot present an install id fails closed, so a
54
+ // daemon that has not learned its id is not waved through.
55
+ const presented = typeof installId === 'string' && installId !== '' ? installId : null;
56
+ if (presented === null || named.includes(presented)) {
57
+ return { kind: 'halted', reason };
58
+ }
59
+ // This install was not named: fall through to the floor check.
60
+ }
61
+ const floor = policy.minAgentVersion;
62
+ if (typeof floor === 'string' && floor !== '') {
63
+ if (agentVersion === '' || compareVersions(agentVersion, floor) < 0) {
64
+ return { kind: 'below-floor', floor };
65
+ }
66
+ }
67
+ return { kind: 'ok' };
68
+ }
69
+ /** The mint-facing decision. A uid-wide halt (no install ids) refuses
70
+ * every install for the uid; a named-install halt refuses only the
71
+ * installs named, with a missing install id refused fail-closed. */
72
+ export function guardMint(input, policy) {
73
+ const state = evaluateAgentPolicy(policy, input.agentVersion ?? '', input.installId);
74
+ if (state.kind === 'halted') {
75
+ return {
76
+ allowed: false,
77
+ reason: 'operator-halt',
78
+ message: `agent halted by an operator: ${state.reason}`,
79
+ };
80
+ }
81
+ if (state.kind === 'below-floor') {
82
+ return {
83
+ allowed: false,
84
+ reason: 'below-min-version',
85
+ message: `agent ${input.agentVersion || 'unknown'} is below the minimum ${state.floor}`,
86
+ };
87
+ }
88
+ return { allowed: true };
89
+ }
90
+ /** Combine the per-agent document with the fleet floor document. The
91
+ * halt is per agent; the floor is the stricter of the two, so a fleet
92
+ * floor applies to every agent including one with no per-agent floor. */
93
+ export function mergeAgentPolicies(perAgent, fleet) {
94
+ if (!perAgent && !fleet)
95
+ return null;
96
+ const halt = perAgent?.halt ?? fleet?.halt ?? null;
97
+ const floors = [perAgent?.minAgentVersion, fleet?.minAgentVersion]
98
+ .filter((v) => typeof v === 'string' && v !== '');
99
+ let minAgentVersion = null;
100
+ for (const floor of floors) {
101
+ if (minAgentVersion === null || compareVersions(floor, minAgentVersion) > 0) {
102
+ minAgentVersion = floor;
103
+ }
104
+ }
105
+ return {
106
+ ...(halt ? { halt } : {}),
107
+ ...(minAgentVersion ? { minAgentVersion } : {}),
108
+ };
109
+ }
110
+ //# sourceMappingURL=agent-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-policy.js","sourceRoot":"","sources":["../src/agent-policy.ts"],"names":[],"mappings":"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"}
@@ -129,6 +129,7 @@ export declare function isReconnectFromCache(servedFromCache: boolean, fromCache
129
129
  export interface CompactionRequestResult {
130
130
  covered: boolean;
131
131
  }
132
+ export declare const TERMINAL_RESYNC_CODES: Set<string>;
132
133
  /** True when the callable published a covering baseline.
133
134
  *
134
135
  * Accepts the provider result (`{ covered }`), the callable payload
@@ -138,9 +139,11 @@ export interface CompactionRequestResult {
138
139
  * payload that also names `refusedFutureRows > 0`, `remainingRows > 0`,
139
140
  * or `settlingRows > 0` is not covering: those rows stay in the log.
140
141
  * 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. */
142
+ * of zero or more fails closed the same way. A `materialized` payload
143
+ * uploaded the blob but published no baseline, so it is not covering
144
+ * either, whatever `covered` says. Every other unrecognized shape
145
+ * fails closed: a version-skewed or empty payload must not clear the
146
+ * backlog. */
144
147
  export declare function compactionPublishedCoveringBaseline(result: unknown): boolean;
145
148
  /** True when a reconnect confirm-read matches the first snapshot read.
146
149
  *
@@ -1 +1 @@
1
- {"version":3,"file":"crdt-store.d.ts","sourceRoot":"","sources":["../src/crdt-store.ts"],"names":[],"mappings":"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"}
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;AAED,eAAO,MAAM,qBAAqB,aAMhC,CAAC;AAeH;;;;;;;;;;;;;cAac;AACd,wBAAgB,mCAAmC,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAa5E;AAYD;;;;sEAIsE;AACtE,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,QAAQ,GAAG,IAAI,EACtB,OAAO,EAAE,QAAQ,GAAG,IAAI,GACvB,OAAO,CAIT;AAED;;;;;kCAKkC;AAClC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,CAG3E;AAED,qEAAqE;AACrE,MAAM,MAAM,eAAe,GAAG;IAAE,QAAQ,IAAI,MAAM,CAAA;CAAE,CAAC;AAErD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAI1E;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAE9D;AAED;+CAC+C;AAC/C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,UAAU,CAU9D;AAED;;sEAEsE;AACtE,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG;IAAE,SAAS,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GAAG,IAAI,CAM5D;AAED;;;oDAGoD;AACpD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC7C,mBAAmB,EAAE,OAAO,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,GAAG,OAAO,CAGV;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC7C,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB,GAAG,IAAI,CAIP;AAED;;;;;iEAKiE;AACjE,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAM5D;AAID;+DAC+D;AAC/D,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClE,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtE,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5C;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D;AAaD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,sBAAsB,EAAE,eAAe,EAgHnD,CAAC"}
@@ -80,7 +80,7 @@ export function isVisibleAfterFirestoreBaseline(id, baselineId) {
80
80
  export function isReconnectFromCache(servedFromCache, fromCache) {
81
81
  return servedFromCache && !fromCache;
82
82
  }
83
- const TERMINAL_RESYNC_CODES = new Set([
83
+ export const TERMINAL_RESYNC_CODES = new Set([
84
84
  'permission-denied',
85
85
  'unauthenticated',
86
86
  'invalid-argument',
@@ -111,9 +111,11 @@ function unwrapCallableData(result) {
111
111
  * payload that also names `refusedFutureRows > 0`, `remainingRows > 0`,
112
112
  * or `settlingRows > 0` is not covering: those rows stay in the log.
113
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. */
114
+ * of zero or more fails closed the same way. A `materialized` payload
115
+ * uploaded the blob but published no baseline, so it is not covering
116
+ * either, whatever `covered` says. Every other unrecognized shape
117
+ * fails closed: a version-skewed or empty payload must not clear the
118
+ * backlog. */
117
119
  export function compactionPublishedCoveringBaseline(result) {
118
120
  if (result === undefined)
119
121
  return false;
@@ -126,6 +128,9 @@ export function compactionPublishedCoveringBaseline(result) {
126
128
  return false;
127
129
  if (unclaimedCountPreventsCoverage(data, 'settlingRows'))
128
130
  return false;
131
+ if ('status' in data && data.status === 'materialized') {
132
+ return false;
133
+ }
129
134
  if ('covered' in data)
130
135
  return data.covered === true;
131
136
  if ('status' in data)
@@ -1 +1 @@
1
- {"version":3,"file":"crdt-store.js","sourceRoot":"","sources":["../src/crdt-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crdt-store.js","sourceRoot":"","sources":["../src/crdt-store.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,10 @@ export interface FileEntity extends EntityBase {
21
21
  content?: string | null;
22
22
  frontmatter?: unknown;
23
23
  textAuthority?: 'blob' | 'crdt';
24
+ instanceCreatedAt?: {
25
+ toMillis(): number;
26
+ };
27
+ blobObject?: string;
24
28
  contentLoadFailed?: true;
25
29
  }
26
30
  export interface FolderEntity extends EntityBase {
@@ -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;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"}
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;IAMhC,iBAAiB,CAAC,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,CAAC;IAK3C,UAAU,CAAC,EAAE,MAAM,CAAC;IAQpB,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/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './content-hash.js';
2
+ export * from './agent-policy.js';
2
3
  export * from './email.js';
3
4
  export * from './crdt-store.js';
4
5
  export * from './crdt-testing.js';
@@ -7,5 +8,6 @@ export * from './firestore.js';
7
8
  export * from './ids.js';
8
9
  export * from './mime.js';
9
10
  export * from './paths.js';
11
+ export * from './preconditioned-upload.js';
10
12
  export * from './scrub.js';
11
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,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,4BAA4B,CAAC;AAC3C,cAAc,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -5,6 +5,7 @@
5
5
  // on disk is `.ts`. tsc and Node's ESM loader rewrite to the
6
6
  // compiled `.js` at build / runtime.
7
7
  export * from './content-hash.js';
8
+ export * from './agent-policy.js';
8
9
  export * from './email.js';
9
10
  export * from './crdt-store.js';
10
11
  export * from './crdt-testing.js';
@@ -13,5 +14,6 @@ export * from './firestore.js';
13
14
  export * from './ids.js';
14
15
  export * from './mime.js';
15
16
  export * from './paths.js';
17
+ export * from './preconditioned-upload.js';
16
18
  export * from './scrub.js';
17
19
  //# sourceMappingURL=index.js.map
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,YAAY,CAAC;AAC3B,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"}
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,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,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,4BAA4B,CAAC;AAC3C,cAAc,YAAY,CAAC"}
package/dist/paths.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  export declare function extFromPath(path: string | null | undefined): string;
2
- export declare function storagePathFor(orgId: string, fileId: string, ext?: string | null): string;
2
+ export declare function storagePathFor(orgId: string, fileId: string, ext?: string | null, contentHash?: string | null): string;
3
3
  //# sourceMappingURL=paths.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAWA,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAKnE;AAQD,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAEzF"}
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAWA,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAKnE;AAQD,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,EACnB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAC1B,MAAM,CAIR"}
package/dist/paths.js CHANGED
@@ -21,7 +21,10 @@ export function extFromPath(path) {
21
21
  // undefined and falls back to 'bin', which is the documented behaviour
22
22
  // and what `storagePathFor(orgId, fileId)` means; leaving it a required
23
23
  // positional made that call a type error while working at runtime.
24
- export function storagePathFor(orgId, fileId, ext) {
25
- return `orgs/${orgId}/files/${fileId}/current.${ext || 'bin'}`;
24
+ export function storagePathFor(orgId, fileId, ext, contentHash) {
25
+ const unsuffixed = `orgs/${orgId}/files/${fileId}/current.${ext || 'bin'}`;
26
+ if (contentHash)
27
+ return `${unsuffixed}/${contentHash}`;
28
+ return unsuffixed;
26
29
  }
27
30
  //# sourceMappingURL=paths.js.map
package/dist/paths.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,EAAE;AACF,qEAAqE;AACrE,qEAAqE;AACrE,oEAAoE;AACpE,8DAA8D;AAC9D,4BAA4B;AAE5B,qEAAqE;AACrE,oEAAoE;AACpE,uCAAuC;AACvC,MAAM,UAAU,WAAW,CAAC,IAA+B;IACzD,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;IACxE,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACtD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAC3C,CAAC;AAED,oEAAoE;AACpE,oDAAoD;AACpD,uEAAuE;AACvE,uEAAuE;AACvE,wEAAwE;AACxE,mEAAmE;AACnE,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,MAAc,EAAE,GAAmB;IAC/E,OAAO,QAAQ,KAAK,UAAU,MAAM,YAAY,GAAG,IAAI,KAAK,EAAE,CAAC;AACjE,CAAC"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,EAAE;AACF,qEAAqE;AACrE,qEAAqE;AACrE,oEAAoE;AACpE,8DAA8D;AAC9D,4BAA4B;AAE5B,qEAAqE;AACrE,oEAAoE;AACpE,uCAAuC;AACvC,MAAM,UAAU,WAAW,CAAC,IAA+B;IACzD,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;IACxE,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACtD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAC3C,CAAC;AAED,oEAAoE;AACpE,oDAAoD;AACpD,uEAAuE;AACvE,uEAAuE;AACvE,wEAAwE;AACxE,mEAAmE;AACnE,MAAM,UAAU,cAAc,CAC5B,KAAa,EACb,MAAc,EACd,GAAmB,EACnB,WAA2B;IAE3B,MAAM,UAAU,GAAG,QAAQ,KAAK,UAAU,MAAM,YAAY,GAAG,IAAI,KAAK,EAAE,CAAC;IAC3E,IAAI,WAAW;QAAE,OAAO,GAAG,UAAU,IAAI,WAAW,EAAE,CAAC;IACvD,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -0,0 +1,67 @@
1
+ export interface PreconditionedUploadInput {
2
+ /** Bucket name, without the `gs://` scheme. */
3
+ bucket: string;
4
+ /** Object name within the bucket, e.g. `orgs/{orgId}/files/{id}/current.md`. */
5
+ objectPath: string;
6
+ bytes: Uint8Array;
7
+ contentType: string;
8
+ /** `ifGenerationMatch` value: the sampled generation, or 0 for "must not exist". */
9
+ ifGenerationMatch: string | number;
10
+ /** Firebase Auth ID token, sent as `Authorization: Firebase <token>`. */
11
+ token: string;
12
+ /** Storage host, `host` or `host:port`. */
13
+ host: string;
14
+ protocol: string;
15
+ appId?: string | null | undefined;
16
+ appCheckToken?: string | null | undefined;
17
+ firebaseVersion?: string | undefined;
18
+ /** Test seam. Production lets the builder choose one. */
19
+ boundary?: string | undefined;
20
+ }
21
+ export interface PreconditionedUploadRequest {
22
+ url: string;
23
+ method: 'POST';
24
+ headers: Record<string, string>;
25
+ body: Uint8Array;
26
+ }
27
+ export declare function buildPreconditionedUploadRequest(input: PreconditionedUploadInput): PreconditionedUploadRequest;
28
+ /** The private fields of the Firebase Storage SDK's `StorageService` the
29
+ * REST upload needs, plus the public `app`. There is no public accessor
30
+ * for the resolved bucket, host, protocol, or token, so both the sync
31
+ * daemon's Node SDK and the web SDK hand their instance in as this
32
+ * structural shape. Kept here, in one place, rather than duplicated
33
+ * per workspace. */
34
+ export interface PreconditionedUploadStorage {
35
+ app?: {
36
+ options?: {
37
+ storageBucket?: string;
38
+ };
39
+ } | undefined;
40
+ _bucket?: {
41
+ bucket?: string;
42
+ } | null | undefined;
43
+ _protocol?: string | undefined;
44
+ _appId?: string | null | undefined;
45
+ _firebaseVersion?: string | undefined;
46
+ host?: string | undefined;
47
+ _getAuthToken?: (() => Promise<string | null>) | undefined;
48
+ _getAppCheckToken?: (() => Promise<string | null>) | undefined;
49
+ }
50
+ export interface PreconditionedUploadCall {
51
+ storage: PreconditionedUploadStorage;
52
+ /** Object name within the bucket, e.g. `orgs/{orgId}/files/{id}/current.md`. */
53
+ objectPath: string;
54
+ bytes: Uint8Array;
55
+ contentType: string;
56
+ ifGenerationMatch: string | number;
57
+ }
58
+ /** Test seam. Production uses the ambient `fetch`, so the token and body
59
+ * never travel through a caller-supplied transport. */
60
+ export declare function setPreconditionedUploadFetchForTests(impl: typeof fetch | undefined): void;
61
+ /** POST the bytes with a generation precondition, exactly the request the
62
+ * SDK would build for an unconditional `uploadBytes`. A 412 (another
63
+ * writer landed first) is `storage/precondition-failed`; any other
64
+ * non-ok status is `storage/http-<status>`. The write is not retried:
65
+ * the generation was sampled for this attempt. */
66
+ export declare function uploadWithGenerationPrecondition(call: PreconditionedUploadCall): Promise<void>;
67
+ //# sourceMappingURL=preconditioned-upload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preconditioned-upload.d.ts","sourceRoot":"","sources":["../src/preconditioned-upload.ts"],"names":[],"mappings":"AAuBA,MAAM,WAAW,yBAAyB;IACxC,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,gFAAgF;IAChF,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,UAAU,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,oFAAoF;IACpF,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAAC;IACnC,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1C,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,2BAA2B;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,UAAU,CAAC;CAClB;AAoBD,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,yBAAyB,GAC/B,2BAA2B,CAmC7B;AAED;;;;;qBAKqB;AACrB,MAAM,WAAW,2BAA2B;IAC1C,GAAG,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE;YAAE,aAAa,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,GAAG,SAAS,CAAC;IAC3D,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,GAAG,SAAS,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACnC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,aAAa,CAAC,EAAE,CAAC,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IAC3D,iBAAiB,CAAC,EAAE,CAAC,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;CAChE;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,2BAA2B,CAAC;IACrC,gFAAgF;IAChF,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,UAAU,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAAC;CACpC;AAID;wDACwD;AACxD,wBAAgB,oCAAoC,CAAC,IAAI,EAAE,OAAO,KAAK,GAAG,SAAS,GAAG,IAAI,CAEzF;AAUD;;;;mDAImD;AACnD,wBAAsB,gCAAgC,CACpD,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,IAAI,CAAC,CA0Cf"}
@@ -0,0 +1,134 @@
1
+ // The multipart upload request the Firebase Storage REST endpoint
2
+ // accepts with a generation precondition.
3
+ //
4
+ // The JS Storage SDK's `uploadBytes` cannot express
5
+ // `ifGenerationMatch`, and the conflict path needs it: overwriting a
6
+ // file's live blob must keep the overwritten generation as a noncurrent
7
+ // Object Version rather than dropping it. The GCS JSON endpoint behind
8
+ // Firebase Storage takes the precondition as a query parameter, so this
9
+ // builds the request by hand.
10
+ //
11
+ // The shape mirrors the SDK's own single-request upload (`X-Goog-Upload-
12
+ // Protocol: multipart`, a JSON metadata part, then the bytes) so the
13
+ // emulator and production agree, and only adds the precondition.
14
+ //
15
+ // `buildPreconditionedUploadRequest` is the pure part, so both web and
16
+ // sync can depend on it. `uploadWithGenerationPrecondition` wraps it with
17
+ // the token, the resolved bucket, and the fetch, which needs the SDK
18
+ // instance the caller already holds.
19
+ //
20
+ // The precondition follows the server-side `blobPrecondition` semantics
21
+ // (functions/src/materialize-yjs-blob.ts): the value is the generation
22
+ // the write is conditional on, and `0` means "only if no object exists".
23
+ /** A random boundary for the multipart body. `Math.random` is enough:
24
+ * the boundary only has to be absent from the payload, and a collision
25
+ * would merely make one upload fail rather than corrupt it. */
26
+ function defaultBoundary() {
27
+ return `compound-${Math.random().toString(36).slice(2)}${Math.random().toString(36).slice(2)}`;
28
+ }
29
+ function concatBytes(...parts) {
30
+ const total = parts.reduce((sum, part) => sum + part.length, 0);
31
+ const out = new Uint8Array(total);
32
+ let offset = 0;
33
+ for (const part of parts) {
34
+ out.set(part, offset);
35
+ offset += part.length;
36
+ }
37
+ return out;
38
+ }
39
+ export function buildPreconditionedUploadRequest(input) {
40
+ const boundary = input.boundary ?? defaultBoundary();
41
+ // No `size`: the SDK's metadata mapping leaves it non-writable, so it
42
+ // is not a field the upload request carries. The body length carries
43
+ // it instead.
44
+ const metadata = JSON.stringify({
45
+ name: input.objectPath,
46
+ contentType: input.contentType,
47
+ });
48
+ const head = `--${boundary}\r\n`
49
+ + 'Content-Type: application/json; charset=utf-8\r\n\r\n'
50
+ + `${metadata}\r\n`
51
+ + `--${boundary}\r\n`
52
+ + `Content-Type: ${input.contentType}\r\n\r\n`;
53
+ const tail = `\r\n--${boundary}--`;
54
+ const encoder = new TextEncoder();
55
+ const body = concatBytes(encoder.encode(head), input.bytes, encoder.encode(tail));
56
+ const query = `?name=${encodeURIComponent(input.objectPath)}`
57
+ + `&ifGenerationMatch=${encodeURIComponent(String(input.ifGenerationMatch))}`;
58
+ const url = `${input.protocol}://${input.host}/v0/b/${encodeURIComponent(input.bucket)}/o${query}`;
59
+ const headers = {
60
+ 'X-Goog-Upload-Protocol': 'multipart',
61
+ 'Content-Type': `multipart/related; boundary=${boundary}`,
62
+ Authorization: `Firebase ${input.token}`,
63
+ };
64
+ if (input.appId)
65
+ headers['X-Firebase-GMPID'] = input.appId;
66
+ if (input.appCheckToken)
67
+ headers['X-Firebase-AppCheck'] = input.appCheckToken;
68
+ headers['X-Firebase-Storage-Version'] = `webjs/${input.firebaseVersion ?? 'AppManager'}`;
69
+ return { url, method: 'POST', headers, body };
70
+ }
71
+ let fetchForTests;
72
+ /** Test seam. Production uses the ambient `fetch`, so the token and body
73
+ * never travel through a caller-supplied transport. */
74
+ export function setPreconditionedUploadFetchForTests(impl) {
75
+ fetchForTests = impl;
76
+ }
77
+ function resolveBucket(storage) {
78
+ const resolved = storage._bucket?.bucket;
79
+ if (typeof resolved === 'string' && resolved)
80
+ return resolved;
81
+ const configured = storage.app?.options?.storageBucket;
82
+ if (typeof configured === 'string' && configured)
83
+ return configured.replace(/^gs:\/\//, '');
84
+ throw new Error('uploadBlob: cannot resolve the storage bucket for a preconditioned write');
85
+ }
86
+ /** POST the bytes with a generation precondition, exactly the request the
87
+ * SDK would build for an unconditional `uploadBytes`. A 412 (another
88
+ * writer landed first) is `storage/precondition-failed`; any other
89
+ * non-ok status is `storage/http-<status>`. The write is not retried:
90
+ * the generation was sampled for this attempt. */
91
+ export async function uploadWithGenerationPrecondition(call) {
92
+ const token = await call.storage._getAuthToken?.();
93
+ if (!token) {
94
+ throw new Error('uploadBlob: no auth token for a preconditioned write');
95
+ }
96
+ let appCheckToken = null;
97
+ if (call.storage._getAppCheckToken) {
98
+ try {
99
+ appCheckToken = await call.storage._getAppCheckToken();
100
+ }
101
+ catch {
102
+ appCheckToken = null;
103
+ }
104
+ }
105
+ const request = buildPreconditionedUploadRequest({
106
+ bucket: resolveBucket(call.storage),
107
+ objectPath: call.objectPath,
108
+ bytes: call.bytes,
109
+ contentType: call.contentType,
110
+ ifGenerationMatch: call.ifGenerationMatch,
111
+ token,
112
+ host: call.storage.host ?? 'firebasestorage.googleapis.com',
113
+ protocol: call.storage._protocol ?? 'https',
114
+ appId: call.storage._appId ?? null,
115
+ appCheckToken,
116
+ firebaseVersion: call.storage._firebaseVersion,
117
+ });
118
+ const doFetch = fetchForTests ?? fetch;
119
+ const response = await doFetch(request.url, {
120
+ method: request.method,
121
+ headers: request.headers,
122
+ body: request.body,
123
+ });
124
+ if (response.ok)
125
+ return;
126
+ const detail = await response.text().catch(() => '');
127
+ const err = new Error(`preconditioned upload failed (${response.status}): ${detail.slice(0, 300)}`);
128
+ err.status = response.status;
129
+ err.code = response.status === 412
130
+ ? 'storage/precondition-failed'
131
+ : `storage/http-${response.status}`;
132
+ throw err;
133
+ }
134
+ //# sourceMappingURL=preconditioned-upload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preconditioned-upload.js","sourceRoot":"","sources":["../src/preconditioned-upload.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@doubling/types",
3
- "version": "0.6.1",
3
+ "version": "0.7.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",
@@ -21,7 +21,7 @@
21
21
  ],
22
22
  "scripts": {
23
23
  "build": "tsc",
24
- "test": "node --test \"src/**/*.test.ts\"",
24
+ "test": "node ../scripts/run-node-test.mjs \"src/**/*.test.ts\"",
25
25
  "typecheck": "tsc --noEmit && tsc --noEmit -p tsconfig.test.json",
26
26
  "prepare": "tsc",
27
27
  "prepack": "tsc"