@plurnk/plurnk-service 1.4.0 → 1.5.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/.env.defaults +20 -23
- package/INSTALL.md +6 -5
- package/README.md +1 -0
- package/SPEC.md +250 -149
- package/dist/Paths.d.ts.map +1 -1
- package/dist/Paths.js +2 -3
- package/dist/Paths.js.map +1 -1
- package/dist/build-info.json +1 -1
- package/dist/content/index.d.ts +1 -0
- package/dist/content/index.d.ts.map +1 -1
- package/dist/content/index.js +1 -0
- package/dist/content/index.js.map +1 -1
- package/dist/content/line-marker.d.ts +7 -3
- package/dist/content/line-marker.d.ts.map +1 -1
- package/dist/content/line-marker.js +2 -1
- package/dist/content/line-marker.js.map +1 -1
- package/dist/content/matcher.d.ts +1 -1
- package/dist/content/matcher.d.ts.map +1 -1
- package/dist/content/matcher.js +2 -2
- package/dist/content/matcher.js.map +1 -1
- package/dist/content/read-projector.d.ts +14 -0
- package/dist/content/read-projector.d.ts.map +1 -0
- package/dist/content/read-projector.js +86 -0
- package/dist/content/read-projector.js.map +1 -0
- package/dist/content/read-resolve.d.ts +2 -7
- package/dist/content/read-resolve.d.ts.map +1 -1
- package/dist/content/read-resolve.js +32 -107
- package/dist/content/read-resolve.js.map +1 -1
- package/dist/core/BranchReceipt.d.ts +0 -1
- package/dist/core/BranchReceipt.d.ts.map +1 -1
- package/dist/core/BranchReceipt.js +0 -3
- package/dist/core/BranchReceipt.js.map +1 -1
- package/dist/core/BudgetOverflow.d.ts +0 -3
- package/dist/core/BudgetOverflow.d.ts.map +1 -1
- package/dist/core/BudgetOverflow.js +3 -15
- package/dist/core/BudgetOverflow.js.map +1 -1
- package/dist/core/ChannelWrite.d.ts +3 -0
- package/dist/core/ChannelWrite.d.ts.map +1 -1
- package/dist/core/ChannelWrite.js +2 -2
- package/dist/core/ChannelWrite.js.map +1 -1
- package/dist/core/ChannelWrite.sql +4 -3
- package/dist/core/CoreSchemeServices.d.ts +10 -2
- package/dist/core/CoreSchemeServices.d.ts.map +1 -1
- package/dist/core/CoreSchemeServices.js.map +1 -1
- package/dist/core/Dispatcher.d.ts +3 -7
- package/dist/core/Dispatcher.d.ts.map +1 -1
- package/dist/core/Dispatcher.js +283 -217
- package/dist/core/Dispatcher.js.map +1 -1
- package/dist/core/Engine.d.ts +19 -12
- package/dist/core/Engine.d.ts.map +1 -1
- package/dist/core/Engine.js +261 -167
- package/dist/core/Engine.js.map +1 -1
- package/dist/core/Engine.sql +66 -63
- package/dist/core/LogBody.d.ts +2 -1
- package/dist/core/LogBody.d.ts.map +1 -1
- package/dist/core/LogBody.js +33 -1
- package/dist/core/LogBody.js.map +1 -1
- package/dist/core/LoopLifecycle.d.ts +1 -2
- package/dist/core/LoopLifecycle.d.ts.map +1 -1
- package/dist/core/LoopLifecycle.js +1 -4
- package/dist/core/LoopLifecycle.js.map +1 -1
- package/dist/core/LoopLifecycle.sql +1 -4
- package/dist/core/PacketBuilder.d.ts +3 -2
- package/dist/core/PacketBuilder.d.ts.map +1 -1
- package/dist/core/PacketBuilder.js +16 -16
- package/dist/core/PacketBuilder.js.map +1 -1
- package/dist/core/StrikeRail.d.ts +5 -1
- package/dist/core/StrikeRail.d.ts.map +1 -1
- package/dist/core/StrikeRail.js +4 -3
- package/dist/core/StrikeRail.js.map +1 -1
- package/dist/core/TerminalResult.d.ts +16 -0
- package/dist/core/TerminalResult.d.ts.map +1 -0
- package/dist/core/TerminalResult.js +49 -0
- package/dist/core/TerminalResult.js.map +1 -0
- package/dist/core/caps/CapsResolve.d.ts +5 -1
- package/dist/core/caps/CapsResolve.d.ts.map +1 -1
- package/dist/core/caps/CapsResolve.js +8 -4
- package/dist/core/caps/CapsResolve.js.map +1 -1
- package/dist/core/caps/DbChannelCaps.d.ts +1 -1
- package/dist/core/caps/DbChannelCaps.d.ts.map +1 -1
- package/dist/core/caps/DbChannelCaps.js +6 -4
- package/dist/core/caps/DbChannelCaps.js.map +1 -1
- package/dist/core/caps/DbEntryCaps.d.ts +1 -1
- package/dist/core/caps/DbEntryCaps.d.ts.map +1 -1
- package/dist/core/caps/DbEntryCaps.js +14 -4
- package/dist/core/caps/DbEntryCaps.js.map +1 -1
- package/dist/core/caps/DbNotifyCaps.d.ts +1 -1
- package/dist/core/caps/DbNotifyCaps.d.ts.map +1 -1
- package/dist/core/caps/DbNotifyCaps.js +6 -4
- package/dist/core/caps/DbNotifyCaps.js.map +1 -1
- package/dist/core/caps/DbSubscriptionCaps.d.ts +4 -6
- package/dist/core/caps/DbSubscriptionCaps.d.ts.map +1 -1
- package/dist/core/caps/DbSubscriptionCaps.js +27 -13
- package/dist/core/caps/DbSubscriptionCaps.js.map +1 -1
- package/dist/core/caps/DbTagCaps.d.ts +1 -1
- package/dist/core/caps/DbTagCaps.d.ts.map +1 -1
- package/dist/core/caps/DbTagCaps.js +6 -4
- package/dist/core/caps/DbTagCaps.js.map +1 -1
- package/dist/core/caps/SchemeCtxImpl.d.ts +6 -1
- package/dist/core/caps/SchemeCtxImpl.d.ts.map +1 -1
- package/dist/core/caps/SchemeCtxImpl.js +6 -6
- package/dist/core/caps/SchemeCtxImpl.js.map +1 -1
- package/dist/core/fork.sql +2 -2
- package/dist/core/git-iso.d.ts +3 -2
- package/dist/core/git-iso.d.ts.map +1 -1
- package/dist/core/git-iso.js +27 -12
- package/dist/core/git-iso.js.map +1 -1
- package/dist/core/git-membership.d.ts +1 -0
- package/dist/core/git-membership.d.ts.map +1 -1
- package/dist/core/git-membership.js +86 -24
- package/dist/core/git-membership.js.map +1 -1
- package/dist/core/git-state.d.ts +8 -1
- package/dist/core/git-state.d.ts.map +1 -1
- package/dist/core/git-state.js +35 -16
- package/dist/core/git-state.js.map +1 -1
- package/dist/core/namespace.d.ts +1 -0
- package/dist/core/namespace.d.ts.map +1 -1
- package/dist/core/namespace.js +20 -0
- package/dist/core/namespace.js.map +1 -1
- package/dist/core/optimistic-settlement.d.ts +2 -0
- package/dist/core/optimistic-settlement.d.ts.map +1 -0
- package/dist/core/optimistic-settlement.js +14 -0
- package/dist/core/optimistic-settlement.js.map +1 -0
- package/dist/core/packet-wire.d.ts +1 -1
- package/dist/core/packet-wire.d.ts.map +1 -1
- package/dist/core/packet-wire.js +81 -35
- package/dist/core/packet-wire.js.map +1 -1
- package/dist/core/results.d.ts +4 -2
- package/dist/core/results.d.ts.map +1 -1
- package/dist/core/results.js +6 -0
- package/dist/core/results.js.map +1 -1
- package/dist/core/scheme-types.d.ts +0 -12
- package/dist/core/scheme-types.d.ts.map +1 -1
- package/dist/core/scheme-types.js.map +1 -1
- package/dist/core/worker-ops.sql +4 -4
- package/dist/core/workspace-settings.js +1 -1
- package/dist/core/workspace-settings.js.map +1 -1
- package/dist/digest/Digest.d.ts.map +1 -1
- package/dist/digest/Digest.js +236 -74
- package/dist/digest/Digest.js.map +1 -1
- package/dist/digest/digest.sql +9 -5
- package/dist/schemes/Exec.d.ts +4 -4
- package/dist/schemes/Exec.d.ts.map +1 -1
- package/dist/schemes/Exec.js +56 -33
- package/dist/schemes/Exec.js.map +1 -1
- package/dist/schemes/ExecOutputScheme.d.ts +4 -5
- package/dist/schemes/ExecOutputScheme.d.ts.map +1 -1
- package/dist/schemes/ExecOutputScheme.js +12 -20
- package/dist/schemes/ExecOutputScheme.js.map +1 -1
- package/dist/schemes/File.d.ts +1 -3
- package/dist/schemes/File.d.ts.map +1 -1
- package/dist/schemes/File.js +11 -19
- package/dist/schemes/File.js.map +1 -1
- package/dist/schemes/Log.d.ts +5 -5
- package/dist/schemes/Log.d.ts.map +1 -1
- package/dist/schemes/Log.js +74 -172
- package/dist/schemes/Log.js.map +1 -1
- package/dist/schemes/Log.sql +20 -13
- package/dist/schemes/Prompt.d.ts +2 -3
- package/dist/schemes/Prompt.d.ts.map +1 -1
- package/dist/schemes/Prompt.js +1 -4
- package/dist/schemes/Prompt.js.map +1 -1
- package/dist/schemes/Skill.d.ts +2 -3
- package/dist/schemes/Skill.d.ts.map +1 -1
- package/dist/schemes/Skill.js +0 -3
- package/dist/schemes/Skill.js.map +1 -1
- package/dist/schemes/Worker.d.ts +5 -5
- package/dist/schemes/Worker.d.ts.map +1 -1
- package/dist/schemes/Worker.js +92 -81
- package/dist/schemes/Worker.js.map +1 -1
- package/dist/schemes/_entry-crud.d.ts +2 -1
- package/dist/schemes/_entry-crud.d.ts.map +1 -1
- package/dist/schemes/_entry-crud.js +14 -1
- package/dist/schemes/_entry-crud.js.map +1 -1
- package/dist/schemes/_entry-crud.sql +9 -3
- package/dist/schemes/_entry-find.d.ts +37 -11
- package/dist/schemes/_entry-find.d.ts.map +1 -1
- package/dist/schemes/_entry-find.js +141 -153
- package/dist/schemes/_entry-find.js.map +1 -1
- package/dist/schemes/_entry-ops.d.ts +9 -5
- package/dist/schemes/_entry-ops.d.ts.map +1 -1
- package/dist/schemes/_entry-ops.js +12 -73
- package/dist/schemes/_entry-ops.js.map +1 -1
- package/dist/schemes/_entry-ops.sql +1 -2
- package/dist/schemes/_entry-semantic.d.ts +5 -7
- package/dist/schemes/_entry-semantic.d.ts.map +1 -1
- package/dist/schemes/_entry-semantic.js +10 -31
- package/dist/schemes/_entry-semantic.js.map +1 -1
- package/dist/schemes/_entry-semantic.sql +2 -2
- package/dist/schemes/_search-index.d.ts.map +1 -1
- package/dist/schemes/_search-index.js +6 -4
- package/dist/schemes/_search-index.js.map +1 -1
- package/dist/server/BranchBatches.d.ts +1 -0
- package/dist/server/BranchBatches.d.ts.map +1 -1
- package/dist/server/BranchBatches.js +1 -0
- package/dist/server/BranchBatches.js.map +1 -1
- package/dist/server/Daemon.d.ts +5 -7
- package/dist/server/Daemon.d.ts.map +1 -1
- package/dist/server/Daemon.js +222 -54
- package/dist/server/Daemon.js.map +1 -1
- package/dist/server/DaemonModule.d.ts +3 -3
- package/dist/server/DaemonModule.d.ts.map +1 -1
- package/dist/server/branch-batch.sql +3 -1
- package/dist/server/client-input.d.ts +2 -1
- package/dist/server/client-input.d.ts.map +1 -1
- package/dist/server/client-input.js +7 -1
- package/dist/server/client-input.js.map +1 -1
- package/dist/server/drain.sql +6 -5
- package/dist/server/envelope.d.ts +2 -2
- package/dist/server/envelope.d.ts.map +1 -1
- package/dist/server/envelope.js +0 -1
- package/dist/server/envelope.js.map +1 -1
- package/dist/server/envelope.sql +1 -2
- package/dist/server/lifecycle-recovery.sql +34 -1
- package/dist/server/logEntry.d.ts +1 -1
- package/dist/server/logEntry.d.ts.map +1 -1
- package/dist/server/logEntry.js +2 -1
- package/dist/server/logEntry.js.map +1 -1
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +13 -1
- package/dist/service.js.map +1 -1
- package/migrations/001_schema.sql +238 -125
- package/package.json +48 -46
- package/dist/matrix/live-specimen.d.ts +0 -9
- package/dist/matrix/live-specimen.d.ts.map +0 -1
- package/dist/matrix/live-specimen.js +0 -37
- package/dist/matrix/live-specimen.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CapsResolve.js","sourceRoot":"","sources":["../../../src/core/caps/CapsResolve.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"CapsResolve.js","sourceRoot":"","sources":["../../../src/core/caps/CapsResolve.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,0EAA0E;AAC1E,+EAA+E;AAC/E,mDAAmD;AAGnD,OAAO,KAAK,MAAM,aAAa,CAAC;AAEhC,MAAM,CAAC,OAAO,OAAO,WAAW;IAC5B,MAAM,CAAC,KAAK,CAAC,KAAK,CACd,GAAwB,EACxB,MAAc,EACd,QAAgB,EAChB,OAAgB;QAEhB,MAAM,QAAQ,GAAG,OAAO,IAAI,MAAM,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;QAC3E,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,yBAAyB,CAAC,GAAG,CAAiB;YACnE,YAAY,EAAE,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ;SACtE,CAAC,CAAC;QACH,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC;IACpE,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAwB,EAAE,MAAc,EAAE,QAAgB,EAAE,OAAgB;QAC7F,OAAO,CAAC,MAAM,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC;IACtF,CAAC;CACJ"}
|
|
@@ -2,7 +2,7 @@ import { type ChannelCaps, type ChannelState, type SchemeResult } from "@plurnk/
|
|
|
2
2
|
import type { PlurnkSchemeContext } from "../scheme-types.ts";
|
|
3
3
|
export default class DbChannelCaps implements ChannelCaps {
|
|
4
4
|
#private;
|
|
5
|
-
constructor(ctx: PlurnkSchemeContext, scheme: string);
|
|
5
|
+
constructor(ctx: PlurnkSchemeContext, scheme: string, ownerId?: number);
|
|
6
6
|
append(pathname: string, channel: string, content: string): Promise<SchemeResult>;
|
|
7
7
|
replace(pathname: string, channel: string, content: string): Promise<SchemeResult>;
|
|
8
8
|
setState(pathname: string, channel: string, state: ChannelState): Promise<SchemeResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DbChannelCaps.d.ts","sourceRoot":"","sources":["../../../src/core/caps/DbChannelCaps.ts"],"names":[],"mappings":"AAOA,OAAO,EAAW,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACzG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAI9D,MAAM,CAAC,OAAO,OAAO,aAAc,YAAW,WAAW;;
|
|
1
|
+
{"version":3,"file":"DbChannelCaps.d.ts","sourceRoot":"","sources":["../../../src/core/caps/DbChannelCaps.ts"],"names":[],"mappings":"AAOA,OAAO,EAAW,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACzG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAI9D,MAAM,CAAC,OAAO,OAAO,aAAc,YAAW,WAAW;;IAKrD,YAAY,GAAG,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAIrE;IAiBK,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAOtF;IAEK,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAWvF;IAEK,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAO5F;CACJ"}
|
|
@@ -10,9 +10,11 @@ import { renderAddress } from "../plurnk-uri.js";
|
|
|
10
10
|
export default class DbChannelCaps {
|
|
11
11
|
#ctx;
|
|
12
12
|
#scheme;
|
|
13
|
-
|
|
13
|
+
#ownerId;
|
|
14
|
+
constructor(ctx, scheme, ownerId) {
|
|
14
15
|
this.#ctx = ctx;
|
|
15
16
|
this.#scheme = scheme;
|
|
17
|
+
this.#ownerId = ownerId;
|
|
16
18
|
}
|
|
17
19
|
#failure(code, detail, pathname, channel) {
|
|
18
20
|
const target = renderAddress(this.#scheme, pathname);
|
|
@@ -22,7 +24,7 @@ export default class DbChannelCaps {
|
|
|
22
24
|
});
|
|
23
25
|
}
|
|
24
26
|
async append(pathname, channel, content) {
|
|
25
|
-
const entryId = await CapsResolve.entryId(this.#ctx, this.#scheme, pathname);
|
|
27
|
+
const entryId = await CapsResolve.entryId(this.#ctx, this.#scheme, pathname, this.#ownerId);
|
|
26
28
|
if (entryId === null)
|
|
27
29
|
return this.#failure("entry-not-found", `No entry exists at ${renderAddress(this.#scheme, pathname)}.`, pathname);
|
|
28
30
|
const r = await this.#ctx.db.append_to_channel.run({ chunk: content, entry_id: entryId, channel });
|
|
@@ -34,7 +36,7 @@ export default class DbChannelCaps {
|
|
|
34
36
|
const { tokenize } = this.#ctx;
|
|
35
37
|
if (tokenize === undefined)
|
|
36
38
|
throw new Error("DbChannelCaps.replace: ctx.tokenize is required for token accounting");
|
|
37
|
-
const entryId = await CapsResolve.entryId(this.#ctx, this.#scheme, pathname);
|
|
39
|
+
const entryId = await CapsResolve.entryId(this.#ctx, this.#scheme, pathname, this.#ownerId);
|
|
38
40
|
if (entryId === null)
|
|
39
41
|
return this.#failure("entry-not-found", `No entry exists at ${renderAddress(this.#scheme, pathname)}.`, pathname);
|
|
40
42
|
const r = await this.#ctx.db.replace_channel_content.run({
|
|
@@ -45,7 +47,7 @@ export default class DbChannelCaps {
|
|
|
45
47
|
: this.#failure("channel-not-found", `Entry ${renderAddress(this.#scheme, pathname)} has no '${channel}' channel.`, pathname, channel);
|
|
46
48
|
}
|
|
47
49
|
async setState(pathname, channel, state) {
|
|
48
|
-
const entryId = await CapsResolve.entryId(this.#ctx, this.#scheme, pathname);
|
|
50
|
+
const entryId = await CapsResolve.entryId(this.#ctx, this.#scheme, pathname, this.#ownerId);
|
|
49
51
|
if (entryId === null)
|
|
50
52
|
return this.#failure("entry-not-found", `No entry exists at ${renderAddress(this.#scheme, pathname)}.`, pathname);
|
|
51
53
|
const r = await this.#ctx.db.set_channel_state.run({ state, entry_id: entryId, channel });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DbChannelCaps.js","sourceRoot":"","sources":["../../../src/core/caps/DbChannelCaps.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,qBAAqB;AACrB,iFAAiF;AACjF,4EAA4E;AAC5E,wFAAwF;AACxF,4DAA4D;AAE5D,OAAO,EAAE,OAAO,EAA0D,MAAM,wBAAwB,CAAC;AAEzG,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,aAAa;IACrB,IAAI,CAAsB;IAC1B,OAAO,CAAS;
|
|
1
|
+
{"version":3,"file":"DbChannelCaps.js","sourceRoot":"","sources":["../../../src/core/caps/DbChannelCaps.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import type { PlurnkSchemeContext } from "../scheme-types.ts";
|
|
|
3
3
|
export default class DbEntryCaps implements EntryCaps {
|
|
4
4
|
#private;
|
|
5
5
|
readonly operations: EntryOperationCaps;
|
|
6
|
-
constructor(ctx: PlurnkSchemeContext, scheme: string, manifest: SchemeManifest);
|
|
6
|
+
constructor(ctx: PlurnkSchemeContext, scheme: string, manifest: SchemeManifest, defaultOwnerId?: number);
|
|
7
7
|
read(pathname: string, owner?: EntryOwner): Promise<EntryStorageReadResult>;
|
|
8
8
|
write(pathname: string, entry: EntryData, owner?: EntryOwner): Promise<EntryStorageWriteResult>;
|
|
9
9
|
delete(pathname: string, owner?: EntryOwner, channel?: string): Promise<SchemeResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DbEntryCaps.d.ts","sourceRoot":"","sources":["../../../src/core/caps/DbEntryCaps.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAER,SAAS,EACT,SAAS,EAGT,kBAAkB,EAClB,UAAU,EAEV,sBAAsB,EACtB,uBAAuB,EAGvB,cAAc,EACd,YAAY,EAEf,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAM9D,MAAM,CAAC,OAAO,OAAO,WAAY,YAAW,SAAS;;
|
|
1
|
+
{"version":3,"file":"DbEntryCaps.d.ts","sourceRoot":"","sources":["../../../src/core/caps/DbEntryCaps.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAER,SAAS,EACT,SAAS,EAGT,kBAAkB,EAClB,UAAU,EAEV,sBAAsB,EACtB,uBAAuB,EAGvB,cAAc,EACd,YAAY,EAEf,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAM9D,MAAM,CAAC,OAAO,OAAO,WAAY,YAAW,SAAS;;IAKjD,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IAExC,YAAY,GAAG,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,CAAC,EAAE,MAAM,EAetG;IAmCK,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAEhF;IAEK,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAIpG;IAEK,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAI1F;CACJ"}
|
|
@@ -9,8 +9,9 @@ export default class DbEntryCaps {
|
|
|
9
9
|
#ctx;
|
|
10
10
|
#scheme;
|
|
11
11
|
#manifest;
|
|
12
|
+
#defaultOwnerId;
|
|
12
13
|
operations;
|
|
13
|
-
constructor(ctx, scheme, manifest) {
|
|
14
|
+
constructor(ctx, scheme, manifest, defaultOwnerId) {
|
|
14
15
|
this.#ctx = ctx;
|
|
15
16
|
this.#scheme = scheme;
|
|
16
17
|
// One handler may own multiple addressed protocols (http/https, ws/wss).
|
|
@@ -18,6 +19,7 @@ export default class DbEntryCaps {
|
|
|
18
19
|
// direct CRUD already uses #scheme; standard operations derive identity
|
|
19
20
|
// from manifest.name, so give them the same addressed face.
|
|
20
21
|
this.#manifest = manifest.name === scheme ? manifest : { ...manifest, name: scheme };
|
|
22
|
+
this.#defaultOwnerId = defaultOwnerId;
|
|
21
23
|
this.operations = {
|
|
22
24
|
editBatch: (statements, owner) => this.#editBatch(statements, owner),
|
|
23
25
|
read: (statement, owner) => this.#read(statement, owner),
|
|
@@ -26,7 +28,11 @@ export default class DbEntryCaps {
|
|
|
26
28
|
};
|
|
27
29
|
}
|
|
28
30
|
#ownerId(owner) {
|
|
29
|
-
|
|
31
|
+
if (owner === "worker")
|
|
32
|
+
return this.#ctx.workerId;
|
|
33
|
+
if (owner === "commons")
|
|
34
|
+
return undefined;
|
|
35
|
+
return this.#defaultOwnerId;
|
|
30
36
|
}
|
|
31
37
|
#result(operation, result) {
|
|
32
38
|
if (Results.isErrorStatus(result.status) && result.problem === undefined) {
|
|
@@ -38,10 +44,14 @@ export default class DbEntryCaps {
|
|
|
38
44
|
return this.#result("edit", await EntryOps.editWorkspaceEntryBatch(statements, this.#ctx, this.#manifest, this.#ownerId(owner)));
|
|
39
45
|
}
|
|
40
46
|
async #read(statement, owner) {
|
|
41
|
-
return this.#result("read", await EntryOps.readWorkspaceEntry(statement, this.#ctx, this.#manifest,
|
|
47
|
+
return this.#result("read", await EntryOps.readWorkspaceEntry(statement, this.#ctx, this.#manifest, {
|
|
48
|
+
ownerId: this.#ownerId(owner),
|
|
49
|
+
}));
|
|
42
50
|
}
|
|
43
51
|
async #find(statement, owner) {
|
|
44
|
-
return this.#result("find", await EntryFind.findWorkspaceEntries(statement, this.#ctx, this.#manifest,
|
|
52
|
+
return this.#result("find", await EntryFind.findWorkspaceEntries(statement, this.#ctx, this.#manifest, {
|
|
53
|
+
ownerId: this.#ownerId(owner),
|
|
54
|
+
}));
|
|
45
55
|
}
|
|
46
56
|
async #send(statement, owner) {
|
|
47
57
|
return this.#result("send", await EntrySend.sendToWorkspaceEntry(statement, this.#ctx, this.#scheme, this.#ownerId(owner)));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DbEntryCaps.js","sourceRoot":"","sources":["../../../src/core/caps/DbEntryCaps.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,0EAA0E;AAmB1E,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,SAAS,MAAM,8BAA8B,CAAC;AACrD,OAAO,SAAS,MAAM,8BAA8B,CAAC;AACrD,OAAO,QAAQ,MAAM,6BAA6B,CAAC;AACnD,OAAO,SAAS,MAAM,8BAA8B,CAAC;AAErD,MAAM,CAAC,OAAO,OAAO,WAAW;IACnB,IAAI,CAAsB;IAC1B,OAAO,CAAS;IAChB,SAAS,CAAiB;IAC1B,UAAU,CAAqB;IAExC,YAAY,GAAwB,EAAE,MAAc,EAAE,QAAwB;
|
|
1
|
+
{"version":3,"file":"DbEntryCaps.js","sourceRoot":"","sources":["../../../src/core/caps/DbEntryCaps.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import type { NotifyCaps, ChannelState } from "@plurnk/plurnk-schemes";
|
|
|
2
2
|
import type { PlurnkSchemeContext } from "../scheme-types.ts";
|
|
3
3
|
export default class DbNotifyCaps implements NotifyCaps {
|
|
4
4
|
#private;
|
|
5
|
-
constructor(ctx: PlurnkSchemeContext, scheme: string);
|
|
5
|
+
constructor(ctx: PlurnkSchemeContext, scheme: string, ownerId?: number);
|
|
6
6
|
streamEvent(pathname: string, channel: string, state: ChannelState, contentLength: number): void;
|
|
7
7
|
}
|
|
8
8
|
//# sourceMappingURL=DbNotifyCaps.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DbNotifyCaps.d.ts","sourceRoot":"","sources":["../../../src/core/caps/DbNotifyCaps.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAK9D,MAAM,CAAC,OAAO,OAAO,YAAa,YAAW,UAAU;;
|
|
1
|
+
{"version":3,"file":"DbNotifyCaps.d.ts","sourceRoot":"","sources":["../../../src/core/caps/DbNotifyCaps.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAK9D,MAAM,CAAC,OAAO,OAAO,YAAa,YAAW,UAAU;;IAKnD,YAAY,GAAG,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAIrE;IAED,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAM/F;CAQJ"}
|
|
@@ -13,9 +13,11 @@ import { renderAddress } from "../plurnk-uri.js";
|
|
|
13
13
|
export default class DbNotifyCaps {
|
|
14
14
|
#ctx;
|
|
15
15
|
#scheme;
|
|
16
|
-
|
|
16
|
+
#ownerId;
|
|
17
|
+
constructor(ctx, scheme, ownerId) {
|
|
17
18
|
this.#ctx = ctx;
|
|
18
19
|
this.#scheme = scheme;
|
|
20
|
+
this.#ownerId = ownerId;
|
|
19
21
|
}
|
|
20
22
|
streamEvent(pathname, channel, state, contentLength) {
|
|
21
23
|
const notify = this.#ctx.streamEventNotify;
|
|
@@ -26,11 +28,11 @@ export default class DbNotifyCaps {
|
|
|
26
28
|
});
|
|
27
29
|
}
|
|
28
30
|
async #emit(notify, pathname, channel, state, contentLength) {
|
|
29
|
-
const
|
|
30
|
-
if (
|
|
31
|
+
const entry = await CapsResolve.entry(this.#ctx, this.#scheme, pathname, this.#ownerId);
|
|
32
|
+
if (entry === null)
|
|
31
33
|
return;
|
|
32
34
|
const target = renderAddress(this.#scheme, pathname);
|
|
33
|
-
notify(this.#ctx.workspaceId, { entryId, target, channel, state, contentLength });
|
|
35
|
+
notify(this.#ctx.workspaceId, { entryId: entry.entryId, workerId: entry.workerId, target, channel, state, contentLength });
|
|
34
36
|
}
|
|
35
37
|
}
|
|
36
38
|
//# sourceMappingURL=DbNotifyCaps.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DbNotifyCaps.js","sourceRoot":"","sources":["../../../src/core/caps/DbNotifyCaps.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,0FAA0F;AAC1F,6EAA6E;AAC7E,uDAAuD;AACvD,EAAE;AACF,iFAAiF;AACjF,6EAA6E;AAC7E,4EAA4E;AAC5E,mDAAmD;AACnD,mDAAmD;AAKnD,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,YAAY;IACpB,IAAI,CAAsB;IAC1B,OAAO,CAAS;
|
|
1
|
+
{"version":3,"file":"DbNotifyCaps.js","sourceRoot":"","sources":["../../../src/core/caps/DbNotifyCaps.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,0FAA0F;AAC1F,6EAA6E;AAC7E,uDAAuD;AACvD,EAAE;AACF,iFAAiF;AACjF,6EAA6E;AAC7E,4EAA4E;AAC5E,mDAAmD;AACnD,mDAAmD;AAKnD,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,YAAY;IACpB,IAAI,CAAsB;IAC1B,OAAO,CAAS;IAChB,QAAQ,CAAqB;IAEtC,YAAY,GAAwB,EAAE,MAAc,EAAE,OAAgB;QAClE,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC5B,CAAC;IAED,WAAW,CAAC,QAAgB,EAAE,OAAe,EAAE,KAAmB,EAAE,aAAqB;QACrF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;QAC3C,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO;QACjC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACtF,OAAO,CAAC,KAAK,CAAC,2CAA2C,IAAI,CAAC,OAAO,IAAI,QAAQ,IAAI,OAAO,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5G,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAyB,EAAE,QAAgB,EAAE,OAAe,EAAE,KAAmB,EAAE,aAAqB;QAChH,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxF,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO;QAC3B,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;IAC/H,CAAC;CACJ"}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
import type { SubscriptionCaps, SubscriptionHandle, StreamSubscription, SchemeResult } from "@plurnk/plurnk-schemes";
|
|
1
|
+
import type { SubscriptionCaps, SubscriptionHandle, StreamSubscription, TerminalChannelState, SchemeResult } from "@plurnk/plurnk-schemes";
|
|
2
2
|
import type { PlurnkSchemeContext } from "../scheme-types.ts";
|
|
3
3
|
import type LiveSubscriptions from "../LiveSubscriptions.ts";
|
|
4
4
|
export default class DbSubscriptionCaps implements SubscriptionCaps {
|
|
5
5
|
#private;
|
|
6
|
-
constructor(ctx: PlurnkSchemeContext, scheme: string, liveSubscriptions: LiveSubscriptions);
|
|
7
|
-
open(pathname: string, handle: SubscriptionHandle
|
|
8
|
-
publishedChannel?: string;
|
|
9
|
-
}): Promise<StreamSubscription>;
|
|
6
|
+
constructor(ctx: PlurnkSchemeContext, scheme: string, liveSubscriptions: LiveSubscriptions, publishedChannel: string | null, ownerId?: number);
|
|
7
|
+
open(pathname: string, handle: SubscriptionHandle): Promise<StreamSubscription>;
|
|
10
8
|
notifyChunk(channel: string, chunk: string, mimetype?: string): Promise<void>;
|
|
11
|
-
close(result: SchemeResult, summary?: string): Promise<void>;
|
|
9
|
+
close(result: SchemeResult, summary?: string, channelStates?: Readonly<Record<string, TerminalChannelState>>): Promise<void>;
|
|
12
10
|
}
|
|
13
11
|
//# sourceMappingURL=DbSubscriptionCaps.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DbSubscriptionCaps.d.ts","sourceRoot":"","sources":["../../../src/core/caps/DbSubscriptionCaps.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACR,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAElB,YAAY,EACf,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG9D,OAAO,KAAK,iBAAiB,MAAM,yBAAyB,CAAC;AAG7D,MAAM,CAAC,OAAO,OAAO,kBAAmB,YAAW,gBAAgB;;
|
|
1
|
+
{"version":3,"file":"DbSubscriptionCaps.d.ts","sourceRoot":"","sources":["../../../src/core/caps/DbSubscriptionCaps.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACR,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAElB,oBAAoB,EACpB,YAAY,EACf,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG9D,OAAO,KAAK,iBAAiB,MAAM,yBAAyB,CAAC;AAG7D,MAAM,CAAC,OAAO,OAAO,kBAAmB,YAAW,gBAAgB;;IAQ/D,YACI,GAAG,EAAE,mBAAmB,EACxB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,iBAAiB,EACpC,gBAAgB,EAAE,MAAM,GAAG,IAAI,EAC/B,OAAO,CAAC,EAAE,MAAM,EAOnB;IAEK,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAgFpF;IAEK,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIlF;IAEK,KAAK,CACP,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,GAC/D,OAAO,CAAC,IAAI,CAAC,CAIf;CACJ"}
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
// worker+teardown-composed StreamSubscription; a worker abort also
|
|
5
5
|
// force-cancels the sibling's handle.
|
|
6
6
|
// notifyChunk(channel, chunk) → FUSED append-to-channel + stream/event.
|
|
7
|
-
// close(result, summary?) → composites every channel's
|
|
8
|
-
// registry close, and
|
|
9
|
-
//
|
|
7
|
+
// close(result, summary?, channelStates?) → composites every channel's
|
|
8
|
+
// terminal state, registry close, and rich worker wake (the only place with
|
|
9
|
+
// the close context; NotifyCaps therefore has no wakeWorker operation).
|
|
10
10
|
// The returned object owns the exact retained lifecycle. Namespace methods are
|
|
11
11
|
// operation-scoped compatibility forwarders to that same object.
|
|
12
12
|
import { Results } from "@plurnk/plurnk-schemes";
|
|
@@ -17,20 +17,25 @@ export default class DbSubscriptionCaps {
|
|
|
17
17
|
#ctx;
|
|
18
18
|
#scheme;
|
|
19
19
|
#liveSubscriptions;
|
|
20
|
+
#publishedChannel;
|
|
21
|
+
#ownerId;
|
|
20
22
|
#current = null;
|
|
21
|
-
constructor(ctx, scheme, liveSubscriptions) {
|
|
23
|
+
constructor(ctx, scheme, liveSubscriptions, publishedChannel, ownerId) {
|
|
22
24
|
this.#ctx = ctx;
|
|
23
25
|
this.#scheme = scheme;
|
|
24
26
|
this.#liveSubscriptions = liveSubscriptions;
|
|
27
|
+
this.#publishedChannel = publishedChannel;
|
|
28
|
+
this.#ownerId = ownerId;
|
|
25
29
|
}
|
|
26
|
-
async open(pathname, handle
|
|
27
|
-
const
|
|
28
|
-
if (
|
|
30
|
+
async open(pathname, handle) {
|
|
31
|
+
const entry = await CapsResolve.entry(this.#ctx, this.#scheme, pathname, this.#ownerId);
|
|
32
|
+
if (entry === null)
|
|
29
33
|
throw new Error(`subscriptions.open: no entry at ${pathname}`);
|
|
34
|
+
const { entryId, workerId: entryOwnerId } = entry;
|
|
30
35
|
const { db, workerId, workspaceId, signal: parent, streamEventNotify, wakeWorkerNotify, } = this.#ctx;
|
|
31
36
|
const scheme = this.#scheme;
|
|
32
37
|
const liveSubscriptions = this.#liveSubscriptions;
|
|
33
|
-
const publishedChannel =
|
|
38
|
+
const publishedChannel = this.#publishedChannel;
|
|
34
39
|
const subscriptionId = await ChannelWrite.openSubscription(db, {
|
|
35
40
|
workerId, entryId, scheme, handle: pathname, publishedChannel,
|
|
36
41
|
});
|
|
@@ -43,11 +48,20 @@ export default class DbSubscriptionCaps {
|
|
|
43
48
|
mimetype,
|
|
44
49
|
});
|
|
45
50
|
};
|
|
46
|
-
const close = async (result, summary) => {
|
|
51
|
+
const close = async (result, summary, channelStates) => {
|
|
47
52
|
Results.assert(result);
|
|
48
|
-
const
|
|
53
|
+
const defaultState = result.status >= 400 ? "errored" : "closed";
|
|
49
54
|
const channels = await db.crud_read_channels.all({ entry_id: entryId });
|
|
55
|
+
const channelNames = new Set(channels.map(({ name }) => name));
|
|
56
|
+
for (const [name, state] of Object.entries(channelStates ?? {})) {
|
|
57
|
+
if (!channelNames.has(name))
|
|
58
|
+
throw new Error(`subscriptions.close: unknown channel state override ${name}`);
|
|
59
|
+
if (state !== "closed" && state !== "errored") {
|
|
60
|
+
throw new Error(`subscriptions.close: invalid state ${JSON.stringify(state)} for channel ${name}`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
50
63
|
for (const { name } of channels) {
|
|
64
|
+
const state = channelStates?.[name] ?? defaultState;
|
|
51
65
|
await ChannelWrite.setChannelState(db, {
|
|
52
66
|
entryId, channel: name, state,
|
|
53
67
|
...(publishedChannel === null || publishedChannel === name ? { notify: streamEventNotify } : {}),
|
|
@@ -57,7 +71,7 @@ export default class DbSubscriptionCaps {
|
|
|
57
71
|
liveSubscriptions.unregister(subscriptionId);
|
|
58
72
|
unlink();
|
|
59
73
|
wakeWorkerNotify?.({
|
|
60
|
-
workspaceId, workerId, entryId,
|
|
74
|
+
workspaceId, workerId, entryOwnerId, entryId,
|
|
61
75
|
target: renderAddress(scheme, pathname),
|
|
62
76
|
subscriptionId, result, scheme, summary: summary ?? "",
|
|
63
77
|
});
|
|
@@ -91,11 +105,11 @@ export default class DbSubscriptionCaps {
|
|
|
91
105
|
throw new Error("subscriptions.notifyChunk: no open subscription");
|
|
92
106
|
await current.notifyChunk(channel, chunk, mimetype);
|
|
93
107
|
}
|
|
94
|
-
async close(result, summary) {
|
|
108
|
+
async close(result, summary, channelStates) {
|
|
95
109
|
const current = this.#current;
|
|
96
110
|
if (current === null)
|
|
97
111
|
throw new Error("subscriptions.close: no open subscription");
|
|
98
|
-
await current.close(result, summary);
|
|
112
|
+
await current.close(result, summary, channelStates);
|
|
99
113
|
}
|
|
100
114
|
}
|
|
101
115
|
//# sourceMappingURL=DbSubscriptionCaps.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DbSubscriptionCaps.js","sourceRoot":"","sources":["../../../src/core/caps/DbSubscriptionCaps.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,4CAA4C;AAC5C,yEAAyE;AACzE,uEAAuE;AACvE,0CAA0C;AAC1C,0EAA0E;AAC1E,
|
|
1
|
+
{"version":3,"file":"DbSubscriptionCaps.js","sourceRoot":"","sources":["../../../src/core/caps/DbSubscriptionCaps.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { type SchemeResult, type TagCaps, type TagListResult } from "@plurnk/plu
|
|
|
2
2
|
import type { PlurnkSchemeContext } from "../scheme-types.ts";
|
|
3
3
|
export default class DbTagCaps implements TagCaps {
|
|
4
4
|
#private;
|
|
5
|
-
constructor(ctx: PlurnkSchemeContext, scheme: string);
|
|
5
|
+
constructor(ctx: PlurnkSchemeContext, scheme: string, ownerId?: number);
|
|
6
6
|
add(pathname: string, tags: ReadonlyArray<string>): Promise<SchemeResult>;
|
|
7
7
|
remove(pathname: string, tags: ReadonlyArray<string>): Promise<SchemeResult>;
|
|
8
8
|
list(pathname: string): Promise<TagListResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DbTagCaps.d.ts","sourceRoot":"","sources":["../../../src/core/caps/DbTagCaps.ts"],"names":[],"mappings":"AAMA,OAAO,EAAW,KAAK,YAAY,EAAE,KAAK,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACtG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAI9D,MAAM,CAAC,OAAO,OAAO,SAAU,YAAW,OAAO;;
|
|
1
|
+
{"version":3,"file":"DbTagCaps.d.ts","sourceRoot":"","sources":["../../../src/core/caps/DbTagCaps.ts"],"names":[],"mappings":"AAMA,OAAO,EAAW,KAAK,YAAY,EAAE,KAAK,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACtG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAI9D,MAAM,CAAC,OAAO,OAAO,SAAU,YAAW,OAAO;;IAK7C,YAAY,GAAG,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAIrE;IAcK,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAK9E;IAEK,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAKjF;IAEK,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAKnD;CACJ"}
|
|
@@ -9,16 +9,18 @@ import { renderAddress } from "../plurnk-uri.js";
|
|
|
9
9
|
export default class DbTagCaps {
|
|
10
10
|
#ctx;
|
|
11
11
|
#scheme;
|
|
12
|
-
|
|
12
|
+
#ownerId;
|
|
13
|
+
constructor(ctx, scheme, ownerId) {
|
|
13
14
|
this.#ctx = ctx;
|
|
14
15
|
this.#scheme = scheme;
|
|
16
|
+
this.#ownerId = ownerId;
|
|
15
17
|
}
|
|
16
18
|
#missing(pathname, fields = {}) {
|
|
17
19
|
const target = renderAddress(this.#scheme, pathname);
|
|
18
20
|
return Results.failure(`scheme:${this.#scheme}`, "entry-not-found", 404, `No entry exists at ${target}.`, fields, { target });
|
|
19
21
|
}
|
|
20
22
|
async add(pathname, tags) {
|
|
21
|
-
const entryId = await CapsResolve.entryId(this.#ctx, this.#scheme, pathname);
|
|
23
|
+
const entryId = await CapsResolve.entryId(this.#ctx, this.#scheme, pathname, this.#ownerId);
|
|
22
24
|
if (entryId === null)
|
|
23
25
|
return this.#missing(pathname);
|
|
24
26
|
for (const tag of tags)
|
|
@@ -26,7 +28,7 @@ export default class DbTagCaps {
|
|
|
26
28
|
return Results.assert({ status: 200 });
|
|
27
29
|
}
|
|
28
30
|
async remove(pathname, tags) {
|
|
29
|
-
const entryId = await CapsResolve.entryId(this.#ctx, this.#scheme, pathname);
|
|
31
|
+
const entryId = await CapsResolve.entryId(this.#ctx, this.#scheme, pathname, this.#ownerId);
|
|
30
32
|
if (entryId === null)
|
|
31
33
|
return this.#missing(pathname);
|
|
32
34
|
for (const tag of tags)
|
|
@@ -34,7 +36,7 @@ export default class DbTagCaps {
|
|
|
34
36
|
return Results.assert({ status: 200 });
|
|
35
37
|
}
|
|
36
38
|
async list(pathname) {
|
|
37
|
-
const entryId = await CapsResolve.entryId(this.#ctx, this.#scheme, pathname);
|
|
39
|
+
const entryId = await CapsResolve.entryId(this.#ctx, this.#scheme, pathname, this.#ownerId);
|
|
38
40
|
if (entryId === null)
|
|
39
41
|
return this.#missing(pathname, { tags: [] });
|
|
40
42
|
const rows = await this.#ctx.db.crud_read_tags.all({ entry_id: entryId });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DbTagCaps.js","sourceRoot":"","sources":["../../../src/core/caps/DbTagCaps.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,qBAAqB;AACrB,8EAA8E;AAC9E,gFAAgF;AAChF,+DAA+D;AAE/D,OAAO,EAAE,OAAO,EAAuD,MAAM,wBAAwB,CAAC;AAEtG,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,SAAS;IACjB,IAAI,CAAsB;IAC1B,OAAO,CAAS;
|
|
1
|
+
{"version":3,"file":"DbTagCaps.js","sourceRoot":"","sources":["../../../src/core/caps/DbTagCaps.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import type { SchemeCtx, EntryCaps, ChannelCaps, TagCaps, NotifyCaps, ProjectionCaps, SubscriptionCaps, SchemeManifest, WriterTier } from "@plurnk/plurnk-schemes";
|
|
2
2
|
import type { PlurnkSchemeContext } from "../scheme-types.ts";
|
|
3
3
|
import type LiveSubscriptions from "../LiveSubscriptions.ts";
|
|
4
|
+
interface SchemeCtxOptions {
|
|
5
|
+
readonly ownerId?: number;
|
|
6
|
+
readonly publishedChannel?: string | null;
|
|
7
|
+
}
|
|
4
8
|
export default class SchemeCtxImpl implements SchemeCtx {
|
|
5
9
|
readonly workspaceId: number;
|
|
6
10
|
readonly workerId: number;
|
|
@@ -14,6 +18,7 @@ export default class SchemeCtxImpl implements SchemeCtx {
|
|
|
14
18
|
readonly notify: NotifyCaps;
|
|
15
19
|
readonly projection: ProjectionCaps;
|
|
16
20
|
readonly subscriptions: SubscriptionCaps;
|
|
17
|
-
constructor(ctx: PlurnkSchemeContext, scheme: string, manifest: SchemeManifest, liveSubscriptions: LiveSubscriptions);
|
|
21
|
+
constructor(ctx: PlurnkSchemeContext, scheme: string, manifest: SchemeManifest, liveSubscriptions: LiveSubscriptions, options?: SchemeCtxOptions);
|
|
18
22
|
}
|
|
23
|
+
export {};
|
|
19
24
|
//# sourceMappingURL=SchemeCtxImpl.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemeCtxImpl.d.ts","sourceRoot":"","sources":["../../../src/core/caps/SchemeCtxImpl.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACR,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,UAAU,EACvH,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAO9D,OAAO,KAAK,iBAAiB,MAAM,yBAAyB,CAAC;AAE7D,MAAM,CAAC,OAAO,OAAO,aAAc,YAAW,SAAS;IACnD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,gBAAgB,CAAC;IACzC,
|
|
1
|
+
{"version":3,"file":"SchemeCtxImpl.d.ts","sourceRoot":"","sources":["../../../src/core/caps/SchemeCtxImpl.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACR,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,UAAU,EACvH,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAO9D,OAAO,KAAK,iBAAiB,MAAM,yBAAyB,CAAC;AAE7D,UAAU,gBAAgB;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7C;AAED,MAAM,CAAC,OAAO,OAAO,aAAc,YAAW,SAAS;IACnD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,gBAAgB,CAAC;IACzC,YACI,GAAG,EAAE,mBAAmB,EACxB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,cAAc,EACxB,iBAAiB,EAAE,iBAAiB,EACpC,OAAO,GAAE,gBAAqB,EAoBjC;CACJ"}
|
|
@@ -19,19 +19,19 @@ export default class SchemeCtxImpl {
|
|
|
19
19
|
notify;
|
|
20
20
|
projection;
|
|
21
21
|
subscriptions;
|
|
22
|
-
constructor(ctx, scheme, manifest, liveSubscriptions) {
|
|
22
|
+
constructor(ctx, scheme, manifest, liveSubscriptions, options = {}) {
|
|
23
23
|
this.workspaceId = ctx.workspaceId;
|
|
24
24
|
this.workerId = ctx.workerId;
|
|
25
25
|
this.loopId = ctx.loopId;
|
|
26
26
|
this.turnId = ctx.turnId;
|
|
27
27
|
this.writer = ctx.writer;
|
|
28
28
|
this.signal = ctx.signal;
|
|
29
|
-
this.entries = new DbEntryCaps(ctx, scheme, manifest);
|
|
30
|
-
this.channels = new DbChannelCaps(ctx, scheme);
|
|
31
|
-
this.tags = new DbTagCaps(ctx, scheme);
|
|
32
|
-
this.notify = new DbNotifyCaps(ctx, scheme);
|
|
29
|
+
this.entries = new DbEntryCaps(ctx, scheme, manifest, options.ownerId);
|
|
30
|
+
this.channels = new DbChannelCaps(ctx, scheme, options.ownerId);
|
|
31
|
+
this.tags = new DbTagCaps(ctx, scheme, options.ownerId);
|
|
32
|
+
this.notify = new DbNotifyCaps(ctx, scheme, options.ownerId);
|
|
33
33
|
this.projection = new DbProjectionCaps(ctx);
|
|
34
|
-
this.subscriptions = new DbSubscriptionCaps(ctx, scheme, liveSubscriptions);
|
|
34
|
+
this.subscriptions = new DbSubscriptionCaps(ctx, scheme, liveSubscriptions, options.publishedChannel ?? null, options.ownerId);
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
//# sourceMappingURL=SchemeCtxImpl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemeCtxImpl.js","sourceRoot":"","sources":["../../../src/core/caps/SchemeCtxImpl.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,2EAA2E;AAM3E,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,SAAS,MAAM,gBAAgB,CAAC;AACvC,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAC7C,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AACzD,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"SchemeCtxImpl.js","sourceRoot":"","sources":["../../../src/core/caps/SchemeCtxImpl.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,2EAA2E;AAM3E,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,SAAS,MAAM,gBAAgB,CAAC;AACvC,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAC7C,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AACzD,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AAQrD,MAAM,CAAC,OAAO,OAAO,aAAa;IACrB,WAAW,CAAS;IACpB,QAAQ,CAAS;IACjB,MAAM,CAAS;IACf,MAAM,CAAS;IACf,MAAM,CAAa;IACnB,MAAM,CAA0B;IAChC,OAAO,CAAY;IACnB,QAAQ,CAAc;IACtB,IAAI,CAAU;IACd,MAAM,CAAa;IACnB,UAAU,CAAiB;IAC3B,aAAa,CAAmB;IACzC,YACI,GAAwB,EACxB,MAAc,EACd,QAAwB,EACxB,iBAAoC,EACpC,OAAO,GAAqB,EAAE;QAE9B,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACvE,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAChE,IAAI,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7D,IAAI,CAAC,UAAU,GAAG,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,aAAa,GAAG,IAAI,kBAAkB,CACvC,GAAG,EACH,MAAM,EACN,iBAAiB,EACjB,OAAO,CAAC,gBAAgB,IAAI,IAAI,EAChC,OAAO,CAAC,OAAO,CAClB,CAAC;IACN,CAAC;CACJ"}
|
package/dist/core/fork.sql
CHANGED
|
@@ -100,8 +100,8 @@ RETURNING id;
|
|
|
100
100
|
-- PREP: fork_copy_entry_channels
|
|
101
101
|
-- Copy every source channel from the source entry to the copy. Deep projections
|
|
102
102
|
-- live on the shared artifact, not on either entry.
|
|
103
|
-
INSERT INTO entry_channels (entry_id, name, content, mimetype, tokens, state)
|
|
104
|
-
SELECT $new_entry_id, name, content, mimetype, tokens, state FROM entry_channels WHERE entry_id = $old_entry_id;
|
|
103
|
+
INSERT INTO entry_channels (entry_id, name, content, mimetype, tokens, state, producer_result)
|
|
104
|
+
SELECT $new_entry_id, name, content, mimetype, tokens, state, producer_result FROM entry_channels WHERE entry_id = $old_entry_id;
|
|
105
105
|
|
|
106
106
|
-- PREP: fork_copy_entry_tags
|
|
107
107
|
INSERT INTO entry_tags (entry_id, tag)
|
package/dist/core/git-iso.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { GitStatusSnapshot } from "./git-state.ts";
|
|
2
2
|
export declare class GitIsoError extends Error {
|
|
3
3
|
constructor(root: string, operation: string, cause: unknown);
|
|
4
4
|
}
|
|
@@ -7,6 +7,7 @@ export default class GitIso {
|
|
|
7
7
|
static trackedFiles(root: string, cache: object): Promise<string[]>;
|
|
8
8
|
static untrackedFiles(root: string, cache: object): Promise<string[]>;
|
|
9
9
|
static repoToplevel(dir: string): Promise<string | null>;
|
|
10
|
-
static status(
|
|
10
|
+
static status(workspaceRoot: string, repositoryRoot?: string): Promise<GitStatusSnapshot>;
|
|
11
|
+
static add(root: string, filepath: string): Promise<void>;
|
|
11
12
|
}
|
|
12
13
|
//# sourceMappingURL=git-iso.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-iso.d.ts","sourceRoot":"","sources":["../../src/core/git-iso.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"git-iso.d.ts","sourceRoot":"","sources":["../../src/core/git-iso.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGxD,qBAAa,WAAY,SAAQ,KAAK;IAClC,YAAY,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAkB1D;CACJ;AAED,MAAM,CAAC,OAAO,OAAO,MAAM;;IA0CvB,OAAa,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAGxE;IAaD,OAAa,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAE1E;IAqED,OAAa,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAM7D;IAKD,OAAa,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,cAAc,GAAE,MAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAE7G;IAuED,OAAa,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9D;CACJ"}
|
package/dist/core/git-iso.js
CHANGED
|
@@ -8,6 +8,7 @@ import ignore from "ignore";
|
|
|
8
8
|
import { readdir, readFile } from "node:fs/promises";
|
|
9
9
|
import { existsSync } from "node:fs";
|
|
10
10
|
import { join } from "node:path";
|
|
11
|
+
import Namespace from "./namespace.js";
|
|
11
12
|
export class GitIsoError extends Error {
|
|
12
13
|
constructor(root, operation, cause) {
|
|
13
14
|
const detail = typeof cause === "object"
|
|
@@ -183,28 +184,39 @@ export default class GitIso {
|
|
|
183
184
|
// Working-tree status — parity with `git status --porcelain --branch`: branch, ahead/behind
|
|
184
185
|
// the configured upstream, and staged/unstaged/untracked counts. Repository incompatibilities
|
|
185
186
|
// surface as GitIsoError; GitState distinguishes the ordinary non-repo case before this call.
|
|
186
|
-
static async status(
|
|
187
|
-
return GitIso.#read(
|
|
187
|
+
static async status(workspaceRoot, repositoryRoot = workspaceRoot) {
|
|
188
|
+
return GitIso.#read(repositoryRoot, "reading working-tree status", () => GitIso.#status(workspaceRoot, repositoryRoot));
|
|
188
189
|
}
|
|
189
|
-
static async #status(
|
|
190
|
+
static async #status(workspaceRoot, repositoryRoot) {
|
|
190
191
|
const cache = {};
|
|
191
|
-
const branch = await git.currentBranch({ fs, dir:
|
|
192
|
-
const matrix = await git.statusMatrix({ fs, dir:
|
|
192
|
+
const branch = await git.currentBranch({ fs, dir: repositoryRoot, fullname: false }) ?? "HEAD"; // detached → HEAD, as porcelain renders it
|
|
193
|
+
const matrix = await git.statusMatrix({ fs, dir: repositoryRoot, cache });
|
|
193
194
|
let staged = 0;
|
|
194
195
|
let unstaged = 0;
|
|
195
196
|
let untracked = 0;
|
|
196
|
-
|
|
197
|
+
const files = [];
|
|
198
|
+
for (const [filepath, head, workdir, stage] of matrix) {
|
|
199
|
+
const path = Namespace.fromRepositoryPath(filepath, workspaceRoot, repositoryRoot);
|
|
197
200
|
if (head === 0 && stage === 0 && workdir === 2) {
|
|
198
201
|
untracked++;
|
|
202
|
+
files.push({ path, status: "??" });
|
|
199
203
|
continue;
|
|
200
204
|
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
if (
|
|
204
|
-
|
|
205
|
+
const isStaged = head === 1 ? stage !== 1 : stage !== 0;
|
|
206
|
+
const isUnstaged = (workdir === 2 && stage !== 2) || (workdir === 0 && stage !== 0);
|
|
207
|
+
if (isStaged)
|
|
208
|
+
staged++;
|
|
209
|
+
if (isUnstaged)
|
|
210
|
+
unstaged++;
|
|
211
|
+
if (isStaged || isUnstaged) {
|
|
212
|
+
const index = isStaged ? (head === 0 ? "A" : stage === 0 ? "D" : "M") : " ";
|
|
213
|
+
const worktree = isUnstaged ? (workdir === 0 ? "D" : "M") : " ";
|
|
214
|
+
files.push({ path, status: `${index}${worktree}` });
|
|
215
|
+
}
|
|
205
216
|
}
|
|
206
|
-
|
|
207
|
-
|
|
217
|
+
files.sort((a, b) => a.path.localeCompare(b.path));
|
|
218
|
+
const { ahead, behind } = await GitIso.#aheadBehind(repositoryRoot, branch, cache);
|
|
219
|
+
return { branch, ahead, behind, staged, unstaged, untracked, files };
|
|
208
220
|
}
|
|
209
221
|
// ahead/behind vs the branch's configured upstream (branch.<name>.remote + .merge →
|
|
210
222
|
// refs/remotes/<remote>/<branch>). No upstream configured or never fetched → 0/0, the
|
|
@@ -248,5 +260,8 @@ export default class GitIso {
|
|
|
248
260
|
}
|
|
249
261
|
return count;
|
|
250
262
|
}
|
|
263
|
+
static async add(root, filepath) {
|
|
264
|
+
await git.add({ fs, dir: root, filepath });
|
|
265
|
+
}
|
|
251
266
|
}
|
|
252
267
|
//# sourceMappingURL=git-iso.js.map
|