@haverstack/core 0.42.0 → 0.44.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 +6 -9
- package/dist/access.d.ts +36 -34
- package/dist/access.d.ts.map +1 -1
- package/dist/access.js +51 -100
- package/dist/access.js.map +1 -1
- package/dist/adapter/combine.d.ts.map +1 -1
- package/dist/adapter/combine.js +14 -7
- package/dist/adapter/combine.js.map +1 -1
- package/dist/adapter/copy.d.ts +27 -0
- package/dist/adapter/copy.d.ts.map +1 -0
- package/dist/adapter/copy.js +105 -0
- package/dist/adapter/copy.js.map +1 -0
- package/dist/adapter/index.d.ts +9 -4
- package/dist/adapter/index.d.ts.map +1 -1
- package/dist/adapter/index.js +6 -3
- package/dist/adapter/index.js.map +1 -1
- 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/adapter/seed.d.ts +13 -0
- package/dist/adapter/seed.d.ts.map +1 -0
- package/dist/adapter/seed.js +26 -0
- package/dist/adapter/seed.js.map +1 -0
- package/dist/associations/identity.d.ts +18 -42
- package/dist/associations/identity.d.ts.map +1 -1
- package/dist/associations/identity.js +60 -84
- package/dist/associations/identity.js.map +1 -1
- package/dist/associations/validation.d.ts +1 -8
- package/dist/associations/validation.d.ts.map +1 -1
- package/dist/associations/validation.js +3 -30
- package/dist/associations/validation.js.map +1 -1
- package/dist/collection.d.ts +7 -11
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +24 -34
- package/dist/collection.js.map +1 -1
- package/dist/content-match.d.ts +2 -2
- package/dist/content-match.js +2 -2
- package/dist/errors.d.ts +41 -12
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +56 -15
- package/dist/errors.js.map +1 -1
- package/dist/grants.d.ts +18 -6
- package/dist/grants.d.ts.map +1 -1
- package/dist/grants.js +48 -37
- package/dist/grants.js.map +1 -1
- package/dist/hash.d.ts +8 -0
- package/dist/hash.d.ts.map +1 -0
- package/dist/hash.js +14 -0
- package/dist/hash.js.map +1 -0
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/install.d.ts +29 -5
- package/dist/install.d.ts.map +1 -1
- package/dist/install.js +69 -44
- 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.js +1 -1
- package/dist/query-validation.d.ts +41 -28
- package/dist/query-validation.d.ts.map +1 -1
- package/dist/query-validation.js +85 -71
- package/dist/query-validation.js.map +1 -1
- package/dist/record-changes.d.ts +12 -36
- package/dist/record-changes.d.ts.map +1 -1
- package/dist/record-changes.js +9 -98
- package/dist/record-changes.js.map +1 -1
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +2 -5
- 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 +69 -51
- package/dist/scoped-stack/authority.d.ts.map +1 -1
- package/dist/scoped-stack/authority.js +189 -153
- package/dist/scoped-stack/authority.js.map +1 -1
- 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 +73 -86
- package/dist/scoped-stack/scoped-stack.d.ts.map +1 -1
- package/dist/scoped-stack/scoped-stack.js +279 -337
- package/dist/scoped-stack/scoped-stack.js.map +1 -1
- package/dist/scoped-stack/subscription.d.ts +14 -33
- package/dist/scoped-stack/subscription.d.ts.map +1 -1
- package/dist/scoped-stack/subscription.js +16 -57
- package/dist/scoped-stack/subscription.js.map +1 -1
- 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 +1 -1
- package/dist/stack/attachments.js +1 -1
- package/dist/stack/changes.d.ts +4 -10
- package/dist/stack/changes.d.ts.map +1 -1
- package/dist/stack/changes.js +8 -8
- package/dist/stack/changes.js.map +1 -1
- package/dist/stack/client.d.ts +34 -58
- package/dist/stack/client.d.ts.map +1 -1
- package/dist/stack/field-rules.d.ts +27 -0
- package/dist/stack/field-rules.d.ts.map +1 -0
- package/dist/stack/field-rules.js +50 -0
- package/dist/stack/field-rules.js.map +1 -0
- package/dist/stack/install-app.d.ts +2 -2
- package/dist/stack/install-app.d.ts.map +1 -1
- package/dist/stack/install-app.js +16 -14
- package/dist/stack/install-app.js.map +1 -1
- package/dist/stack/integrity.d.ts +9 -53
- package/dist/stack/integrity.d.ts.map +1 -1
- package/dist/stack/integrity.js +47 -107
- package/dist/stack/integrity.js.map +1 -1
- package/dist/stack/limits.d.ts +1 -1
- package/dist/stack/limits.js +1 -1
- package/dist/stack/reads.d.ts +9 -5
- package/dist/stack/reads.d.ts.map +1 -1
- package/dist/stack/reads.js +24 -4
- package/dist/stack/reads.js.map +1 -1
- package/dist/stack/stack.d.ts +84 -79
- package/dist/stack/stack.d.ts.map +1 -1
- package/dist/stack/stack.js +236 -306
- package/dist/stack/stack.js.map +1 -1
- package/dist/stack/system-types.d.ts.map +1 -1
- package/dist/stack/system-types.js +1 -3
- package/dist/stack/system-types.js.map +1 -1
- package/dist/stack/type-grants.d.ts.map +1 -1
- package/dist/stack/type-grants.js +9 -6
- package/dist/stack/type-grants.js.map +1 -1
- package/dist/stack/write-expectation.d.ts +13 -12
- package/dist/stack/write-expectation.d.ts.map +1 -1
- package/dist/stack/write-expectation.js.map +1 -1
- 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 +37 -24
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +176 -153
- package/dist/testing.js.map +1 -1
- package/dist/types/adapter.d.ts +115 -43
- package/dist/types/adapter.d.ts.map +1 -1
- package/dist/types/associations.d.ts +1 -17
- package/dist/types/associations.d.ts.map +1 -1
- package/dist/types/associations.js +1 -8
- package/dist/types/associations.js.map +1 -1
- package/dist/types/capabilities.d.ts +8 -8
- package/dist/types/capabilities.d.ts.map +1 -1
- package/dist/types/events.d.ts +3 -8
- package/dist/types/events.d.ts.map +1 -1
- package/dist/types/query.d.ts +4 -4
- package/dist/types/system.d.ts +2 -8
- package/dist/types/system.d.ts.map +1 -1
- package/dist/types/system.js.map +1 -1
- package/dist/validate.d.ts +2 -0
- package/dist/validate.d.ts.map +1 -1
- package/dist/validate.js +2 -1
- package/dist/validate.js.map +1 -1
- package/dist/wire/body.d.ts +32 -9
- package/dist/wire/body.d.ts.map +1 -1
- package/dist/wire/body.js +69 -8
- package/dist/wire/body.js.map +1 -1
- package/dist/wire/index.d.ts +4 -4
- package/dist/wire/index.d.ts.map +1 -1
- package/dist/wire/index.js +3 -3
- package/dist/wire/index.js.map +1 -1
- package/dist/wire/record.d.ts +1 -8
- package/dist/wire/record.d.ts.map +1 -1
- package/dist/wire/record.js +0 -48
- package/dist/wire/record.js.map +1 -1
- package/dist/wire/request.d.ts +18 -18
- package/dist/wire/request.d.ts.map +1 -1
- package/dist/wire/request.js +41 -36
- package/dist/wire/request.js.map +1 -1
- package/package.json +1 -1
- package/dist/stack/identity-bindings.d.ts +0 -13
- package/dist/stack/identity-bindings.d.ts.map +0 -1
- package/dist/stack/identity-bindings.js +0 -36
- package/dist/stack/identity-bindings.js.map +0 -1
package/dist/grants.d.ts
CHANGED
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
*
|
|
9
9
|
* See docs/spec/access-control.md § Type-level grants.
|
|
10
10
|
*/
|
|
11
|
-
import type {
|
|
11
|
+
import type { RosterRoles } from './access.js';
|
|
12
|
+
import type { EntityId, GrantAction, GrantContent, GrantGrantee, GroupRole, RecordId, TypeId } from './types/index.js';
|
|
12
13
|
import type { ValidationError } from './validate.js';
|
|
13
14
|
/**
|
|
14
15
|
* Valid GrantAction values, for runtime validation in Stack.grantType(). Built
|
|
@@ -86,8 +87,7 @@ export declare function validateGrantBaseId(typeId: TypeId, content: unknown): V
|
|
|
86
87
|
export declare function grantCoversGrantee(c: GrantContent, grantee: EntityId, opts: {
|
|
87
88
|
allowDefault: boolean;
|
|
88
89
|
allowGroup: boolean;
|
|
89
|
-
|
|
90
|
-
resolveRecord: (id: RecordId) => Promise<StackRecord | null>;
|
|
90
|
+
roles: RosterRoles;
|
|
91
91
|
}): Promise<boolean>;
|
|
92
92
|
/**
|
|
93
93
|
* System type families grantType() refuses to target: a grant on any of them
|
|
@@ -98,8 +98,20 @@ export declare function grantCoversGrantee(c: GrantContent, grantee: EntityId, o
|
|
|
98
98
|
*/
|
|
99
99
|
export declare const UNGRANTABLE_SYSTEM_TYPES: ReadonlySet<string>;
|
|
100
100
|
/**
|
|
101
|
-
*
|
|
102
|
-
*
|
|
101
|
+
* An action list as every write of one holds it: known GrantAction values,
|
|
102
|
+
* each named once. Actions are a set, and a set is written without repeats,
|
|
103
|
+
* as a type list or an enum's values are. Shared by grantType(), a
|
|
104
|
+
* manifest's requests, and the `_grant` and `_install` Records they write.
|
|
103
105
|
*/
|
|
104
|
-
export declare function
|
|
106
|
+
export declare function validateActionList(actions: readonly unknown[], path: string): ValidationError[];
|
|
107
|
+
/** A `_grant`'s actions, asked of its content on every write. See validateActionList(). */
|
|
108
|
+
export declare function validateGrantActions(typeId: TypeId, content: unknown): ValidationError[];
|
|
109
|
+
/**
|
|
110
|
+
* A grant as every write of one holds it: a family a grant may target, the
|
|
111
|
+
* same rule every `_grant` write meets (see validateGrantBaseId()), and an
|
|
112
|
+
* action list held to validateActionList() whose mutate verbs carry their
|
|
113
|
+
* read companions. `path` prefixes each error, so a request inside a
|
|
114
|
+
* manifest or an `_install` reports where it sits.
|
|
115
|
+
*/
|
|
116
|
+
export declare function validateGrant(baseId: unknown, actions: readonly unknown[], path?: string): ValidationError[];
|
|
105
117
|
//# sourceMappingURL=grants.d.ts.map
|
package/dist/grants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grants.d.ts","sourceRoot":"","sources":["../src/grants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"grants.d.ts","sourceRoot":"","sources":["../src/grants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EACV,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,MAAM,EACP,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,WAAW,CAA0B,CAAC;AAejF;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAI1F;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,WAAW,EAAE,CAAA;CAAE,GAAG,IAAI,CAUhG;AAED;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAClB,OAAO,CAAC,YAAY,EAAE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,GACxC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,SAAS,GAAG,KAAK,CAAA;CAAE,CAAC;AAElE,6EAA6E;AAC7E,wBAAgB,WAAW,CAAC,CAAC,EAAE,SAAS,WAAW,EAAE,EAAE,CAAC,EAAE,SAAS,WAAW,EAAE,GAAG,OAAO,CAIzF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CASrF;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,UAAQ,GAAG,IAAI,CAa9E;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,eAAe,EAAE,CAMnF;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,eAAe,EAAE,CAiBvF;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,CAAC,EAAE,YAAY,EACf,OAAO,EAAE,QAAQ,EACjB,IAAI,EAAE;IAAE,YAAY,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GACvE,OAAO,CAAC,OAAO,CAAC,CAIlB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,EAAE,WAAW,CAAC,MAAM,CAKvD,CAAC;AAEH;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,SAAS,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE,CAe/F;AAED,2FAA2F;AAC3F,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,eAAe,EAAE,CAKxF;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,SAAS,OAAO,EAAE,EAC3B,IAAI,SAAK,GACR,eAAe,EAAE,CAoBnB"}
|
package/dist/grants.js
CHANGED
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
* See docs/spec/access-control.md § Type-level grants.
|
|
10
10
|
*/
|
|
11
11
|
import { baseIdOf, familyIdProblem } from './schema.js';
|
|
12
|
-
import {
|
|
12
|
+
import { StackBadRequestError } from './errors.js';
|
|
13
13
|
import { granteeErrors } from './associations/validation.js';
|
|
14
14
|
import { SYSTEM_TYPES, GRANT_ACTIONS } from './types/index.js';
|
|
15
|
-
import {
|
|
15
|
+
import { granteeReaches } from './access.js';
|
|
16
16
|
/**
|
|
17
17
|
* Valid GrantAction values, for runtime validation in Stack.grantType(). Built
|
|
18
18
|
* from GRANT_ACTIONS, which GrantAction itself derives from, so the set and
|
|
@@ -157,26 +157,9 @@ export function validateGrantBaseId(typeId, content) {
|
|
|
157
157
|
*/
|
|
158
158
|
export async function grantCoversGrantee(c, grantee, opts) {
|
|
159
159
|
const g = c.grantee;
|
|
160
|
-
if (
|
|
161
|
-
return
|
|
162
|
-
|
|
163
|
-
case 'authenticated':
|
|
164
|
-
return opts.allowDefault;
|
|
165
|
-
case 'entity':
|
|
166
|
-
return !!g.entityId && g.entityId === grantee;
|
|
167
|
-
case 'group': {
|
|
168
|
-
if (!opts.allowGroup)
|
|
169
|
-
return false;
|
|
170
|
-
if (!g.groupId)
|
|
171
|
-
return false;
|
|
172
|
-
if (g.role !== 'member' && g.role !== 'admin')
|
|
173
|
-
return false;
|
|
174
|
-
const role = await resolveGroupRole(g.groupId, grantee, opts.resolveRecord, opts.groupRoles);
|
|
175
|
-
return roleSatisfies(role, g.role);
|
|
176
|
-
}
|
|
177
|
-
default:
|
|
178
|
-
return false;
|
|
179
|
-
}
|
|
160
|
+
if (g?.kind === 'authenticated')
|
|
161
|
+
return opts.allowDefault;
|
|
162
|
+
return granteeReaches(g, grantee, opts);
|
|
180
163
|
}
|
|
181
164
|
/**
|
|
182
165
|
* System type families grantType() refuses to target: a grant on any of them
|
|
@@ -192,36 +175,64 @@ export const UNGRANTABLE_SYSTEM_TYPES = new Set([
|
|
|
192
175
|
SYSTEM_TYPES.INSTALL,
|
|
193
176
|
]);
|
|
194
177
|
/**
|
|
195
|
-
*
|
|
196
|
-
*
|
|
178
|
+
* An action list as every write of one holds it: known GrantAction values,
|
|
179
|
+
* each named once. Actions are a set, and a set is written without repeats,
|
|
180
|
+
* as a type list or an enum's values are. Shared by grantType(), a
|
|
181
|
+
* manifest's requests, and the `_grant` and `_install` Records they write.
|
|
197
182
|
*/
|
|
198
|
-
export function
|
|
183
|
+
export function validateActionList(actions, path) {
|
|
199
184
|
const errors = [];
|
|
185
|
+
const seen = new Set();
|
|
200
186
|
actions.forEach((action, j) => {
|
|
201
187
|
if (!GRANT_ACTION_SET.has(action)) {
|
|
202
|
-
errors.push({ path:
|
|
188
|
+
errors.push({ path: `${path}[${j}]`, message: `Unknown grant action "${String(action)}"` });
|
|
203
189
|
}
|
|
190
|
+
else if (seen.has(action)) {
|
|
191
|
+
errors.push({
|
|
192
|
+
path: `${path}[${j}]`,
|
|
193
|
+
message: `"${String(action)}" is listed more than once`,
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
seen.add(action);
|
|
204
197
|
});
|
|
205
|
-
|
|
198
|
+
return errors;
|
|
199
|
+
}
|
|
200
|
+
/** A `_grant`'s actions, asked of its content on every write. See validateActionList(). */
|
|
201
|
+
export function validateGrantActions(typeId, content) {
|
|
202
|
+
if (baseIdOf(typeId) !== SYSTEM_TYPES.GRANT)
|
|
203
|
+
return [];
|
|
204
|
+
const actions = content?.actions;
|
|
205
|
+
// A missing or non-array list is the schema's to refuse.
|
|
206
|
+
return Array.isArray(actions) ? validateActionList(actions, 'actions') : [];
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* A grant as every write of one holds it: a family a grant may target, the
|
|
210
|
+
* same rule every `_grant` write meets (see validateGrantBaseId()), and an
|
|
211
|
+
* action list held to validateActionList() whose mutate verbs carry their
|
|
212
|
+
* read companions. `path` prefixes each error, so a request inside a
|
|
213
|
+
* manifest or an `_install` reports where it sits.
|
|
214
|
+
*/
|
|
215
|
+
export function validateGrant(baseId, actions, path = '') {
|
|
216
|
+
const errors = validateActionList(actions, `${path}actions`);
|
|
217
|
+
const problem = familyIdProblem(baseId, `${path}baseId`);
|
|
206
218
|
if (problem) {
|
|
207
|
-
errors.push({ path:
|
|
219
|
+
errors.push({ path: `${path}baseId`, message: problem });
|
|
208
220
|
}
|
|
209
221
|
else {
|
|
210
|
-
|
|
222
|
+
for (const e of validateGrantBaseId(`${SYSTEM_TYPES.GRANT}@1`, { baseId })) {
|
|
223
|
+
errors.push({ ...e, path: `${path}${e.path}` });
|
|
224
|
+
}
|
|
211
225
|
}
|
|
226
|
+
const known = actions.filter((a) => GRANT_ACTION_SET.has(a));
|
|
212
227
|
actions.forEach((action, j) => {
|
|
213
|
-
if (grantConveys(actions, action))
|
|
214
|
-
return;
|
|
215
228
|
const companions = READ_COMPANIONS.get(action);
|
|
216
|
-
if (!companions)
|
|
229
|
+
if (!companions || grantConveys(known, action))
|
|
217
230
|
return;
|
|
218
231
|
errors.push({
|
|
219
|
-
path:
|
|
220
|
-
message: `"${action}" requires ${companions.map((c) => `"${c}"`).join(' or ')} in the same grant: a mutate verb reaches the record and its history, so it conveys nothing without read. Name both in one grant: actions: [${companions.map((c) => `'${c}'`).join(' | ')}, '${action}']`,
|
|
232
|
+
path: `${path}actions[${j}]`,
|
|
233
|
+
message: `"${String(action)}" requires ${companions.map((c) => `"${c}"`).join(' or ')} in the same grant: a mutate verb reaches the record and its history, so it conveys nothing without read. Name both in one grant: actions: [${companions.map((c) => `'${c}'`).join(' | ')}, '${String(action)}']`,
|
|
221
234
|
});
|
|
222
235
|
});
|
|
223
|
-
|
|
224
|
-
throw new StackValidationError(errors, ARGUMENTS_INVALID);
|
|
225
|
-
}
|
|
236
|
+
return errors;
|
|
226
237
|
}
|
|
227
238
|
//# sourceMappingURL=grants.js.map
|
package/dist/grants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grants.js","sourceRoot":"","sources":["../src/grants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"grants.js","sourceRoot":"","sources":["../src/grants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAa7C;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAA6B,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;AAEjF;;;;;GAKG;AACH,MAAM,eAAe,GAAqD,IAAI,GAAG,CAAC;IAChF,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACxC,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACxC,CAAC,YAAY,EAAE,CAAC,UAAU,CAAC,CAAC;IAC5B,CAAC,YAAY,EAAE,CAAC,UAAU,CAAC,CAAC;CAC7B,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,OAA+B,EAAE,MAAmB;IAC/E,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5C,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/C,OAAO,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,OAAgB;IACzC,MAAM,CAAC,GAAG,OAAyD,CAAC;IACpE,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC7C,kFAAkF;IAClF,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACjG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3C,OAAO;QACL,QAAQ,EAAE,CAAC,CAAC,MAAM;QAClB,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAoB,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAgB,CAAC,CAAC;KAC3F,CAAC;AACJ,CAAC;AAWD,6EAA6E;AAC7E,MAAM,UAAU,WAAW,CAAC,CAAyB,EAAE,CAAyB;IAC9E,MAAM,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;IACtB,OAAO,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAqB,EAAE,MAAkB;IAC1E,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAC1B,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IAC/C,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC,QAAQ,KAAM,MAAiC,CAAC,QAAQ,CAAC;IAC3F,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,MAA6C,CAAC;QACxD,OAAO,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC;AACpC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAkB,EAAE,QAAQ,GAAG,KAAK;IACtE,uEAAuE;IACvE,sEAAsE;IACtE,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE;QACnD,WAAW,EAAE,OAAO;QACpB,aAAa,EAAE,IAAI;QACnB,OAAO,EAAE,QAAQ;KAClB,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,oBAAoB,CAC5B,yBAAyB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAClE,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,OAAgB;IAC9D,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,YAAY,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACvD,MAAM,CAAC,GAAI,OAAwC,EAAE,OAAO,CAAC;IAC7D,0EAA0E;IAC1E,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IAC3C,OAAO,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;AACtF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAc,EAAE,OAAgB;IAClE,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,YAAY,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACvD,MAAM,MAAM,GAAI,OAAuC,EAAE,MAAM,CAAC;IAChE,4DAA4D;IAC5D,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IAC1C,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAClD,IAAI,OAAO;QAAE,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3D,IAAI,wBAAwB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,CAAC,GAAG,wBAAwB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,OAAO;YACL;gBACE,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,oBAAoB,MAAM,gBAAgB,OAAO,8CAA8C;aACzG;SACF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,CAAe,EACf,OAAiB,EACjB,IAAwE;IAExE,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,IAAI,KAAK,eAAe;QAAE,OAAO,IAAI,CAAC,YAAY,CAAC;IAC1D,OAAO,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAwB,IAAI,GAAG,CAAC;IACnE,YAAY,CAAC,KAAK;IAClB,YAAY,CAAC,MAAM;IACnB,YAAY,CAAC,GAAG;IAChB,YAAY,CAAC,OAAO;CACrB,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAA2B,EAAE,IAAY;IAC1E,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAW,CAAC;IAChC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC5B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAqB,CAAC,EAAE,CAAC;YACjD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,yBAAyB,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QAC9F,CAAC;aAAM,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG;gBACrB,OAAO,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,4BAA4B;aACxD,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,OAAgB;IACnE,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,YAAY,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACvD,MAAM,OAAO,GAAI,OAAwC,EAAE,OAAO,CAAC;IACnE,yDAAyD;IACzD,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9E,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAC3B,MAAe,EACf,OAA2B,EAC3B,IAAI,GAAG,EAAE;IAET,MAAM,MAAM,GAAsB,kBAAkB,CAAC,OAAO,EAAE,GAAG,IAAI,SAAS,CAAC,CAAC;IAChF,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,CAAC;IACzD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3D,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,CAAC,IAAI,mBAAmB,CAAC,GAAG,YAAY,CAAC,KAAK,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YAC3E,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAoB,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAgB,CAAC,CAAC,CAAC;IAC9F,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC5B,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,MAAqB,CAAC,CAAC;QAC9D,IAAI,CAAC,UAAU,IAAI,YAAY,CAAC,KAAK,EAAE,MAAqB,CAAC;YAAE,OAAO;QACtE,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,GAAG,IAAI,WAAW,CAAC,GAAG;YAC5B,OAAO,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,+IAA+I,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI;SACxS,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/hash.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The SHA-256 hex digest core names things by: a file's bytes (its
|
|
3
|
+
* FileId), a schema's canonical form (its schemaHash), an install plan's
|
|
4
|
+
* canonical form (its fingerprint). One helper, so every one of them is
|
|
5
|
+
* the same lowercase hex over the same encoding.
|
|
6
|
+
*/
|
|
7
|
+
export declare function sha256Hex(data: string | Uint8Array): Promise<string>;
|
|
8
|
+
//# sourceMappingURL=hash.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../src/hash.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAM1E"}
|
package/dist/hash.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The SHA-256 hex digest core names things by: a file's bytes (its
|
|
3
|
+
* FileId), a schema's canonical form (its schemaHash), an install plan's
|
|
4
|
+
* canonical form (its fingerprint). One helper, so every one of them is
|
|
5
|
+
* the same lowercase hex over the same encoding.
|
|
6
|
+
*/
|
|
7
|
+
export async function sha256Hex(data) {
|
|
8
|
+
const bytes = typeof data === 'string' ? new TextEncoder().encode(data) : data;
|
|
9
|
+
const digest = await crypto.subtle.digest('SHA-256', bytes);
|
|
10
|
+
return Array.from(new Uint8Array(digest))
|
|
11
|
+
.map((b) => b.toString(16).padStart(2, '0'))
|
|
12
|
+
.join('');
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=hash.js.map
|
package/dist/hash.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../src/hash.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAyB;IACvD,MAAM,KAAK,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,KAAqB,CAAC,CAAC;IAC5E,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;SACtC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SAC3C,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -19,19 +19,19 @@
|
|
|
19
19
|
*/
|
|
20
20
|
export { Stack } from './stack/stack.js';
|
|
21
21
|
export { ScopedStack } from './scoped-stack/scoped-stack.js';
|
|
22
|
-
export type { StackClient, CreateRecordOptions, BackdatableCreateRecordOptions, StackOptions, DefineTypeOptions, GetRecordOptions, DeleteRecordOptions, DeleteResult,
|
|
23
|
-
export type { AppManifest, InstallPlan, ForeignRequest, TypeChange } from './install.js';
|
|
22
|
+
export type { StackClient, CreateRecordOptions, BackdatableCreateRecordOptions, StackOptions, DefineTypeOptions, GetRecordOptions, DeleteRecordOptions, DeleteResult, CollectAttachmentGarbageOptions, CollectAttachmentGarbageResult, MigrateAllOptions, } from './stack/client.js';
|
|
23
|
+
export type { AppManifest, InstallAppOptions, InstallPlan, ForeignRequest, TypeChange, } from './install.js';
|
|
24
24
|
export { isPlanEmpty } from './install.js';
|
|
25
25
|
export { typeHandle, migration } from './type-handle.js';
|
|
26
26
|
export { rename, map, add, drop, derive } from './migration-steps.js';
|
|
27
27
|
export type { MigrationStep, RenameStep, MapStep, AddStep, DropStep, DeriveStep, } from './migration-steps.js';
|
|
28
28
|
export type { TypeHandle, Migration, ContentOf, StoredContentOf, UnlistedValue, ReadonlyFieldDef, ReadonlyTypeSchema, } from './type-handle.js';
|
|
29
29
|
export { MisfitError } from './collection.js';
|
|
30
|
-
export type { Collection, CollectionRecord, CollectionPage, CollectionQuery, CollectionChange,
|
|
30
|
+
export type { Collection, CollectionRecord, CollectionPage, CollectionQuery, CollectionChange, CollectionSubscribeOptions, ContentPatch, ContentPathOf, Misfit, SortableFieldOf, StoredContent, } from './collection.js';
|
|
31
31
|
export { StackError, StackValidationError, StackMigrationError, StackPermissionError, StackNotFoundError, StackConflictError, StackVersionConflictError, StackBadRequestError, StackSchemaDriftError, StackPayloadTooLargeError, StackTimeoutError, } from './errors.js';
|
|
32
|
-
export { UseAfterCloseError, InvalidAdapterError,
|
|
32
|
+
export { UseAfterCloseError, InvalidAdapterError, ScopeUnavailableError } from './errors.js';
|
|
33
33
|
export type { StackErrorCode } from './errors.js';
|
|
34
|
-
export type { RecordId, TypeId, BaseId, FileId, EntityId, AppId, AttachmentContent, StackRecord,
|
|
34
|
+
export type { RecordId, TypeId, BaseId, FileId, EntityId, AppId, AttachmentContent, StackRecord, RecordVersion, RecordJournalEntry, JournalQuery, VersionsQuery, Actor, ActorOptions, ChangeKind, ChangeOp, ChangeActor, RecordChange, ChangeFilter, SubscribeOptions, Unsubscribe, StackType, TypeSchema, FieldDef, ScalarFieldDef, EnumFieldDef, ArrayFieldDef, ObjectFieldDef, ScalarFieldKind, Association, TagAssociation, AttachmentAssociation, RelationshipAssociation, PermissionAssociation, Grantee, GroupRole, AnyoneAssociation, AuthorityAssociation, DataAssociation, AssociationChange, AssociationEdit, RelationshipTarget, RecordTarget, EntityTarget, ExternalTarget, StackQuery, RecordFilter, RelatedToFilter, AttachmentFilter, RelationshipTargetPattern, QuerySort, ContentArm, ContentSortKey, NativeSortField, QueryResult, DateRange, StackCapabilities, ContentFilterReach, MissingCapability, IfVersionOptions, EntityContent, AppContent, GroupContent, GrantAction, GrantContent, GrantGrantee, InstallContent, InstallRequest, TypeGrant, PutAttachmentOptions, ConfigContent, } from './types/index.js';
|
|
35
35
|
export type { GrantQuery } from './grants.js';
|
|
36
36
|
export { SYSTEM_TYPES, NATIVE_SORT_FIELDS } from './types/index.js';
|
|
37
37
|
export { generateId } from './id.js';
|
|
@@ -39,5 +39,5 @@ export { hashSchema, isCompatible } from './schema.js';
|
|
|
39
39
|
export type { SchemaDriftViolation } from './schema.js';
|
|
40
40
|
export type { ValidationError } from './validate.js';
|
|
41
41
|
export { applyMergePatch } from './merge.js';
|
|
42
|
-
export {
|
|
42
|
+
export { isAuthorityAssociation } from './associations/identity.js';
|
|
43
43
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,YAAY,EACV,WAAW,EACX,mBAAmB,EACnB,8BAA8B,EAC9B,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACZ
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -30,7 +30,7 @@ export { MisfitError } from './collection.js';
|
|
|
30
30
|
export { StackError, StackValidationError, StackMigrationError, StackPermissionError, StackNotFoundError, StackConflictError, StackVersionConflictError, StackBadRequestError, StackSchemaDriftError, StackPayloadTooLargeError, StackTimeoutError, } from './errors.js';
|
|
31
31
|
// Local errors outside the taxonomy — no wire representation, and no
|
|
32
32
|
// `Stack` prefix. See docs/spec/wire-format.md § The taxonomy root.
|
|
33
|
-
export { UseAfterCloseError, InvalidAdapterError,
|
|
33
|
+
export { UseAfterCloseError, InvalidAdapterError, ScopeUnavailableError } from './errors.js';
|
|
34
34
|
export { SYSTEM_TYPES, NATIVE_SORT_FIELDS } from './types/index.js';
|
|
35
35
|
// Utilities
|
|
36
36
|
// No in-repo caller: client-minted IDs are the default per spec, and an app
|
|
@@ -38,5 +38,5 @@ export { SYSTEM_TYPES, NATIVE_SORT_FIELDS } from './types/index.js';
|
|
|
38
38
|
export { generateId } from './id.js';
|
|
39
39
|
export { hashSchema, isCompatible } from './schema.js';
|
|
40
40
|
export { applyMergePatch } from './merge.js';
|
|
41
|
-
export {
|
|
41
|
+
export { isAuthorityAssociation } from './associations/identity.js';
|
|
42
42
|
//# 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;;;;;;;;;;;;;;;;;;GAkBG;AAEH,kCAAkC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,kCAAkC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAqB7D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,eAAe;AACf,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAmBtE,cAAc;AACd,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAe9C,qBAAqB;AACrB,OAAO,EACL,UAAU,EACV,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EACzB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,qEAAqE;AACrE,oEAAoE;AACpE,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAgF7F,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEpE,YAAY;AAEZ,4EAA4E;AAC5E,sEAAsE;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGvD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC"}
|
package/dist/install.d.ts
CHANGED
|
@@ -49,8 +49,8 @@ export type TypeChange = {
|
|
|
49
49
|
};
|
|
50
50
|
/**
|
|
51
51
|
* What applying a manifest would change, for the owner to approve.
|
|
52
|
-
* `installApp()` applies
|
|
53
|
-
*
|
|
52
|
+
* `installApp()` applies the manifest only while planning it still
|
|
53
|
+
* produces this plan's `fingerprint`. See docs/spec/apps.md § Plan, then apply.
|
|
54
54
|
*/
|
|
55
55
|
export type InstallPlan = {
|
|
56
56
|
manifest: AppManifest;
|
|
@@ -82,6 +82,22 @@ export type InstallPlan = {
|
|
|
82
82
|
* as the same app. See docs/spec/apps.md § Plan, then apply.
|
|
83
83
|
*/
|
|
84
84
|
linkedKeys: EntityId[];
|
|
85
|
+
/**
|
|
86
|
+
* Names this plan, for `installApp()` to apply the manifest only while
|
|
87
|
+
* planning it still produces this plan. See planFingerprint() and
|
|
88
|
+
* docs/spec/apps.md § Plan, then apply.
|
|
89
|
+
*/
|
|
90
|
+
fingerprint: string;
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* What `installApp()` applies a manifest under: the key it is for, and the
|
|
94
|
+
* `fingerprint` of the plan the owner approved. Named on every apply, so an
|
|
95
|
+
* approval made in one request is checked in another exactly as one made
|
|
96
|
+
* in the same call is. See docs/spec/apps.md § Plan, then apply.
|
|
97
|
+
*/
|
|
98
|
+
export type InstallAppOptions = {
|
|
99
|
+
did: EntityId;
|
|
100
|
+
fingerprint: string;
|
|
85
101
|
};
|
|
86
102
|
/** Relationship label from an install to an `_app` card it was installed for. */
|
|
87
103
|
export declare const INSTALL_APP_LABEL = "install.app";
|
|
@@ -108,6 +124,12 @@ export declare function familyStanding(baseId: BaseId, appId: AppId): 'own' | 'c
|
|
|
108
124
|
* well-formed TypeIds claim nothing.
|
|
109
125
|
*/
|
|
110
126
|
export declare function claimedFamilies(content: unknown): Set<BaseId>;
|
|
127
|
+
/**
|
|
128
|
+
* A list of install requests as every write of one holds it — a manifest's
|
|
129
|
+
* and an `_install`'s alike: each a grant validateGrant() accepts, and each
|
|
130
|
+
* family requested once, as a type is listed once.
|
|
131
|
+
*/
|
|
132
|
+
export declare function validateRequests(requests: readonly unknown[], path: string): ValidationError[];
|
|
111
133
|
/**
|
|
112
134
|
* An `_install`'s `defines` and `requests`, asked of its content on every
|
|
113
135
|
* write. A schema can say both are lists; only this can say what their
|
|
@@ -134,8 +156,10 @@ export declare function grantIsRequest(grant: GrantContent, request: InstallRequ
|
|
|
134
156
|
*/
|
|
135
157
|
export declare function isPlanEmpty(plan: InstallPlan): boolean;
|
|
136
158
|
/**
|
|
137
|
-
* The
|
|
138
|
-
*
|
|
159
|
+
* The fingerprint of a plan: a SHA-256 over the plan the owner sees, in
|
|
160
|
+
* canonical form, as a schemaHash names a schema — a type by its id, name,
|
|
161
|
+
* lineage and schemaHash, every list as a set, keys in one fixed order.
|
|
162
|
+
* See docs/spec/apps.md § Plan, then apply.
|
|
139
163
|
*/
|
|
140
|
-
export declare function planFingerprint(plan: InstallPlan): string
|
|
164
|
+
export declare function planFingerprint(plan: Omit<InstallPlan, 'fingerprint'>): Promise<string>;
|
|
141
165
|
//# sourceMappingURL=install.d.ts.map
|
package/dist/install.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
|
package/dist/install.js
CHANGED
|
@@ -18,8 +18,9 @@
|
|
|
18
18
|
* shape rules, the family claim, and the plan diff. The verbs that write
|
|
19
19
|
* are in stack/install-app.ts. See docs/spec/apps.md.
|
|
20
20
|
*/
|
|
21
|
-
import { baseIdOf,
|
|
22
|
-
import {
|
|
21
|
+
import { baseIdOf, hashSchema, parseTypeId } from './schema.js';
|
|
22
|
+
import { sha256Hex } from './hash.js';
|
|
23
|
+
import { sameActions, validateGrant } from './grants.js';
|
|
23
24
|
import { SYSTEM_TYPES } from './types/index.js';
|
|
24
25
|
/** Relationship label from an install to an `_app` card it was installed for. */
|
|
25
26
|
export const INSTALL_APP_LABEL = 'install.app';
|
|
@@ -93,6 +94,28 @@ export function claimedFamilies(content) {
|
|
|
93
94
|
}
|
|
94
95
|
return families;
|
|
95
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* A list of install requests as every write of one holds it — a manifest's
|
|
99
|
+
* and an `_install`'s alike: each a grant validateGrant() accepts, and each
|
|
100
|
+
* family requested once, as a type is listed once.
|
|
101
|
+
*/
|
|
102
|
+
export function validateRequests(requests, path) {
|
|
103
|
+
const errors = [];
|
|
104
|
+
const families = new Set();
|
|
105
|
+
requests.forEach((r, i) => {
|
|
106
|
+
const req = r;
|
|
107
|
+
const at = `${path}[${i}].`;
|
|
108
|
+
errors.push(...validateGrant(req?.baseId, Array.isArray(req?.actions) ? req.actions : [], at));
|
|
109
|
+
if (families.has(req?.baseId)) {
|
|
110
|
+
errors.push({
|
|
111
|
+
path: `${at}baseId`,
|
|
112
|
+
message: `"${String(req?.baseId)}" is requested more than once`,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
families.add(req?.baseId);
|
|
116
|
+
});
|
|
117
|
+
return errors;
|
|
118
|
+
}
|
|
96
119
|
/**
|
|
97
120
|
* An `_install`'s `defines` and `requests`, asked of its content on every
|
|
98
121
|
* write. A schema can say both are lists; only this can say what their
|
|
@@ -104,11 +127,15 @@ export function validateInstall(typeId, content) {
|
|
|
104
127
|
const c = content;
|
|
105
128
|
const errors = [];
|
|
106
129
|
if (Array.isArray(c?.defines)) {
|
|
107
|
-
c.defines
|
|
130
|
+
const defines = c.defines;
|
|
131
|
+
defines.forEach((id, i) => {
|
|
108
132
|
const parsed = typeof id === 'string' ? parseTypeId(id) : null;
|
|
109
133
|
if (!parsed) {
|
|
110
134
|
errors.push({ path: `defines[${i}]`, message: 'Expected a versioned TypeId' });
|
|
111
135
|
}
|
|
136
|
+
else if (defines.indexOf(id) !== i) {
|
|
137
|
+
errors.push({ path: `defines[${i}]`, message: `"${id}" is listed more than once` });
|
|
138
|
+
}
|
|
112
139
|
else if (typeof c?.appId === 'string' && familyStanding(parsed.baseId, c.appId) !== 'own') {
|
|
113
140
|
errors.push({
|
|
114
141
|
path: `defines[${i}]`,
|
|
@@ -117,31 +144,8 @@ export function validateInstall(typeId, content) {
|
|
|
117
144
|
}
|
|
118
145
|
});
|
|
119
146
|
}
|
|
120
|
-
if (Array.isArray(c?.requests))
|
|
121
|
-
c.requests
|
|
122
|
-
const req = r;
|
|
123
|
-
const problem = familyIdProblem(req?.baseId, `requests[${i}].baseId`);
|
|
124
|
-
if (problem) {
|
|
125
|
-
errors.push({ path: `requests[${i}].baseId`, message: problem });
|
|
126
|
-
}
|
|
127
|
-
else if (UNGRANTABLE_SYSTEM_TYPES.has(req.baseId)) {
|
|
128
|
-
errors.push({
|
|
129
|
-
path: `requests[${i}].baseId`,
|
|
130
|
-
message: `"${String(req.baseId)}" cannot be granted, so no install can request it`,
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
if (Array.isArray(req?.actions)) {
|
|
134
|
-
req.actions.forEach((a, j) => {
|
|
135
|
-
if (!GRANT_ACTION_SET.has(a)) {
|
|
136
|
-
errors.push({
|
|
137
|
-
path: `requests[${i}].actions[${j}]`,
|
|
138
|
-
message: `Unknown grant action "${String(a)}"`,
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
});
|
|
144
|
-
}
|
|
147
|
+
if (Array.isArray(c?.requests))
|
|
148
|
+
errors.push(...validateRequests(c.requests, 'requests'));
|
|
145
149
|
return errors;
|
|
146
150
|
}
|
|
147
151
|
/** The manifest's types in its own namespace — the versions an install of it defines. */
|
|
@@ -198,22 +202,43 @@ export function isPlanEmpty(plan) {
|
|
|
198
202
|
plan.requestsRemoved.length === 0);
|
|
199
203
|
}
|
|
200
204
|
/**
|
|
201
|
-
* The
|
|
202
|
-
*
|
|
205
|
+
* The fingerprint of a plan: a SHA-256 over the plan the owner sees, in
|
|
206
|
+
* canonical form, as a schemaHash names a schema — a type by its id, name,
|
|
207
|
+
* lineage and schemaHash, every list as a set, keys in one fixed order.
|
|
208
|
+
* See docs/spec/apps.md § Plan, then apply.
|
|
203
209
|
*/
|
|
204
|
-
export function planFingerprint(plan) {
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
210
|
+
export async function planFingerprint(plan) {
|
|
211
|
+
const { manifest, existing } = plan;
|
|
212
|
+
const types = await Promise.all(manifest.types.map(async (t) => ({
|
|
213
|
+
id: t.id,
|
|
214
|
+
name: t.name,
|
|
215
|
+
migratesFrom: t.migratesFrom ?? null,
|
|
216
|
+
schemaHash: await hashSchema(t.schema),
|
|
217
|
+
})));
|
|
218
|
+
const request = (r) => ({ baseId: r.baseId, actions: [...r.actions].sort() });
|
|
219
|
+
return sha256Hex(JSON.stringify({
|
|
220
|
+
appId: manifest.appId,
|
|
221
|
+
name: manifest.name,
|
|
222
|
+
version: manifest.version ?? null,
|
|
223
|
+
types: byKey(types, (t) => t.id),
|
|
224
|
+
requests: byKey(manifest.requests.map(request), (r) => r.baseId),
|
|
225
|
+
did: plan.did,
|
|
226
|
+
existing: existing && {
|
|
227
|
+
name: existing.content.name,
|
|
228
|
+
version: existing.content.version ?? null,
|
|
229
|
+
deleted: existing.deletedAt !== undefined,
|
|
230
|
+
},
|
|
231
|
+
newFamilies: [...plan.newFamilies].sort(),
|
|
232
|
+
newVersions: [...plan.newVersions].sort(),
|
|
233
|
+
requestsAdded: byKey(plan.requestsAdded.map(request), (r) => r.baseId),
|
|
234
|
+
requestsRemoved: byKey(plan.requestsRemoved.map(request), (r) => r.baseId),
|
|
235
|
+
// Follows from the manifest, but hashed because the owner is shown it.
|
|
236
|
+
foreignRequests: byKey(plan.foreignRequests.map((r) => ({ ...request(r), owner: r.owner })), (r) => r.baseId),
|
|
237
|
+
typeChanges: byKey(plan.typeChanges.map((c) => ({ id: c.id, change: c.change })), (c) => c.id),
|
|
238
|
+
newKey: plan.newKey,
|
|
239
|
+
linkedKeys: [...plan.linkedKeys].sort(),
|
|
240
|
+
}));
|
|
218
241
|
}
|
|
242
|
+
/** A list read as a set, ordered by a key unique to each member. */
|
|
243
|
+
const byKey = (items, key) => [...items].sort((a, b) => (key(a) < key(b) ? -1 : key(a) > key(b) ? 1 : 0));
|
|
219
244
|
//# sourceMappingURL=install.js.map
|
package/dist/install.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
|
package/dist/lazy.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A value loaded on first use and shared after — how one operation reads a
|
|
3
|
+
* set at most once. A failed load is not kept, so the next use asks again,
|
|
4
|
+
* and clear() drops the value for a holder that outlives one operation.
|
|
5
|
+
*/
|
|
6
|
+
export declare class Lazy<T> {
|
|
7
|
+
private readonly load;
|
|
8
|
+
private loading;
|
|
9
|
+
constructor(load: () => Promise<T>);
|
|
10
|
+
get(): Promise<T>;
|
|
11
|
+
clear(): void;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=lazy.d.ts.map
|