@poe-platform/safe-bash 0.1.506 → 0.1.508
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/safe-bash/chunks/chunk-3ISDVRIM.js +3821 -0
- package/dist/safe-bash/chunks/chunk-3ISDVRIM.js.map +7 -0
- package/dist/safe-bash/commands/node/index.d.ts +0 -1
- package/dist/safe-bash/commands/node/index.d.ts.map +1 -1
- package/dist/safe-bash/commands/node/index.js +0 -1
- package/dist/safe-bash/commands/node/index.js.map +1 -1
- package/dist/safe-bash/commands/xml/evaluate.d.ts +27 -0
- package/dist/safe-bash/commands/xml/evaluate.d.ts.map +1 -0
- package/dist/safe-bash/commands/xml/evaluate.js +208 -0
- package/dist/safe-bash/commands/xml/evaluate.js.map +1 -0
- package/dist/safe-bash/commands/xml/index.browser.js +11 -0
- package/dist/safe-bash/commands/xml/index.browser.js.map +7 -0
- package/dist/safe-bash/commands/xml/index.d.ts +7 -0
- package/dist/safe-bash/commands/xml/index.d.ts.map +1 -0
- package/dist/safe-bash/commands/xml/index.js +196 -0
- package/dist/safe-bash/commands/xml/index.js.map +1 -0
- package/dist/safe-bash/commands/xml/limits.d.ts +36 -0
- package/dist/safe-bash/commands/xml/limits.d.ts.map +1 -0
- package/dist/safe-bash/commands/xml/limits.js +55 -0
- package/dist/safe-bash/commands/xml/limits.js.map +1 -0
- package/dist/safe-bash/commands/xml/query.d.ts +21 -0
- package/dist/safe-bash/commands/xml/query.d.ts.map +1 -0
- package/dist/safe-bash/commands/xml/query.js +111 -0
- package/dist/safe-bash/commands/xml/query.js.map +1 -0
- package/dist/safe-bash/core.browser.js +990 -3879
- package/dist/safe-bash/core.browser.js.map +4 -4
- package/dist/safe-bash/core.d.ts +1 -0
- package/dist/safe-bash/core.d.ts.map +1 -1
- package/dist/safe-bash/core.js +1 -0
- package/dist/safe-bash/core.js.map +1 -1
- package/dist/safe-bash/node-unavailable.d.ts +2 -0
- package/dist/safe-bash/node-unavailable.d.ts.map +1 -0
- package/dist/safe-bash/node-unavailable.js +2 -0
- package/dist/safe-bash/node-unavailable.js.map +1 -0
- package/dist/safe-bash/plugins/composition.d.ts +2 -0
- package/dist/safe-bash/plugins/composition.d.ts.map +1 -1
- package/dist/safe-bash/plugins/composition.js +3 -1
- package/dist/safe-bash/plugins/composition.js.map +1 -1
- package/package.json +22 -2
|
@@ -3,7 +3,6 @@ import type { VirtualShellPlugin } from "../../contracts/plugin.js";
|
|
|
3
3
|
import { type NodeCommandOptions } from "./types.js";
|
|
4
4
|
export { NODE_PROFILE, NodeProfileError, NodeUsageError, nodeLimits } from "./types.js";
|
|
5
5
|
export type { NodeCommandOptions, NodeProviderCommandOptions, NodeSafeJsCommandOptions, NodeCompletion, NodeGrants, NodeGuestError, NodeHostRequest, NodeHostResponse, NodeHostServices, NodeObservation, NodeReason, NodeRetirement, NodeRuntimeProvider, NodeSelector, NodeSession, NodeSourceRequest } from "./types.js";
|
|
6
|
-
export { createNodeWorkerProvider } from "./worker-provider.js";
|
|
7
6
|
export { NODE_ENGINE_ABI } from "./worker-types.js";
|
|
8
7
|
export type { NodeBridge, NodeEngineAdapter, NodeEngineInput, NodeEngineResult, NodeWorkerEvent, NodeWorkerProviderOptions } from "./worker-types.js";
|
|
9
8
|
export type NodeCommandsOptions<Budget = unknown> = NodeCommandOptions<Budget> & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/node/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,iBAAiB,EAAiB,MAAM,4BAA4B,CAAC;AACnG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAQpE,OAAO,EAA8D,KAAK,kBAAkB,EAAiH,MAAM,YAAY,CAAC;AAGhO,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxF,YAAY,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,mBAAmB,EAAE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC5T,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/node/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,iBAAiB,EAAiB,MAAM,4BAA4B,CAAC;AACnG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAQpE,OAAO,EAA8D,KAAK,kBAAkB,EAAiH,MAAM,YAAY,CAAC;AAGhO,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxF,YAAY,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,mBAAmB,EAAE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC5T,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEtJ,MAAM,MAAM,mBAAmB,CAAC,MAAM,GAAG,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,GAAG;IAC/E,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAA;AAUD,wBAAgB,kBAAkB,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,EAAE,mBAAmB,CAAC,MAAM,CAAC,GAAG,SAAS,iBAAiB,EAAE,CAEvH;AAED,wBAAgB,YAAY,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,EAAE,mBAAmB,CAAC,MAAM,CAAC,GAAG,kBAAkB,CASvG;AAQD,wBAAgB,iBAAiB,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,EAAE,kBAAkB,CAAC,MAAM,CAAC,GAAG,iBAAiB,CAmH1G"}
|
|
@@ -8,7 +8,6 @@ import { createSafeJsNodeCommand } from "./safejs.js";
|
|
|
8
8
|
import { NODE_PROFILE, NodeProfileError, NodeUsageError, nodeLimits } from "./types.js";
|
|
9
9
|
import { environment, grants, record, text } from "./values.js";
|
|
10
10
|
export { NODE_PROFILE, NodeProfileError, NodeUsageError, nodeLimits } from "./types.js";
|
|
11
|
-
export { createNodeWorkerProvider } from "./worker-provider.js";
|
|
12
11
|
export { NODE_ENGINE_ABI } from "./worker-types.js";
|
|
13
12
|
function commandConfiguration(options) {
|
|
14
13
|
const settings = record(options, [], ["provider", "grants", "runtime", "limits", "replace"]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAGlC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,UAAU,EAA0I,MAAM,YAAY,CAAC;AAChO,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEhE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/node/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { XmlAttribute, XmlContent, XmlElement } from "@poe-platform/safe-fs/core";
|
|
2
|
+
import type { Query } from "./query.js";
|
|
3
|
+
import { XmlBudget } from "./limits.js";
|
|
4
|
+
type Container = {
|
|
5
|
+
kind: "document";
|
|
6
|
+
children: Node[];
|
|
7
|
+
} | ElementNode;
|
|
8
|
+
interface ElementNode {
|
|
9
|
+
kind: "element";
|
|
10
|
+
value: XmlElement;
|
|
11
|
+
children: Node[];
|
|
12
|
+
attributes: AttributeNode[];
|
|
13
|
+
}
|
|
14
|
+
interface AttributeNode {
|
|
15
|
+
kind: "attribute";
|
|
16
|
+
value: XmlAttribute;
|
|
17
|
+
}
|
|
18
|
+
interface ContentNode {
|
|
19
|
+
kind: Exclude<XmlContent["kind"], "element">;
|
|
20
|
+
value: Exclude<XmlContent, XmlElement>;
|
|
21
|
+
}
|
|
22
|
+
export type Node = Container | AttributeNode | ContentNode;
|
|
23
|
+
export declare function evaluate(query: Query, root: XmlElement, budget: XmlBudget): Promise<Node[]>;
|
|
24
|
+
export declare function stringValue(node: Node | undefined, budget: XmlBudget): AsyncGenerator<string>;
|
|
25
|
+
export declare function serialize(node: Node, budget: XmlBudget): AsyncGenerator<string>;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=evaluate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../../../src/commands/xml/evaluate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,KAAK,EAAE,KAAK,EAAa,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,KAAK,SAAS,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,IAAI,EAAE,CAAA;CAAE,GAAG,WAAW,CAAC;AACtE,UAAU,WAAW;IAAG,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;IAAC,UAAU,EAAE,aAAa,EAAE,CAAA;CAAE;AAC3G,UAAU,aAAa;IAAG,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE;AAClE,UAAU,WAAW;IAAG,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;CAAE;AAC9G,MAAM,MAAM,IAAI,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC;AAuC3D,wBAAsB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAkDjG;AAED,wBAAuB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,CAapG;AAED,wBAAuB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,CA2BtF"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import { XmlBudget } from "./limits.js";
|
|
2
|
+
const xmlns = "http://www.w3.org/2000/xmlns/";
|
|
3
|
+
async function indexTree(root, budget) {
|
|
4
|
+
const document = { kind: "document", children: [] };
|
|
5
|
+
const order = [document];
|
|
6
|
+
const pending = [{ parent: document, content: root }];
|
|
7
|
+
while (pending.length) {
|
|
8
|
+
await budget.tick();
|
|
9
|
+
const { parent, content } = pending.pop();
|
|
10
|
+
if (content.kind === "element") {
|
|
11
|
+
const node = { kind: "element", value: content, children: [], attributes: [] };
|
|
12
|
+
parent.children.push(node);
|
|
13
|
+
order.push(node);
|
|
14
|
+
for (const attribute of content.attributes) {
|
|
15
|
+
await budget.tick();
|
|
16
|
+
if (attribute.namespace === xmlns)
|
|
17
|
+
continue;
|
|
18
|
+
const selected = { kind: "attribute", value: attribute };
|
|
19
|
+
node.attributes.push(selected);
|
|
20
|
+
order.push(selected);
|
|
21
|
+
}
|
|
22
|
+
for (let index = content.content.length - 1; index >= 0; index--) {
|
|
23
|
+
await budget.tick();
|
|
24
|
+
pending.push({ parent: node, content: content.content[index] });
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
const node = { kind: content.kind, value: content };
|
|
29
|
+
parent.children.push(node);
|
|
30
|
+
order.push(node);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return { document, order };
|
|
34
|
+
}
|
|
35
|
+
function matches(node, step) {
|
|
36
|
+
if (step.kind === "text")
|
|
37
|
+
return node.kind === "text" || node.kind === "cdata";
|
|
38
|
+
if (node.kind !== step.kind)
|
|
39
|
+
return false;
|
|
40
|
+
if (node.kind === "element" || node.kind === "attribute") {
|
|
41
|
+
return step.name === "*" || node.value.namespace === "" && node.value.localName === step.name;
|
|
42
|
+
}
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
export async function evaluate(query, root, budget) {
|
|
46
|
+
const { document, order } = await indexTree(root, budget);
|
|
47
|
+
let contexts = [document];
|
|
48
|
+
for (const step of query.steps) {
|
|
49
|
+
const parents = new Set();
|
|
50
|
+
const pending = [...contexts];
|
|
51
|
+
while (pending.length) {
|
|
52
|
+
await budget.tick();
|
|
53
|
+
const node = pending.pop();
|
|
54
|
+
if (parents.has(node))
|
|
55
|
+
continue;
|
|
56
|
+
parents.add(node);
|
|
57
|
+
if (step.descendant && (node.kind === "document" || node.kind === "element")) {
|
|
58
|
+
for (const child of node.children) {
|
|
59
|
+
await budget.tick();
|
|
60
|
+
pending.push(child);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
const selected = new Set();
|
|
65
|
+
for (const parent of parents) {
|
|
66
|
+
await budget.tick();
|
|
67
|
+
const candidates = step.kind === "attribute"
|
|
68
|
+
? parent.kind === "element" ? parent.attributes : []
|
|
69
|
+
: parent.kind === "element" || parent.kind === "document" ? parent.children : [];
|
|
70
|
+
let matched = [];
|
|
71
|
+
for (const candidate of candidates) {
|
|
72
|
+
await budget.tick();
|
|
73
|
+
if (matches(candidate, step))
|
|
74
|
+
matched.push(candidate);
|
|
75
|
+
}
|
|
76
|
+
for (const predicate of step.predicates) {
|
|
77
|
+
await budget.tick();
|
|
78
|
+
if (predicate.kind === "position")
|
|
79
|
+
matched = matched[predicate.value - 1] ? [matched[predicate.value - 1]] : [];
|
|
80
|
+
else {
|
|
81
|
+
const filtered = [];
|
|
82
|
+
for (const candidate of matched) {
|
|
83
|
+
await budget.tick();
|
|
84
|
+
if (candidate.kind !== "element")
|
|
85
|
+
continue;
|
|
86
|
+
for (const attribute of candidate.attributes) {
|
|
87
|
+
await budget.tick(attribute.value.value.length + 1);
|
|
88
|
+
if (attribute.value.namespace === "" && attribute.value.localName === predicate.name && attribute.value.value === predicate.value) {
|
|
89
|
+
filtered.push(candidate);
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
matched = filtered;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
for (const node of matched) {
|
|
98
|
+
await budget.tick();
|
|
99
|
+
if (!selected.has(node)) {
|
|
100
|
+
budget.results(selected.size + 1);
|
|
101
|
+
selected.add(node);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
contexts = [];
|
|
106
|
+
for (const node of order) {
|
|
107
|
+
await budget.tick();
|
|
108
|
+
if (selected.has(node))
|
|
109
|
+
contexts.push(node);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return contexts;
|
|
113
|
+
}
|
|
114
|
+
export async function* stringValue(node, budget) {
|
|
115
|
+
if (node === undefined)
|
|
116
|
+
return;
|
|
117
|
+
if (node.kind === "attribute") {
|
|
118
|
+
yield node.value.value;
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
const pending = [node];
|
|
122
|
+
while (pending.length) {
|
|
123
|
+
await budget.tick();
|
|
124
|
+
const current = pending.pop();
|
|
125
|
+
if (current.kind === "element" || current.kind === "document") {
|
|
126
|
+
for (let index = current.children.length - 1; index >= 0; index--) {
|
|
127
|
+
await budget.tick();
|
|
128
|
+
pending.push(current.children[index]);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
else if (current.kind === "text" || current.kind === "cdata")
|
|
132
|
+
yield current.value.text;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
export async function* serialize(node, budget) {
|
|
136
|
+
if (node.kind === "attribute") {
|
|
137
|
+
yield ` ${node.value.name}="`;
|
|
138
|
+
yield* escape(node.value.value, true, budget);
|
|
139
|
+
yield '"';
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
if (node.kind === "document")
|
|
143
|
+
return;
|
|
144
|
+
const pending = [node.value];
|
|
145
|
+
while (pending.length) {
|
|
146
|
+
await budget.tick();
|
|
147
|
+
const current = pending.pop();
|
|
148
|
+
if (typeof current === "string") {
|
|
149
|
+
yield current;
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
if (current.kind === "element") {
|
|
153
|
+
yield `<${current.name}`;
|
|
154
|
+
for (const attribute of current.attributes) {
|
|
155
|
+
await budget.tick();
|
|
156
|
+
yield ` ${attribute.name}="`;
|
|
157
|
+
yield* escape(attribute.value, true, budget);
|
|
158
|
+
yield '"';
|
|
159
|
+
}
|
|
160
|
+
if (!current.content.length)
|
|
161
|
+
yield "/>";
|
|
162
|
+
else {
|
|
163
|
+
yield ">";
|
|
164
|
+
pending.push(`</${current.name}>`);
|
|
165
|
+
for (let index = current.content.length - 1; index >= 0; index--) {
|
|
166
|
+
await budget.tick();
|
|
167
|
+
pending.push(current.content[index]);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
else if (current.kind === "text")
|
|
172
|
+
yield* escape(current.text, false, budget);
|
|
173
|
+
else if (current.kind === "cdata") {
|
|
174
|
+
yield "<![CDATA[";
|
|
175
|
+
yield current.text;
|
|
176
|
+
yield "]]>";
|
|
177
|
+
}
|
|
178
|
+
else if (current.kind === "comment") {
|
|
179
|
+
yield "<!--";
|
|
180
|
+
yield current.text;
|
|
181
|
+
yield "-->";
|
|
182
|
+
}
|
|
183
|
+
else if (current.kind === "processing-instruction") {
|
|
184
|
+
yield `<?${current.target}`;
|
|
185
|
+
if (current.text) {
|
|
186
|
+
yield " ";
|
|
187
|
+
yield current.text;
|
|
188
|
+
}
|
|
189
|
+
yield "?>";
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
async function* escape(value, attribute, budget) {
|
|
194
|
+
let part = "";
|
|
195
|
+
for (const character of value) {
|
|
196
|
+
await budget.tick();
|
|
197
|
+
part += character === "&" ? "&" : character === "<" ? "<" : character === ">" ? ">"
|
|
198
|
+
: attribute && character === '"' ? """ : attribute && character === "\n" ? " "
|
|
199
|
+
: character === "\r" ? " " : attribute && character === "\t" ? "	" : character;
|
|
200
|
+
if (part.length >= 4096) {
|
|
201
|
+
yield part;
|
|
202
|
+
part = "";
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
if (part)
|
|
206
|
+
yield part;
|
|
207
|
+
}
|
|
208
|
+
//# sourceMappingURL=evaluate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../../src/commands/xml/evaluate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type CommandDefinition, type VirtualShellPlugin } from "../../contracts/index.js";
|
|
2
|
+
import { type XmlCommandsOptions } from "./limits.js";
|
|
3
|
+
export { defaultXmlQueryLimits } from "./limits.js";
|
|
4
|
+
export type { XmlCommandsOptions, XmlQueryLimits } from "./limits.js";
|
|
5
|
+
export declare function createXmlCommands(options?: XmlCommandsOptions): readonly CommandDefinition[];
|
|
6
|
+
export declare function xmlCommands(options?: XmlCommandsOptions): VirtualShellPlugin;
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/xml/index.ts"],"names":[],"mappings":"AACA,OAAO,EAA2G,KAAK,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAKpM,OAAO,EAAuE,KAAK,kBAAkB,EAAuB,MAAM,aAAa,CAAC;AAIhJ,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AA2HtE,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,kBAAuB,GAAG,SAAS,iBAAiB,EAAE,CAGhG;AACD,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,kBAAkB,CAShF"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { parseXmlSteps, XmlLimitError } from "@poe-platform/safe-fs/core";
|
|
2
|
+
import { FsError, getCommandArguments, readBytes, toByteSource, writeBytes } from "../../contracts/index.js";
|
|
3
|
+
import { shellValueByteLength } from "../../contracts/value.js";
|
|
4
|
+
import { writeDiagnostic } from "../../escaping.js";
|
|
5
|
+
import { pathOf } from "../internal.js";
|
|
6
|
+
import { interruptible } from "../structured/limits.js";
|
|
7
|
+
import { XmlBudget, XmlQueryError, XmlQueryLimitError, resolveXmlQueryLimits } from "./limits.js";
|
|
8
|
+
import { parseQuery } from "./query.js";
|
|
9
|
+
import { evaluate, serialize, stringValue } from "./evaluate.js";
|
|
10
|
+
export { defaultXmlQueryLimits } from "./limits.js";
|
|
11
|
+
async function argumentsFor(context, budget) {
|
|
12
|
+
if (context.args.length > 5)
|
|
13
|
+
throw new XmlQueryError("expected one XML input FILE or -", 2);
|
|
14
|
+
const carrier = getCommandArguments(context);
|
|
15
|
+
const args = carrier.args;
|
|
16
|
+
async function admitted(position, limit) {
|
|
17
|
+
const text = args[position];
|
|
18
|
+
if (text.length > budget.limits[limit])
|
|
19
|
+
throw new XmlQueryLimitError(limit);
|
|
20
|
+
const size = shellValueByteLength(carrier.values[position]);
|
|
21
|
+
if (size > budget.limits[limit])
|
|
22
|
+
throw new XmlQueryLimitError(limit);
|
|
23
|
+
for (let offset = 0; offset < size; offset += 1024)
|
|
24
|
+
await budget.tick(Math.min(1024, size - offset));
|
|
25
|
+
let decoded;
|
|
26
|
+
try {
|
|
27
|
+
decoded = new TextDecoder("utf-8", { fatal: true, ignoreBOM: true }).decode(carrier.bytes(position));
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
throw new XmlQueryError("XPath and filenames require valid UTF-8", 2);
|
|
31
|
+
}
|
|
32
|
+
if (decoded !== text)
|
|
33
|
+
throw new XmlQueryError("XPath and filenames require lossless UTF-8", 2);
|
|
34
|
+
return decoded;
|
|
35
|
+
}
|
|
36
|
+
let index = 0;
|
|
37
|
+
if (context.command === "xmllint") {
|
|
38
|
+
if (args[index++] !== "--xpath")
|
|
39
|
+
throw new XmlQueryError("expected --xpath QUERY [FILE|-]", 2);
|
|
40
|
+
}
|
|
41
|
+
if (args[index] === "--")
|
|
42
|
+
index++;
|
|
43
|
+
const sourceIndex = index++;
|
|
44
|
+
const source = args[sourceIndex];
|
|
45
|
+
if (source === undefined || source.startsWith("-"))
|
|
46
|
+
throw new XmlQueryError("expected QUERY [FILE|-]", 2);
|
|
47
|
+
if (args[index] === "--")
|
|
48
|
+
index++;
|
|
49
|
+
const fileIndex = index++;
|
|
50
|
+
const file = args[fileIndex];
|
|
51
|
+
if (index < args.length || file !== undefined && file.startsWith("-") && file !== "-")
|
|
52
|
+
throw new XmlQueryError("expected one XML input FILE or -", 2);
|
|
53
|
+
const query = await parseQuery(await admitted(sourceIndex, "maxSourceBytes"), budget);
|
|
54
|
+
return { query, file: file === undefined ? undefined : await admitted(fileIndex, "maxInputBytes") };
|
|
55
|
+
}
|
|
56
|
+
async function input(context, file, budget) {
|
|
57
|
+
let source = context.stdin;
|
|
58
|
+
if (file !== undefined && file !== "-") {
|
|
59
|
+
const path = pathOf(context, file);
|
|
60
|
+
const capabilities = context.fs.capabilitiesFor
|
|
61
|
+
? await interruptible(() => context.fs.capabilitiesFor(path, { signal: context.signal }), context.signal)
|
|
62
|
+
: context.fs.capabilities;
|
|
63
|
+
context.signal.throwIfAborted();
|
|
64
|
+
if (context.fs.readStream && capabilities.streamingRead !== false)
|
|
65
|
+
source = context.fs.readStream(path, { signal: context.signal });
|
|
66
|
+
else {
|
|
67
|
+
try {
|
|
68
|
+
source = toByteSource(await interruptible(() => context.fs.readFile(path, { signal: context.signal, maxBytes: budget.limits.maxInputBytes }), context.signal));
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
context.signal.throwIfAborted();
|
|
72
|
+
if (error instanceof FsError && error.code === "EFBIG")
|
|
73
|
+
throw new XmlQueryLimitError("maxInputBytes");
|
|
74
|
+
throw error;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
const parts = [];
|
|
79
|
+
let size = 0;
|
|
80
|
+
const decoder = new TextDecoder("utf-8", { fatal: true });
|
|
81
|
+
for await (const chunk of readBytes(source, context.signal)) {
|
|
82
|
+
await budget.tick();
|
|
83
|
+
size += chunk.byteLength;
|
|
84
|
+
if (size > budget.limits.maxInputBytes)
|
|
85
|
+
throw new XmlQueryLimitError("maxInputBytes");
|
|
86
|
+
// Decode before requesting another chunk; a producer may reuse its backing bytes.
|
|
87
|
+
for (let offset = 0; offset < chunk.length; offset += 4096) {
|
|
88
|
+
await budget.tick(Math.min(4096, chunk.length - offset));
|
|
89
|
+
try {
|
|
90
|
+
parts.push(decoder.decode(chunk.subarray(offset, offset + 4096), { stream: true }));
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
throw new XmlQueryError("XML input must be UTF-8", 1);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
try {
|
|
98
|
+
parts.push(decoder.decode());
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
throw new XmlQueryError("XML input must be UTF-8", 1);
|
|
102
|
+
}
|
|
103
|
+
return parts.join("");
|
|
104
|
+
}
|
|
105
|
+
async function execute(context, limits) {
|
|
106
|
+
const budget = new XmlBudget(limits, context.signal);
|
|
107
|
+
let outputFailed = false;
|
|
108
|
+
try {
|
|
109
|
+
const options = await argumentsFor(context, budget);
|
|
110
|
+
const source = await input(context, options.file, budget);
|
|
111
|
+
const parser = parseXmlSteps(source, { ...limits, maxContentNodes: limits.maxNodes, expectedEncoding: "UTF-8" });
|
|
112
|
+
let parsed = parser.next();
|
|
113
|
+
try {
|
|
114
|
+
while (!parsed.done) {
|
|
115
|
+
await budget.tick(parsed.value);
|
|
116
|
+
parsed = parser.next();
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
finally {
|
|
120
|
+
if (!parsed.done)
|
|
121
|
+
parser.return(undefined);
|
|
122
|
+
}
|
|
123
|
+
const nodes = await evaluate(options.query, parsed.value, budget);
|
|
124
|
+
async function write(part) {
|
|
125
|
+
for (let offset = 0; offset < part.length;) {
|
|
126
|
+
let end = Math.min(offset + 4096, part.length);
|
|
127
|
+
if (end < part.length && part.charCodeAt(end - 1) >= 0xd800 && part.charCodeAt(end - 1) <= 0xdbff)
|
|
128
|
+
end--;
|
|
129
|
+
await budget.tick(end - offset);
|
|
130
|
+
const slice = part.slice(offset, end);
|
|
131
|
+
const size = Buffer.byteLength(slice);
|
|
132
|
+
if (size > limits.maxOutputBytes - budget.outputBytes)
|
|
133
|
+
throw new XmlQueryLimitError("maxOutputBytes");
|
|
134
|
+
budget.outputBytes += size;
|
|
135
|
+
try {
|
|
136
|
+
await writeBytes(context.stdout, Buffer.from(slice), context.signal);
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
outputFailed = true;
|
|
140
|
+
throw error;
|
|
141
|
+
}
|
|
142
|
+
offset = end;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
if (options.query.scalar === "count")
|
|
146
|
+
await write(String(nodes.length));
|
|
147
|
+
else if (options.query.scalar === "boolean")
|
|
148
|
+
await write(nodes.length ? "true" : "false");
|
|
149
|
+
else if (options.query.scalar === "string") {
|
|
150
|
+
for await (const part of stringValue(nodes[0], budget))
|
|
151
|
+
await write(part);
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
if (!nodes.length)
|
|
155
|
+
throw new XmlQueryError("XPath set is empty", 11);
|
|
156
|
+
for (const node of nodes) {
|
|
157
|
+
for await (const part of serialize(node, budget))
|
|
158
|
+
await write(part);
|
|
159
|
+
await write("\n");
|
|
160
|
+
}
|
|
161
|
+
return { exitCode: 0 };
|
|
162
|
+
}
|
|
163
|
+
await write("\n");
|
|
164
|
+
return { exitCode: 0 };
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
context.signal.throwIfAborted();
|
|
168
|
+
if (outputFailed || error instanceof FsError && error.code === "EPIPE")
|
|
169
|
+
throw error;
|
|
170
|
+
const status = error instanceof XmlQueryError ? error.status : error instanceof XmlLimitError ? 5
|
|
171
|
+
: error instanceof SyntaxError || error instanceof FsError ? 1 : undefined;
|
|
172
|
+
if (status === undefined)
|
|
173
|
+
throw error;
|
|
174
|
+
const message = error instanceof Error ? error.message.slice(0, 1000) : "XML query failed";
|
|
175
|
+
await writeDiagnostic(context.stderr, `${context.command}: ${message}\n`, context.signal);
|
|
176
|
+
return { exitCode: status };
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
export function createXmlCommands(options = {}) {
|
|
180
|
+
const limits = resolveXmlQueryLimits(options.limits);
|
|
181
|
+
return ["xq", "xmllint"].map(name => ({ name, execute: context => execute(context, limits) }));
|
|
182
|
+
}
|
|
183
|
+
export function xmlCommands(options = {}) {
|
|
184
|
+
const definitions = createXmlCommands(options);
|
|
185
|
+
const replace = options.replace ?? false;
|
|
186
|
+
return { name: "xml-commands", setup(host) {
|
|
187
|
+
if (!replace)
|
|
188
|
+
for (const definition of definitions) {
|
|
189
|
+
if (host.commands.has(definition.name))
|
|
190
|
+
throw new Error(`Command already registered: ${definition.name}`);
|
|
191
|
+
}
|
|
192
|
+
for (const definition of definitions)
|
|
193
|
+
host.commands.register(definition, { replace });
|
|
194
|
+
} };
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/xml/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAyF,MAAM,0BAA0B,CAAC;AACpM,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAE,qBAAqB,EAAgD,MAAM,aAAa,CAAC;AAChJ,OAAO,EAAE,UAAU,EAAc,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAGpD,KAAK,UAAU,YAAY,CAAC,OAAuB,EAAE,MAAiB;IACpE,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,aAAa,CAAC,kCAAkC,EAAE,CAAC,CAAC,CAAC;IAC5F,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,KAAK,UAAU,QAAQ,CAAC,QAAgB,EAAE,KAAyC;QACjF,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC5E,MAAM,IAAI,GAAG,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAE,CAAC,CAAC;QAC7D,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACrE,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,IAAI,IAAI;YAAE,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC;QACrG,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YAAC,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAC,CAAC;QAC7G,MAAM,CAAC;YAAC,MAAM,IAAI,aAAa,CAAC,yCAAyC,EAAE,CAAC,CAAC,CAAC;QAAC,CAAC;QAChF,IAAI,OAAO,KAAK,IAAI;YAAE,MAAM,IAAI,aAAa,CAAC,4CAA4C,EAAE,CAAC,CAAC,CAAC;QAC/F,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,SAAS;YAAE,MAAM,IAAI,aAAa,CAAC,iCAAiC,EAAE,CAAC,CAAC,CAAC;IACjG,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI;QAAE,KAAK,EAAE,CAAC;IAClC,MAAM,WAAW,GAAG,KAAK,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;IACjC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,aAAa,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;IAC1G,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI;QAAE,KAAK,EAAE,CAAC;IAClC,MAAM,SAAS,GAAG,KAAK,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7B,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,GAAG;QAAE,MAAM,IAAI,aAAa,CAAC,kCAAkC,EAAE,CAAC,CAAC,CAAC;IACtJ,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC,CAAC;IACtF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE,CAAC;AACtG,CAAC;AAED,KAAK,UAAU,KAAK,CAAC,OAAuB,EAAE,IAAwB,EAAE,MAAiB;IACvF,IAAI,MAAM,GAAe,OAAO,CAAC,KAAK,CAAC;IACvC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACnC,MAAM,YAAY,GAAG,OAAO,CAAC,EAAE,CAAC,eAAe;YAC7C,CAAC,CAAC,MAAM,aAAa,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,eAAgB,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC;YAC1G,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC;QAC5B,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QAChC,IAAI,OAAO,CAAC,EAAE,CAAC,UAAU,IAAI,YAAY,CAAC,aAAa,KAAK,KAAK;YAAE,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;aAC/H,CAAC;YACJ,IAAI,CAAC;gBAAC,MAAM,GAAG,YAAY,CAAC,MAAM,aAAa,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YAAC,CAAC;YACvK,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;gBAChC,IAAI,KAAK,YAAY,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;oBAAE,MAAM,IAAI,kBAAkB,CAAC,eAAe,CAAC,CAAC;gBACtG,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5D,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC;QACzB,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa;YAAE,MAAM,IAAI,kBAAkB,CAAC,eAAe,CAAC,CAAC;QACtF,kFAAkF;QAClF,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,EAAE,CAAC;YAC3D,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;YACzD,IAAI,CAAC;gBAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAAC,CAAC;YAC5F,MAAM,CAAC;gBAAC,MAAM,IAAI,aAAa,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;YAAC,CAAC;QAClE,CAAC;IACH,CAAC;IACD,IAAI,CAAC;QAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAAC,CAAC;IACrC,MAAM,CAAC;QAAC,MAAM,IAAI,aAAa,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;IAAC,CAAC;IAChE,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,OAAuB,EAAE,MAAsB;IACpE,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC,CAAC;QACjH,IAAI,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBAAC,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAAC,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;YAAC,CAAC;QACnF,CAAC;gBAAS,CAAC;YAAC,IAAI,CAAC,MAAM,CAAC,IAAI;gBAAE,MAAM,CAAC,MAAM,CAAC,SAAkB,CAAC,CAAC;QAAC,CAAC;QAClE,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAClE,KAAK,UAAU,KAAK,CAAC,IAAY;YAC/B,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;gBAC3C,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC/C,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,MAAM;oBAAE,GAAG,EAAE,CAAC;gBACzG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC;gBAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBACtC,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBACtC,IAAI,IAAI,GAAG,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,WAAW;oBAAE,MAAM,IAAI,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;gBACtG,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC;gBAC3B,IAAI,CAAC;oBAAC,MAAM,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;gBAAC,CAAC;gBAC7E,OAAO,KAAK,EAAE,CAAC;oBAAC,YAAY,GAAG,IAAI,CAAC;oBAAC,MAAM,KAAK,CAAC;gBAAC,CAAC;gBACnD,MAAM,GAAG,GAAG,CAAC;YACf,CAAC;QACH,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,OAAO;YAAE,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;aACnE,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS;YAAE,MAAM,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;aACrF,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC3C,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;gBAAE,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5E,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,MAAM;gBAAE,MAAM,IAAI,aAAa,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;YACrE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;oBAAE,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;gBACpE,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC;YACD,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACzB,CAAC;QACD,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QAChC,IAAI,YAAY,IAAI,KAAK,YAAY,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;YAAE,MAAM,KAAK,CAAC;QACpF,MAAM,MAAM,GAAG,KAAK,YAAY,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,YAAY,aAAa,CAAC,CAAC,CAAC,CAAC;YAC/F,CAAC,CAAC,KAAK,YAAY,WAAW,IAAI,KAAK,YAAY,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7E,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM,KAAK,CAAC;QACtC,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC;QAC3F,MAAM,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,KAAK,OAAO,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1F,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC9B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,UAA8B,EAAE;IAChE,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AACjG,CAAC;AACD,MAAM,UAAU,WAAW,CAAC,UAA8B,EAAE;IAC1D,MAAM,WAAW,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC;IACzC,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,IAAI;YACvC,IAAI,CAAC,OAAO;gBAAE,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;oBACnD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;wBAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC5G,CAAC;YACD,KAAK,MAAM,UAAU,IAAI,WAAW;gBAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QACxF,CAAC,EAAE,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export interface XmlQueryLimits {
|
|
2
|
+
readonly maxInputBytes: number;
|
|
3
|
+
readonly maxOutputBytes: number;
|
|
4
|
+
readonly maxSourceBytes: number;
|
|
5
|
+
readonly maxDepth: number;
|
|
6
|
+
readonly maxNodes: number;
|
|
7
|
+
readonly maxAttributes: number;
|
|
8
|
+
readonly maxAttributesPerElement: number;
|
|
9
|
+
readonly maxNamespaces: number;
|
|
10
|
+
readonly maxSteps: number;
|
|
11
|
+
readonly maxResults: number;
|
|
12
|
+
}
|
|
13
|
+
export interface XmlCommandsOptions {
|
|
14
|
+
readonly replace?: boolean;
|
|
15
|
+
readonly limits?: Partial<XmlQueryLimits>;
|
|
16
|
+
}
|
|
17
|
+
export declare const defaultXmlQueryLimits: Readonly<XmlQueryLimits>;
|
|
18
|
+
export declare class XmlQueryError extends Error {
|
|
19
|
+
readonly status: number;
|
|
20
|
+
constructor(message: string, status: number);
|
|
21
|
+
}
|
|
22
|
+
export declare class XmlQueryLimitError extends XmlQueryError {
|
|
23
|
+
constructor(name: keyof XmlQueryLimits);
|
|
24
|
+
}
|
|
25
|
+
export declare function resolveXmlQueryLimits(options?: Partial<XmlQueryLimits>): XmlQueryLimits;
|
|
26
|
+
export declare class XmlBudget {
|
|
27
|
+
readonly limits: XmlQueryLimits;
|
|
28
|
+
readonly signal: AbortSignal;
|
|
29
|
+
private steps;
|
|
30
|
+
private checkpoint;
|
|
31
|
+
outputBytes: number;
|
|
32
|
+
constructor(limits: XmlQueryLimits, signal: AbortSignal);
|
|
33
|
+
tick(work?: number): Promise<void>;
|
|
34
|
+
results(size: number): void;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=limits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../../../src/commands/xml/limits.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AACD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;CAC3C;AACD,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,cAAc,CAKzD,CAAC;AACH,qBAAa,aAAc,SAAQ,KAAK;IACT,QAAQ,CAAC,MAAM,EAAE,MAAM;gBAAxC,OAAO,EAAE,MAAM,EAAW,MAAM,EAAE,MAAM;CACrD;AACD,qBAAa,kBAAmB,SAAQ,aAAa;gBACvC,IAAI,EAAE,MAAM,cAAc;CACvC;AACD,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,OAAO,CAAC,cAAc,CAAM,GAAG,cAAc,CAS3F;AACD,qBAAa,SAAS;IAIR,QAAQ,CAAC,MAAM,EAAE,cAAc;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW;IAHzE,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,UAAU,CAAK;IACvB,WAAW,SAAK;gBACK,MAAM,EAAE,cAAc,EAAW,MAAM,EAAE,WAAW;IACnE,IAAI,CAAC,IAAI,SAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAG5B"}
|