@haverstack/core 0.43.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 +1 -2
- package/dist/access.d.ts +7 -3
- package/dist/access.d.ts.map +1 -1
- package/dist/access.js +11 -2
- package/dist/access.js.map +1 -1
- package/dist/adapter/combine.d.ts.map +1 -1
- package/dist/adapter/combine.js +3 -4
- 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 +5 -2
- package/dist/adapter/index.d.ts.map +1 -1
- package/dist/adapter/index.js +3 -1
- package/dist/adapter/index.js.map +1 -1
- 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/errors.d.ts +18 -4
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +28 -6
- package/dist/errors.js.map +1 -1
- package/dist/grants.d.ts +16 -4
- package/dist/grants.d.ts.map +1 -1
- package/dist/grants.js +44 -16
- 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 +1 -1
- package/dist/index.d.ts.map +1 -1
- 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/schema.d.ts.map +1 -1
- package/dist/schema.js +2 -5
- package/dist/schema.js.map +1 -1
- package/dist/scoped-stack/authority.d.ts +19 -14
- package/dist/scoped-stack/authority.d.ts.map +1 -1
- package/dist/scoped-stack/authority.js +30 -18
- package/dist/scoped-stack/authority.js.map +1 -1
- package/dist/scoped-stack/family-policy.js +1 -1
- package/dist/scoped-stack/family-policy.js.map +1 -1
- package/dist/scoped-stack/scoped-stack.d.ts +12 -5
- package/dist/scoped-stack/scoped-stack.d.ts.map +1 -1
- package/dist/scoped-stack/scoped-stack.js +52 -29
- package/dist/scoped-stack/scoped-stack.js.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 +9 -9
- 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 +45 -105
- package/dist/stack/integrity.js.map +1 -1
- package/dist/stack/stack.d.ts +7 -8
- package/dist/stack/stack.d.ts.map +1 -1
- package/dist/stack/stack.js +22 -65
- 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 +5 -2
- package/dist/stack/type-grants.js.map +1 -1
- package/dist/testing.d.ts +13 -16
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +29 -30
- package/dist/testing.js.map +1 -1
- package/dist/types/adapter.d.ts +25 -12
- package/dist/types/adapter.d.ts.map +1 -1
- package/dist/types/system.d.ts +1 -7
- package/dist/types/system.d.ts.map +1 -1
- package/dist/types/system.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/README.md
CHANGED
|
@@ -34,7 +34,6 @@ const keyPath = './my-stack.key.json'; // see "Key custody" under Identity for w
|
|
|
34
34
|
const adapter = await LocalAdapter.open({
|
|
35
35
|
path: dbPath,
|
|
36
36
|
create: 'ifMissing',
|
|
37
|
-
timezone: 'America/New_York',
|
|
38
37
|
ownerEntityId: async () => {
|
|
39
38
|
const { did, privateKey } = await generateDidKeypair();
|
|
40
39
|
await writeFile(keyPath, JSON.stringify(await exportDidPrivateKeyJwk(privateKey)));
|
|
@@ -204,7 +203,7 @@ export const manifest: AppManifest = {
|
|
|
204
203
|
|
|
205
204
|
**When the owner runs the app**, it opens with `Stack.open(adapter, { migrations })`, calls `install(stack)`, then `new Library(stack)`. A server hands each requester `new Library(stack.asActor(session))`.
|
|
206
205
|
|
|
207
|
-
**When the app runs elsewhere** — holding its own key and reaching the stack through `APIAdapter` — it can't define types, so it asks: `adapter.requestInstall(manifest)` resolves to `pending` until the owner approves. The owner reviews `stack.planInstall(manifest, { did })` and applies it with `stack.installApp(plan)`, which defines the types, registers the app's key and grants it the requests. The app still opens with its `migrations`, then builds `new Library(stack)` over its own connection. See [App installs](https://github.com/haverstack/core/blob/main/docs/spec/apps.md).
|
|
206
|
+
**When the app runs elsewhere** — holding its own key and reaching the stack through `APIAdapter` — it can't define types, so it asks: `adapter.requestInstall(manifest)` resolves to `pending` until the owner approves. The owner reviews `stack.planInstall(manifest, { did })` and applies it with `stack.installApp(manifest, { did, fingerprint: plan.fingerprint })`, which defines the types, registers the app's key and grants it the requests. The app still opens with its `migrations`, then builds `new Library(stack)` over its own connection. See [App installs](https://github.com/haverstack/core/blob/main/docs/spec/apps.md).
|
|
208
207
|
|
|
209
208
|
**Name content with an interface**, as above. `ContentOf` flattens its result, so a `type` alias shows the expanded object in editor hovers, while an interface keeps its name. typescript-eslint's recommended `no-empty-object-type` rule rejects an empty interface; its `allowInterfaces: 'with-single-extends'` option admits this one.
|
|
210
209
|
|
package/dist/access.d.ts
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* it. Every tier is affirmative, so an element read past its own kind —
|
|
13
13
|
* or carrying no kind at all — confers nothing.
|
|
14
14
|
*/
|
|
15
|
-
import type { AuthorityAssociation, DataAssociation, EntityId, GroupRole, Grantee, RecordId, StackRecord } from './types/index.js';
|
|
15
|
+
import type { Actor, AuthorityAssociation, DataAssociation, EntityId, GroupRole, Grantee, RecordId, StackRecord, TypeId } from './types/index.js';
|
|
16
16
|
import type { ValidationError } from './validate.js';
|
|
17
17
|
/** Resolves a Record by ID, for walks that need no full adapter. */
|
|
18
18
|
export type RecordResolver = (id: RecordId) => Promise<StackRecord | null>;
|
|
@@ -67,8 +67,12 @@ export declare function groupRoleFromAssociations(associations: DataAssociation[
|
|
|
67
67
|
* the last. Reads associations alone, like groupRoleFromAssociations().
|
|
68
68
|
*/
|
|
69
69
|
export declare function hasGroupAdmin(associations: DataAssociation[] | undefined): boolean;
|
|
70
|
-
/**
|
|
71
|
-
|
|
70
|
+
/**
|
|
71
|
+
* The associations a create stores: as given, plus a `_group`'s creator —
|
|
72
|
+
* the owner when none is named — stamped as its first admin.
|
|
73
|
+
* See docs/spec/identity.md § Group.
|
|
74
|
+
*/
|
|
75
|
+
export declare function createAssociations(typeId: TypeId, associations: DataAssociation[] | undefined, createdBy: Actor | undefined, ownerEntityId: EntityId): DataAssociation[] | undefined;
|
|
72
76
|
/**
|
|
73
77
|
* Whether a request is the stack owner acting alone — the tier behind every
|
|
74
78
|
* unconditional owner authority. Being the owner is never sufficient on its
|
package/dist/access.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../src/access.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../src/access.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EACV,KAAK,EAEL,oBAAoB,EACpB,eAAe,EACf,QAAQ,EAER,SAAS,EACT,OAAO,EACP,QAAQ,EAER,WAAW,EACX,MAAM,EACP,MAAM,kBAAkB,CAAC;AAG1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,oEAAoE;AACpE,MAAM,MAAM,cAAc,GAAG,CAAC,EAAE,EAAE,QAAQ,KAAK,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;AAE3E;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AAE1E;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,oBAAoB,EAAE,CAKvE;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GACjD,OAAO,CAAC,OAAO,CAAC,CAelB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,oBAAoB,EAAE,GAAG,SAAS,EAC/C,IAAI,SAAgB,GACnB,eAAe,EAAE,CAcnB;AAED,wEAAwE;AACxE,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,EAAE,QAAQ,EAAE,SAAS,GAAG,OAAO,CAElF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAE1D;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,eAAe,EAAE,GAAG,SAAS,EAC3C,QAAQ,EAAE,QAAQ,GACjB,SAAS,GAAG,IAAI,CASlB;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,YAAY,EAAE,eAAe,EAAE,GAAG,SAAS,GAAG,OAAO,CAElF;AAkBD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,eAAe,EAAE,GAAG,SAAS,EAC3C,SAAS,EAAE,KAAK,GAAG,SAAS,EAC5B,aAAa,EAAE,QAAQ,GACtB,eAAe,EAAE,GAAG,SAAS,CAG/B;AAiBD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE;IAAE,SAAS,EAAE,QAAQ,GAAG,IAAI,CAAC;IAAC,WAAW,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAA;CAAE,EACpE,aAAa,EAAE,QAAQ,GACtB,OAAO,CAGT"}
|
package/dist/access.js
CHANGED
|
@@ -122,8 +122,17 @@ function isGroupAdminAssociation(association) {
|
|
|
122
122
|
association.label === 'admin' &&
|
|
123
123
|
association.target.kind === 'entity');
|
|
124
124
|
}
|
|
125
|
-
/**
|
|
126
|
-
|
|
125
|
+
/**
|
|
126
|
+
* The associations a create stores: as given, plus a `_group`'s creator —
|
|
127
|
+
* the owner when none is named — stamped as its first admin.
|
|
128
|
+
* See docs/spec/identity.md § Group.
|
|
129
|
+
*/
|
|
130
|
+
export function createAssociations(typeId, associations, createdBy, ownerEntityId) {
|
|
131
|
+
if (baseIdOf(typeId) !== SYSTEM_TYPES.GROUP)
|
|
132
|
+
return associations;
|
|
133
|
+
return stampGroupAdmin(associations, createdBy?.subjectId ?? ownerEntityId);
|
|
134
|
+
}
|
|
135
|
+
function stampGroupAdmin(associations, creator) {
|
|
127
136
|
const list = associations ?? [];
|
|
128
137
|
const alreadyAdmin = list.some((a) => isGroupAdminAssociation(a) && a.target.entityId === creator);
|
|
129
138
|
if (alreadyAdmin)
|
package/dist/access.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access.js","sourceRoot":"","sources":["../src/access.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"access.js","sourceRoot":"","sources":["../src/access.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combine.d.ts","sourceRoot":"","sources":["../../src/adapter/combine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"combine.d.ts","sourceRoot":"","sources":["../../src/adapter/combine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAKV,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAGjB,MAAM,mBAAmB,CAAC;AAE3B;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE;IACrC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,IAAI,EAAE,gBAAgB,CAAC;CACxB,GAAG,YAAY,CA8Ef"}
|
package/dist/adapter/combine.js
CHANGED
|
@@ -20,9 +20,6 @@ export function combineAdapters(parts) {
|
|
|
20
20
|
get ownerEntityId() {
|
|
21
21
|
return parts.record.ownerEntityId;
|
|
22
22
|
},
|
|
23
|
-
get timezone() {
|
|
24
|
-
return parts.record.timezone;
|
|
25
|
-
},
|
|
26
23
|
createRecord: (r, opts) => parts.record.createRecord(r, opts),
|
|
27
24
|
getRecord: (id) => parts.record.getRecord(id),
|
|
28
25
|
patchContent: (id, patch, opts) => parts.record.patchContent(id, patch, opts),
|
|
@@ -37,7 +34,6 @@ export function combineAdapters(parts) {
|
|
|
37
34
|
setAccess: (id, list, opts) => parts.record.setAccess(id, list, opts),
|
|
38
35
|
getVersions: (id, query) => parts.record.getVersions(id, query),
|
|
39
36
|
getVersion: (id, v) => parts.record.getVersion(id, v),
|
|
40
|
-
saveVersion: (id, v) => parts.record.saveVersion(id, v),
|
|
41
37
|
getJournal: (id, query) => parts.record.getJournal(id, query),
|
|
42
38
|
restoreVersion: (id, v, opts) => parts.record.restoreVersion(id, v, opts),
|
|
43
39
|
commitMigration: (id, toTypeId, content, opts) => parts.record.commitMigration(id, toTypeId, content, opts),
|
|
@@ -50,6 +46,9 @@ export function combineAdapters(parts) {
|
|
|
50
46
|
...(parts.record.deleteUnreferencedAttachmentRecords && {
|
|
51
47
|
deleteUnreferencedAttachmentRecords: (fileId, metadataBaseId) => parts.record.deleteUnreferencedAttachmentRecords(fileId, metadataBaseId),
|
|
52
48
|
}),
|
|
49
|
+
...(parts.record.importRecord && {
|
|
50
|
+
importRecord: (r, history) => parts.record.importRecord(r, history),
|
|
51
|
+
}),
|
|
53
52
|
...(parts.record.queryReadable && {
|
|
54
53
|
queryReadable: (q, reach) => parts.record.queryReadable(q, reach),
|
|
55
54
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combine.js","sourceRoot":"","sources":["../../src/adapter/combine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"combine.js","sourceRoot":"","sources":["../../src/adapter/combine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copying a stack
|
|
3
|
+
* -------------------------------------------------------
|
|
4
|
+
* One stack, read in full from one adapter and written in full to a new
|
|
5
|
+
* store: every Record (soft-deleted and unlisted included) with its version
|
|
6
|
+
* snapshots and journal, `_config` among them as the seed the store is
|
|
7
|
+
* created from, every Type, and every blob. Each is read as the store
|
|
8
|
+
* enumerates it, never by what a Record says, so nothing is filtered on the
|
|
9
|
+
* way. Export, import and moving
|
|
10
|
+
* between storage engines are all this one call, with a different source
|
|
11
|
+
* and a different kind of store to create. Full trust, like any direct
|
|
12
|
+
* adapter access: authorship and history land as recorded, which no write
|
|
13
|
+
* through Stack may do. See docs/spec/portability.md.
|
|
14
|
+
*/
|
|
15
|
+
import type { StackAdapter, StoreSeed } from '../types/index.js';
|
|
16
|
+
/** Creates a new store from `seed`: `LocalAdapter.open({ path, seed })`, say. */
|
|
17
|
+
export type CreateStore = (seed: StoreSeed) => Promise<StackAdapter> | StackAdapter;
|
|
18
|
+
/**
|
|
19
|
+
* Copy everything `from` holds into the store `create` makes from its
|
|
20
|
+
* `_config` record and that record's history, and return that store, open.
|
|
21
|
+
* Not atomic: a failure closes the store part-written, and the caller, whose
|
|
22
|
+
* store it is, removes it. The source must not be written meanwhile; nothing
|
|
23
|
+
* here can check that.
|
|
24
|
+
* See docs/spec/portability.md § Copying a stack.
|
|
25
|
+
*/
|
|
26
|
+
export declare function copyStack(from: StackAdapter, create: CreateStore): Promise<StackAdapter>;
|
|
27
|
+
//# sourceMappingURL=copy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy.d.ts","sourceRoot":"","sources":["../../src/adapter/copy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,EAGV,YAAY,EAEZ,SAAS,EACV,MAAM,mBAAmB,CAAC;AAG3B,iFAAiF;AACjF,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC;AAYpF;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAgC9F"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copying a stack
|
|
3
|
+
* -------------------------------------------------------
|
|
4
|
+
* One stack, read in full from one adapter and written in full to a new
|
|
5
|
+
* store: every Record (soft-deleted and unlisted included) with its version
|
|
6
|
+
* snapshots and journal, `_config` among them as the seed the store is
|
|
7
|
+
* created from, every Type, and every blob. Each is read as the store
|
|
8
|
+
* enumerates it, never by what a Record says, so nothing is filtered on the
|
|
9
|
+
* way. Export, import and moving
|
|
10
|
+
* between storage engines are all this one call, with a different source
|
|
11
|
+
* and a different kind of store to create. Full trust, like any direct
|
|
12
|
+
* adapter access: authorship and history land as recorded, which no write
|
|
13
|
+
* through Stack may do. See docs/spec/portability.md.
|
|
14
|
+
*/
|
|
15
|
+
import { InvalidAdapterError, OwnerMismatchError } from '../errors.js';
|
|
16
|
+
import { resolveQuery } from '../query-validation.js';
|
|
17
|
+
import { SYSTEM_TYPES } from '../types/index.js';
|
|
18
|
+
/** Records read per page; any size works, as each page is written before the next is read. */
|
|
19
|
+
const PAGE_SIZE = 100;
|
|
20
|
+
/** Every Record a store holds but `_config`, which no query reaches: a store is created from it. */
|
|
21
|
+
const EVERYTHING = {
|
|
22
|
+
filter: { includeDeleted: true, includeUnlisted: true },
|
|
23
|
+
sort: { field: 'createdAt', direction: 'asc' },
|
|
24
|
+
limit: PAGE_SIZE,
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Copy everything `from` holds into the store `create` makes from its
|
|
28
|
+
* `_config` record and that record's history, and return that store, open.
|
|
29
|
+
* Not atomic: a failure closes the store part-written, and the caller, whose
|
|
30
|
+
* store it is, removes it. The source must not be written meanwhile; nothing
|
|
31
|
+
* here can check that.
|
|
32
|
+
* See docs/spec/portability.md § Copying a stack.
|
|
33
|
+
*/
|
|
34
|
+
export async function copyStack(from, create) {
|
|
35
|
+
const listBlobs = from.listBlobs?.bind(from);
|
|
36
|
+
if (!listBlobs) {
|
|
37
|
+
throw new InvalidAdapterError('Cannot copy from this adapter: it has no listBlobs(), so its blobs cannot be enumerated.');
|
|
38
|
+
}
|
|
39
|
+
const config = await from.getRecord(SYSTEM_TYPES.CONFIG);
|
|
40
|
+
if (!config) {
|
|
41
|
+
throw new InvalidAdapterError('Cannot copy from this adapter: it holds no _config record.');
|
|
42
|
+
}
|
|
43
|
+
const [versions, journal] = await Promise.all([
|
|
44
|
+
from.getVersions(config.id),
|
|
45
|
+
from.getJournal(config.id),
|
|
46
|
+
]);
|
|
47
|
+
const to = await create({ config, history: { versions, journal } });
|
|
48
|
+
try {
|
|
49
|
+
const importRecord = to.importRecord?.bind(to);
|
|
50
|
+
if (!importRecord)
|
|
51
|
+
refuseTarget('it has no importRecord(), so it cannot write history');
|
|
52
|
+
const listHeld = to.listBlobs?.bind(to);
|
|
53
|
+
if (!listHeld)
|
|
54
|
+
refuseTarget('it has no listBlobs(), so it could not be copied from in turn');
|
|
55
|
+
await assertNewStore(to, config.content.ownerEntityId, listHeld);
|
|
56
|
+
for (const type of await from.listTypes())
|
|
57
|
+
await to.saveType(type);
|
|
58
|
+
// Bytes before the Records that name them, as every upload writes them.
|
|
59
|
+
for (const { fileId } of await listBlobs())
|
|
60
|
+
await to.putBlob(await from.getBlob(fileId));
|
|
61
|
+
await copyRecords(from, importRecord);
|
|
62
|
+
return to;
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
// The failure that stopped the copy is the one to report.
|
|
66
|
+
await to.close?.().catch(() => { });
|
|
67
|
+
throw err;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function refuseTarget(why) {
|
|
71
|
+
throw new InvalidAdapterError(`Cannot copy into the store create() returned: ${why}.`);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* A target is a store as its adapter creates one: the source's owner,
|
|
75
|
+
* checked as open() checks it, and nothing held yet — no Record, no Type, no
|
|
76
|
+
* blob. Every end of a copy lists all it holds, so a target is itself a
|
|
77
|
+
* store a later copy can read in full.
|
|
78
|
+
*/
|
|
79
|
+
async function assertNewStore(to, ownerEntityId, listHeld) {
|
|
80
|
+
if (to.ownerEntityId !== ownerEntityId) {
|
|
81
|
+
throw new OwnerMismatchError(ownerEntityId, to.ownerEntityId, 'the store create() returned');
|
|
82
|
+
}
|
|
83
|
+
if ((await to.queryRecords(resolveQuery({ ...EVERYTHING, limit: 1 }))).records.length) {
|
|
84
|
+
refuseTarget('it already holds Records');
|
|
85
|
+
}
|
|
86
|
+
if ((await to.listTypes()).length)
|
|
87
|
+
refuseTarget('it already holds Types');
|
|
88
|
+
if ((await listHeld()).length)
|
|
89
|
+
refuseTarget('it already holds blobs');
|
|
90
|
+
}
|
|
91
|
+
async function copyRecords(from, importRecord) {
|
|
92
|
+
let cursor;
|
|
93
|
+
do {
|
|
94
|
+
const page = await from.queryRecords(resolveQuery({ ...EVERYTHING, cursor }));
|
|
95
|
+
for (const record of page.records) {
|
|
96
|
+
const [versions, journal] = await Promise.all([
|
|
97
|
+
from.getVersions(record.id),
|
|
98
|
+
from.getJournal(record.id),
|
|
99
|
+
]);
|
|
100
|
+
await importRecord(record, { versions, journal });
|
|
101
|
+
}
|
|
102
|
+
cursor = page.cursor ?? undefined;
|
|
103
|
+
} while (cursor);
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=copy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy.js","sourceRoot":"","sources":["../../src/adapter/copy.ts"],"names":[],"mappings":"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"}
|
package/dist/adapter/index.d.ts
CHANGED
|
@@ -7,10 +7,13 @@
|
|
|
7
7
|
* adapters). Types an app reads too, such as StackCapabilities, live in
|
|
8
8
|
* the root entry point instead: every export has exactly one home.
|
|
9
9
|
*/
|
|
10
|
-
export type { AdapterQuery, PlainQuery, AdapterSort, StackAdapter, StackRecordAdapter, StackBlobAdapter, BlobInfo, SnapshotOptions, JournalEntryInput, JournalOptions, MutateOptions, AspectWriteOptions, ElementWriteOptions, Reach, } from '../types/index.js';
|
|
10
|
+
export type { AdapterQuery, PlainQuery, AdapterSort, StackAdapter, StackRecordAdapter, StackBlobAdapter, BlobInfo, SnapshotOptions, JournalEntryInput, JournalOptions, MutateOptions, AspectWriteOptions, ElementWriteOptions, Reach, RecordHistory, StoreSeed, } from '../types/index.js';
|
|
11
11
|
export { sameAssociationSet } from '../associations/identity.js';
|
|
12
|
-
export { ElementSetMovedError, OwnerMismatchError, softDeletedRefusal } from '../errors.js';
|
|
12
|
+
export { ElementSetMovedError, FormatMismatchError, OwnerMismatchError, softDeletedRefusal, } from '../errors.js';
|
|
13
13
|
export { combineAdapters } from './combine.js';
|
|
14
|
+
export { copyStack } from './copy.js';
|
|
15
|
+
export type { CreateStore } from './copy.js';
|
|
16
|
+
export { newStoreSeed } from './seed.js';
|
|
14
17
|
export { inReach } from './reach.js';
|
|
15
18
|
export type { ReachedRecord } from './reach.js';
|
|
16
19
|
export { assertQueryCapabilities, assertValidSort, resolveQuery, assertValidAssociationFilters, assertValidJournalQuery, assertValidVersionsQuery, filtersContent, parseContentFilterKey, } from '../query-validation.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapter/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,YAAY,EACV,YAAY,EACZ,UAAU,EACV,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapter/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,YAAY,EACV,YAAY,EACZ,UAAU,EACV,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,KAAK,EACL,aAAa,EACb,SAAS,GACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EACL,uBAAuB,EACvB,eAAe,EACf,YAAY,EACZ,6BAA6B,EAC7B,uBAAuB,EACvB,wBAAwB,EACxB,cAAc,EACd,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,GACb,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/adapter/index.js
CHANGED
|
@@ -8,8 +8,10 @@
|
|
|
8
8
|
* the root entry point instead: every export has exactly one home.
|
|
9
9
|
*/
|
|
10
10
|
export { sameAssociationSet } from '../associations/identity.js';
|
|
11
|
-
export { ElementSetMovedError, OwnerMismatchError, softDeletedRefusal } from '../errors.js';
|
|
11
|
+
export { ElementSetMovedError, FormatMismatchError, OwnerMismatchError, softDeletedRefusal, } from '../errors.js';
|
|
12
12
|
export { combineAdapters } from './combine.js';
|
|
13
|
+
export { copyStack } from './copy.js';
|
|
14
|
+
export { newStoreSeed } from './seed.js';
|
|
13
15
|
export { inReach } from './reach.js';
|
|
14
16
|
export { assertQueryCapabilities, assertValidSort, resolveQuery, assertValidAssociationFilters, assertValidJournalQuery, assertValidVersionsQuery, filtersContent, parseContentFilterKey, } from '../query-validation.js';
|
|
15
17
|
export { contentSortEntry, contentSortKey, compareSortEntries, constantSortEntry, sortConstant, } from './sort.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapter/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapter/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAoBH,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,EACL,uBAAuB,EACvB,eAAe,EACf,YAAY,EACZ,6BAA6B,EAC7B,uBAAuB,EACvB,wBAAwB,EACxB,cAAc,EACd,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,GACb,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Store seeds
|
|
3
|
+
* -------------------------------------------------------
|
|
4
|
+
* A store is created holding one Record, `_config`, which says whose stack
|
|
5
|
+
* it is. A seed is that Record with its history: fresh for a new stack, the
|
|
6
|
+
* source's own for a copy, so the one Record every store starts with is
|
|
7
|
+
* written the way every other Record is. See docs/spec/adapters.md
|
|
8
|
+
* § Construction.
|
|
9
|
+
*/
|
|
10
|
+
import type { ConfigContent, StoreSeed } from '../types/index.js';
|
|
11
|
+
/** The seed of a stack that has no past: `_config` at version 1, holding `config`. */
|
|
12
|
+
export declare function newStoreSeed(config: ConfigContent): StoreSeed;
|
|
13
|
+
//# sourceMappingURL=seed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../src/adapter/seed.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGlE,sFAAsF;AACtF,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,CAa7D"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Store seeds
|
|
3
|
+
* -------------------------------------------------------
|
|
4
|
+
* A store is created holding one Record, `_config`, which says whose stack
|
|
5
|
+
* it is. A seed is that Record with its history: fresh for a new stack, the
|
|
6
|
+
* source's own for a copy, so the one Record every store starts with is
|
|
7
|
+
* written the way every other Record is. See docs/spec/adapters.md
|
|
8
|
+
* § Construction.
|
|
9
|
+
*/
|
|
10
|
+
import { SYSTEM_TYPES } from '../types/index.js';
|
|
11
|
+
/** The seed of a stack that has no past: `_config` at version 1, holding `config`. */
|
|
12
|
+
export function newStoreSeed(config) {
|
|
13
|
+
const now = new Date();
|
|
14
|
+
return {
|
|
15
|
+
config: {
|
|
16
|
+
id: SYSTEM_TYPES.CONFIG,
|
|
17
|
+
typeId: `${SYSTEM_TYPES.CONFIG}@1`,
|
|
18
|
+
createdAt: now,
|
|
19
|
+
updatedAt: now,
|
|
20
|
+
content: { ...config },
|
|
21
|
+
version: 1,
|
|
22
|
+
},
|
|
23
|
+
history: { versions: [], journal: [] },
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=seed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seed.js","sourceRoot":"","sources":["../../src/adapter/seed.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,sFAAsF;AACtF,MAAM,UAAU,YAAY,CAAC,MAAqB;IAChD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,OAAO;QACL,MAAM,EAAE;YACN,EAAE,EAAE,YAAY,CAAC,MAAM;YACvB,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,IAAI;YAClC,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;YACd,OAAO,EAAE,EAAE,GAAG,MAAM,EAAE;YACtB,OAAO,EAAE,CAAC;SACX;QACD,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;KACvC,CAAC;AACJ,CAAC"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -170,10 +170,11 @@ export declare class InvalidAdapterError extends Error {
|
|
|
170
170
|
constructor(message: string);
|
|
171
171
|
}
|
|
172
172
|
/**
|
|
173
|
-
* Thrown by
|
|
174
|
-
*
|
|
175
|
-
*
|
|
176
|
-
*
|
|
173
|
+
* Thrown when a store is not owned by the owner expected of it: by an
|
|
174
|
+
* adapter's open() given a plain-string `ownerEntityId`, and by copyStack()
|
|
175
|
+
* when the store `create` returned is not the source's owner's. `where`
|
|
176
|
+
* names the store; `actual` is undefined when a server reports no owner at
|
|
177
|
+
* all. Outside the StackError taxonomy for the same reason as
|
|
177
178
|
* InvalidAdapterError. See docs/spec/adapters.md § Construction.
|
|
178
179
|
*/
|
|
179
180
|
export declare class OwnerMismatchError extends Error {
|
|
@@ -182,6 +183,19 @@ export declare class OwnerMismatchError extends Error {
|
|
|
182
183
|
readonly where: string;
|
|
183
184
|
constructor(expected: EntityId, actual: EntityId | undefined, where: string);
|
|
184
185
|
}
|
|
186
|
+
/**
|
|
187
|
+
* Thrown by an adapter's open() when an existing store names a layout other
|
|
188
|
+
* than the one the adapter reads: a store moves to a new layout only by
|
|
189
|
+
* being copied into one. `actual` is undefined when the store names none.
|
|
190
|
+
* Outside the StackError taxonomy for the same reason as OwnerMismatchError.
|
|
191
|
+
* See docs/spec/adapters.md § Construction.
|
|
192
|
+
*/
|
|
193
|
+
export declare class FormatMismatchError extends Error {
|
|
194
|
+
readonly expected: number;
|
|
195
|
+
readonly actual: number | undefined;
|
|
196
|
+
readonly where: string;
|
|
197
|
+
constructor(expected: number, actual: number | undefined, where: string);
|
|
198
|
+
}
|
|
185
199
|
/**
|
|
186
200
|
* Thrown by an adapter's element-set write when the stored set no longer
|
|
187
201
|
* matches the `expectSet` it was handed. Outside the StackError taxonomy:
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.js
CHANGED
|
@@ -202,10 +202,11 @@ export class InvalidAdapterError extends Error {
|
|
|
202
202
|
}
|
|
203
203
|
}
|
|
204
204
|
/**
|
|
205
|
-
* Thrown by
|
|
206
|
-
*
|
|
207
|
-
*
|
|
208
|
-
*
|
|
205
|
+
* Thrown when a store is not owned by the owner expected of it: by an
|
|
206
|
+
* adapter's open() given a plain-string `ownerEntityId`, and by copyStack()
|
|
207
|
+
* when the store `create` returned is not the source's owner's. `where`
|
|
208
|
+
* names the store; `actual` is undefined when a server reports no owner at
|
|
209
|
+
* all. Outside the StackError taxonomy for the same reason as
|
|
209
210
|
* InvalidAdapterError. See docs/spec/adapters.md § Construction.
|
|
210
211
|
*/
|
|
211
212
|
export class OwnerMismatchError extends Error {
|
|
@@ -214,14 +215,35 @@ export class OwnerMismatchError extends Error {
|
|
|
214
215
|
where;
|
|
215
216
|
constructor(expected, actual, where) {
|
|
216
217
|
super(actual
|
|
217
|
-
?
|
|
218
|
-
:
|
|
218
|
+
? `${where} is owned by "${actual}", not "${expected}".`
|
|
219
|
+
: `${where} reports no owner, not "${expected}".`);
|
|
219
220
|
this.expected = expected;
|
|
220
221
|
this.actual = actual;
|
|
221
222
|
this.where = where;
|
|
222
223
|
this.name = 'OwnerMismatchError';
|
|
223
224
|
}
|
|
224
225
|
}
|
|
226
|
+
/**
|
|
227
|
+
* Thrown by an adapter's open() when an existing store names a layout other
|
|
228
|
+
* than the one the adapter reads: a store moves to a new layout only by
|
|
229
|
+
* being copied into one. `actual` is undefined when the store names none.
|
|
230
|
+
* Outside the StackError taxonomy for the same reason as OwnerMismatchError.
|
|
231
|
+
* See docs/spec/adapters.md § Construction.
|
|
232
|
+
*/
|
|
233
|
+
export class FormatMismatchError extends Error {
|
|
234
|
+
expected;
|
|
235
|
+
actual;
|
|
236
|
+
where;
|
|
237
|
+
constructor(expected, actual, where) {
|
|
238
|
+
super(actual === undefined
|
|
239
|
+
? `${where} names no format version, not ${expected}.`
|
|
240
|
+
: `${where} is format version ${actual}, not ${expected}.`);
|
|
241
|
+
this.expected = expected;
|
|
242
|
+
this.actual = actual;
|
|
243
|
+
this.where = where;
|
|
244
|
+
this.name = 'FormatMismatchError';
|
|
245
|
+
}
|
|
246
|
+
}
|
|
225
247
|
/**
|
|
226
248
|
* Thrown by an adapter's element-set write when the stored set no longer
|
|
227
249
|
* matches the `expectSet` it was handed. Outside the StackError taxonomy:
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/grants.d.ts
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* See docs/spec/access-control.md § Type-level grants.
|
|
10
10
|
*/
|
|
11
11
|
import type { RosterRoles } from './access.js';
|
|
12
|
-
import type {
|
|
12
|
+
import type { EntityId, GrantAction, GrantContent, GrantGrantee, GroupRole, RecordId, TypeId } from './types/index.js';
|
|
13
13
|
import type { ValidationError } from './validate.js';
|
|
14
14
|
/**
|
|
15
15
|
* Valid GrantAction values, for runtime validation in Stack.grantType(). Built
|
|
@@ -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,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EACV,
|
|
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"}
|