@plurnk/plurnk-service 0.3.0 → 0.4.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/SPEC.md +35 -26
- package/dist/core/ChannelWrite.d.ts +10 -0
- package/dist/core/ChannelWrite.d.ts.map +1 -1
- package/dist/core/ChannelWrite.js.map +1 -1
- package/dist/core/Engine.d.ts +9 -1
- package/dist/core/Engine.d.ts.map +1 -1
- package/dist/core/Engine.js +260 -53
- package/dist/core/Engine.js.map +1 -1
- package/dist/core/line-marker.d.ts +23 -0
- package/dist/core/line-marker.d.ts.map +1 -0
- package/dist/core/line-marker.js +321 -0
- package/dist/core/line-marker.js.map +1 -0
- package/dist/core/matcher.d.ts +14 -0
- package/dist/core/matcher.d.ts.map +1 -0
- package/dist/core/matcher.js +195 -0
- package/dist/core/matcher.js.map +1 -0
- package/dist/core/mimetype-binary.d.ts +6 -0
- package/dist/core/mimetype-binary.d.ts.map +1 -0
- package/dist/core/mimetype-binary.js +82 -0
- package/dist/core/mimetype-binary.js.map +1 -0
- package/dist/core/packet-wire.d.ts.map +1 -1
- package/dist/core/packet-wire.js +97 -21
- package/dist/core/packet-wire.js.map +1 -1
- package/dist/core/path-mimetype.d.ts +3 -0
- package/dist/core/path-mimetype.d.ts.map +1 -0
- package/dist/core/path-mimetype.js +47 -0
- package/dist/core/path-mimetype.js.map +1 -0
- package/dist/core/scheme-types.d.ts +5 -0
- package/dist/core/scheme-types.d.ts.map +1 -1
- package/dist/core/scheme-types.js.map +1 -1
- package/dist/schemes/Exec.d.ts +30 -1
- package/dist/schemes/Exec.d.ts.map +1 -1
- package/dist/schemes/Exec.js +229 -6
- package/dist/schemes/Exec.js.map +1 -1
- package/dist/schemes/File.d.ts +4 -0
- package/dist/schemes/File.d.ts.map +1 -1
- package/dist/schemes/File.js +107 -23
- package/dist/schemes/File.js.map +1 -1
- package/dist/schemes/Log.d.ts +2 -0
- package/dist/schemes/Log.d.ts.map +1 -1
- package/dist/schemes/Log.js +82 -13
- package/dist/schemes/Log.js.map +1 -1
- package/dist/schemes/Plurnk.js +3 -3
- package/dist/schemes/Plurnk.js.map +1 -1
- package/dist/schemes/_entry-crud.d.ts +2 -0
- package/dist/schemes/_entry-crud.d.ts.map +1 -1
- package/dist/schemes/_entry-crud.js +1 -0
- package/dist/schemes/_entry-crud.js.map +1 -1
- package/dist/schemes/_entry-find.d.ts.map +1 -1
- package/dist/schemes/_entry-find.js +64 -15
- package/dist/schemes/_entry-find.js.map +1 -1
- package/dist/schemes/_entry-ops.d.ts +3 -0
- package/dist/schemes/_entry-ops.d.ts.map +1 -1
- package/dist/schemes/_entry-ops.js +268 -55
- package/dist/schemes/_entry-ops.js.map +1 -1
- package/dist/schemes/_entry-send.d.ts.map +1 -1
- package/dist/schemes/_entry-send.js +14 -7
- package/dist/schemes/_entry-send.js.map +1 -1
- package/dist/server/ClientConnection.d.ts +3 -2
- package/dist/server/ClientConnection.d.ts.map +1 -1
- package/dist/server/ClientConnection.js +4 -1
- package/dist/server/ClientConnection.js.map +1 -1
- package/dist/server/Daemon.d.ts +40 -1
- package/dist/server/Daemon.d.ts.map +1 -1
- package/dist/server/Daemon.js +319 -1
- package/dist/server/Daemon.js.map +1 -1
- package/dist/server/MethodRegistry.d.ts +29 -0
- package/dist/server/MethodRegistry.d.ts.map +1 -1
- package/dist/server/MethodRegistry.js.map +1 -1
- package/dist/server/dsl.d.ts +2 -2
- package/dist/server/dsl.d.ts.map +1 -1
- package/dist/server/dsl.js +10 -10
- package/dist/server/dsl.js.map +1 -1
- package/dist/server/methods/entry_read.js +5 -5
- package/dist/server/methods/entry_read.js.map +1 -1
- package/dist/server/methods/loop_cancel.d.ts +3 -0
- package/dist/server/methods/loop_cancel.d.ts.map +1 -0
- package/dist/server/methods/loop_cancel.js +27 -0
- package/dist/server/methods/loop_cancel.js.map +1 -0
- package/dist/server/methods/loop_run.d.ts.map +1 -1
- package/dist/server/methods/loop_run.js +46 -47
- package/dist/server/methods/loop_run.js.map +1 -1
- package/dist/server/methods/op_edit.js +3 -3
- package/dist/server/methods/op_edit.js.map +1 -1
- package/dist/server/methods/op_hide.js +3 -3
- package/dist/server/methods/op_hide.js.map +1 -1
- package/dist/server/methods/op_read.js +3 -3
- package/dist/server/methods/op_read.js.map +1 -1
- package/dist/server/methods/op_show.js +3 -3
- package/dist/server/methods/op_show.js.map +1 -1
- package/migrations/001_schema.sql +1 -1
- package/package.json +5 -4
package/dist/schemes/Log.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { sliceLines, sliceJsonItems } from "../core/line-marker.js";
|
|
2
|
+
import { matchAgainstContent } from "../core/matcher.js";
|
|
3
|
+
import { isJsonMimetype, TEXT_PRIMITIVE_MIMETYPE } from "../core/mimetype-binary.js";
|
|
1
4
|
// log://<loop_seq>/<turn_seq>/<sequence>[/<op>] — the trailing /op segment
|
|
2
5
|
// is wire-rendering self-documentation derived from the row's `op` field;
|
|
3
6
|
// parsing accepts it (or omits it) and identifies the row by coordinate.
|
|
@@ -25,24 +28,90 @@ export default class Log {
|
|
|
25
28
|
};
|
|
26
29
|
async read(statement, ctx) {
|
|
27
30
|
const { db, runId } = ctx;
|
|
28
|
-
if (statement.
|
|
31
|
+
if (statement.target === null)
|
|
29
32
|
return { status: 400, content: null, mimetype: null };
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
return { status: 501, content: null, mimetype: null };
|
|
36
|
-
const pathname = statement.path.kind === "url" ? statement.path.pathname : statement.path.raw;
|
|
33
|
+
// log:// entries have no tag concept (engine-written events).
|
|
34
|
+
if (Array.isArray(statement.signal) && statement.signal.length > 0) {
|
|
35
|
+
return { status: 404, content: null, mimetype: null };
|
|
36
|
+
}
|
|
37
|
+
const pathname = statement.target.kind === "url" ? statement.target.pathname : statement.target.raw;
|
|
37
38
|
const coord = parseCoordinate(pathname);
|
|
38
39
|
if (coord === null)
|
|
39
40
|
return { status: 400, content: null, mimetype: null };
|
|
40
41
|
const row = await db.log_read_by_coordinate.get({ run_id: runId, loop_seq: coord.loopSeq, turn_seq: coord.turnSeq, sequence: coord.sequence });
|
|
41
42
|
if (row === undefined)
|
|
42
43
|
return { status: 404, content: null, mimetype: null };
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
// Unwrap the stored rx (JSON-serialized DispatchResult). The original
|
|
45
|
+
// op's body is at rx.content with its own mimetype at rx.mimetype.
|
|
46
|
+
// Returning rx.content directly (NOT a "EDIT target\nstatus: N\n
|
|
47
|
+
// response: …" summary wrap) is what makes matcher chaining work:
|
|
48
|
+
// `<<READ(log://N/M/K):$[0].matched:READ` then sees the prior op's
|
|
49
|
+
// actual result body and can jsonpath / xpath it cleanly.
|
|
50
|
+
//
|
|
51
|
+
// For ops that don't produce a content body (EDIT/COPY/MOVE/SEND
|
|
52
|
+
// return status+metadata), surface the rx itself as a JSON document
|
|
53
|
+
// so the model can still inspect what happened.
|
|
54
|
+
let underlyingContent;
|
|
55
|
+
let underlyingMimetype;
|
|
56
|
+
try {
|
|
57
|
+
const rx = JSON.parse(row.rx);
|
|
58
|
+
if (typeof rx.content === "string") {
|
|
59
|
+
underlyingContent = rx.content;
|
|
60
|
+
underlyingMimetype = typeof rx.mimetype === "string" ? rx.mimetype : "text/plain";
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
// Non-content op (EDIT/SEND/etc.) — render the whole rx as JSON.
|
|
64
|
+
underlyingContent = JSON.stringify(rx, null, 2);
|
|
65
|
+
underlyingMimetype = "application/json";
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
underlyingContent = row.rx;
|
|
70
|
+
underlyingMimetype = "text/plain";
|
|
71
|
+
}
|
|
72
|
+
// `<L>` scopes; body matches within the scope (slice-then-match).
|
|
73
|
+
// `<L>` dispatches on the unwrapped rx's mimetype: JSON → sliceJsonItems,
|
|
74
|
+
// line-navigable → sliceLines. This is what makes
|
|
75
|
+
// <<READ(log://N/M/K)<1>::READ pick the first item of a matcher result.
|
|
76
|
+
let workingContent = underlyingContent;
|
|
77
|
+
let workingStart = 1;
|
|
78
|
+
let workingMimetypeForSlice = TEXT_PRIMITIVE_MIMETYPE;
|
|
79
|
+
if (statement.lineMarker !== null) {
|
|
80
|
+
if (isJsonMimetype(underlyingMimetype)) {
|
|
81
|
+
const sliced = sliceJsonItems(underlyingContent, statement.lineMarker);
|
|
82
|
+
if (sliced.status !== 200)
|
|
83
|
+
return { status: sliced.status, content: null, mimetype: underlyingMimetype };
|
|
84
|
+
workingContent = sliced.body ?? "[]";
|
|
85
|
+
workingStart = null;
|
|
86
|
+
workingMimetypeForSlice = "application/json";
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
const sliced = sliceLines(underlyingContent, statement.lineMarker);
|
|
90
|
+
if (sliced.status !== 200)
|
|
91
|
+
return { status: sliced.status, content: null, mimetype: underlyingMimetype };
|
|
92
|
+
workingContent = sliced.text ?? "";
|
|
93
|
+
workingStart = sliced.startLine ?? null;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (statement.body !== null) {
|
|
97
|
+
const matched = matchAgainstContent(statement.body, workingContent, underlyingMimetype, workingStart ?? 1);
|
|
98
|
+
if (matched.status === 204) {
|
|
99
|
+
return { status: 204, content: "", mimetype: "application/json", startLine: null, matches: 0 };
|
|
100
|
+
}
|
|
101
|
+
if (matched.status !== 200)
|
|
102
|
+
return { status: matched.status, content: null, mimetype: underlyingMimetype };
|
|
103
|
+
return { status: 200, content: matched.body ?? "[]", mimetype: "application/json", startLine: null, matches: matched.matches };
|
|
104
|
+
}
|
|
105
|
+
if (statement.lineMarker !== null) {
|
|
106
|
+
const isEmptyJsonArray = workingMimetypeForSlice === "application/json" && workingContent === "[]";
|
|
107
|
+
if (workingContent === "" || isEmptyJsonArray) {
|
|
108
|
+
return { status: 204, content: "", mimetype: workingMimetypeForSlice, startLine: null };
|
|
109
|
+
}
|
|
110
|
+
return { status: 200, content: workingContent, mimetype: workingMimetypeForSlice, startLine: workingStart };
|
|
111
|
+
}
|
|
112
|
+
if (underlyingContent === "")
|
|
113
|
+
return { status: 204, content: "", mimetype: underlyingMimetype, startLine: null };
|
|
114
|
+
return { status: 200, content: underlyingContent, mimetype: underlyingMimetype, startLine: 1 };
|
|
46
115
|
}
|
|
47
116
|
async show(statement, ctx) {
|
|
48
117
|
return this.#setIndexed(statement, ctx, 1);
|
|
@@ -51,12 +120,12 @@ export default class Log {
|
|
|
51
120
|
return this.#setIndexed(statement, ctx, 0);
|
|
52
121
|
}
|
|
53
122
|
async #setIndexed(statement, ctx, indexed) {
|
|
54
|
-
if (statement.
|
|
123
|
+
if (statement.target === null)
|
|
55
124
|
return { status: 400 };
|
|
56
125
|
if (statement.lineMarker !== null)
|
|
57
126
|
return { status: 501 };
|
|
58
127
|
const { db, runId } = ctx;
|
|
59
|
-
const pathname = statement.
|
|
128
|
+
const pathname = statement.target.kind === "url" ? statement.target.pathname : statement.target.raw;
|
|
60
129
|
const coord = parseCoordinate(pathname);
|
|
61
130
|
if (coord === null)
|
|
62
131
|
return { status: 400 };
|
package/dist/schemes/Log.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Log.js","sourceRoot":"","sources":["../../src/schemes/Log.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Log.js","sourceRoot":"","sources":["../../src/schemes/Log.ts"],"names":[],"mappings":"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"}
|
package/dist/schemes/Plurnk.js
CHANGED
|
@@ -21,9 +21,9 @@ export default class Plurnk {
|
|
|
21
21
|
modelVisible: true,
|
|
22
22
|
};
|
|
23
23
|
async edit(statement, ctx) {
|
|
24
|
-
const pathname = statement.
|
|
25
|
-
? statement.
|
|
26
|
-
: statement.
|
|
24
|
+
const pathname = statement.target !== null && statement.target.kind === "url"
|
|
25
|
+
? statement.target.pathname
|
|
26
|
+
: statement.target?.raw ?? "";
|
|
27
27
|
if (ctx.writer === "model" && pathname.startsWith("prompt/")) {
|
|
28
28
|
return { status: 403, entryId: null, channel: null };
|
|
29
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Plurnk.js","sourceRoot":"","sources":["../../src/schemes/Plurnk.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEzG,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAGtD,0EAA0E;AAC1E,yEAAyE;AACzE,8DAA8D;AAC9D,EAAE;AACF,0EAA0E;AAC1E,wEAAwE;AACxE,6EAA6E;AAC7E,MAAM,CAAC,OAAO,OAAO,MAAM;IACvB,MAAM,CAAC,QAAQ,GAAmB;QAC9B,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE;QACnC,cAAc,EAAE,MAAM;QACtB,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC;QACzC,QAAQ,EAAE,KAAK;QACf,YAAY,EAAE,IAAI;KACrB,CAAC;IAEF,KAAK,CAAC,IAAI,CAAC,SAAwB,EAAE,GAAwB;QACzD,MAAM,QAAQ,GAAG,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"Plurnk.js","sourceRoot":"","sources":["../../src/schemes/Plurnk.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { PlurnkSchemeContext } from "../core/scheme-types.ts";
|
|
2
|
+
export type ChannelState = "static" | "active" | "closed" | "errored";
|
|
2
3
|
export interface EntryData {
|
|
3
4
|
channels: Record<string, {
|
|
4
5
|
content: string;
|
|
5
6
|
mimetype: string;
|
|
7
|
+
state?: ChannelState;
|
|
6
8
|
}>;
|
|
7
9
|
tags: string[];
|
|
8
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_entry-crud.d.ts","sourceRoot":"","sources":["../../src/schemes/_entry-crud.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,MAAM,WAAW,SAAS;IACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"_entry-crud.d.ts","sourceRoot":"","sources":["../../src/schemes/_entry-crud.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEtE,MAAM,WAAW,SAAS;IACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,YAAY,CAAA;KAAE,CAAC,CAAC;IACtF,IAAI,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAC9B,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,SAAS,GAAU,UAAU,MAAM,EAAE,KAAK,mBAAmB,EAAE,QAAQ,MAAM,GAAG,IAAI,KAAG,OAAO,CAAC,eAAe,CAe1H,CAAC;AAEF,eAAO,MAAM,UAAU,GAAU,UAAU,MAAM,EAAE,OAAO,SAAS,EAAE,KAAK,mBAAmB,EAAE,QAAQ,MAAM,GAAG,IAAI,KAAG,OAAO,CAAC,gBAAgB,CA8B9I,CAAC;AAEF,eAAO,MAAM,WAAW,GAAU,UAAU,MAAM,EAAE,KAAK,mBAAmB,EAAE,QAAQ,MAAM,GAAG,IAAI,KAAG,OAAO,CAAC,iBAAiB,CAO9H,CAAC"}
|
|
@@ -36,6 +36,7 @@ export const writeEntry = async (pathname, entry, ctx, scheme) => {
|
|
|
36
36
|
for (const [channelName, channelData] of Object.entries(entry.channels)) {
|
|
37
37
|
await db.crud_write_channel.run({
|
|
38
38
|
entry_id: entryId, name: channelName, content: channelData.content, mimetype: channelData.mimetype,
|
|
39
|
+
state: channelData.state ?? "static",
|
|
39
40
|
});
|
|
40
41
|
await db.crud_write_visibility.run({ run_id: runId, entry_id: entryId, channel: channelName });
|
|
41
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_entry-crud.js","sourceRoot":"","sources":["../../src/schemes/_entry-crud.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,uEAAuE;AACvE,qDAAqD;
|
|
1
|
+
{"version":3,"file":"_entry-crud.js","sourceRoot":"","sources":["../../src/schemes/_entry-crud.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_entry-find.d.ts","sourceRoot":"","sources":["../../src/schemes/_entry-find.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"_entry-find.d.ts","sourceRoot":"","sources":["../../src/schemes/_entry-find.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,MAAM,WAAW,UAAU;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,EAAE,CAAC;CACrB;AA2BD,eAAO,MAAM,kBAAkB,GAAU,WAAW,aAAa,EAAE,KAAK,mBAAmB,EAAE,QAAQ,MAAM,KAAG,OAAO,CAAC,UAAU,CA+C/H,CAAC"}
|
|
@@ -1,41 +1,90 @@
|
|
|
1
|
-
// FIND helper for entry-bearing schemes (SPEC §6.6).
|
|
2
|
-
//
|
|
3
|
-
//
|
|
1
|
+
// FIND helper for entry-bearing schemes (SPEC §6.6; plurnk.md FIND row).
|
|
2
|
+
//
|
|
3
|
+
// Slot semantics:
|
|
4
|
+
// target — required scope (path or glob); selects which entries are candidates
|
|
5
|
+
// body — matcher dispatch (plurnk.md §"Body matcher dispatch"):
|
|
6
|
+
// glob / regex → applied to pathname (path-like dialects)
|
|
7
|
+
// xpath / jsonpath → applied to content (structure-like;
|
|
8
|
+
// 501 pending plurnk-mimetypes#3)
|
|
9
|
+
// signal — tag filter: candidate entry must have ALL listed tags
|
|
10
|
+
// <L> — results pagination: select results N..M from the matched list
|
|
4
11
|
const scopePathnameOf = (statement) => {
|
|
5
|
-
const path = statement.
|
|
12
|
+
const path = statement.target;
|
|
6
13
|
if (path === null)
|
|
7
14
|
return null;
|
|
8
15
|
if (path.kind === "url")
|
|
9
16
|
return path.pathname;
|
|
10
17
|
return path.raw;
|
|
11
18
|
};
|
|
19
|
+
const paginate = (items, marker) => {
|
|
20
|
+
const total = items.length;
|
|
21
|
+
const { first, last } = marker;
|
|
22
|
+
if (last === null) {
|
|
23
|
+
if (first === 0 || first === -1)
|
|
24
|
+
return { status: 200, items: [] };
|
|
25
|
+
if (first > 0 && first <= total)
|
|
26
|
+
return { status: 200, items: [items[first - 1]] };
|
|
27
|
+
return { status: 416 };
|
|
28
|
+
}
|
|
29
|
+
let n = first;
|
|
30
|
+
let m = last;
|
|
31
|
+
if (n === 0)
|
|
32
|
+
n = 1;
|
|
33
|
+
if (m === -1)
|
|
34
|
+
m = total;
|
|
35
|
+
if (n < 1 || n > total)
|
|
36
|
+
return { status: 416 };
|
|
37
|
+
if (m < 1 || m > total)
|
|
38
|
+
return { status: 416 };
|
|
39
|
+
if (n > m)
|
|
40
|
+
return { status: 416 };
|
|
41
|
+
return { status: 200, items: items.slice(n - 1, m) };
|
|
42
|
+
};
|
|
12
43
|
export const findSessionEntries = async (statement, ctx, scheme) => {
|
|
13
|
-
if (statement.
|
|
44
|
+
if (statement.target === null)
|
|
14
45
|
return { status: 400, content: null, mimetype: null, results: [] };
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
let pathnamePattern = null;
|
|
46
|
+
let regexFilter = null;
|
|
47
|
+
let pathnameGlob = null;
|
|
18
48
|
if (statement.body !== null) {
|
|
19
|
-
if (statement.body.dialect
|
|
49
|
+
if (statement.body.dialect === "glob") {
|
|
50
|
+
pathnameGlob = statement.body.raw;
|
|
51
|
+
}
|
|
52
|
+
else if (statement.body.dialect === "regex") {
|
|
53
|
+
try {
|
|
54
|
+
regexFilter = new RegExp(statement.body.pattern, statement.body.flags);
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return { status: 400, content: null, mimetype: null, results: [] };
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
// xpath / jsonpath need per-mimetype content matching (plurnk-mimetypes#3).
|
|
20
62
|
return { status: 501, content: null, mimetype: null, results: [] };
|
|
21
63
|
}
|
|
22
|
-
pathnamePattern = statement.body.raw;
|
|
23
64
|
}
|
|
24
65
|
const scopePathname = scopePathnameOf(statement);
|
|
25
66
|
const scopeGlob = scopePathname !== null && scopePathname.length > 0 ? `${scopePathname}*` : null;
|
|
26
67
|
const tags = Array.isArray(statement.signal) ? statement.signal : [];
|
|
27
|
-
// SqlRite auto-stringifies arrays passed as params; SQL side uses json_each.
|
|
28
68
|
const tagsParam = tags.length > 0 ? JSON.stringify(tags) : "[]";
|
|
29
69
|
const { db, sessionId } = ctx;
|
|
30
70
|
const rows = await db.find_session_entries.all({
|
|
31
71
|
session_id: sessionId,
|
|
32
72
|
scheme,
|
|
33
73
|
scope_pathname: scopeGlob,
|
|
34
|
-
pathname_pattern:
|
|
74
|
+
pathname_pattern: pathnameGlob,
|
|
35
75
|
tags: tagsParam,
|
|
36
76
|
});
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
77
|
+
let pathnames = rows.map((r) => r.pathname);
|
|
78
|
+
if (regexFilter !== null) {
|
|
79
|
+
pathnames = pathnames.filter((p) => regexFilter.test(p));
|
|
80
|
+
}
|
|
81
|
+
if (statement.lineMarker !== null) {
|
|
82
|
+
const page = paginate(pathnames, statement.lineMarker);
|
|
83
|
+
if (page.status !== 200)
|
|
84
|
+
return { status: page.status, content: null, mimetype: null, results: [] };
|
|
85
|
+
pathnames = page.items ?? [];
|
|
86
|
+
}
|
|
87
|
+
const results = pathnames.map((p) => `${scheme}://${p}`);
|
|
88
|
+
return { status: 200, content: results.join("\n"), mimetype: "text/plain", results };
|
|
40
89
|
};
|
|
41
90
|
//# sourceMappingURL=_entry-find.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_entry-find.js","sourceRoot":"","sources":["../../src/schemes/_entry-find.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"_entry-find.js","sourceRoot":"","sources":["../../src/schemes/_entry-find.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,12 +4,15 @@ export type EditResult = {
|
|
|
4
4
|
status: number;
|
|
5
5
|
entryId: number | null;
|
|
6
6
|
channel: string | null;
|
|
7
|
+
diff?: string;
|
|
7
8
|
};
|
|
8
9
|
export type ReadResult = {
|
|
9
10
|
status: number;
|
|
10
11
|
content: string | null;
|
|
11
12
|
mimetype: string | null;
|
|
12
13
|
channel: string | null;
|
|
14
|
+
startLine?: number | null;
|
|
15
|
+
matches?: number | null;
|
|
13
16
|
};
|
|
14
17
|
export type ShowHideResult = {
|
|
15
18
|
status: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_entry-ops.d.ts","sourceRoot":"","sources":["../../src/schemes/_entry-ops.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"_entry-ops.d.ts","sourceRoot":"","sources":["../../src/schemes/_entry-ops.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGzG,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAgBnF,MAAM,MAAM,UAAU,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAQ3G,MAAM,MAAM,UAAU,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AACzK,MAAM,MAAM,cAAc,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAqBhD,eAAO,MAAM,gBAAgB,GAAU,WAAW,aAAa,EAAE,KAAK,mBAAmB,EAAE,UAAU,cAAc,KAAG,OAAO,CAAC,UAAU,CAkGvI,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAU,WAAW,aAAa,EAAE,KAAK,mBAAmB,EAAE,UAAU,cAAc,KAAG,OAAO,CAAC,UAAU,CAuFvI,CAAC;AAiIF,eAAO,MAAM,gBAAgB,GAAU,WAAW,aAAa,GAAG,aAAa,EAAE,KAAK,mBAAmB,EAAE,UAAU,cAAc,KAAG,OAAO,CAAC,cAAc,CAClG,CAAC;AAE3D,eAAO,MAAM,gBAAgB,GAAU,WAAW,aAAa,GAAG,aAAa,EAAE,KAAK,mBAAmB,EAAE,UAAU,cAAc,KAAG,OAAO,CAAC,cAAc,CAClG,CAAC"}
|