@haverstack/core 0.41.0 → 0.43.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 +124 -64
- package/dist/access.d.ts +43 -47
- package/dist/access.d.ts.map +1 -1
- package/dist/access.js +66 -101
- package/dist/access.js.map +1 -1
- package/dist/{combine.d.ts → adapter/combine.d.ts} +8 -1
- package/dist/adapter/combine.d.ts.map +1 -0
- package/dist/{combine.js → adapter/combine.js} +18 -3
- package/dist/adapter/combine.js.map +1 -0
- package/dist/adapter/index.d.ts +19 -0
- package/dist/adapter/index.d.ts.map +1 -0
- package/dist/adapter/index.js +16 -0
- package/dist/adapter/index.js.map +1 -0
- package/dist/adapter/reach.d.ts +14 -0
- package/dist/adapter/reach.d.ts.map +1 -0
- package/dist/adapter/reach.js +31 -0
- package/dist/adapter/reach.js.map +1 -0
- package/dist/{sort.d.ts → adapter/sort.d.ts} +20 -20
- package/dist/adapter/sort.d.ts.map +1 -0
- package/dist/{sort.js → adapter/sort.js} +37 -27
- package/dist/adapter/sort.js.map +1 -0
- package/dist/associations/identity.d.ts +69 -0
- package/dist/associations/identity.d.ts.map +1 -0
- package/dist/associations/identity.js +174 -0
- package/dist/associations/identity.js.map +1 -0
- package/dist/associations/validation.d.ts +83 -0
- package/dist/associations/validation.d.ts.map +1 -0
- package/dist/associations/validation.js +312 -0
- package/dist/associations/validation.js.map +1 -0
- package/dist/attachment-records.d.ts +48 -0
- package/dist/attachment-records.d.ts.map +1 -0
- package/dist/attachment-records.js +52 -0
- package/dist/attachment-records.js.map +1 -0
- package/dist/collection.d.ts +178 -0
- package/dist/collection.d.ts.map +1 -0
- package/dist/collection.js +397 -0
- package/dist/collection.js.map +1 -0
- package/dist/content-match.d.ts +25 -0
- package/dist/content-match.d.ts.map +1 -0
- package/dist/content-match.js +51 -0
- package/dist/content-match.js.map +1 -0
- package/dist/content-translation.d.ts +42 -0
- package/dist/content-translation.d.ts.map +1 -0
- package/dist/content-translation.js +108 -0
- package/dist/content-translation.js.map +1 -0
- package/dist/did/did.d.ts.map +1 -0
- package/dist/{did.js → did/did.js} +3 -4
- package/dist/did/did.js.map +1 -0
- package/dist/{did-entry.d.ts → did/index.d.ts} +1 -1
- package/dist/did/index.d.ts.map +1 -0
- package/dist/{did-entry.js → did/index.js} +3 -3
- package/dist/did/index.js.map +1 -0
- package/dist/errors.d.ts +54 -66
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +58 -62
- package/dist/errors.js.map +1 -1
- package/dist/grants.d.ts +20 -44
- package/dist/grants.d.ts.map +1 -1
- package/dist/grants.js +69 -151
- package/dist/grants.js.map +1 -1
- package/dist/id.d.ts +13 -31
- package/dist/id.d.ts.map +1 -1
- package/dist/id.js +13 -31
- package/dist/id.js.map +1 -1
- package/dist/index.d.ts +13 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -6
- package/dist/index.js.map +1 -1
- package/dist/install.d.ts +3 -6
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +6 -10
- package/dist/install.js.map +1 -1
- package/dist/lazy.d.ts +13 -0
- package/dist/lazy.d.ts.map +1 -0
- package/dist/lazy.js +27 -0
- package/dist/lazy.js.map +1 -0
- package/dist/merge.d.ts +1 -1
- package/dist/merge.d.ts.map +1 -1
- package/dist/merge.js +6 -12
- package/dist/merge.js.map +1 -1
- package/dist/migration-steps.d.ts +102 -0
- package/dist/migration-steps.d.ts.map +1 -0
- package/dist/migration-steps.js +293 -0
- package/dist/migration-steps.js.map +1 -0
- package/dist/query-validation.d.ts +68 -121
- package/dist/query-validation.d.ts.map +1 -1
- package/dist/query-validation.js +214 -380
- package/dist/query-validation.js.map +1 -1
- package/dist/record-changes.d.ts +11 -150
- package/dist/record-changes.d.ts.map +1 -1
- package/dist/record-changes.js +14 -305
- package/dist/record-changes.js.map +1 -1
- package/dist/schema.d.ts +18 -7
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +59 -30
- package/dist/schema.js.map +1 -1
- package/dist/scoped-stack/authority-snapshot.d.ts +37 -0
- package/dist/scoped-stack/authority-snapshot.d.ts.map +1 -0
- package/dist/scoped-stack/authority-snapshot.js +49 -0
- package/dist/scoped-stack/authority-snapshot.js.map +1 -0
- package/dist/scoped-stack/authority.d.ts +169 -0
- package/dist/scoped-stack/authority.d.ts.map +1 -0
- package/dist/scoped-stack/authority.js +408 -0
- package/dist/scoped-stack/authority.js.map +1 -0
- package/dist/scoped-stack/family-policy.d.ts +59 -0
- package/dist/scoped-stack/family-policy.d.ts.map +1 -0
- package/dist/scoped-stack/family-policy.js +68 -0
- package/dist/scoped-stack/family-policy.js.map +1 -0
- package/dist/scoped-stack/scoped-stack.d.ts +318 -0
- package/dist/scoped-stack/scoped-stack.d.ts.map +1 -0
- package/dist/scoped-stack/scoped-stack.js +695 -0
- package/dist/scoped-stack/scoped-stack.js.map +1 -0
- package/dist/scoped-stack/subscription.d.ts +36 -0
- package/dist/scoped-stack/subscription.d.ts.map +1 -0
- package/dist/scoped-stack/subscription.js +69 -0
- package/dist/scoped-stack/subscription.js.map +1 -0
- package/dist/stack/arguments.d.ts +27 -0
- package/dist/stack/arguments.d.ts.map +1 -0
- package/dist/stack/arguments.js +53 -0
- package/dist/stack/arguments.js.map +1 -0
- package/dist/stack/attachments.d.ts +24 -0
- package/dist/stack/attachments.d.ts.map +1 -0
- package/dist/stack/attachments.js +113 -0
- package/dist/stack/attachments.js.map +1 -0
- package/dist/{changes.d.ts → stack/changes.d.ts} +30 -72
- package/dist/stack/changes.d.ts.map +1 -0
- package/dist/{changes.js → stack/changes.js} +40 -74
- package/dist/stack/changes.js.map +1 -0
- package/dist/stack/client.d.ts +247 -0
- package/dist/stack/client.d.ts.map +1 -0
- package/dist/stack/client.js +9 -0
- package/dist/stack/client.js.map +1 -0
- package/dist/stack/identity-bindings.d.ts.map +1 -0
- package/dist/{identity-bindings.js → stack/identity-bindings.js} +5 -14
- package/dist/stack/identity-bindings.js.map +1 -0
- package/dist/stack/install-app.d.ts +22 -0
- package/dist/stack/install-app.d.ts.map +1 -0
- package/dist/stack/install-app.js +262 -0
- package/dist/stack/install-app.js.map +1 -0
- package/dist/stack/integrity.d.ts +94 -0
- package/dist/stack/integrity.d.ts.map +1 -0
- package/dist/stack/integrity.js +268 -0
- package/dist/stack/integrity.js.map +1 -0
- package/dist/{limits.d.ts → stack/limits.d.ts} +2 -5
- package/dist/stack/limits.d.ts.map +1 -0
- package/dist/{limits.js → stack/limits.js} +3 -6
- package/dist/stack/limits.js.map +1 -0
- package/dist/stack/migrations.d.ts +59 -0
- package/dist/stack/migrations.d.ts.map +1 -0
- package/dist/stack/migrations.js +141 -0
- package/dist/stack/migrations.js.map +1 -0
- package/dist/stack/reads.d.ts +69 -0
- package/dist/stack/reads.d.ts.map +1 -0
- package/dist/stack/reads.js +141 -0
- package/dist/stack/reads.js.map +1 -0
- package/dist/stack/record-id.d.ts +35 -0
- package/dist/stack/record-id.d.ts.map +1 -0
- package/dist/stack/record-id.js +82 -0
- package/dist/stack/record-id.js.map +1 -0
- package/dist/stack/stack.d.ts +444 -0
- package/dist/stack/stack.d.ts.map +1 -0
- package/dist/stack/stack.js +1339 -0
- package/dist/stack/stack.js.map +1 -0
- package/dist/stack/system-types.d.ts +16 -0
- package/dist/stack/system-types.d.ts.map +1 -0
- package/dist/stack/system-types.js +111 -0
- package/dist/stack/system-types.js.map +1 -0
- package/dist/stack/type-grants.d.ts +20 -0
- package/dist/stack/type-grants.d.ts.map +1 -0
- package/dist/stack/type-grants.js +69 -0
- package/dist/stack/type-grants.js.map +1 -0
- package/dist/stack/write-expectation.d.ts +79 -0
- package/dist/stack/write-expectation.d.ts.map +1 -0
- package/dist/stack/write-expectation.js +71 -0
- package/dist/stack/write-expectation.js.map +1 -0
- package/dist/stack/write-gate.d.ts +23 -0
- package/dist/stack/write-gate.d.ts.map +1 -0
- package/dist/stack/write-gate.js +17 -0
- package/dist/stack/write-gate.js.map +1 -0
- package/dist/testing.d.ts +44 -33
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +180 -176
- package/dist/testing.js.map +1 -1
- package/dist/type-handle.d.ts +67 -78
- package/dist/type-handle.d.ts.map +1 -1
- package/dist/type-handle.js +44 -111
- package/dist/type-handle.js.map +1 -1
- package/dist/types/adapter.d.ts +282 -0
- package/dist/types/adapter.d.ts.map +1 -0
- package/dist/types/adapter.js +5 -0
- package/dist/types/adapter.js.map +1 -0
- package/dist/types/associations.d.ts +140 -0
- package/dist/types/associations.d.ts.map +1 -0
- package/dist/types/associations.js +6 -0
- package/dist/types/associations.js.map +1 -0
- package/dist/types/capabilities.d.ts +89 -0
- package/dist/types/capabilities.d.ts.map +1 -0
- package/dist/types/capabilities.js +5 -0
- package/dist/types/capabilities.js.map +1 -0
- package/dist/types/events.d.ts +150 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +5 -0
- package/dist/types/events.js.map +1 -0
- package/dist/types/ids.d.ts +43 -0
- package/dist/types/ids.d.ts.map +1 -0
- package/dist/types/ids.js +5 -0
- package/dist/types/ids.js.map +1 -0
- package/dist/types/index.d.ts +19 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +19 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/journal.d.ts +47 -0
- package/dist/types/journal.d.ts.map +1 -0
- package/dist/types/journal.js +5 -0
- package/dist/types/journal.js.map +1 -0
- package/dist/types/query.d.ts +185 -0
- package/dist/types/query.d.ts.map +1 -0
- package/dist/types/query.js +10 -0
- package/dist/types/query.js.map +1 -0
- package/dist/types/records.d.ts +76 -0
- package/dist/types/records.d.ts.map +1 -0
- package/dist/types/records.js +5 -0
- package/dist/types/records.js.map +1 -0
- package/dist/types/schema.d.ts +74 -0
- package/dist/types/schema.d.ts.map +1 -0
- package/dist/types/schema.js +5 -0
- package/dist/types/schema.js.map +1 -0
- package/dist/types/system.d.ts +161 -0
- package/dist/types/system.d.ts.map +1 -0
- package/dist/types/system.js +32 -0
- package/dist/types/system.js.map +1 -0
- package/dist/types/tokens.d.ts +39 -0
- package/dist/types/tokens.d.ts.map +1 -0
- package/dist/types/tokens.js +5 -0
- package/dist/types/tokens.js.map +1 -0
- package/dist/validate.d.ts +31 -70
- package/dist/validate.d.ts.map +1 -1
- package/dist/validate.js +52 -92
- package/dist/validate.js.map +1 -1
- package/dist/{attachment-download.d.ts → wire/attachment-download.d.ts} +0 -57
- package/dist/wire/attachment-download.d.ts.map +1 -0
- package/dist/{attachment-download.js → wire/attachment-download.js} +0 -61
- package/dist/wire/attachment-download.js.map +1 -0
- package/dist/{auth.d.ts → wire/auth.d.ts} +5 -8
- package/dist/wire/auth.d.ts.map +1 -0
- package/dist/{auth.js → wire/auth.js} +5 -8
- package/dist/wire/auth.js.map +1 -0
- package/dist/{wire-body.d.ts → wire/body.d.ts} +35 -12
- package/dist/wire/body.d.ts.map +1 -0
- package/dist/{wire-body.js → wire/body.js} +74 -13
- package/dist/wire/body.js.map +1 -0
- package/dist/{wire-entry.d.ts → wire/index.d.ts} +12 -12
- package/dist/wire/index.d.ts.map +1 -0
- package/dist/{wire-entry.js → wire/index.js} +13 -17
- package/dist/wire/index.js.map +1 -0
- package/dist/wire/record.d.ts +31 -0
- package/dist/wire/record.d.ts.map +1 -0
- package/dist/{wire-record.js → wire/record.js} +7 -67
- package/dist/wire/record.js.map +1 -0
- package/dist/{wire-request.d.ts → wire/request.d.ts} +32 -49
- package/dist/wire/request.d.ts.map +1 -0
- package/dist/{wire-request.js → wire/request.js} +113 -83
- package/dist/wire/request.js.map +1 -0
- package/package.json +7 -7
- package/dist/adapter-entry.d.ts +0 -16
- package/dist/adapter-entry.d.ts.map +0 -1
- package/dist/adapter-entry.js +0 -14
- package/dist/adapter-entry.js.map +0 -1
- package/dist/attachment-download.d.ts.map +0 -1
- package/dist/attachment-download.js.map +0 -1
- package/dist/auth.d.ts.map +0 -1
- package/dist/auth.js.map +0 -1
- package/dist/changes.d.ts.map +0 -1
- package/dist/changes.js.map +0 -1
- package/dist/combine.d.ts.map +0 -1
- package/dist/combine.js.map +0 -1
- package/dist/did-entry.d.ts.map +0 -1
- package/dist/did-entry.js.map +0 -1
- package/dist/did.d.ts.map +0 -1
- package/dist/did.js.map +0 -1
- package/dist/identity-bindings.d.ts.map +0 -1
- package/dist/identity-bindings.js.map +0 -1
- package/dist/limits.d.ts.map +0 -1
- package/dist/limits.js.map +0 -1
- package/dist/record-id.d.ts +0 -70
- package/dist/record-id.d.ts.map +0 -1
- package/dist/record-id.js +0 -127
- package/dist/record-id.js.map +0 -1
- package/dist/scoped-stack.d.ts +0 -549
- package/dist/scoped-stack.d.ts.map +0 -1
- package/dist/scoped-stack.js +0 -1301
- package/dist/scoped-stack.js.map +0 -1
- package/dist/sort.d.ts.map +0 -1
- package/dist/sort.js.map +0 -1
- package/dist/stack-reads.d.ts +0 -38
- package/dist/stack-reads.d.ts.map +0 -1
- package/dist/stack-reads.js +0 -79
- package/dist/stack-reads.js.map +0 -1
- package/dist/stack.d.ts +0 -1032
- package/dist/stack.d.ts.map +0 -1
- package/dist/stack.js +0 -2337
- package/dist/stack.js.map +0 -1
- package/dist/types.d.ts +0 -1278
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -51
- package/dist/types.js.map +0 -1
- package/dist/wire-body.d.ts.map +0 -1
- package/dist/wire-body.js.map +0 -1
- package/dist/wire-entry.d.ts.map +0 -1
- package/dist/wire-entry.js.map +0 -1
- package/dist/wire-record.d.ts +0 -50
- package/dist/wire-record.d.ts.map +0 -1
- package/dist/wire-record.js.map +0 -1
- package/dist/wire-request.d.ts.map +0 -1
- package/dist/wire-request.js.map +0 -1
- /package/dist/{did.d.ts → did/did.d.ts} +0 -0
- /package/dist/{identity-bindings.d.ts → stack/identity-bindings.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-validation.js","sourceRoot":"","sources":["../src/query-validation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"query-validation.js","sourceRoot":"","sources":["../src/query-validation.ts"],"names":[],"mappings":"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"}
|
package/dist/record-changes.d.ts
CHANGED
|
@@ -3,169 +3,30 @@
|
|
|
3
3
|
* -------------------------------------------------------
|
|
4
4
|
* Two jobs that share one question — what does this Record actually say?
|
|
5
5
|
*
|
|
6
|
-
* The
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
6
|
+
* The write helpers answer it against a proposed write: whether a patch
|
|
7
|
+
* moved content, and whether the ops a write reports bump its version.
|
|
8
|
+
* The projections answer it against a reader: a soft-deleted Record is its
|
|
9
|
+
* tombstone, and a journal entry names the ACL it moved only to a reader
|
|
10
|
+
* who could have moved it.
|
|
11
11
|
*
|
|
12
12
|
* See docs/spec/events.md § The event shape and docs/spec/versioning.md
|
|
13
13
|
* § The tombstone is literal.
|
|
14
14
|
*/
|
|
15
|
-
import type {
|
|
15
|
+
import type { ChangeOp, RecordJournalEntry, StackRecord } from './types/index.js';
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
18
|
-
* of the same reference is a repeat of. Matches the SQLite adapter's
|
|
19
|
-
* association primary key (kind, label, file_id, related_scope, related_id,
|
|
20
|
-
* related_ns, related_stack, related_role), which is why an attachment's
|
|
21
|
-
* `attachmentRecordId` is absent here: it annotates a reference rather than
|
|
22
|
-
* naming one. `related_role` is in both because member and admin name two
|
|
23
|
-
* different sets of people, so two group grantees differing only by role
|
|
24
|
-
* are two elements. See docs/spec/data-model.md § Associations.
|
|
25
|
-
*/
|
|
26
|
-
export declare function associationEqual(a: Association, b: Association): boolean;
|
|
27
|
-
/**
|
|
28
|
-
* Structural equality per grantee arm. `role` is required, so there is no
|
|
29
|
-
* absent-means-any spelling to normalize.
|
|
30
|
-
*/
|
|
31
|
-
export declare function granteeEqual(a: Grantee, b: Grantee): boolean;
|
|
32
|
-
/**
|
|
33
|
-
* Whether an association carries authority rather than data — the partition
|
|
34
|
-
* `StackRecord.permissions` and `StackRecord.associations` project, and the
|
|
35
|
-
* line `associate()`/`dissociate()` refuse to cross.
|
|
36
|
-
* See docs/spec/access-control.md § Record-level permissions.
|
|
37
|
-
*/
|
|
38
|
-
export declare function isAuthorityAssociation(a: Association): a is AuthorityAssociation;
|
|
39
|
-
/**
|
|
40
|
-
* One stored association set split into the two the record presents. An app
|
|
41
|
-
* editing tags never sees the authority half, so it cannot drop it.
|
|
42
|
-
*/
|
|
43
|
-
export declare function partitionAssociations(associations: Association[]): {
|
|
44
|
-
associations: DataAssociation[];
|
|
45
|
-
permissions: AuthorityAssociation[];
|
|
46
|
-
};
|
|
47
|
-
/**
|
|
48
|
-
* Identity plus every annotation outside it, so a write that only re-points
|
|
49
|
-
* an attachment association's `attachmentRecordId` still counts as a
|
|
50
|
-
* change. Identity alone decides which stored association a write lands on;
|
|
51
|
-
* this decides whether it says anything new.
|
|
52
|
-
*/
|
|
53
|
-
export declare function associationIdentical(a: Association, b: Association): boolean;
|
|
54
|
-
/**
|
|
55
|
-
* An association's identity, stripped of every annotation outside it — an
|
|
56
|
-
* attachment's `attachmentRecordId` dropped, everything else unchanged.
|
|
57
|
-
* What a change event reports for an association that's gone: the same
|
|
58
|
-
* thing a `purged` frame does for a destroyed record's content, naming
|
|
59
|
-
* what happened without repeating a payload that's no longer current.
|
|
60
|
-
* See docs/spec/events.md § The event shape.
|
|
61
|
-
*/
|
|
62
|
-
export declare function stripAssociationAnnotation(association: Association): Association;
|
|
63
|
-
/**
|
|
64
|
-
* What a `changes.associations` list moves against a record's current
|
|
65
|
-
* associations, one tagged edit per association.
|
|
66
|
-
*
|
|
67
|
-
* An entry matching something already there by identity displaced it rather
|
|
68
|
-
* than joining it, which is a `repoint`: the association is still on the
|
|
69
|
-
* record and only its annotation moved, so no `remove` can describe it.
|
|
70
|
-
* `previous` is the prior association in full, annotation included — the
|
|
71
|
-
* only place an overwritten or removed `attachmentRecordId` survives.
|
|
72
|
-
* See docs/spec/journal.md § The entry.
|
|
73
|
-
*/
|
|
74
|
-
export declare function associationDelta(before: Association[], after: Association[]): AssociationChange[];
|
|
75
|
-
/**
|
|
76
|
-
* The two flat lists a change frame carries, derived from the tagged list.
|
|
77
|
-
* The feed reports what is true now, so a `repoint` appears only under its
|
|
78
|
-
* new value and a `remove` by identity alone — the prior state the journal
|
|
79
|
-
* keeps has no place on a notification. The data half alone: `reshare` is
|
|
80
|
-
* what announces an ACL move. See docs/spec/events.md § The event shape.
|
|
81
|
-
*/
|
|
82
|
-
export declare function feedAssociationDelta(changes: AssociationChange[]): {
|
|
83
|
-
added: DataAssociation[];
|
|
84
|
-
removed: DataAssociation[];
|
|
85
|
-
};
|
|
86
|
-
/** Structural equality per target arm — what dissociate() matches on. */
|
|
87
|
-
export declare function targetEqual(a: RelationshipTarget, b: RelationshipTarget): boolean;
|
|
88
|
-
/**
|
|
89
|
-
* An association edit list travels one surface: authority and data share
|
|
90
|
-
* storage and a delta, and never share a call. Refused here so every
|
|
91
|
-
* adapter inherits the same rule.
|
|
92
|
-
* See docs/spec/access-control.md § Storage unifies; the API does not.
|
|
93
|
-
*/
|
|
94
|
-
export declare function assertOneSurface(changes: readonly AssociationEdit[]): void;
|
|
95
|
-
/**
|
|
96
|
-
* The set a list of edits leaves behind: removes first, then adds, an add
|
|
97
|
-
* landing on an identity already held in place. Adds naming one identity
|
|
98
|
-
* collapse, last wins; an add outlives a remove of the same identity.
|
|
99
|
-
* See docs/spec/adapters.md § Amending associations.
|
|
100
|
-
*/
|
|
101
|
-
export declare function applyAssociationEdits(current: Association[], changes: readonly AssociationEdit[]): Association[];
|
|
102
|
-
/**
|
|
103
|
-
* A change set has to name at least one aspect. Refused rather than read
|
|
104
|
-
* as a no-op: it addresses nothing, so there is nothing it could have
|
|
105
|
-
* failed to satisfy, and every way of producing one is a caller bug —
|
|
106
|
-
* typically a conditional that built an empty object.
|
|
107
|
-
* See docs/spec/data-model.md § Mutations.
|
|
108
|
-
*/
|
|
109
|
-
export declare function assertNonEmptyChangeSet(changes: RecordChangeSet): void;
|
|
110
|
-
/**
|
|
111
|
-
* Which aspects a change set actually moves, against the record as it
|
|
112
|
-
* stands. A key naming the value a record already holds contributes
|
|
113
|
-
* nothing. `merged` is the content the patch produces, computed once by the
|
|
114
|
-
* caller that had to validate it anyway.
|
|
115
|
-
*/
|
|
116
|
-
export declare function changeSetOps(existing: StackRecord, changes: RecordChangeSet, merged: Record<string, unknown> | undefined): ChangeOp[];
|
|
117
|
-
/**
|
|
118
|
-
* Whether a change set's ops advance `version`/`updatedAt` at all. After the
|
|
17
|
+
* Whether a write's ops advance `version`/`updatedAt` at all. After the
|
|
119
18
|
* no-bump set above, this is `patch` and the whole-record verbs.
|
|
120
19
|
*/
|
|
121
20
|
export declare function bumpsVersion(ops: ChangeOp[]): boolean;
|
|
122
21
|
/**
|
|
123
|
-
* Whether
|
|
124
|
-
* the
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
* told its version is stale whatever its patch says.
|
|
128
|
-
*/
|
|
129
|
-
export declare function takesIfVersion(changes: RecordChangeSet): boolean;
|
|
130
|
-
/**
|
|
131
|
-
* The change set narrowed to the aspects that actually moved. An adapter is
|
|
132
|
-
* handed this rather than what the caller wrote, so restating an aspect
|
|
133
|
-
* cannot rewrite it: `unlisted: true` on an already-unlisted record would
|
|
134
|
-
* otherwise drag `unlistedAt` forward with no op reporting it. Every key an
|
|
135
|
-
* adapter receives is one it must write.
|
|
136
|
-
*/
|
|
137
|
-
export declare function effectiveChanges(changes: RecordChangeSet, ops: ChangeOp[]): RecordChangeSet;
|
|
138
|
-
/**
|
|
139
|
-
* Whether a merge patch produced the content the record already held.
|
|
140
|
-
* Compared by serialization: content is JSON by construction and a patch
|
|
141
|
-
* preserves key order for every field it does not name, so an unchanged
|
|
142
|
-
* record encodes stably. A reordering patch that changes nothing else is
|
|
143
|
-
* the one case this reports as a change, costing an empty version rather
|
|
144
|
-
* than a wrong answer.
|
|
22
|
+
* Whether a merge patch produced the content already held, compared by
|
|
23
|
+
* serialization: a patch preserves the order of every key it does not name.
|
|
24
|
+
* A pure reordering is the one false "change", costing an empty version
|
|
25
|
+
* rather than a wrong answer.
|
|
145
26
|
*/
|
|
146
27
|
export declare function contentEqual(a: Record<string, unknown>, b: Record<string, unknown>): boolean;
|
|
147
|
-
/** Bootstraps a `_group` record's first admin at create time. */
|
|
148
|
-
export declare function stampGroupAdmin(associations: DataAssociation[] | undefined, creator: EntityId): DataAssociation[];
|
|
149
|
-
/**
|
|
150
|
-
* Whether a Record is a `_group`, in any of its type versions — the family
|
|
151
|
-
* whose roster rules apply.
|
|
152
|
-
*/
|
|
153
|
-
export declare function isGroupRecord(record: StackRecord): boolean;
|
|
154
|
-
/**
|
|
155
|
-
* The tombstone a soft-deleted Record is presented as. `permissions` is
|
|
156
|
-
* retained because it decides whether the caller may undelete; history is
|
|
157
|
-
* exempt, which is why getVersions() still serves the content this
|
|
158
|
-
* withholds. See docs/spec/versioning.md § The tombstone is literal.
|
|
159
|
-
*/
|
|
160
|
-
export declare function tombstoneOf(record: StackRecord): StackRecord;
|
|
161
28
|
/** A soft-deleted Record presented as its tombstone; anything else untouched. */
|
|
162
29
|
export declare const presentDeleted: (record: StackRecord) => StackRecord;
|
|
163
|
-
/**
|
|
164
|
-
* Whether a tagged edit moved an authority element, reading whichever half
|
|
165
|
-
* of the pair carries one. The delta is one list across the partition, so
|
|
166
|
-
* every consumer that serves one half alone asks this.
|
|
167
|
-
*/
|
|
168
|
-
export declare function movesAuthority(change: AssociationChange): boolean;
|
|
169
30
|
/**
|
|
170
31
|
* A journal entry as a reader who cannot reshare sees it: the authority
|
|
171
32
|
* half of its delta dropped, the `reshare` op left standing, so the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record-changes.d.ts","sourceRoot":"","sources":["../src/record-changes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"record-changes.d.ts","sourceRoot":"","sources":["../src/record-changes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAEV,QAAQ,EACR,kBAAkB,EAClB,WAAW,EACZ,MAAM,kBAAkB,CAAC;AAgB1B;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,OAAO,CAErD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAE5F;AAsBD,iFAAiF;AACjF,eAAO,MAAM,cAAc,GAAI,QAAQ,WAAW,KAAG,WACJ,CAAC;AAWlD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,kBAAkB,GAAG,kBAAkB,CAKrF"}
|
package/dist/record-changes.js
CHANGED
|
@@ -3,244 +3,19 @@
|
|
|
3
3
|
* -------------------------------------------------------
|
|
4
4
|
* Two jobs that share one question — what does this Record actually say?
|
|
5
5
|
*
|
|
6
|
-
* The
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
6
|
+
* The write helpers answer it against a proposed write: whether a patch
|
|
7
|
+
* moved content, and whether the ops a write reports bump its version.
|
|
8
|
+
* The projections answer it against a reader: a soft-deleted Record is its
|
|
9
|
+
* tombstone, and a journal entry names the ACL it moved only to a reader
|
|
10
|
+
* who could have moved it.
|
|
11
11
|
*
|
|
12
12
|
* See docs/spec/events.md § The event shape and docs/spec/versioning.md
|
|
13
13
|
* § The tombstone is literal.
|
|
14
14
|
*/
|
|
15
|
-
import {
|
|
16
|
-
import { StackBadRequestError } from './errors.js';
|
|
17
|
-
import { SYSTEM_TYPES, RECORD_CHANGE_SET_KEYS } from './types.js';
|
|
18
|
-
/**
|
|
19
|
-
* Association identity — what dissociate() matches and a second associate()
|
|
20
|
-
* of the same reference is a repeat of. Matches the SQLite adapter's
|
|
21
|
-
* association primary key (kind, label, file_id, related_scope, related_id,
|
|
22
|
-
* related_ns, related_stack, related_role), which is why an attachment's
|
|
23
|
-
* `attachmentRecordId` is absent here: it annotates a reference rather than
|
|
24
|
-
* naming one. `related_role` is in both because member and admin name two
|
|
25
|
-
* different sets of people, so two group grantees differing only by role
|
|
26
|
-
* are two elements. See docs/spec/data-model.md § Associations.
|
|
27
|
-
*/
|
|
28
|
-
export function associationEqual(a, b) {
|
|
29
|
-
// Never "the same one": naming a malformed association is
|
|
30
|
-
// validateAssociation()'s job, which this must reach without throwing.
|
|
31
|
-
if (!a || !b)
|
|
32
|
-
return false;
|
|
33
|
-
if (a.kind !== b.kind || a.label !== b.label)
|
|
34
|
-
return false;
|
|
35
|
-
if (a.kind === 'attachment' && b.kind === 'attachment')
|
|
36
|
-
return a.fileId === b.fileId;
|
|
37
|
-
if (a.kind === 'relationship' && b.kind === 'relationship') {
|
|
38
|
-
return targetEqual(a.target, b.target);
|
|
39
|
-
}
|
|
40
|
-
if (a.kind === 'permission' && b.kind === 'permission') {
|
|
41
|
-
return granteeEqual(a.grantee, b.grantee);
|
|
42
|
-
}
|
|
43
|
-
return true;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Structural equality per grantee arm. `role` is required, so there is no
|
|
47
|
-
* absent-means-any spelling to normalize.
|
|
48
|
-
*/
|
|
49
|
-
export function granteeEqual(a, b) {
|
|
50
|
-
if (!a || !b)
|
|
51
|
-
return false;
|
|
52
|
-
if (a.kind !== b.kind)
|
|
53
|
-
return false;
|
|
54
|
-
if (a.kind === 'entity' && b.kind === 'entity')
|
|
55
|
-
return a.entityId === b.entityId;
|
|
56
|
-
if (a.kind === 'group' && b.kind === 'group') {
|
|
57
|
-
return a.groupId === b.groupId && a.role === b.role;
|
|
58
|
-
}
|
|
59
|
-
return false;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Whether an association carries authority rather than data — the partition
|
|
63
|
-
* `StackRecord.permissions` and `StackRecord.associations` project, and the
|
|
64
|
-
* line `associate()`/`dissociate()` refuse to cross.
|
|
65
|
-
* See docs/spec/access-control.md § Record-level permissions.
|
|
66
|
-
*/
|
|
67
|
-
export function isAuthorityAssociation(a) {
|
|
68
|
-
return a?.kind === 'permission' || a?.kind === 'anyone';
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* One stored association set split into the two the record presents. An app
|
|
72
|
-
* editing tags never sees the authority half, so it cannot drop it.
|
|
73
|
-
*/
|
|
74
|
-
export function partitionAssociations(associations) {
|
|
75
|
-
return {
|
|
76
|
-
associations: associations.filter((a) => !isAuthorityAssociation(a)),
|
|
77
|
-
permissions: associations.filter(isAuthorityAssociation),
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Identity plus every annotation outside it, so a write that only re-points
|
|
82
|
-
* an attachment association's `attachmentRecordId` still counts as a
|
|
83
|
-
* change. Identity alone decides which stored association a write lands on;
|
|
84
|
-
* this decides whether it says anything new.
|
|
85
|
-
*/
|
|
86
|
-
export function associationIdentical(a, b) {
|
|
87
|
-
if (!associationEqual(a, b))
|
|
88
|
-
return false;
|
|
89
|
-
if (a.kind === 'attachment' && b.kind === 'attachment') {
|
|
90
|
-
return (a.attachmentRecordId ?? '') === (b.attachmentRecordId ?? '');
|
|
91
|
-
}
|
|
92
|
-
return true;
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* An association's identity, stripped of every annotation outside it — an
|
|
96
|
-
* attachment's `attachmentRecordId` dropped, everything else unchanged.
|
|
97
|
-
* What a change event reports for an association that's gone: the same
|
|
98
|
-
* thing a `purged` frame does for a destroyed record's content, naming
|
|
99
|
-
* what happened without repeating a payload that's no longer current.
|
|
100
|
-
* See docs/spec/events.md § The event shape.
|
|
101
|
-
*/
|
|
102
|
-
export function stripAssociationAnnotation(association) {
|
|
103
|
-
if (association.kind !== 'attachment')
|
|
104
|
-
return association;
|
|
105
|
-
const { attachmentRecordId: _attachmentRecordId, ...identity } = association;
|
|
106
|
-
return identity;
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* What a `changes.associations` list moves against a record's current
|
|
110
|
-
* associations, one tagged edit per association.
|
|
111
|
-
*
|
|
112
|
-
* An entry matching something already there by identity displaced it rather
|
|
113
|
-
* than joining it, which is a `repoint`: the association is still on the
|
|
114
|
-
* record and only its annotation moved, so no `remove` can describe it.
|
|
115
|
-
* `previous` is the prior association in full, annotation included — the
|
|
116
|
-
* only place an overwritten or removed `attachmentRecordId` survives.
|
|
117
|
-
* See docs/spec/journal.md § The entry.
|
|
118
|
-
*/
|
|
119
|
-
export function associationDelta(before, after) {
|
|
120
|
-
const changes = after
|
|
121
|
-
.filter((a) => !before.some((b) => associationIdentical(a, b)))
|
|
122
|
-
.map((association) => {
|
|
123
|
-
const previous = before.find((b) => associationEqual(b, association));
|
|
124
|
-
return previous
|
|
125
|
-
? { op: 'repoint', association, previous }
|
|
126
|
-
: { op: 'add', association };
|
|
127
|
-
});
|
|
128
|
-
return changes.concat(before
|
|
129
|
-
.filter((b) => !after.some((a) => associationEqual(a, b)))
|
|
130
|
-
.map((association) => ({ op: 'remove', association })));
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* The two flat lists a change frame carries, derived from the tagged list.
|
|
134
|
-
* The feed reports what is true now, so a `repoint` appears only under its
|
|
135
|
-
* new value and a `remove` by identity alone — the prior state the journal
|
|
136
|
-
* keeps has no place on a notification. The data half alone: `reshare` is
|
|
137
|
-
* what announces an ACL move. See docs/spec/events.md § The event shape.
|
|
138
|
-
*/
|
|
139
|
-
export function feedAssociationDelta(changes) {
|
|
140
|
-
const added = [];
|
|
141
|
-
const removed = [];
|
|
142
|
-
for (const c of changes) {
|
|
143
|
-
if (c.op === 'remove') {
|
|
144
|
-
const identity = stripAssociationAnnotation(c.association);
|
|
145
|
-
if (!isAuthorityAssociation(identity))
|
|
146
|
-
removed.push(identity);
|
|
147
|
-
}
|
|
148
|
-
else if (!isAuthorityAssociation(c.association)) {
|
|
149
|
-
added.push(c.association);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
return { added, removed };
|
|
153
|
-
}
|
|
154
|
-
/** Structural equality per target arm — what dissociate() matches on. */
|
|
155
|
-
export function targetEqual(a, b) {
|
|
156
|
-
if (a.kind !== b.kind)
|
|
157
|
-
return false;
|
|
158
|
-
if (a.kind === 'record' && b.kind === 'record') {
|
|
159
|
-
return a.recordId === b.recordId && (a.stackUrl ?? '') === (b.stackUrl ?? '');
|
|
160
|
-
}
|
|
161
|
-
if (a.kind === 'entity' && b.kind === 'entity')
|
|
162
|
-
return a.entityId === b.entityId;
|
|
163
|
-
if (a.kind === 'external' && b.kind === 'external')
|
|
164
|
-
return a.ns === b.ns && a.id === b.id;
|
|
165
|
-
return false;
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* An association edit list travels one surface: authority and data share
|
|
169
|
-
* storage and a delta, and never share a call. Refused here so every
|
|
170
|
-
* adapter inherits the same rule.
|
|
171
|
-
* See docs/spec/access-control.md § Storage unifies; the API does not.
|
|
172
|
-
*/
|
|
173
|
-
export function assertOneSurface(changes) {
|
|
174
|
-
const authority = changes.filter((c) => isAuthorityAssociation(c.association)).length;
|
|
175
|
-
if (authority === 0 || authority === changes.length)
|
|
176
|
-
return;
|
|
177
|
-
throw new StackBadRequestError('An association edit list carries authority or data, never both: permission and anyone ' +
|
|
178
|
-
'elements travel on the permissions surface.');
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* The set a list of edits leaves behind: removes first, then adds, an add
|
|
182
|
-
* landing on an identity already held in place. Adds naming one identity
|
|
183
|
-
* collapse, last wins; an add outlives a remove of the same identity.
|
|
184
|
-
* See docs/spec/adapters.md § Amending associations.
|
|
185
|
-
*/
|
|
186
|
-
export function applyAssociationEdits(current, changes) {
|
|
187
|
-
let next = current.filter((a) => !changes.some((c) => c.op === 'remove' && associationEqual(c.association, a)));
|
|
188
|
-
for (const c of changes) {
|
|
189
|
-
if (c.op !== 'add')
|
|
190
|
-
continue;
|
|
191
|
-
next = next.some((a) => associationEqual(a, c.association))
|
|
192
|
-
? next.map((a) => (associationEqual(a, c.association) ? c.association : a))
|
|
193
|
-
: [...next, c.association];
|
|
194
|
-
}
|
|
195
|
-
return next;
|
|
196
|
-
}
|
|
197
|
-
/**
|
|
198
|
-
* A change set has to name at least one aspect. Refused rather than read
|
|
199
|
-
* as a no-op: it addresses nothing, so there is nothing it could have
|
|
200
|
-
* failed to satisfy, and every way of producing one is a caller bug —
|
|
201
|
-
* typically a conditional that built an empty object.
|
|
202
|
-
* See docs/spec/data-model.md § Mutations.
|
|
203
|
-
*/
|
|
204
|
-
export function assertNonEmptyChangeSet(changes) {
|
|
205
|
-
// Presence, not truthiness: `unlisted: false` and `parentId: null` are
|
|
206
|
-
// aspects this call names.
|
|
207
|
-
if (RECORD_CHANGE_SET_KEYS.some((key) => changes[key] !== undefined))
|
|
208
|
-
return;
|
|
209
|
-
throw new StackBadRequestError('A change set names at least one of: ' + RECORD_CHANGE_SET_KEYS.join(', ') + '.');
|
|
210
|
-
}
|
|
211
|
-
/**
|
|
212
|
-
* Which aspects a change set actually moves, against the record as it
|
|
213
|
-
* stands. A key naming the value a record already holds contributes
|
|
214
|
-
* nothing. `merged` is the content the patch produces, computed once by the
|
|
215
|
-
* caller that had to validate it anyway.
|
|
216
|
-
*/
|
|
217
|
-
export function changeSetOps(existing, changes, merged) {
|
|
218
|
-
const ops = [];
|
|
219
|
-
if (merged !== undefined && !contentEqual(existing.content, merged))
|
|
220
|
-
ops.push('patch');
|
|
221
|
-
if (changes.parentId !== undefined && changes.parentId !== (existing.parentId ?? null)) {
|
|
222
|
-
ops.push('reparent');
|
|
223
|
-
}
|
|
224
|
-
if (changes.permissions &&
|
|
225
|
-
associationDelta(existing.permissions ?? [], changes.permissions).length > 0) {
|
|
226
|
-
ops.push('reshare');
|
|
227
|
-
}
|
|
228
|
-
if (changes.associations) {
|
|
229
|
-
const delta = associationDelta(existing.associations ?? [], changes.associations);
|
|
230
|
-
if (delta.some((c) => c.op !== 'remove'))
|
|
231
|
-
ops.push('associate');
|
|
232
|
-
if (delta.some((c) => c.op === 'remove'))
|
|
233
|
-
ops.push('dissociate');
|
|
234
|
-
}
|
|
235
|
-
if (changes.unlisted !== undefined && Boolean(existing.unlistedAt) !== changes.unlisted) {
|
|
236
|
-
ops.push(changes.unlisted ? 'unlist' : 'list');
|
|
237
|
-
}
|
|
238
|
-
return ops;
|
|
239
|
-
}
|
|
15
|
+
import { isAuthorityAssociation } from './associations/identity.js';
|
|
240
16
|
/**
|
|
241
17
|
* The ops whose prior state the journal already carries in full, so a
|
|
242
|
-
* snapshot would preserve nothing a restore could not otherwise reach.
|
|
243
|
-
* change set naming only these is a no-bump write.
|
|
18
|
+
* snapshot would preserve nothing a restore could not otherwise reach.
|
|
244
19
|
* See docs/spec/versioning.md § Version history.
|
|
245
20
|
*/
|
|
246
21
|
const NO_BUMP_OPS = new Set([
|
|
@@ -252,94 +27,28 @@ const NO_BUMP_OPS = new Set([
|
|
|
252
27
|
'list',
|
|
253
28
|
]);
|
|
254
29
|
/**
|
|
255
|
-
* Whether a
|
|
30
|
+
* Whether a write's ops advance `version`/`updatedAt` at all. After the
|
|
256
31
|
* no-bump set above, this is `patch` and the whole-record verbs.
|
|
257
32
|
*/
|
|
258
33
|
export function bumpsVersion(ops) {
|
|
259
34
|
return ops.some((op) => !NO_BUMP_OPS.has(op));
|
|
260
35
|
}
|
|
261
36
|
/**
|
|
262
|
-
*
|
|
263
|
-
*
|
|
264
|
-
*
|
|
265
|
-
|
|
266
|
-
const NO_PRECONDITION_KEYS = new Set([
|
|
267
|
-
'associations',
|
|
268
|
-
'permissions',
|
|
269
|
-
'parentId',
|
|
270
|
-
'unlisted',
|
|
271
|
-
]);
|
|
272
|
-
/**
|
|
273
|
-
* Whether `ifVersion` applies to a change set. A set naming only keys from
|
|
274
|
-
* the no-precondition list above carries none; any other aspect named
|
|
275
|
-
* restores the guard over the whole call. Read off the keys the caller
|
|
276
|
-
* wrote rather than the ops the set turns out to move, so a stale caller is
|
|
277
|
-
* told its version is stale whatever its patch says.
|
|
278
|
-
*/
|
|
279
|
-
export function takesIfVersion(changes) {
|
|
280
|
-
return RECORD_CHANGE_SET_KEYS.some((key) => !NO_PRECONDITION_KEYS.has(key) && changes[key] !== undefined);
|
|
281
|
-
}
|
|
282
|
-
/**
|
|
283
|
-
* The change set narrowed to the aspects that actually moved. An adapter is
|
|
284
|
-
* handed this rather than what the caller wrote, so restating an aspect
|
|
285
|
-
* cannot rewrite it: `unlisted: true` on an already-unlisted record would
|
|
286
|
-
* otherwise drag `unlistedAt` forward with no op reporting it. Every key an
|
|
287
|
-
* adapter receives is one it must write.
|
|
288
|
-
*/
|
|
289
|
-
export function effectiveChanges(changes, ops) {
|
|
290
|
-
const effective = {};
|
|
291
|
-
if (ops.includes('patch'))
|
|
292
|
-
effective.contentPatch = changes.contentPatch;
|
|
293
|
-
if (ops.includes('reparent'))
|
|
294
|
-
effective.parentId = changes.parentId;
|
|
295
|
-
if (ops.includes('reshare'))
|
|
296
|
-
effective.permissions = changes.permissions;
|
|
297
|
-
if (ops.includes('associate') || ops.includes('dissociate')) {
|
|
298
|
-
effective.associations = changes.associations;
|
|
299
|
-
}
|
|
300
|
-
if (ops.includes('unlist') || ops.includes('list'))
|
|
301
|
-
effective.unlisted = changes.unlisted;
|
|
302
|
-
return effective;
|
|
303
|
-
}
|
|
304
|
-
/**
|
|
305
|
-
* Whether a merge patch produced the content the record already held.
|
|
306
|
-
* Compared by serialization: content is JSON by construction and a patch
|
|
307
|
-
* preserves key order for every field it does not name, so an unchanged
|
|
308
|
-
* record encodes stably. A reordering patch that changes nothing else is
|
|
309
|
-
* the one case this reports as a change, costing an empty version rather
|
|
310
|
-
* than a wrong answer.
|
|
37
|
+
* Whether a merge patch produced the content already held, compared by
|
|
38
|
+
* serialization: a patch preserves the order of every key it does not name.
|
|
39
|
+
* A pure reordering is the one false "change", costing an empty version
|
|
40
|
+
* rather than a wrong answer.
|
|
311
41
|
*/
|
|
312
42
|
export function contentEqual(a, b) {
|
|
313
43
|
return JSON.stringify(a) === JSON.stringify(b);
|
|
314
44
|
}
|
|
315
|
-
/** Bootstraps a `_group` record's first admin at create time. */
|
|
316
|
-
export function stampGroupAdmin(associations, creator) {
|
|
317
|
-
const list = associations ?? [];
|
|
318
|
-
const alreadyAdmin = list.some((a) => a.kind === 'relationship' &&
|
|
319
|
-
a.label === 'admin' &&
|
|
320
|
-
a.target.kind === 'entity' &&
|
|
321
|
-
a.target.entityId === creator);
|
|
322
|
-
if (alreadyAdmin)
|
|
323
|
-
return list;
|
|
324
|
-
return [
|
|
325
|
-
...list,
|
|
326
|
-
{ kind: 'relationship', label: 'admin', target: { kind: 'entity', entityId: creator } },
|
|
327
|
-
];
|
|
328
|
-
}
|
|
329
|
-
/**
|
|
330
|
-
* Whether a Record is a `_group`, in any of its type versions — the family
|
|
331
|
-
* whose roster rules apply.
|
|
332
|
-
*/
|
|
333
|
-
export function isGroupRecord(record) {
|
|
334
|
-
return baseIdOf(record.typeId) === SYSTEM_TYPES.GROUP;
|
|
335
|
-
}
|
|
336
45
|
/**
|
|
337
46
|
* The tombstone a soft-deleted Record is presented as. `permissions` is
|
|
338
47
|
* retained because it decides whether the caller may undelete; history is
|
|
339
48
|
* exempt, which is why getVersions() still serves the content this
|
|
340
49
|
* withholds. See docs/spec/versioning.md § The tombstone is literal.
|
|
341
50
|
*/
|
|
342
|
-
|
|
51
|
+
function tombstoneOf(record) {
|
|
343
52
|
return {
|
|
344
53
|
id: record.id,
|
|
345
54
|
typeId: record.typeId,
|
|
@@ -359,7 +68,7 @@ export const presentDeleted = (record) => record.deletedAt ? tombstoneOf(record)
|
|
|
359
68
|
* of the pair carries one. The delta is one list across the partition, so
|
|
360
69
|
* every consumer that serves one half alone asks this.
|
|
361
70
|
*/
|
|
362
|
-
|
|
71
|
+
function movesAuthority(change) {
|
|
363
72
|
return isAuthorityAssociation(change.association);
|
|
364
73
|
}
|
|
365
74
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record-changes.js","sourceRoot":"","sources":["../src/record-changes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"record-changes.js","sourceRoot":"","sources":["../src/record-changes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAQpE;;;;GAIG;AACH,MAAM,WAAW,GAA0B,IAAI,GAAG,CAAW;IAC3D,WAAW;IACX,YAAY;IACZ,SAAS;IACT,UAAU;IACV,QAAQ;IACR,MAAM;CACP,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,GAAe;IAC1C,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,CAA0B,EAAE,CAA0B;IACjF,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACjD,CAAC;AAED;;;;;GAKG;AACH,SAAS,WAAW,CAAC,MAAmB;IACtC,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE,EAAE;QACX,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;QACtE,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;QACzE,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;KAC7E,CAAC;AACJ,CAAC;AAED,iFAAiF;AACjF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAmB,EAAe,EAAE,CACjE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAElD;;;;GAIG;AACH,SAAS,cAAc,CAAC,MAAyB;IAC/C,OAAO,sBAAsB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAyB;IAC/D,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5D,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IACpD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAE,IAA2B,CAAC;AACtF,CAAC"}
|