@agentshouse/mdruntime 0.1.0-ce531b51ff088 → 0.1.0-ce5b3c1e6ea87
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 +25 -12
- package/dist/acceptance.d.ts +6 -0
- package/dist/acceptance.d.ts.map +1 -0
- package/dist/acceptance.js +389 -0
- package/dist/actions.d.ts +20 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/actions.js +251 -0
- package/dist/adapter.d.ts +221 -62
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +1 -9
- package/dist/attached-model.d.ts +8 -0
- package/dist/attached-model.d.ts.map +1 -0
- package/dist/attached-model.js +46 -0
- package/dist/attempt.d.ts +16 -0
- package/dist/attempt.d.ts.map +1 -0
- package/dist/attempt.js +70 -0
- package/dist/binary.d.ts +18 -0
- package/dist/binary.d.ts.map +1 -0
- package/dist/binary.js +8 -0
- package/dist/bootstrap.d.ts +40 -6
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +336 -51
- package/dist/cell.d.ts +6 -0
- package/dist/cell.d.ts.map +1 -0
- package/dist/cell.js +9 -0
- package/dist/chain.d.ts +12 -0
- package/dist/chain.d.ts.map +1 -0
- package/dist/chain.js +64 -0
- package/dist/change-set.d.ts +9 -14
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +11 -56
- package/dist/change.d.ts +46 -0
- package/dist/change.d.ts.map +1 -1
- package/dist/change.js +34 -0
- package/dist/chat-types.d.ts +5 -0
- package/dist/chat-types.d.ts.map +1 -0
- package/dist/chat-types.js +13 -0
- package/dist/client.d.ts +55 -18
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +162 -30
- package/dist/collection.d.ts +13 -14
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +52 -56
- package/dist/compile.d.ts +16 -0
- package/dist/compile.d.ts.map +1 -0
- package/dist/compile.js +717 -0
- package/dist/connection.d.ts +8 -106
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +105 -2094
- package/dist/context.d.ts +2 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +7 -0
- package/dist/conversation-live.d.ts +136 -0
- package/dist/conversation-live.d.ts.map +1 -0
- package/dist/conversation-live.js +248 -0
- package/dist/conversation-row.d.ts +33 -0
- package/dist/conversation-row.d.ts.map +1 -0
- package/dist/conversation-row.js +53 -0
- package/dist/conversation.d.ts +77 -40
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +1028 -438
- package/dist/digest.d.ts +7 -0
- package/dist/digest.d.ts.map +1 -0
- package/dist/digest.js +113 -0
- package/dist/discovery.d.ts +10 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/discovery.js +175 -0
- package/dist/durability.d.ts +19 -1
- package/dist/durability.d.ts.map +1 -1
- package/dist/durability.js +5 -0
- package/dist/entry.d.ts +20 -0
- package/dist/entry.d.ts.map +1 -0
- package/dist/entry.js +161 -0
- package/dist/expectation.d.ts +21 -0
- package/dist/expectation.d.ts.map +1 -0
- package/dist/expectation.js +70 -0
- package/dist/failure.d.ts +13 -0
- package/dist/failure.d.ts.map +1 -0
- package/dist/failure.js +19 -0
- package/dist/figures.d.ts +48 -0
- package/dist/figures.d.ts.map +1 -0
- package/dist/figures.js +197 -0
- package/dist/file.d.ts +2 -19
- package/dist/file.d.ts.map +1 -1
- package/dist/file.js +7 -122
- package/dist/holdings.d.ts +29 -0
- package/dist/holdings.d.ts.map +1 -0
- package/dist/holdings.js +95 -0
- package/dist/host.d.ts +18 -2
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +165 -51
- package/dist/identity.d.ts +3 -0
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +13 -1
- package/dist/index.d.ts +36 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -0
- package/dist/install.d.ts +56 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +560 -0
- package/dist/job.d.ts +33 -0
- package/dist/job.d.ts.map +1 -0
- package/dist/job.js +54 -0
- package/dist/lifecycle.d.ts +7 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +268 -0
- package/dist/listing.d.ts +53 -0
- package/dist/listing.d.ts.map +1 -0
- package/dist/listing.js +175 -0
- package/dist/live.d.ts +23 -0
- package/dist/live.d.ts.map +1 -0
- package/dist/live.js +165 -0
- package/dist/locks.d.ts +9 -0
- package/dist/locks.d.ts.map +1 -0
- package/dist/locks.js +61 -0
- package/dist/log.d.ts +1 -0
- package/dist/log.d.ts.map +1 -1
- package/dist/lost.d.ts +5 -0
- package/dist/lost.d.ts.map +1 -0
- package/dist/lost.js +61 -0
- package/dist/media.d.ts +8 -0
- package/dist/media.d.ts.map +1 -0
- package/dist/media.js +218 -0
- package/dist/memory.d.ts +30 -9
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +337 -86
- package/dist/messages.d.ts +52 -0
- package/dist/messages.d.ts.map +1 -0
- package/dist/messages.js +168 -0
- package/dist/model.d.ts +17 -16
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +9 -9
- package/dist/models.d.ts +14 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +193 -0
- package/dist/name.d.ts +4 -0
- package/dist/name.d.ts.map +1 -0
- package/dist/name.js +122 -0
- package/dist/observation.d.ts +22 -2
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js +133 -17
- package/dist/open.d.ts +2 -0
- package/dist/open.d.ts.map +1 -0
- package/dist/open.js +1 -0
- package/dist/opened.d.ts +22 -0
- package/dist/opened.d.ts.map +1 -0
- package/dist/opened.js +107 -0
- package/dist/opening.d.ts +4 -0
- package/dist/opening.d.ts.map +1 -0
- package/dist/opening.js +57 -0
- package/dist/outcome.d.ts +75 -5
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +84 -1
- package/dist/overlay.d.ts +16 -5
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +147 -180
- package/dist/parts.d.ts +59 -0
- package/dist/parts.d.ts.map +1 -0
- package/dist/parts.js +118 -0
- package/dist/paths.d.ts +1 -1
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +4 -16
- package/dist/preparation.d.ts +20 -0
- package/dist/preparation.d.ts.map +1 -0
- package/dist/preparation.js +226 -0
- package/dist/queries.d.ts +16 -0
- package/dist/queries.d.ts.map +1 -0
- package/dist/queries.js +272 -0
- package/dist/query.d.ts +56 -180
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +3 -422
- package/dist/questions.d.ts +34 -0
- package/dist/questions.d.ts.map +1 -0
- package/dist/questions.js +122 -0
- package/dist/reach.d.ts +56 -0
- package/dist/reach.d.ts.map +1 -0
- package/dist/reach.js +494 -0
- package/dist/react.d.ts +51 -0
- package/dist/react.d.ts.map +1 -0
- package/dist/react.js +54 -0
- package/dist/read.d.ts +7 -0
- package/dist/read.d.ts.map +1 -0
- package/dist/read.js +17 -0
- package/dist/readiness.d.ts +50 -0
- package/dist/readiness.d.ts.map +1 -0
- package/dist/readiness.js +27 -0
- package/dist/reads.d.ts +37 -0
- package/dist/reads.d.ts.map +1 -0
- package/dist/reads.js +171 -0
- package/dist/recovery.d.ts +26 -0
- package/dist/recovery.d.ts.map +1 -0
- package/dist/recovery.js +232 -0
- package/dist/refresh.d.ts +21 -7
- package/dist/refresh.d.ts.map +1 -1
- package/dist/refresh.js +155 -55
- package/dist/refusal.d.ts +5 -0
- package/dist/refusal.d.ts.map +1 -0
- package/dist/refusal.js +56 -0
- package/dist/replica.d.ts +58 -33
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +356 -158
- package/dist/room-draft.d.ts +62 -11
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +281 -83
- package/dist/room-drafts.d.ts +24 -0
- package/dist/room-drafts.d.ts.map +1 -0
- package/dist/room-drafts.js +216 -0
- package/dist/rows.d.ts +32 -34
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +65 -87
- package/dist/runtime.d.ts +43 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +1 -0
- package/dist/save.d.ts +76 -6
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +904 -182
- package/dist/saves.d.ts +70 -0
- package/dist/saves.d.ts.map +1 -0
- package/dist/saves.js +1006 -0
- package/dist/search.d.ts +15 -54
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +10 -121
- package/dist/seed.d.ts +25 -0
- package/dist/seed.d.ts.map +1 -0
- package/dist/seed.js +146 -0
- package/dist/shared.d.ts +15 -0
- package/dist/shared.d.ts.map +1 -0
- package/dist/shared.js +425 -0
- package/dist/shown.d.ts +31 -0
- package/dist/shown.d.ts.map +1 -0
- package/dist/shown.js +295 -0
- package/dist/socket/admission.d.ts +7 -0
- package/dist/socket/admission.d.ts.map +1 -0
- package/dist/socket/admission.js +39 -0
- package/dist/socket/answers.d.ts +6 -0
- package/dist/socket/answers.d.ts.map +1 -0
- package/dist/socket/answers.js +20 -0
- package/dist/socket/lanes.d.ts +20 -0
- package/dist/socket/lanes.d.ts.map +1 -0
- package/dist/socket/lanes.js +77 -0
- package/dist/socket/reads.d.ts +10 -0
- package/dist/socket/reads.d.ts.map +1 -0
- package/dist/socket/reads.js +31 -0
- package/dist/socket/rooms.d.ts +43 -0
- package/dist/socket/rooms.d.ts.map +1 -0
- package/dist/socket/rooms.js +90 -0
- package/dist/socket/session.d.ts +39 -0
- package/dist/socket/session.d.ts.map +1 -0
- package/dist/socket/session.js +23 -0
- package/dist/socket.d.ts +70 -0
- package/dist/socket.d.ts.map +1 -0
- package/dist/socket.js +175 -0
- package/dist/source.d.ts +61 -0
- package/dist/source.d.ts.map +1 -0
- package/dist/source.js +81 -0
- package/dist/status.d.ts +7 -4
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +3 -15
- package/dist/store/fences.d.ts +16 -0
- package/dist/store/fences.d.ts.map +1 -0
- package/dist/store/fences.js +26 -0
- package/dist/store/installs.d.ts +30 -0
- package/dist/store/installs.d.ts.map +1 -0
- package/dist/store/installs.js +34 -0
- package/dist/store/readiness.d.ts +10 -0
- package/dist/store/readiness.d.ts.map +1 -0
- package/dist/store/readiness.js +52 -0
- package/dist/store/records.d.ts +212 -0
- package/dist/store/records.d.ts.map +1 -0
- package/dist/store/records.js +408 -0
- package/dist/store/room-held.d.ts +8 -0
- package/dist/store/room-held.d.ts.map +1 -0
- package/dist/store/room-held.js +17 -0
- package/dist/store/space.d.ts +11 -0
- package/dist/store/space.d.ts.map +1 -0
- package/dist/store/space.js +43 -0
- package/dist/store/watchers.d.ts +17 -0
- package/dist/store/watchers.d.ts.map +1 -0
- package/dist/store/watchers.js +57 -0
- package/dist/store/writes.d.ts +24 -0
- package/dist/store/writes.d.ts.map +1 -0
- package/dist/store/writes.js +125 -0
- package/dist/store.d.ts +106 -93
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +142 -385
- package/dist/stored.d.ts +156 -0
- package/dist/stored.d.ts.map +1 -0
- package/dist/stored.js +637 -0
- package/dist/surface.d.ts +88 -0
- package/dist/surface.d.ts.map +1 -0
- package/dist/surface.js +223 -0
- package/dist/sync.d.ts +20 -0
- package/dist/sync.d.ts.map +1 -0
- package/dist/sync.js +532 -0
- package/dist/tables.d.ts +415 -0
- package/dist/tables.d.ts.map +1 -0
- package/dist/tables.js +740 -0
- package/dist/tallies.d.ts +18 -0
- package/dist/tallies.d.ts.map +1 -0
- package/dist/tallies.js +129 -0
- package/dist/transfer.d.ts +0 -5
- package/dist/transfer.d.ts.map +1 -1
- package/dist/turn.d.ts +9 -0
- package/dist/turn.d.ts.map +1 -0
- package/dist/turn.js +75 -0
- package/dist/validation.d.ts +29 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +104 -0
- package/dist/windows.d.ts +11 -0
- package/dist/windows.d.ts.map +1 -0
- package/dist/windows.js +16 -0
- package/dist/wire.d.ts +207 -20
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +96 -61
- package/package.json +33 -10
- package/AGENTS.md +0 -207
- package/dist/attachment.d.ts +0 -3
- package/dist/attachment.d.ts.map +0 -1
- package/dist/attachment.js +0 -8
- package/dist/read-side.d.ts +0 -14
- package/dist/read-side.d.ts.map +0 -1
- package/dist/read-side.js +0 -371
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { Authorization, ProviderRefusal, ServiceMode } from '../adapter.js';
|
|
2
|
+
import { type Cell } from '../cell.js';
|
|
3
|
+
import type { Open } from '../open.js';
|
|
4
|
+
import type { CycleProgress, SyncStatus } from '../status.js';
|
|
5
|
+
export type RefusalReason = 'missing-required-guarantee' | 'revoked-authorization';
|
|
6
|
+
export type ConnectionRefusalCode = Open<RefusalReason>;
|
|
7
|
+
export type ConnectionRefusal = {
|
|
8
|
+
code: ConnectionRefusalCode;
|
|
9
|
+
retryable: boolean;
|
|
10
|
+
reauthorizationOffered: boolean;
|
|
11
|
+
refusal: ProviderRefusal | null;
|
|
12
|
+
};
|
|
13
|
+
export type Moving = {
|
|
14
|
+
readonly state: SyncStatus['state'];
|
|
15
|
+
readonly providerUnreachable: boolean;
|
|
16
|
+
readonly resting: boolean;
|
|
17
|
+
};
|
|
18
|
+
export type Session = {
|
|
19
|
+
readonly closed: boolean;
|
|
20
|
+
readonly stopping: boolean;
|
|
21
|
+
readonly paused: boolean;
|
|
22
|
+
readonly authorization: Authorization | undefined;
|
|
23
|
+
readonly refusal: ConnectionRefusal | null;
|
|
24
|
+
readonly discoveries: number;
|
|
25
|
+
readonly roomsNamed: boolean;
|
|
26
|
+
readonly roomsListed: boolean;
|
|
27
|
+
readonly serviceMode: ServiceMode;
|
|
28
|
+
readonly haltedRefusal: boolean;
|
|
29
|
+
readonly openSignals: number;
|
|
30
|
+
readonly authorityChanges: number;
|
|
31
|
+
readonly currencyQueued: number | null;
|
|
32
|
+
readonly moving: Moving;
|
|
33
|
+
readonly complete: boolean;
|
|
34
|
+
readonly recorded: boolean;
|
|
35
|
+
readonly underway: CycleProgress | null;
|
|
36
|
+
readonly streamed: CycleProgress | null;
|
|
37
|
+
};
|
|
38
|
+
export declare function createSession(authorization: Authorization | undefined): Cell<Session>;
|
|
39
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/socket/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjF,OAAO,EAAc,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE9D,MAAM,MAAM,aAAa,GAAG,4BAA4B,GAAG,uBAAuB,CAAC;AAEnF,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;AAExD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,qBAAqB,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,sBAAsB,EAAE,OAAO,CAAC;IAChC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IACpC,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;IAClD,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;CACzC,CAAC;AAEF,wBAAgB,aAAa,CAAC,aAAa,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAqBrF"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { createCell } from '../cell.js';
|
|
2
|
+
export function createSession(authorization) {
|
|
3
|
+
return createCell({
|
|
4
|
+
closed: false,
|
|
5
|
+
stopping: false,
|
|
6
|
+
paused: false,
|
|
7
|
+
authorization,
|
|
8
|
+
refusal: null,
|
|
9
|
+
discoveries: 0,
|
|
10
|
+
roomsNamed: false,
|
|
11
|
+
roomsListed: false,
|
|
12
|
+
serviceMode: 'open',
|
|
13
|
+
haltedRefusal: false,
|
|
14
|
+
openSignals: 0,
|
|
15
|
+
authorityChanges: 0,
|
|
16
|
+
currencyQueued: null,
|
|
17
|
+
moving: { state: 'syncing', providerUnreachable: false, resting: false },
|
|
18
|
+
complete: false,
|
|
19
|
+
recorded: false,
|
|
20
|
+
underway: null,
|
|
21
|
+
streamed: null,
|
|
22
|
+
});
|
|
23
|
+
}
|
package/dist/socket.d.ts
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { Adapter, Authorization, ConversationEvent, Discovery, HeldRoom, RoomStreamEvent, ServiceMode } from './adapter.js';
|
|
2
|
+
import type { Reads } from './bootstrap.js';
|
|
3
|
+
import type { Cell } from './cell.js';
|
|
4
|
+
import type { Log } from './log.js';
|
|
5
|
+
import { type Admission } from './socket/admission.js';
|
|
6
|
+
import { type Answers } from './socket/answers.js';
|
|
7
|
+
import { type Lanes } from './socket/lanes.js';
|
|
8
|
+
import { type Rooms } from './socket/rooms.js';
|
|
9
|
+
import { type Session } from './socket/session.js';
|
|
10
|
+
export type { Live } from './socket/lanes.js';
|
|
11
|
+
export type { Declared, RoomDeclaration } from './socket/rooms.js';
|
|
12
|
+
export type { ConnectionRefusal, ConnectionRefusalCode, Moving, RefusalReason, } from './socket/session.js';
|
|
13
|
+
type SocketEvent = {
|
|
14
|
+
readonly kind: 'opened';
|
|
15
|
+
} | {
|
|
16
|
+
readonly kind: 'discovered';
|
|
17
|
+
readonly discovery: Discovery;
|
|
18
|
+
readonly missed: boolean;
|
|
19
|
+
} | {
|
|
20
|
+
readonly kind: 'closed';
|
|
21
|
+
readonly revoked: boolean;
|
|
22
|
+
readonly lost: boolean;
|
|
23
|
+
readonly opened: boolean;
|
|
24
|
+
} | Exclude<RoomStreamEvent, {
|
|
25
|
+
kind: 'opened' | 'discovered' | 'closed';
|
|
26
|
+
}>;
|
|
27
|
+
export type RuntimeSocket = Admission & Answers & {
|
|
28
|
+
readonly reads: Reads;
|
|
29
|
+
readonly streamed: boolean;
|
|
30
|
+
readonly session: Cell<Session>;
|
|
31
|
+
readonly rooms: Rooms;
|
|
32
|
+
readonly lanes: Lanes;
|
|
33
|
+
readonly ready: Promise<void>;
|
|
34
|
+
readonly firstDiscovery: Promise<void>;
|
|
35
|
+
conversations(): Adapter['conversations'];
|
|
36
|
+
search(): Adapter['search'];
|
|
37
|
+
discover(authorized: Authorization): ReturnType<NonNullable<Adapter['discover']>> | undefined;
|
|
38
|
+
follows: Adapter['follows'];
|
|
39
|
+
mutate: Adapter['mutate'];
|
|
40
|
+
binary: Adapter['binary'];
|
|
41
|
+
link: Adapter['link'];
|
|
42
|
+
attach: Adapter['attach'];
|
|
43
|
+
history: Adapter['history'];
|
|
44
|
+
action: Adapter['action'];
|
|
45
|
+
authorize(): Promise<void>;
|
|
46
|
+
observe(listen: (event: SocketEvent) => void): void;
|
|
47
|
+
observeConversations(listen: (event: ConversationEvent) => void): void;
|
|
48
|
+
observeServiceMode(listen: (mode: ServiceMode) => void): void;
|
|
49
|
+
close(): void;
|
|
50
|
+
readyFromStore(): void;
|
|
51
|
+
notifyReady(): void;
|
|
52
|
+
closed(): boolean;
|
|
53
|
+
stopping(): boolean;
|
|
54
|
+
continuing(): boolean;
|
|
55
|
+
reached(): boolean;
|
|
56
|
+
writesHeld(): boolean;
|
|
57
|
+
haltedSince(opens: number): boolean;
|
|
58
|
+
isOpen(): boolean;
|
|
59
|
+
isAnnounced(): boolean;
|
|
60
|
+
isHanded(): boolean;
|
|
61
|
+
generation(): number;
|
|
62
|
+
naming(): boolean;
|
|
63
|
+
hand(rooms: readonly HeldRoom[]): void;
|
|
64
|
+
name(room: HeldRoom): void;
|
|
65
|
+
named(): void;
|
|
66
|
+
abortReads(): void;
|
|
67
|
+
stopReads(): void;
|
|
68
|
+
};
|
|
69
|
+
export declare function createSocket(adapter: Adapter, journal: Log, authorization: Authorization | undefined): RuntimeSocket;
|
|
70
|
+
//# sourceMappingURL=socket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../src/socket.ts"],"names":[],"mappings":"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"}
|
package/dist/socket.js
ADDED
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { createAdmission } from './socket/admission.js';
|
|
2
|
+
import { createAnswers } from './socket/answers.js';
|
|
3
|
+
import { createLanes } from './socket/lanes.js';
|
|
4
|
+
import { createReads } from './socket/reads.js';
|
|
5
|
+
import { createRooms } from './socket/rooms.js';
|
|
6
|
+
import { createSession } from './socket/session.js';
|
|
7
|
+
export function createSocket(adapter, journal, authorization) {
|
|
8
|
+
const held = createReads(adapter);
|
|
9
|
+
const admission = createAdmission();
|
|
10
|
+
const answers = createAnswers();
|
|
11
|
+
const session = createSession(authorization);
|
|
12
|
+
const rooms = createRooms();
|
|
13
|
+
let readyFromStore = () => { };
|
|
14
|
+
const ready = new Promise((resolve) => {
|
|
15
|
+
readyFromStore = resolve;
|
|
16
|
+
});
|
|
17
|
+
let notifyDiscovered = () => { };
|
|
18
|
+
const firstDiscovery = new Promise((resolve) => {
|
|
19
|
+
notifyDiscovered = resolve;
|
|
20
|
+
});
|
|
21
|
+
let withdrawStream;
|
|
22
|
+
let withdrawConversations;
|
|
23
|
+
let withdrawServiceMode;
|
|
24
|
+
let socketOpen = false;
|
|
25
|
+
let announced = false;
|
|
26
|
+
let missedChange = false;
|
|
27
|
+
let handed = false;
|
|
28
|
+
let naming = 0;
|
|
29
|
+
let generation = 0;
|
|
30
|
+
function closed() {
|
|
31
|
+
return session.now().closed;
|
|
32
|
+
}
|
|
33
|
+
function continuing() {
|
|
34
|
+
const { closed, paused } = session.now();
|
|
35
|
+
return !closed && !paused;
|
|
36
|
+
}
|
|
37
|
+
function received(event, listen) {
|
|
38
|
+
if (event.kind === 'opened') {
|
|
39
|
+
socketOpen = true;
|
|
40
|
+
announced = false;
|
|
41
|
+
handed = false;
|
|
42
|
+
naming = 0;
|
|
43
|
+
generation += 1;
|
|
44
|
+
listen(event);
|
|
45
|
+
}
|
|
46
|
+
else if (event.kind === 'discovered') {
|
|
47
|
+
if (!socketOpen)
|
|
48
|
+
return;
|
|
49
|
+
announced = true;
|
|
50
|
+
const missed = missedChange;
|
|
51
|
+
missedChange = false;
|
|
52
|
+
listen({ ...event, missed });
|
|
53
|
+
}
|
|
54
|
+
else if (event.kind === 'closed') {
|
|
55
|
+
const opened = announced;
|
|
56
|
+
socketOpen = false;
|
|
57
|
+
announced = false;
|
|
58
|
+
missedChange ||= event.authorityChanged;
|
|
59
|
+
handed = false;
|
|
60
|
+
naming = 0;
|
|
61
|
+
listen({ kind: 'closed', revoked: event.revoked, lost: event.lost, opened });
|
|
62
|
+
}
|
|
63
|
+
else
|
|
64
|
+
listen(event);
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
...admission,
|
|
68
|
+
...answers,
|
|
69
|
+
reads: held.reads,
|
|
70
|
+
streamed: adapter.roomStream !== undefined,
|
|
71
|
+
session,
|
|
72
|
+
rooms,
|
|
73
|
+
lanes: createLanes({
|
|
74
|
+
generation: () => generation,
|
|
75
|
+
continuing,
|
|
76
|
+
stopping: () => session.now().stopping,
|
|
77
|
+
}),
|
|
78
|
+
ready,
|
|
79
|
+
firstDiscovery,
|
|
80
|
+
conversations: () => adapter.conversations,
|
|
81
|
+
search: () => adapter.search,
|
|
82
|
+
discover: (authorized) => adapter.discover?.(authorized),
|
|
83
|
+
follows: (locator, roomVersion, next) => adapter.follows(locator, roomVersion, next),
|
|
84
|
+
mutate: (authorized, request, keepUpload) => adapter.mutate(authorized, request, keepUpload),
|
|
85
|
+
binary: (authorized, request) => adapter.binary(authorized, request),
|
|
86
|
+
link: (authorized, request) => adapter.link(authorized, request),
|
|
87
|
+
attach: (authorized, request) => adapter.attach(authorized, request),
|
|
88
|
+
history: (authorized, request) => adapter.history(authorized, request),
|
|
89
|
+
action: (authorized, request) => adapter.action(authorized, request),
|
|
90
|
+
async authorize() {
|
|
91
|
+
if (session.now().authorization !== undefined)
|
|
92
|
+
return;
|
|
93
|
+
try {
|
|
94
|
+
session.set({ authorization: await adapter.authorize() });
|
|
95
|
+
journal.record('connection authorize');
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
journal.record('connection authorize transport-uncertainty');
|
|
99
|
+
throw error;
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
observe(listen) {
|
|
103
|
+
const stream = adapter.roomStream;
|
|
104
|
+
if (stream === undefined || withdrawStream !== undefined)
|
|
105
|
+
return;
|
|
106
|
+
withdrawStream = stream.observe((event) => {
|
|
107
|
+
const { closed, stopping } = session.now();
|
|
108
|
+
if (!closed && !stopping)
|
|
109
|
+
received(event, listen);
|
|
110
|
+
});
|
|
111
|
+
},
|
|
112
|
+
observeConversations(listen) {
|
|
113
|
+
const stream = adapter.conversations;
|
|
114
|
+
if (stream === undefined || withdrawConversations !== undefined)
|
|
115
|
+
return;
|
|
116
|
+
withdrawConversations = stream.observe(listen);
|
|
117
|
+
},
|
|
118
|
+
observeServiceMode(listen) {
|
|
119
|
+
withdrawServiceMode = adapter.serviceMode?.observe(listen);
|
|
120
|
+
},
|
|
121
|
+
close() {
|
|
122
|
+
session.set({ closed: true });
|
|
123
|
+
notifyDiscovered();
|
|
124
|
+
rooms.unreadied();
|
|
125
|
+
rooms.connectionLive();
|
|
126
|
+
withdrawStream?.();
|
|
127
|
+
withdrawStream = undefined;
|
|
128
|
+
withdrawConversations?.();
|
|
129
|
+
withdrawConversations = undefined;
|
|
130
|
+
withdrawServiceMode?.();
|
|
131
|
+
},
|
|
132
|
+
readyFromStore: () => readyFromStore(),
|
|
133
|
+
notifyReady() {
|
|
134
|
+
notifyDiscovered();
|
|
135
|
+
readyFromStore();
|
|
136
|
+
},
|
|
137
|
+
closed,
|
|
138
|
+
stopping: () => session.now().stopping,
|
|
139
|
+
continuing,
|
|
140
|
+
reached() {
|
|
141
|
+
const { moving, refusal } = session.now();
|
|
142
|
+
return (socketOpen || !moving.providerUnreachable) && refusal === null;
|
|
143
|
+
},
|
|
144
|
+
writesHeld() {
|
|
145
|
+
const { serviceMode, haltedRefusal } = session.now();
|
|
146
|
+
return serviceMode === 'write-halted' || haltedRefusal;
|
|
147
|
+
},
|
|
148
|
+
haltedSince(opens) {
|
|
149
|
+
const { serviceMode, openSignals } = session.now();
|
|
150
|
+
if (serviceMode === 'open' && openSignals !== opens)
|
|
151
|
+
return false;
|
|
152
|
+
session.set({ haltedRefusal: true });
|
|
153
|
+
return true;
|
|
154
|
+
},
|
|
155
|
+
isOpen: () => socketOpen,
|
|
156
|
+
isAnnounced: () => announced,
|
|
157
|
+
isHanded: () => handed,
|
|
158
|
+
generation: () => generation,
|
|
159
|
+
naming: () => naming !== 0,
|
|
160
|
+
hand(rooms) {
|
|
161
|
+
naming += 1;
|
|
162
|
+
adapter.roomStream?.hold(rooms);
|
|
163
|
+
handed = true;
|
|
164
|
+
},
|
|
165
|
+
name(room) {
|
|
166
|
+
naming += 1;
|
|
167
|
+
adapter.roomStream?.hold([room]);
|
|
168
|
+
},
|
|
169
|
+
named() {
|
|
170
|
+
naming = Math.max(0, naming - 1);
|
|
171
|
+
},
|
|
172
|
+
abortReads: held.abort,
|
|
173
|
+
stopReads: held.stop,
|
|
174
|
+
};
|
|
175
|
+
}
|
package/dist/source.d.ts
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
export type HouseSource = {
|
|
2
|
+
readonly kind: 'request';
|
|
3
|
+
readonly request: string;
|
|
4
|
+
readonly agentFunction: RequestAgentFunction | null;
|
|
5
|
+
readonly requester: {
|
|
6
|
+
readonly name: string;
|
|
7
|
+
readonly room: boolean;
|
|
8
|
+
};
|
|
9
|
+
readonly room: {
|
|
10
|
+
readonly ref: string;
|
|
11
|
+
readonly name: string;
|
|
12
|
+
};
|
|
13
|
+
readonly approved: string | null;
|
|
14
|
+
} | {
|
|
15
|
+
readonly kind: 'mail';
|
|
16
|
+
readonly request: string;
|
|
17
|
+
readonly room: string;
|
|
18
|
+
readonly report: boolean;
|
|
19
|
+
readonly agent: string;
|
|
20
|
+
readonly owner: string;
|
|
21
|
+
readonly approved: string | null;
|
|
22
|
+
readonly declined: string | null;
|
|
23
|
+
} | {
|
|
24
|
+
readonly kind: 'trigger';
|
|
25
|
+
readonly customer: boolean;
|
|
26
|
+
readonly trigger: string;
|
|
27
|
+
readonly room: {
|
|
28
|
+
readonly ref: string;
|
|
29
|
+
readonly name: string;
|
|
30
|
+
};
|
|
31
|
+
} | {
|
|
32
|
+
readonly kind: 'conversation';
|
|
33
|
+
readonly conversation: {
|
|
34
|
+
readonly id: string;
|
|
35
|
+
readonly name: string;
|
|
36
|
+
};
|
|
37
|
+
readonly agent: string;
|
|
38
|
+
} | {
|
|
39
|
+
readonly kind: 'declined';
|
|
40
|
+
readonly agent: string;
|
|
41
|
+
readonly owner: string;
|
|
42
|
+
};
|
|
43
|
+
export type ChatRequest = {
|
|
44
|
+
readonly request: string;
|
|
45
|
+
readonly room: string;
|
|
46
|
+
readonly message?: string;
|
|
47
|
+
};
|
|
48
|
+
export type ChatRoomRequest = {
|
|
49
|
+
readonly request: string;
|
|
50
|
+
readonly room: {
|
|
51
|
+
readonly ref: string;
|
|
52
|
+
readonly name: string;
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
type RequestAgentFunction = {
|
|
56
|
+
readonly name: string;
|
|
57
|
+
readonly version: number;
|
|
58
|
+
};
|
|
59
|
+
export declare function sourceOf(value: unknown, sender: string | null): HouseSource | null;
|
|
60
|
+
export {};
|
|
61
|
+
//# sourceMappingURL=source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../src/source.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,GACnB;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACpD,QAAQ,CAAC,SAAS,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC;IACtE,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAChE,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAElF,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAChE,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAoChF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,CA4ClF"}
|
package/dist/source.js
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { record, text } from './read.js';
|
|
2
|
+
function agentFunctionOf(value) {
|
|
3
|
+
if (value === null)
|
|
4
|
+
return null;
|
|
5
|
+
const agentFunction = record(value);
|
|
6
|
+
const name = text(agentFunction, 'name');
|
|
7
|
+
const version = agentFunction.version;
|
|
8
|
+
return name === null || typeof version !== 'number' ? undefined : { name, version };
|
|
9
|
+
}
|
|
10
|
+
function requestOf(source) {
|
|
11
|
+
const request = text(source, 'request');
|
|
12
|
+
const agentFunction = agentFunctionOf(source.agent_function);
|
|
13
|
+
const requester = record(source.requester);
|
|
14
|
+
const by = text(requester, 'name');
|
|
15
|
+
const room = record(source.room);
|
|
16
|
+
const ref = text(room, 'ref');
|
|
17
|
+
const called = text(room, 'name');
|
|
18
|
+
if (request === null ||
|
|
19
|
+
agentFunction === undefined ||
|
|
20
|
+
by === null ||
|
|
21
|
+
ref === null ||
|
|
22
|
+
called === null)
|
|
23
|
+
return null;
|
|
24
|
+
return {
|
|
25
|
+
kind: 'request',
|
|
26
|
+
request,
|
|
27
|
+
agentFunction,
|
|
28
|
+
requester: { name: by, room: text(requester, 'room') !== null },
|
|
29
|
+
room: { ref, name: called },
|
|
30
|
+
approved: text(source, 'approved_at'),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export function sourceOf(value, sender) {
|
|
34
|
+
const source = record(value);
|
|
35
|
+
if (source.kind === 'request')
|
|
36
|
+
return requestOf(source);
|
|
37
|
+
if (source.kind === 'trigger') {
|
|
38
|
+
const trigger = text(record(source.trigger), 'description');
|
|
39
|
+
const ref = text(record(source.room), 'ref');
|
|
40
|
+
const room = text(record(source.room), 'name');
|
|
41
|
+
return trigger === null || ref === null || room === null
|
|
42
|
+
? null
|
|
43
|
+
: {
|
|
44
|
+
kind: 'trigger',
|
|
45
|
+
customer: sender === 'customer',
|
|
46
|
+
trigger,
|
|
47
|
+
room: { ref, name: room },
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
if (source.kind === 'conversation') {
|
|
51
|
+
const conversation = record(source.conversation);
|
|
52
|
+
const id = text(conversation, 'id');
|
|
53
|
+
const name = text(conversation, 'name');
|
|
54
|
+
const agent = text(record(source.agent), 'name');
|
|
55
|
+
return id === null || name === null || agent === null
|
|
56
|
+
? null
|
|
57
|
+
: { kind: 'conversation', conversation: { id, name }, agent };
|
|
58
|
+
}
|
|
59
|
+
if (source.kind !== 'mail' && source.kind !== 'declined')
|
|
60
|
+
return null;
|
|
61
|
+
const agent = text(record(source.agent), 'name');
|
|
62
|
+
const owner = text(record(source.owner), 'name');
|
|
63
|
+
if (agent === null || owner === null)
|
|
64
|
+
return null;
|
|
65
|
+
if (source.kind === 'declined')
|
|
66
|
+
return { kind: 'declined', agent, owner };
|
|
67
|
+
const request = text(source, 'request');
|
|
68
|
+
const room = text(source, 'room');
|
|
69
|
+
return request === null || room === null
|
|
70
|
+
? null
|
|
71
|
+
: {
|
|
72
|
+
kind: 'mail',
|
|
73
|
+
request,
|
|
74
|
+
room,
|
|
75
|
+
report: sender === 'report',
|
|
76
|
+
agent,
|
|
77
|
+
owner,
|
|
78
|
+
approved: text(source, 'approved_at'),
|
|
79
|
+
declined: text(source, 'declined_at'),
|
|
80
|
+
};
|
|
81
|
+
}
|
package/dist/status.d.ts
CHANGED
|
@@ -1,14 +1,20 @@
|
|
|
1
|
+
import type { Open } from './open.js';
|
|
1
2
|
import type { ReturnReason } from './room-draft.js';
|
|
2
3
|
export type AttentionEntry = {
|
|
3
4
|
room: string;
|
|
4
5
|
path: string;
|
|
5
6
|
returned: ReturnReason;
|
|
6
7
|
};
|
|
8
|
+
export type UnsentChange = {
|
|
9
|
+
room: string;
|
|
10
|
+
path: string;
|
|
11
|
+
};
|
|
7
12
|
export type SyncStatus = {
|
|
8
|
-
state: 'pending' | 'syncing' | 'synced'
|
|
13
|
+
state: Open<'pending' | 'syncing' | 'synced'>;
|
|
9
14
|
lastCompleted: string | null;
|
|
10
15
|
providerUnreachable: boolean;
|
|
11
16
|
attentionRequired: readonly AttentionEntry[];
|
|
17
|
+
unsent: readonly UnsentChange[];
|
|
12
18
|
reset: string | null;
|
|
13
19
|
};
|
|
14
20
|
export type CycleProgress = {
|
|
@@ -16,8 +22,5 @@ export type CycleProgress = {
|
|
|
16
22
|
reachable: boolean;
|
|
17
23
|
};
|
|
18
24
|
export declare const STARTING: SyncStatus;
|
|
19
|
-
export declare function transferring(status: SyncStatus): SyncStatus;
|
|
20
|
-
export declare function settled(status: SyncStatus, progress: CycleProgress, at: string | null, queued: boolean, attention: Pick<SyncStatus, 'attentionRequired' | 'reset'>): SyncStatus;
|
|
21
|
-
export declare function saving(status: SyncStatus): SyncStatus;
|
|
22
25
|
export declare function same(one: SyncStatus, other: SyncStatus): boolean;
|
|
23
26
|
//# sourceMappingURL=status.d.ts.map
|
package/dist/status.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,MAAM,cAAc,GAAG;
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,MAAM,cAAc,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAA;CAAE,CAAC;AAEpF,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1D,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,IAAI,CAAC,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC;IAC9C,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,iBAAiB,EAAE,SAAS,cAAc,EAAE,CAAC;IAC7C,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;IAChC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,UAOtB,CAAC;AAEF,wBAAgB,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAShE"}
|
package/dist/status.js
CHANGED
|
@@ -3,26 +3,14 @@ export const STARTING = {
|
|
|
3
3
|
lastCompleted: null,
|
|
4
4
|
providerUnreachable: false,
|
|
5
5
|
attentionRequired: [],
|
|
6
|
+
unsent: [],
|
|
6
7
|
reset: null,
|
|
7
8
|
};
|
|
8
|
-
export function transferring(status) {
|
|
9
|
-
return { ...status, state: 'syncing' };
|
|
10
|
-
}
|
|
11
|
-
export function settled(status, progress, at, queued, attention) {
|
|
12
|
-
return {
|
|
13
|
-
state: queued ? 'pending' : progress.complete ? 'synced' : status.state,
|
|
14
|
-
lastCompleted: progress.complete ? at : status.lastCompleted,
|
|
15
|
-
providerUnreachable: !progress.reachable,
|
|
16
|
-
...attention,
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
export function saving(status) {
|
|
20
|
-
return { ...status, state: 'pending' };
|
|
21
|
-
}
|
|
22
9
|
export function same(one, other) {
|
|
23
10
|
return (one.state === other.state &&
|
|
24
11
|
one.lastCompleted === other.lastCompleted &&
|
|
25
12
|
one.providerUnreachable === other.providerUnreachable &&
|
|
26
13
|
one.reset === other.reset &&
|
|
27
|
-
JSON.stringify(one.attentionRequired) === JSON.stringify(other.attentionRequired)
|
|
14
|
+
JSON.stringify(one.attentionRequired) === JSON.stringify(other.attentionRequired) &&
|
|
15
|
+
JSON.stringify(one.unsent) === JSON.stringify(other.unsent));
|
|
28
16
|
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
type Fence = {
|
|
2
|
+
readonly at: number;
|
|
3
|
+
readonly written: boolean;
|
|
4
|
+
};
|
|
5
|
+
export type Fences = {
|
|
6
|
+
has(locator: string): boolean;
|
|
7
|
+
of(locator: string): Fence | undefined;
|
|
8
|
+
raise(locator: string, at: number): boolean;
|
|
9
|
+
mark(locator: string, written: boolean): void;
|
|
10
|
+
lift(locator: string): void;
|
|
11
|
+
count(): number;
|
|
12
|
+
since(locator: string, count: number): boolean;
|
|
13
|
+
};
|
|
14
|
+
export declare function createFences(): Fences;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=fences.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fences.d.ts","sourceRoot":"","sources":["../../src/store/fences.ts"],"names":[],"mappings":"AAAA,KAAK,KAAK,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAEhE,MAAM,MAAM,MAAM,GAAG;IACnB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9B,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;IACvC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9C,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,IAAI,MAAM,CAAC;IAChB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAChD,CAAC;AAEF,wBAAgB,YAAY,IAAI,MAAM,CAwBrC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export function createFences() {
|
|
2
|
+
const fencedAt = new Map();
|
|
3
|
+
let fencings = 0;
|
|
4
|
+
const lastFenced = new Map();
|
|
5
|
+
return {
|
|
6
|
+
has: (locator) => fencedAt.has(locator),
|
|
7
|
+
of: (locator) => fencedAt.get(locator),
|
|
8
|
+
raise(locator, at) {
|
|
9
|
+
if (fencedAt.has(locator))
|
|
10
|
+
return false;
|
|
11
|
+
fencedAt.set(locator, { at, written: false });
|
|
12
|
+
lastFenced.set(locator, ++fencings);
|
|
13
|
+
return true;
|
|
14
|
+
},
|
|
15
|
+
mark(locator, written) {
|
|
16
|
+
const fence = fencedAt.get(locator);
|
|
17
|
+
if (fence !== undefined)
|
|
18
|
+
fencedAt.set(locator, { ...fence, written });
|
|
19
|
+
},
|
|
20
|
+
lift(locator) {
|
|
21
|
+
fencedAt.delete(locator);
|
|
22
|
+
},
|
|
23
|
+
count: () => fencings,
|
|
24
|
+
since: (locator, count) => fencedAt.has(locator) || (lastFenced.get(locator) ?? 0) > count,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { InstallationAmount } from '../readiness.js';
|
|
2
|
+
import type { TransferRecord } from './records.js';
|
|
3
|
+
type OwedIndex = {
|
|
4
|
+
readonly bytes: number;
|
|
5
|
+
readonly text: number;
|
|
6
|
+
};
|
|
7
|
+
export type RoomInstall = {
|
|
8
|
+
readonly transfer: TransferRecord | null;
|
|
9
|
+
readonly arrived: number | null;
|
|
10
|
+
readonly streaming: boolean;
|
|
11
|
+
readonly underived: number;
|
|
12
|
+
readonly unindexed: readonly OwedIndex[];
|
|
13
|
+
readonly startedOver: InstallationAmount | null;
|
|
14
|
+
readonly installing: boolean;
|
|
15
|
+
readonly catching: boolean;
|
|
16
|
+
readonly highest: string | null;
|
|
17
|
+
readonly beyondHorizon: boolean;
|
|
18
|
+
readonly confirmations: number;
|
|
19
|
+
};
|
|
20
|
+
export declare const NO_INSTALL: RoomInstall;
|
|
21
|
+
export type Installs = {
|
|
22
|
+
of(locator: string): RoomInstall;
|
|
23
|
+
change(locator: string, next: (held: RoomInstall) => RoomInstall): void;
|
|
24
|
+
underway(): ReadonlySet<string>;
|
|
25
|
+
transferring(): readonly string[];
|
|
26
|
+
arrivalDue(now: number, everyMs: number): boolean;
|
|
27
|
+
};
|
|
28
|
+
export declare function createInstalls(): Installs;
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=installs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installs.d.ts","sourceRoot":"","sources":["../../src/store/installs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,KAAK,SAAS,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnE,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS,SAAS,EAAE,CAAC;IACzC,QAAQ,CAAC,WAAW,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAChD,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,WAYxB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAAC;IACjC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,WAAW,GAAG,IAAI,CAAC;IACxE,QAAQ,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;IAChC,YAAY,IAAI,SAAS,MAAM,EAAE,CAAC;IAClC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;CACnD,CAAC;AAEF,wBAAgB,cAAc,IAAI,QAAQ,CAqBzC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export const NO_INSTALL = {
|
|
2
|
+
transfer: null,
|
|
3
|
+
arrived: null,
|
|
4
|
+
streaming: false,
|
|
5
|
+
underived: 0,
|
|
6
|
+
unindexed: [],
|
|
7
|
+
startedOver: null,
|
|
8
|
+
installing: false,
|
|
9
|
+
catching: false,
|
|
10
|
+
highest: null,
|
|
11
|
+
beyondHorizon: false,
|
|
12
|
+
confirmations: 0,
|
|
13
|
+
};
|
|
14
|
+
export function createInstalls() {
|
|
15
|
+
const rooms = new Map();
|
|
16
|
+
let arrivalReported = 0;
|
|
17
|
+
function matching(held) {
|
|
18
|
+
return [...rooms].filter(([, room]) => held(room)).map(([locator]) => locator);
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
of: (locator) => rooms.get(locator) ?? NO_INSTALL,
|
|
22
|
+
change(locator, next) {
|
|
23
|
+
rooms.set(locator, next(rooms.get(locator) ?? NO_INSTALL));
|
|
24
|
+
},
|
|
25
|
+
underway: () => new Set(matching(({ installing }) => installing)),
|
|
26
|
+
transferring: () => matching(({ transfer }) => transfer !== null),
|
|
27
|
+
arrivalDue(now, everyMs) {
|
|
28
|
+
if (now - arrivalReported < everyMs)
|
|
29
|
+
return false;
|
|
30
|
+
arrivalReported = now;
|
|
31
|
+
return true;
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
}
|