@graview/core 0.1.3 → 0.1.4
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/dist/app.d.ts +9 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js.map +1 -1
- package/dist/capabilities.js +1 -1
- package/dist/capabilities.js.map +1 -1
- package/dist/cli/check/policy.d.ts.map +1 -1
- package/dist/cli/check/policy.js +40 -0
- package/dist/cli/check/policy.js.map +1 -1
- package/dist/cli/index.d.ts +2 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/document/canonical.d.ts +2 -1
- package/dist/document/canonical.d.ts.map +1 -1
- package/dist/document/canonical.js +2 -1
- package/dist/document/canonical.js.map +1 -1
- package/dist/document/diff.d.ts.map +1 -1
- package/dist/document/diff.js +3 -1
- package/dist/document/diff.js.map +1 -1
- package/dist/document/edit.d.ts +7 -1
- package/dist/document/edit.d.ts.map +1 -1
- package/dist/document/edit.js +46 -2
- package/dist/document/edit.js.map +1 -1
- package/dist/document/index.d.ts +1 -1
- package/dist/document/index.d.ts.map +1 -1
- package/dist/document/migrate.d.ts.map +1 -1
- package/dist/document/migrate.js +3 -2
- package/dist/document/migrate.js.map +1 -1
- package/dist/document/patch.d.ts.map +1 -1
- package/dist/document/patch.js +2 -5
- package/dist/document/patch.js.map +1 -1
- package/dist/document/schema.d.ts +10 -10
- package/dist/index.d.ts +7 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/dist/integrity.d.ts.map +1 -1
- package/dist/integrity.js +35 -5
- package/dist/integrity.js.map +1 -1
- package/dist/invariants/types.d.ts +1 -1
- package/dist/invariants/types.d.ts.map +1 -1
- package/dist/mutations/define-mutation.d.ts +22 -2
- package/dist/mutations/define-mutation.d.ts.map +1 -1
- package/dist/mutations/define-mutation.js +18 -5
- package/dist/mutations/define-mutation.js.map +1 -1
- package/dist/mutations/node-ref.d.ts +5 -2
- package/dist/mutations/node-ref.d.ts.map +1 -1
- package/dist/mutations/node-ref.js +28 -7
- package/dist/mutations/node-ref.js.map +1 -1
- package/dist/mutations/types.d.ts +2 -2
- package/dist/mutations/types.d.ts.map +1 -1
- package/dist/ops/log.d.ts +11 -0
- package/dist/ops/log.d.ts.map +1 -1
- package/dist/ops/log.js.map +1 -1
- package/dist/ops/served.d.ts +80 -0
- package/dist/ops/served.d.ts.map +1 -0
- package/dist/ops/served.js +316 -0
- package/dist/ops/served.js.map +1 -0
- package/dist/ops/types.d.ts +8 -0
- package/dist/ops/types.d.ts.map +1 -1
- package/dist/ops/withheld.d.ts +63 -8
- package/dist/ops/withheld.d.ts.map +1 -1
- package/dist/ops/withheld.js +198 -22
- package/dist/ops/withheld.js.map +1 -1
- package/dist/ops/writers.d.ts +29 -0
- package/dist/ops/writers.d.ts.map +1 -0
- package/dist/ops/writers.js +98 -0
- package/dist/ops/writers.js.map +1 -0
- package/dist/permissions/sight.d.ts +15 -2
- package/dist/permissions/sight.d.ts.map +1 -1
- package/dist/permissions/sight.js +34 -5
- package/dist/permissions/sight.js.map +1 -1
- package/dist/presence.d.ts +24 -2
- package/dist/presence.d.ts.map +1 -1
- package/dist/presence.js +26 -1
- package/dist/presence.js.map +1 -1
- package/dist/refusal.d.ts +9 -5
- package/dist/refusal.d.ts.map +1 -1
- package/dist/refusal.js +9 -5
- package/dist/refusal.js.map +1 -1
- package/dist/schema/json-schema.d.ts.map +1 -1
- package/dist/schema/json-schema.js +27 -1
- package/dist/schema/json-schema.js.map +1 -1
- package/dist/schema/schema.d.ts +19 -4
- package/dist/schema/schema.d.ts.map +1 -1
- package/dist/schema/schema.js.map +1 -1
- package/dist/seen.d.ts +54 -1
- package/dist/seen.d.ts.map +1 -1
- package/dist/seen.js +457 -25
- package/dist/seen.js.map +1 -1
- package/dist/store.d.ts +90 -10
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +146 -35
- package/dist/store.js.map +1 -1
- package/dist/testing.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sight.js","sourceRoot":"","sources":["../../src/permissions/sight.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sight.js","sourceRoot":"","sources":["../../src/permissions/sight.ts"],"names":[],"mappings":"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"}
|
package/dist/presence.d.ts
CHANGED
|
@@ -29,9 +29,19 @@ export interface Presence {
|
|
|
29
29
|
* Until then they stand without a heartbeat; after it, they are gone.
|
|
30
30
|
*/
|
|
31
31
|
readonly until?: string;
|
|
32
|
+
/**
|
|
33
|
+
* HELD BY AN OPEN SOCKET, as the server says it — never a client: this
|
|
34
|
+
* presence stands as long as the server lists it, whatever its `at`. The
|
|
35
|
+
* server drops it the moment the socket closes, so it needs no heartbeat
|
|
36
|
+
* to stay, and a client holding a list it was told does not expire it.
|
|
37
|
+
*/
|
|
38
|
+
readonly held?: "socket";
|
|
32
39
|
}
|
|
33
40
|
export interface PresenceChannel {
|
|
34
|
-
/**
|
|
41
|
+
/**
|
|
42
|
+
* Say where you are. Called on every change and on every heartbeat; a
|
|
43
|
+
* channel whose server holds it by socket says it again only on a change.
|
|
44
|
+
*/
|
|
35
45
|
here(presence: Presence): void;
|
|
36
46
|
/** Told who else is here, every time that changes. Returns the way to stop listening. */
|
|
37
47
|
onWho(listener: (who: readonly Presence[]) => void): () => void;
|
|
@@ -60,8 +70,20 @@ export declare const VISITOR_PRESENCE_TTL_MS = 30000;
|
|
|
60
70
|
* viewer, who is counted rather than drawn.
|
|
61
71
|
*/
|
|
62
72
|
export declare function presenceName(presence: Presence): string;
|
|
63
|
-
/**
|
|
73
|
+
/**
|
|
74
|
+
* Whether a presence still stands at `now`: while a socket holds it, until
|
|
75
|
+
* its announced time, or within the TTL of its last word.
|
|
76
|
+
*/
|
|
64
77
|
export declare function presenceStands(presence: Presence, now: number, ttlMs?: number): boolean;
|
|
78
|
+
/**
|
|
79
|
+
* WHEN THE NEXT VISITOR GOES, in epoch ms: the earliest `until` still ahead
|
|
80
|
+
* of `now` in `who`, or undefined when nobody standing has one (a socket's
|
|
81
|
+
* presence goes when its socket closes, a poller's by its host's TTL). A
|
|
82
|
+
* host that keeps `who` itself sets its alarm by it — a Durable Object's
|
|
83
|
+
* `setAlarm`, a timer — and tells the room then, so a visitor whose time
|
|
84
|
+
* is up leaves every map without anything else happening.
|
|
85
|
+
*/
|
|
86
|
+
export declare function nextExpiry(who: readonly Presence[], now?: number): number | undefined;
|
|
65
87
|
/** The parts of a participant key: who, and which tab of theirs. */
|
|
66
88
|
export interface Participant {
|
|
67
89
|
readonly kind: "human" | "agent" | "rule" | "system";
|
package/dist/presence.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presence.d.ts","sourceRoot":"","sources":["../src/presence.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,aAAa;IAC5B,gFAAgF;IAChF,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,kGAAkG;IAClG,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,4IAA4I;IAC5I,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,2FAA2F;IAC3F,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,uGAAuG;IACvG,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,iHAAiH;IACjH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,iEAAiE;IACjE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,sDAAsD;IACtD,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;IAC/B,mCAAmC;IACnC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"presence.d.ts","sourceRoot":"","sources":["../src/presence.ts"],"names":[],"mappings":"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"}
|
package/dist/presence.js
CHANGED
|
@@ -35,12 +35,36 @@ export function presenceName(presence) {
|
|
|
35
35
|
const name = presence.name ?? "";
|
|
36
36
|
return name && presence.onBehalfOfName ? `${name}, for ${presence.onBehalfOfName}` : name;
|
|
37
37
|
}
|
|
38
|
-
/**
|
|
38
|
+
/**
|
|
39
|
+
* Whether a presence still stands at `now`: while a socket holds it, until
|
|
40
|
+
* its announced time, or within the TTL of its last word.
|
|
41
|
+
*/
|
|
39
42
|
export function presenceStands(presence, now, ttlMs = PRESENCE_TTL_MS) {
|
|
43
|
+
if (presence.held === "socket")
|
|
44
|
+
return true;
|
|
40
45
|
if (presence.until !== undefined)
|
|
41
46
|
return now < Date.parse(presence.until);
|
|
42
47
|
return now - Date.parse(presence.at) < ttlMs;
|
|
43
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* WHEN THE NEXT VISITOR GOES, in epoch ms: the earliest `until` still ahead
|
|
51
|
+
* of `now` in `who`, or undefined when nobody standing has one (a socket's
|
|
52
|
+
* presence goes when its socket closes, a poller's by its host's TTL). A
|
|
53
|
+
* host that keeps `who` itself sets its alarm by it — a Durable Object's
|
|
54
|
+
* `setAlarm`, a timer — and tells the room then, so a visitor whose time
|
|
55
|
+
* is up leaves every map without anything else happening.
|
|
56
|
+
*/
|
|
57
|
+
export function nextExpiry(who, now = Date.now()) {
|
|
58
|
+
let next;
|
|
59
|
+
for (const presence of who) {
|
|
60
|
+
if (presence.until === undefined || presence.held === "socket")
|
|
61
|
+
continue;
|
|
62
|
+
const until = Date.parse(presence.until);
|
|
63
|
+
if (Number.isFinite(until) && until > now && (next === undefined || until < next))
|
|
64
|
+
next = until;
|
|
65
|
+
}
|
|
66
|
+
return next;
|
|
67
|
+
}
|
|
44
68
|
const PARTICIPANT_KINDS = new Set(["human", "agent", "rule", "system"]);
|
|
45
69
|
/**
|
|
46
70
|
* THE ONE DIALECT. A participant is `kind:id:session`: the op log's own
|
|
@@ -101,6 +125,7 @@ export function samePresence(a, b) {
|
|
|
101
125
|
a.onBehalfOf === b.onBehalfOf &&
|
|
102
126
|
a.onBehalfOfName === b.onBehalfOfName &&
|
|
103
127
|
a.until === b.until &&
|
|
128
|
+
a.held === b.held &&
|
|
104
129
|
a.hue === b.hue &&
|
|
105
130
|
a.stop === b.stop &&
|
|
106
131
|
(a.over ?? null) === (b.over ?? null) &&
|
package/dist/presence.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presence.js","sourceRoot":"","sources":["../src/presence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"presence.js","sourceRoot":"","sources":["../src/presence.ts"],"names":[],"mappings":"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"}
|
package/dist/refusal.d.ts
CHANGED
|
@@ -10,13 +10,17 @@
|
|
|
10
10
|
* missing what the call names is not there: a record, or a batch to take back
|
|
11
11
|
* invalid the call as asked does not fit: its arguments, the kind, a rule, the order things happened in
|
|
12
12
|
* limit the host's hard cap: the call can never succeed as asked, however long the caller waits
|
|
13
|
+
* unavailable the host takes no changes for a while — a room read-only while it is checked, storage that failed to write — and does not know for how long
|
|
13
14
|
*
|
|
14
|
-
* `limit`
|
|
15
|
-
* `busy`: busy is "not now
|
|
16
|
-
*
|
|
17
|
-
*
|
|
15
|
+
* `limit` and `unavailable` are the host's to say; nothing in the store
|
|
16
|
+
* says them. Neither is `busy`: busy is "not now, after `retryAfter`", and
|
|
17
|
+
* the client keeps the change and sends it again (FR-45). `unavailable` is
|
|
18
|
+
* the one refusal that is not final: nothing was judged, and the client
|
|
19
|
+
* keeps the change pending and sends it again, backing off as it does to
|
|
20
|
+
* reconnect, until the host takes it. A refusal of any other reason is
|
|
21
|
+
* final, and the change is taken back.
|
|
18
22
|
*/
|
|
19
|
-
export declare const REFUSAL_REASONS: readonly ["forbidden", "missing", "invalid", "limit"];
|
|
23
|
+
export declare const REFUSAL_REASONS: readonly ["forbidden", "missing", "invalid", "limit", "unavailable"];
|
|
20
24
|
export type RefusalReason = (typeof REFUSAL_REASONS)[number];
|
|
21
25
|
/** A refusal as the wire carries it: the code, the sentence a person reads, and who could. */
|
|
22
26
|
export interface WireRefusal {
|
package/dist/refusal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refusal.d.ts","sourceRoot":"","sources":["../src/refusal.ts"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"refusal.d.ts","sourceRoot":"","sources":["../src/refusal.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,eAAe,sEAAuE,CAAC;AAEpG,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D,8FAA8F;AAC9F,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,8FAA8F;IAC9F,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CASrD"}
|
package/dist/refusal.js
CHANGED
|
@@ -13,13 +13,17 @@ import { PermissionDeniedError } from "./permissions/types.js";
|
|
|
13
13
|
* missing what the call names is not there: a record, or a batch to take back
|
|
14
14
|
* invalid the call as asked does not fit: its arguments, the kind, a rule, the order things happened in
|
|
15
15
|
* limit the host's hard cap: the call can never succeed as asked, however long the caller waits
|
|
16
|
+
* unavailable the host takes no changes for a while — a room read-only while it is checked, storage that failed to write — and does not know for how long
|
|
16
17
|
*
|
|
17
|
-
* `limit`
|
|
18
|
-
* `busy`: busy is "not now
|
|
19
|
-
*
|
|
20
|
-
*
|
|
18
|
+
* `limit` and `unavailable` are the host's to say; nothing in the store
|
|
19
|
+
* says them. Neither is `busy`: busy is "not now, after `retryAfter`", and
|
|
20
|
+
* the client keeps the change and sends it again (FR-45). `unavailable` is
|
|
21
|
+
* the one refusal that is not final: nothing was judged, and the client
|
|
22
|
+
* keeps the change pending and sends it again, backing off as it does to
|
|
23
|
+
* reconnect, until the host takes it. A refusal of any other reason is
|
|
24
|
+
* final, and the change is taken back.
|
|
21
25
|
*/
|
|
22
|
-
export const REFUSAL_REASONS = ["forbidden", "missing", "invalid", "limit"];
|
|
26
|
+
export const REFUSAL_REASONS = ["forbidden", "missing", "invalid", "limit", "unavailable"];
|
|
23
27
|
/**
|
|
24
28
|
* THE STORE'S OWN ERRORS, READ INTO A REASON. Anything that is not one of
|
|
25
29
|
* the store's refusals — a mutation's own throw, an invariant, an id that
|
package/dist/refusal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refusal.js","sourceRoot":"","sources":["../src/refusal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/D
|
|
1
|
+
{"version":3,"file":"refusal.js","sourceRoot":"","sources":["../src/refusal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,CAAU,CAAC;AAYpG;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,MAAM,QAAQ,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxE,IAAI,KAAK,YAAY,qBAAqB,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;QACtC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACnG,CAAC;IACD,IAAI,KAAK,YAAY,kBAAkB;QAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;IAChF,IAAI,KAAK,YAAY,gBAAgB;QAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,SAAS,EAAE,QAAQ,EAAE,CAAC;IACpG,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AACzC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-schema.d.ts","sourceRoot":"","sources":["../../src/schema/json-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEjD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,GAAG,UAAU,CAU1D;
|
|
1
|
+
{"version":3,"file":"json-schema.d.ts","sourceRoot":"","sources":["../../src/schema/json-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEjD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,GAAG,UAAU,CAU1D;AA4BD,8EAA8E;AAC9E,wBAAgB,cAAc,CAAC,UAAU,EAAE,iBAAiB,GAAG,UAAU,CAOxE;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC;IACjC,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;CAC7F;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B,GAAG,kBAAkB,CAkCrB;AAED,oDAAoD;AACpD,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAMxE"}
|
|
@@ -13,7 +13,33 @@ export function toJsonSchema(schema) {
|
|
|
13
13
|
throw new Error("This Zod build has no toJSONSchema(). Upgrade to zod >= 3.25 / 4.x, " +
|
|
14
14
|
"or pass a JSON Schema explicitly.");
|
|
15
15
|
}
|
|
16
|
-
return convert(schema, { io: "input", unrepresentable: "any" });
|
|
16
|
+
return convert(schema, { io: "input", unrepresentable: "any", override: formatsByName });
|
|
17
|
+
}
|
|
18
|
+
/** zod's names for string formats that JSON Schema calls something else; the rest are the same word. */
|
|
19
|
+
const JSON_SCHEMA_FORMATS = { guid: "uuid", url: "uri", datetime: "date-time", json_string: "json-string" };
|
|
20
|
+
/*
|
|
21
|
+
* A FORMAT IS SAID BY ITS NAME (a tool schema is a stability surface). zod
|
|
22
|
+
* writes its own regex for `z.email()`, `z.uuid()`, `z.iso.datetime()` beside
|
|
23
|
+
* the format, and that regex changes between zod's minor versions — so the
|
|
24
|
+
* tools an app offers moved with the version a consumer happened to resolve.
|
|
25
|
+
* A string format says `format` and nothing else; a pattern the author wrote
|
|
26
|
+
* with `.regex(…)` is the author's, and is kept.
|
|
27
|
+
*/
|
|
28
|
+
function formatsByName(ctx) {
|
|
29
|
+
const def = ctx.zodSchema._zod?.def;
|
|
30
|
+
if (!def || def.type !== "string" || typeof def.format !== "string" || def.format === "regex")
|
|
31
|
+
return;
|
|
32
|
+
const js = ctx.jsonSchema;
|
|
33
|
+
const authored = (def.checks ?? []).map((check) => check._zod?.def).filter((check) => check?.format === "regex" && check.pattern instanceof RegExp).map((check) => check.pattern.source);
|
|
34
|
+
delete js["pattern"];
|
|
35
|
+
const allOf = js["allOf"];
|
|
36
|
+
if (Array.isArray(allOf) && allOf.every((part) => typeof part === "object" && part !== null && Object.keys(part).length === 1 && "pattern" in part))
|
|
37
|
+
delete js["allOf"];
|
|
38
|
+
js["format"] = JSON_SCHEMA_FORMATS[def.format] ?? def.format;
|
|
39
|
+
if (authored.length === 1)
|
|
40
|
+
js["pattern"] = authored[0];
|
|
41
|
+
else if (authored.length > 1)
|
|
42
|
+
js["allOf"] = authored.map((pattern) => ({ pattern }));
|
|
17
43
|
}
|
|
18
44
|
/** JSON Schema for one node kind, including its id and kind discriminator. */
|
|
19
45
|
export function nodeJsonSchema(definition) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-schema.js","sourceRoot":"","sources":["../../src/schema/json-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAMvD;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,MAAiB;IAC5C,MAAM,OAAO,GAAI,CAAkE;SAChF,YAAY,CAAC;IAChB,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CACb,sEAAsE;YACpE,mCAAmC,CACtC,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"json-schema.js","sourceRoot":"","sources":["../../src/schema/json-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAMvD;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,MAAiB;IAC5C,MAAM,OAAO,GAAI,CAAkE;SAChF,YAAY,CAAC;IAChB,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CACb,sEAAsE;YACpE,mCAAmC,CACtC,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAC;AAC3F,CAAC;AAED,wGAAwG;AACxG,MAAM,mBAAmB,GAAqC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC;AAI9I;;;;;;;GAOG;AACH,SAAS,aAAa,CAAC,GAAqE;IAC1F,MAAM,GAAG,GAAI,GAAG,CAAC,SAA+C,CAAC,IAAI,EAAE,GAAG,CAAC;IAC3E,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO;QAAE,OAAO;IACtG,MAAM,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC;IAC1B,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO,YAAY,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAM,CAAC,OAAQ,CAAC,MAAM,CAAC,CAAC;IAC3L,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;IACrB,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;IAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,IAAI,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;IACxK,EAAE,CAAC,QAAQ,CAAC,GAAG,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC;IAC7D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,EAAE,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;SAClD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,EAAE,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AACvF,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,cAAc,CAAC,UAA6B;IAC1D,OAAO,YAAY,CACjB,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;QACvB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACrB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;KACjC,CAAC,CACH,CAAC;AACJ,CAAC;AAWD;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAMlC;IACC,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAA+B,CAAC;IAC5E;;;;;OAKG;IACH,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,UAAU,CAAC,IAAI,CAAC,GAAG;YACjB,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,CAAC;YACZ,WAAW,EAAE,4BAA4B,IAAI,2FAA2F;SACzI,CAAC;QACF,IAAI,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC;IAClC,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ;YAAE,SAAS;QACxB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChF,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAC;aAC5E,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IACD,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,GAAG,CAAC,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC;QAClE,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI;QACpE,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,IAAI;KACf,CAAC;AACJ,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,UAAU,CAAC,MAAiB;IAC1C,MAAM,GAAG,GAA+B,EAAE,CAAC;IAC3C,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QAC5C,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/dist/schema/schema.d.ts
CHANGED
|
@@ -12,9 +12,7 @@ export interface Schema<Defs extends readonly AnyNodeDefinition[] = readonly Any
|
|
|
12
12
|
readonly definitions: Defs;
|
|
13
13
|
readonly kinds: readonly Defs[number]["kind"][];
|
|
14
14
|
readonly edgeKinds: readonly string[];
|
|
15
|
-
definition<K extends Defs[number]["kind"]>(kind: K):
|
|
16
|
-
kind: K;
|
|
17
|
-
}>;
|
|
15
|
+
definition<K extends Defs[number]["kind"]>(kind: K): DefinitionOfKind<Defs[number], K>;
|
|
18
16
|
tryDefinition(kind: string): Defs[number] | undefined;
|
|
19
17
|
edge(kind: string): EdgeKindInfo | undefined;
|
|
20
18
|
/** Whether an edge of `kind` may run from one node kind to another. */
|
|
@@ -24,10 +22,27 @@ export interface Schema<Defs extends readonly AnyNodeDefinition[] = readonly Any
|
|
|
24
22
|
/** Phantom carrier for the node union — never populated at runtime. */
|
|
25
23
|
readonly __node: NodeOf<Defs[number]>;
|
|
26
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* THE DEFINITION OF ONE KIND: the one that names it, in a schema whose kinds
|
|
27
|
+
* are known; any definition, narrowed to that kind, in one whose kinds are
|
|
28
|
+
* only `string` (`AnySchema`), where the exact one cannot be picked out and
|
|
29
|
+
* `Extract` would leave nothing.
|
|
30
|
+
*/
|
|
31
|
+
export type DefinitionOfKind<D extends AnyNodeDefinition, K extends string> = D extends {
|
|
32
|
+
readonly kind: infer Named;
|
|
33
|
+
} ? (K extends Named ? D : never) : never;
|
|
27
34
|
export type AnySchema = Schema<readonly AnyNodeDefinition[]>;
|
|
28
35
|
export type NodeOfSchema<S extends AnySchema> = S["__node"];
|
|
29
36
|
export type KindOfSchema<S extends AnySchema> = NodeOfSchema<S>["kind"];
|
|
30
|
-
|
|
37
|
+
/**
|
|
38
|
+
* A node of one kind: the kind's own node in a schema whose kinds are known;
|
|
39
|
+
* any node of that kind in one whose kinds are only `string` (`AnySchema`,
|
|
40
|
+
* as an unbound `defineInvariant` sees it), where `Extract` would leave
|
|
41
|
+
* nothing and every field read off it would be `never`.
|
|
42
|
+
*/
|
|
43
|
+
export type NodeOfKind<S extends AnySchema, K extends KindOfSchema<S>> = string extends KindOfSchema<S> ? NodeOfSchema<S> & {
|
|
44
|
+
readonly kind: K;
|
|
45
|
+
} : Extract<NodeOfSchema<S>, {
|
|
31
46
|
kind: K;
|
|
32
47
|
}>;
|
|
33
48
|
export declare class SchemaError extends Error {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/schema/schema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EAEjB,MAAM,EACN,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,mDAAmD;IACnD,QAAQ,CAAC,EAAE,EAAE,SAAS,MAAM,EAAE,GAAG,GAAG,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,KAAK,GAAG,MAAM,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,MAAM,CAAC,IAAI,SAAS,SAAS,iBAAiB,EAAE,GAAG,SAAS,iBAAiB,EAAE;IAC9F,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IAChD,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,UAAU,CAAC,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/schema/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/schema/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/schema/schema.ts"],"names":[],"mappings":"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"}
|
package/dist/seen.d.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
|
+
import type { GraphDiff } from "./graph/diff.js";
|
|
2
|
+
import type { GraphNodeBase } from "./graph/types.js";
|
|
3
|
+
import type { GraphEdge } from "./graph/types.js";
|
|
4
|
+
import type { Violation } from "./invariants/types.js";
|
|
1
5
|
import { type LogReading } from "./ops/log.js";
|
|
2
6
|
import type { Operation } from "./ops/types.js";
|
|
7
|
+
import { type SeatLens } from "./ops/withheld.js";
|
|
3
8
|
import type { Policy, Principal } from "./permissions/types.js";
|
|
4
9
|
import type { AnySchema } from "./schema/schema.js";
|
|
5
10
|
import type { Store } from "./store.js";
|
|
@@ -17,12 +22,21 @@ interface Judged {
|
|
|
17
22
|
in(id: string): readonly {
|
|
18
23
|
readonly id: string;
|
|
19
24
|
}[];
|
|
25
|
+
/** A store's own graph says its links, so an op can be judged where it stood (FR-55). */
|
|
26
|
+
outEdges?(id: string): readonly GraphEdge[];
|
|
27
|
+
inEdges?(id: string): readonly GraphEdge[];
|
|
20
28
|
};
|
|
21
29
|
readonly log: LogReading;
|
|
22
30
|
/** The kinds of the modules this workspace has off (FR-12), kept from every seat as a sight keeps a record. */
|
|
23
31
|
readonly modules?: {
|
|
24
32
|
readonly disabledKinds: ReadonlySet<string>;
|
|
25
33
|
};
|
|
34
|
+
/** The declaration, to say which of a kind's fields a record may be served without (FR-55). */
|
|
35
|
+
readonly schema?: {
|
|
36
|
+
tryDefinition(kind: string): {
|
|
37
|
+
readonly fields: unknown;
|
|
38
|
+
} | undefined;
|
|
39
|
+
};
|
|
26
40
|
}
|
|
27
41
|
/**
|
|
28
42
|
* WHETHER ANYTHING IS KEPT FROM THIS SEAT: a sight the policy declares
|
|
@@ -43,8 +57,47 @@ export declare function hidesFrom(store: Judged, principal: Principal): boolean;
|
|
|
43
57
|
* made what is an index the log keeps as it goes (`recordsOf`).
|
|
44
58
|
*/
|
|
45
59
|
export declare function seesId(store: Judged, principal: Principal): (id: string) => boolean;
|
|
46
|
-
/**
|
|
60
|
+
/**
|
|
61
|
+
* WHAT ONE SEAT IS SERVED (FR-55) — the judgement every surface built on
|
|
62
|
+
* the seat view reads, so a snapshot, a log, an answer and the wire cannot
|
|
63
|
+
* disagree about it.
|
|
64
|
+
*
|
|
65
|
+
* Its sight (`seesId`) says which records it may be told of. An id is
|
|
66
|
+
* minted from a label, so a seen record's field that holds the id of one
|
|
67
|
+
* it may not see tells it that record's name: such a field is CLEARED in
|
|
68
|
+
* what the seat is served — the record stays, usable, without it — when
|
|
69
|
+
* the kind's declaration lets a record be without it. When the field is
|
|
70
|
+
* one the record cannot do without, clearing it would serve a record that
|
|
71
|
+
* fails its own declaration, and a client refuses to load that: the record
|
|
72
|
+
* is WITHHELD from the seat whole instead, as if its sight did not reach
|
|
73
|
+
* it — not in the graph, the snapshot, the log's primitives or an edge.
|
|
74
|
+
* Which ids a field names is judged by the seat's sight alone, so a record
|
|
75
|
+
* naming one withheld this way still names a record the seat may see.
|
|
76
|
+
*/
|
|
77
|
+
export declare function seatLens(store: Judged, principal: Principal): SeatLens;
|
|
78
|
+
/** The store's log as one seat may read it: every op in its place, the ones it may not see withheld (FR-16), and no id it may not see in any of them (FR-55). */
|
|
47
79
|
export declare function logSeenBy(store: Judged, principal: Principal): readonly Operation[];
|
|
80
|
+
/**
|
|
81
|
+
* A CHANGE'S ANSWER AS ONE SEAT MAY BE TOLD IT (FR-55) — the diff, the
|
|
82
|
+
* primitives, the ops and the rules it would break or mend of a preview,
|
|
83
|
+
* an apply or an undo, for a surface that hands a seat what its own act
|
|
84
|
+
* did: an act may touch what its own seat may not see. Records and edges
|
|
85
|
+
* it is not served go, a field naming one it may not see is cleared as
|
|
86
|
+
* the view clears it, the ops are redacted as its log is, and a sentence
|
|
87
|
+
* that names what it may not see says only that a change it cannot see
|
|
88
|
+
* happened. With nothing kept from the seat, the answer as it is.
|
|
89
|
+
*/
|
|
90
|
+
export declare function answerSeenBy<A extends {
|
|
91
|
+
readonly diff?: GraphDiff<GraphNodeBase>;
|
|
92
|
+
readonly primitives?: readonly unknown[];
|
|
93
|
+
readonly reads?: readonly string[];
|
|
94
|
+
readonly writes?: readonly string[];
|
|
95
|
+
readonly intent?: string;
|
|
96
|
+
readonly introduces?: readonly Violation[];
|
|
97
|
+
readonly resolves?: readonly Violation[];
|
|
98
|
+
readonly violationsAfter?: readonly Violation[];
|
|
99
|
+
readonly ops?: readonly Operation[];
|
|
100
|
+
}>(store: Judged, principal: Principal, answer: A): A;
|
|
48
101
|
/** A log reading over a seat's redacted ops, for `checkUndo`. */
|
|
49
102
|
export declare function readingOf(ops: readonly Operation[], epochs: LogReading["epochs"]): LogReading;
|
|
50
103
|
/**
|
package/dist/seen.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seen.d.ts","sourceRoot":"","sources":["../src/seen.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"seen.d.ts","sourceRoot":"","sources":["../src/seen.ts"],"names":[],"mappings":"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"}
|