@plurnk/plurnk-grammar 0.2.1 → 0.6.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.
Files changed (77) hide show
  1. package/bin/plurnk.js +1 -1
  2. package/{schema → dist/schema}/LogEntry.json +1 -1
  3. package/{schema → dist/schema}/Packet.json +16 -4
  4. package/{schema → dist/schema}/ProviderDeclaration.json +3 -3
  5. package/{schema → dist/schema}/Run.json +6 -1
  6. package/{schema → dist/schema}/Session.json +1 -1
  7. package/{schema → dist/schema}/Turn.json +10 -1
  8. package/dist/src/AstBuilder.d.ts +19 -0
  9. package/dist/src/AstBuilder.d.ts.map +1 -0
  10. package/{src/AstBuilder.ts → dist/src/AstBuilder.js} +176 -161
  11. package/dist/src/AstBuilder.js.map +1 -0
  12. package/dist/src/PlurnkErrorStrategy.d.ts +10 -0
  13. package/dist/src/PlurnkErrorStrategy.d.ts.map +1 -0
  14. package/{src/PlurnkErrorStrategy.ts → dist/src/PlurnkErrorStrategy.js} +41 -49
  15. package/dist/src/PlurnkErrorStrategy.js.map +1 -0
  16. package/dist/src/PlurnkParseError.d.ts +14 -0
  17. package/dist/src/PlurnkParseError.d.ts.map +1 -0
  18. package/{src/PlurnkParseError.ts → dist/src/PlurnkParseError.js} +6 -9
  19. package/dist/src/PlurnkParseError.js.map +1 -0
  20. package/dist/src/PlurnkParser.d.ts +6 -0
  21. package/dist/src/PlurnkParser.d.ts.map +1 -0
  22. package/{src/PlurnkParser.ts → dist/src/PlurnkParser.js} +32 -40
  23. package/dist/src/PlurnkParser.js.map +1 -0
  24. package/dist/src/RecordingListener.d.ts +9 -0
  25. package/dist/src/RecordingListener.d.ts.map +1 -0
  26. package/dist/src/RecordingListener.js +19 -0
  27. package/dist/src/RecordingListener.js.map +1 -0
  28. package/dist/src/Validator.d.ts +28 -0
  29. package/dist/src/Validator.d.ts.map +1 -0
  30. package/dist/src/Validator.js +86 -0
  31. package/dist/src/Validator.js.map +1 -0
  32. package/dist/src/generated/plurnkLexer.d.ts +88 -0
  33. package/dist/src/generated/plurnkLexer.d.ts.map +1 -0
  34. package/dist/src/generated/plurnkLexer.js +440 -0
  35. package/dist/src/generated/plurnkLexer.js.map +1 -0
  36. package/dist/src/generated/plurnkParser.d.ts +274 -0
  37. package/dist/src/generated/plurnkParser.d.ts.map +1 -0
  38. package/dist/src/generated/plurnkParser.js +1833 -0
  39. package/dist/src/generated/plurnkParser.js.map +1 -0
  40. package/{src/generated/plurnkParserVisitor.ts → dist/src/generated/plurnkParserVisitor.d.ts} +2 -7
  41. package/dist/src/generated/plurnkParserVisitor.d.ts.map +1 -0
  42. package/dist/src/generated/plurnkParserVisitor.js +131 -0
  43. package/dist/src/generated/plurnkParserVisitor.js.map +1 -0
  44. package/dist/src/index.d.ts +10 -0
  45. package/dist/src/index.d.ts.map +1 -0
  46. package/dist/src/index.js +7 -0
  47. package/dist/src/index.js.map +1 -0
  48. package/dist/src/types.d.ts +23 -0
  49. package/dist/src/types.d.ts.map +1 -0
  50. package/dist/src/types.generated.d.ts +472 -0
  51. package/dist/src/types.generated.d.ts.map +1 -0
  52. package/dist/src/types.generated.js +4 -0
  53. package/dist/src/types.generated.js.map +1 -0
  54. package/dist/src/types.js +4 -0
  55. package/dist/src/types.js.map +1 -0
  56. package/package.json +10 -7
  57. package/plurnk.md +1 -1
  58. package/src/RecordingListener.ts +0 -34
  59. package/src/Validator.ts +0 -94
  60. package/src/generated/plurnkLexer.ts +0 -467
  61. package/src/generated/plurnkParser.ts +0 -1891
  62. package/src/index.ts +0 -29
  63. package/src/types.generated.ts +0 -497
  64. package/src/types.ts +0 -30
  65. /package/{schema → dist/schema}/Agent.json +0 -0
  66. /package/{schema → dist/schema}/ChannelContent.json +0 -0
  67. /package/{schema → dist/schema}/Entry.json +0 -0
  68. /package/{schema → dist/schema}/LineMarker.json +0 -0
  69. /package/{schema → dist/schema}/Loop.json +0 -0
  70. /package/{schema → dist/schema}/MatcherBody.json +0 -0
  71. /package/{schema → dist/schema}/Params.json +0 -0
  72. /package/{schema → dist/schema}/ParsedPath.json +0 -0
  73. /package/{schema → dist/schema}/PlurnkStatement.json +0 -0
  74. /package/{schema → dist/schema}/Position.json +0 -0
  75. /package/{schema → dist/schema}/SchemeRegistration.json +0 -0
  76. /package/{schema → dist/schema}/SendBody.json +0 -0
  77. /package/{schema → dist/schema}/Visibility.json +0 -0
@@ -1,76 +1,50 @@
1
1
  import { ParserRuleContext } from "antlr4ng";
2
2
  import * as xpath from "xpath";
3
3
  import { JSONPath } from "jsonpath-plus";
4
- import type {
5
- CopyStatement,
6
- EditStatement,
7
- ExecStatement,
8
- FindStatement,
9
- HideStatement,
10
- LineMarker,
11
- MatcherBody,
12
- MoveStatement,
13
- ParsedPath,
14
- PlurnkOp,
15
- PlurnkStatement,
16
- Position,
17
- ReadStatement,
18
- SendBody,
19
- SendStatement,
20
- ShowStatement,
21
- } from "./types.ts";
22
- import type {
23
- CopyStatementContext,
24
- EditStatementContext,
25
- ExecModifiersContext,
26
- ExecStatementContext,
27
- FindStatementContext,
28
- HideStatementContext,
29
- MoveStatementContext,
30
- ReadStatementContext,
31
- SendModifiersContext,
32
- SendStatementContext,
33
- ShowStatementContext,
34
- StatementContext,
35
- TagOpModifiersContext,
36
- } from "./generated/plurnkParser.ts";
37
- import {
38
- IdentSignalContext,
39
- IntSignalContext,
40
- LineMarkerContext,
41
- PathContext,
42
- TagSignalContext,
43
- } from "./generated/plurnkParser.ts";
44
- import PlurnkParseError from "./PlurnkParseError.ts";
45
-
46
- // The xpath package's .d.ts omits its `parse` function; augment here.
47
- declare module "xpath" {
48
- export function parse(expression: string): unknown;
49
- }
50
-
51
- type Ctor<T> = new (...args: any[]) => T;
52
-
53
- type TagSlots = { signal: string[] | null; path: ParsedPath | null; lineMarker: LineMarker | null };
54
- type SendSlots = { signal: number | null; path: ParsedPath | null };
55
- type ExecSlots = { signal: string | null; path: ParsedPath | null };
56
-
4
+ import { IdentSignalContext, IntSignalContext, LineMarkerContext, PathContext, TagSignalContext, } from "./generated/plurnkParser.js";
5
+ import PlurnkParseError from "./PlurnkParseError.js";
57
6
  export default class AstBuilder {
58
7
  static #SCHEME_PATTERN = /^[a-z][a-z0-9+.-]*:\/\//i;
59
-
60
- static build(ctx: StatementContext): PlurnkStatement {
61
- const find = ctx.findStatement(); if (find) return AstBuilder.#buildFind(find);
62
- const read = ctx.readStatement(); if (read) return AstBuilder.#buildRead(read);
63
- const edit = ctx.editStatement(); if (edit) return AstBuilder.#buildEdit(edit);
64
- const copy = ctx.copyStatement(); if (copy) return AstBuilder.#buildCopy(copy);
65
- const move = ctx.moveStatement(); if (move) return AstBuilder.#buildMove(move);
66
- const show = ctx.showStatement(); if (show) return AstBuilder.#buildShow(show);
67
- const hide = ctx.hideStatement(); if (hide) return AstBuilder.#buildHide(hide);
68
- const send = ctx.sendStatement(); if (send) return AstBuilder.#buildSend(send);
69
- const exec = ctx.execStatement(); if (exec) return AstBuilder.#buildExec(exec);
8
+ // Schemes whose `://X/Y` form actually carries an authority (host/userinfo/port).
9
+ // Everything else is opaque: the first segment after `://` is just the first
10
+ // segment of the path, not a host.
11
+ static #AUTHORITY_SCHEMES = new Set([
12
+ "http", "https",
13
+ "ws", "wss",
14
+ "ftp", "ftps",
15
+ "file",
16
+ ]);
17
+ static build(ctx) {
18
+ const find = ctx.findStatement();
19
+ if (find)
20
+ return AstBuilder.#buildFind(find);
21
+ const read = ctx.readStatement();
22
+ if (read)
23
+ return AstBuilder.#buildRead(read);
24
+ const edit = ctx.editStatement();
25
+ if (edit)
26
+ return AstBuilder.#buildEdit(edit);
27
+ const copy = ctx.copyStatement();
28
+ if (copy)
29
+ return AstBuilder.#buildCopy(copy);
30
+ const move = ctx.moveStatement();
31
+ if (move)
32
+ return AstBuilder.#buildMove(move);
33
+ const show = ctx.showStatement();
34
+ if (show)
35
+ return AstBuilder.#buildShow(show);
36
+ const hide = ctx.hideStatement();
37
+ if (hide)
38
+ return AstBuilder.#buildHide(hide);
39
+ const send = ctx.sendStatement();
40
+ if (send)
41
+ return AstBuilder.#buildSend(send);
42
+ const exec = ctx.execStatement();
43
+ if (exec)
44
+ return AstBuilder.#buildExec(exec);
70
45
  throw new Error("statement context has no recognized alternative");
71
46
  }
72
-
73
- static #buildFind(ctx: FindStatementContext): FindStatement {
47
+ static #buildFind(ctx) {
74
48
  const position = AstBuilder.#positionOf(ctx);
75
49
  const slots = AstBuilder.#extractTagSlots(ctx.tagOpModifiers(), position);
76
50
  const raw = AstBuilder.#bodyTextOf(ctx);
@@ -82,8 +56,7 @@ export default class AstBuilder {
82
56
  position,
83
57
  };
84
58
  }
85
-
86
- static #buildRead(ctx: ReadStatementContext): ReadStatement {
59
+ static #buildRead(ctx) {
87
60
  const position = AstBuilder.#positionOf(ctx);
88
61
  const slots = AstBuilder.#extractTagSlots(ctx.tagOpModifiers(), position);
89
62
  const raw = AstBuilder.#bodyTextOf(ctx);
@@ -95,8 +68,7 @@ export default class AstBuilder {
95
68
  position,
96
69
  };
97
70
  }
98
-
99
- static #buildShow(ctx: ShowStatementContext): ShowStatement {
71
+ static #buildShow(ctx) {
100
72
  const position = AstBuilder.#positionOf(ctx);
101
73
  const slots = AstBuilder.#extractTagSlots(ctx.tagOpModifiers(), position);
102
74
  const raw = AstBuilder.#bodyTextOf(ctx);
@@ -108,8 +80,7 @@ export default class AstBuilder {
108
80
  position,
109
81
  };
110
82
  }
111
-
112
- static #buildHide(ctx: HideStatementContext): HideStatement {
83
+ static #buildHide(ctx) {
113
84
  const position = AstBuilder.#positionOf(ctx);
114
85
  const slots = AstBuilder.#extractTagSlots(ctx.tagOpModifiers(), position);
115
86
  const raw = AstBuilder.#bodyTextOf(ctx);
@@ -121,8 +92,7 @@ export default class AstBuilder {
121
92
  position,
122
93
  };
123
94
  }
124
-
125
- static #buildEdit(ctx: EditStatementContext): EditStatement {
95
+ static #buildEdit(ctx) {
126
96
  const position = AstBuilder.#positionOf(ctx);
127
97
  const slots = AstBuilder.#extractTagSlots(ctx.tagOpModifiers(), position);
128
98
  return {
@@ -133,8 +103,7 @@ export default class AstBuilder {
133
103
  position,
134
104
  };
135
105
  }
136
-
137
- static #buildCopy(ctx: CopyStatementContext): CopyStatement {
106
+ static #buildCopy(ctx) {
138
107
  const position = AstBuilder.#positionOf(ctx);
139
108
  const slots = AstBuilder.#extractTagSlots(ctx.tagOpModifiers(), position);
140
109
  const raw = AstBuilder.#bodyTextOf(ctx);
@@ -142,12 +111,11 @@ export default class AstBuilder {
142
111
  op: "COPY",
143
112
  suffix: AstBuilder.#splitSuffix(ctx.OPEN_COPY().getText(), "COPY"),
144
113
  ...slots,
145
- body: raw !== null ? AstBuilder.#parsePath(raw, position) : null,
114
+ body: raw !== null ? AstBuilder.parsePath(raw, position) : null,
146
115
  position,
147
116
  };
148
117
  }
149
-
150
- static #buildMove(ctx: MoveStatementContext): MoveStatement {
118
+ static #buildMove(ctx) {
151
119
  const position = AstBuilder.#positionOf(ctx);
152
120
  const slots = AstBuilder.#extractTagSlots(ctx.tagOpModifiers(), position);
153
121
  const raw = AstBuilder.#bodyTextOf(ctx);
@@ -155,12 +123,11 @@ export default class AstBuilder {
155
123
  op: "MOVE",
156
124
  suffix: AstBuilder.#splitSuffix(ctx.OPEN_MOVE().getText(), "MOVE"),
157
125
  ...slots,
158
- body: raw !== null ? AstBuilder.#parsePath(raw, position) : null,
126
+ body: raw !== null ? AstBuilder.parsePath(raw, position) : null,
159
127
  position,
160
128
  };
161
129
  }
162
-
163
- static #buildSend(ctx: SendStatementContext): SendStatement {
130
+ static #buildSend(ctx) {
164
131
  const position = AstBuilder.#positionOf(ctx);
165
132
  const slots = AstBuilder.#extractSendSlots(ctx.sendModifiers(), position);
166
133
  const raw = AstBuilder.#bodyTextOf(ctx);
@@ -173,8 +140,7 @@ export default class AstBuilder {
173
140
  position,
174
141
  };
175
142
  }
176
-
177
- static #buildExec(ctx: ExecStatementContext): ExecStatement {
143
+ static #buildExec(ctx) {
178
144
  const position = AstBuilder.#positionOf(ctx);
179
145
  const slots = AstBuilder.#extractExecSlots(ctx.execModifiers(), position);
180
146
  return {
@@ -186,16 +152,14 @@ export default class AstBuilder {
186
152
  position,
187
153
  };
188
154
  }
189
-
190
- static #extractTagSlots(modCtx: TagOpModifiersContext | null, pos: Position): TagSlots {
155
+ static #extractTagSlots(modCtx, pos) {
191
156
  return {
192
157
  signal: AstBuilder.#tagsFromSignal(AstBuilder.#findFirst(modCtx, TagSignalContext)),
193
158
  path: AstBuilder.#pathFromCtx(AstBuilder.#findFirst(modCtx, PathContext), pos),
194
159
  lineMarker: AstBuilder.#lineMarkerFromCtx(AstBuilder.#findFirst(modCtx, LineMarkerContext)),
195
160
  };
196
161
  }
197
-
198
- static #extractSendSlots(modCtx: SendModifiersContext | null, pos: Position): SendSlots {
162
+ static #extractSendSlots(modCtx, pos) {
199
163
  const intCtx = AstBuilder.#findFirst(modCtx, IntSignalContext);
200
164
  const intNode = intCtx?.INT() ?? null;
201
165
  return {
@@ -203,8 +167,7 @@ export default class AstBuilder {
203
167
  path: AstBuilder.#pathFromCtx(AstBuilder.#findFirst(modCtx, PathContext), pos),
204
168
  };
205
169
  }
206
-
207
- static #extractExecSlots(modCtx: ExecModifiersContext | null, pos: Position): ExecSlots {
170
+ static #extractExecSlots(modCtx, pos) {
208
171
  const identCtx = AstBuilder.#findFirst(modCtx, IdentSignalContext);
209
172
  const identNode = identCtx?.IDENT() ?? null;
210
173
  return {
@@ -212,120 +175,167 @@ export default class AstBuilder {
212
175
  path: AstBuilder.#pathFromCtx(AstBuilder.#findFirst(modCtx, PathContext), pos),
213
176
  };
214
177
  }
215
-
216
- static #findFirst<T extends ParserRuleContext>(
217
- root: ParserRuleContext | null,
218
- type: Ctor<T>,
219
- ): T | null {
220
- if (root === null) return null;
221
- if (root instanceof type) return root;
178
+ static #findFirst(root, type) {
179
+ if (root === null)
180
+ return null;
181
+ if (root instanceof type)
182
+ return root;
222
183
  const children = root.children;
223
- if (!children) return null;
184
+ if (!children)
185
+ return null;
224
186
  for (const child of children) {
225
187
  if (child instanceof ParserRuleContext) {
226
188
  const found = AstBuilder.#findFirst(child, type);
227
- if (found !== null) return found;
189
+ if (found !== null)
190
+ return found;
228
191
  }
229
192
  }
230
193
  return null;
231
194
  }
232
-
233
- static #tagsFromSignal(ctx: TagSignalContext | null): string[] | null {
234
- if (ctx === null) return null;
195
+ static #tagsFromSignal(ctx) {
196
+ if (ctx === null)
197
+ return null;
235
198
  const tags = ctx.TAG();
236
199
  return Array.isArray(tags) ? tags.map((t) => t.getText()) : [];
237
200
  }
238
-
239
- static #pathFromCtx(ctx: PathContext | null, pos: Position): ParsedPath | null {
240
- if (ctx === null) return null;
201
+ static #pathFromCtx(ctx, pos) {
202
+ if (ctx === null)
203
+ return null;
241
204
  const text = ctx.PATH_TEXT()?.getText() ?? "";
242
- return AstBuilder.#parsePath(text, pos);
205
+ return AstBuilder.parsePath(text, pos);
243
206
  }
244
-
245
- static #lineMarkerFromCtx(ctx: LineMarkerContext | null): LineMarker | null {
246
- if (ctx === null) return null;
207
+ static #lineMarkerFromCtx(ctx) {
208
+ if (ctx === null)
209
+ return null;
247
210
  const text = ctx.L_MARKER()?.getText() ?? "";
248
211
  return AstBuilder.#parseLineMarker(text);
249
212
  }
250
-
251
- static #positionOf(ctx: { start: { line: number; column: number } | null }): Position {
213
+ static #positionOf(ctx) {
252
214
  const start = ctx.start;
253
215
  return { line: start?.line ?? 0, column: start?.column ?? 0 };
254
216
  }
255
-
256
- static #bodyTextOf(ctx: { body(): { getText(): string } | null }): string | null {
217
+ static #bodyTextOf(ctx) {
257
218
  const bodyCtx = ctx.body();
258
219
  return bodyCtx ? bodyCtx.getText() : null;
259
220
  }
260
-
261
- static #splitSuffix(openTagText: string, op: PlurnkOp): string {
221
+ static #splitSuffix(openTagText, op) {
262
222
  return openTagText.slice(2 + op.length);
263
223
  }
264
-
265
- static #isDigit(c: string | undefined): boolean {
224
+ static #isDigit(c) {
266
225
  return c !== undefined && c >= "0" && c <= "9";
267
226
  }
268
-
269
- static #parseLineMarker(text: string): LineMarker {
227
+ static #parseLineMarker(text) {
270
228
  const inner = text.slice(1, -1);
271
229
  let i = 0;
272
- if (inner[i] === "-") i++;
273
- while (AstBuilder.#isDigit(inner[i])) i++;
230
+ if (inner[i] === "-")
231
+ i++;
232
+ while (AstBuilder.#isDigit(inner[i]))
233
+ i++;
274
234
  const first = Number.parseInt(inner.slice(0, i), 10);
275
- if (i >= inner.length) return { first, last: null };
235
+ if (i >= inner.length)
236
+ return { first, last: null };
276
237
  i++;
277
238
  const last = Number.parseInt(inner.slice(i), 10);
278
239
  return { first, last };
279
240
  }
280
-
281
- static #parsePath(raw: string, pos: Position): ParsedPath | null {
282
- if (raw.length === 0) return null;
241
+ /**
242
+ * Parse a path string into a ParsedPath, mirroring how the AST visitor
243
+ * decomposes path slots inside HEREDOC statements. Public for consumers
244
+ * (RPC layers, scheme handlers) that need to honor the grammar's
245
+ * authority-vs-opaque cleavage without round-tripping through a fake
246
+ * HEREDOC. Returns null when `raw` is empty. Throws PlurnkParseError
247
+ * when `raw` starts with `scheme://` but WHATWG URL rejects it.
248
+ */
249
+ static parsePath(raw, pos = { line: 0, column: 0 }) {
250
+ if (raw.length === 0)
251
+ return null;
283
252
  if (!AstBuilder.#SCHEME_PATTERN.test(raw)) {
284
253
  return { kind: "local", raw };
285
254
  }
286
- let url: URL;
255
+ let url;
287
256
  try {
288
257
  url = new URL(raw);
289
- } catch (e: any) {
258
+ }
259
+ catch (e) {
290
260
  throw new PlurnkParseError(pos.line, pos.column, "visitor", `invalid URI in path: ${e?.message ?? raw}`);
291
261
  }
292
- const params: Record<string, string | string[]> = {};
293
- for (const [key, value] of url.searchParams) {
262
+ const scheme = url.protocol.replace(/:$/, "");
263
+ const params = AstBuilder.#paramsFrom(url.searchParams);
264
+ const fragment = url.hash ? url.hash.slice(1) : null;
265
+ if (AstBuilder.#AUTHORITY_SCHEMES.has(scheme)) {
266
+ return {
267
+ kind: "url",
268
+ raw,
269
+ scheme,
270
+ username: url.username || null,
271
+ password: url.password || null,
272
+ hostname: url.hostname || null,
273
+ port: url.port ? Number.parseInt(url.port, 10) : null,
274
+ pathname: url.pathname,
275
+ params,
276
+ fragment,
277
+ };
278
+ }
279
+ // Opaque scheme: the first segment after `://` is just the first segment
280
+ // of the path, not a host. Take the substring between `scheme://` and
281
+ // the first `?`/`#` boundary as the pathname; authority fields are null.
282
+ const afterScheme = raw.slice(scheme.length + 3);
283
+ const qIdx = afterScheme.indexOf("?");
284
+ const hIdx = afterScheme.indexOf("#");
285
+ let pathnameEnd = afterScheme.length;
286
+ if (qIdx >= 0 && (hIdx < 0 || qIdx < hIdx)) {
287
+ pathnameEnd = qIdx;
288
+ }
289
+ else if (hIdx >= 0) {
290
+ pathnameEnd = hIdx;
291
+ }
292
+ return {
293
+ kind: "url",
294
+ raw,
295
+ scheme,
296
+ username: null,
297
+ password: null,
298
+ hostname: null,
299
+ port: null,
300
+ pathname: afterScheme.slice(0, pathnameEnd),
301
+ params,
302
+ fragment,
303
+ };
304
+ }
305
+ static #paramsFrom(sp) {
306
+ const params = {};
307
+ for (const [key, value] of sp) {
294
308
  const existing = params[key];
295
309
  if (existing === undefined) {
296
310
  params[key] = value;
297
- } else if (Array.isArray(existing)) {
311
+ }
312
+ else if (Array.isArray(existing)) {
298
313
  existing.push(value);
299
- } else {
314
+ }
315
+ else {
300
316
  params[key] = [existing, value];
301
317
  }
302
318
  }
303
- return {
304
- kind: "url",
305
- raw,
306
- scheme: url.protocol.replace(/:$/, ""),
307
- username: url.username || null,
308
- password: url.password || null,
309
- hostname: url.hostname || null,
310
- port: url.port ? Number.parseInt(url.port, 10) : null,
311
- pathname: url.pathname,
312
- params,
313
- fragment: url.hash ? url.hash.slice(1) : null,
314
- };
319
+ return params;
315
320
  }
316
-
317
- static #detectMatcherDialect(body: string): "xpath" | "regex" | "jsonpath" | "glob" {
318
- if (body.startsWith("//")) return "xpath";
319
- if (body.startsWith("/")) return "regex";
320
- if (body.startsWith("$")) return "jsonpath";
321
+ static #detectMatcherDialect(body) {
322
+ if (body.startsWith("//"))
323
+ return "xpath";
324
+ if (body.startsWith("/"))
325
+ return "regex";
326
+ if (body.startsWith("$"))
327
+ return "jsonpath";
321
328
  return "glob";
322
329
  }
323
-
324
- static #parseRegexLiteral(body: string, pos: Position): { pattern: string; flags: string } {
330
+ static #parseRegexLiteral(body, pos) {
325
331
  let i = 1;
326
332
  while (i < body.length) {
327
- if (body[i] === "\\") { i += 2; continue; }
328
- if (body[i] === "/") break;
333
+ if (body[i] === "\\") {
334
+ i += 2;
335
+ continue;
336
+ }
337
+ if (body[i] === "/")
338
+ break;
329
339
  i++;
330
340
  }
331
341
  if (i >= body.length) {
@@ -333,14 +343,14 @@ export default class AstBuilder {
333
343
  }
334
344
  return { pattern: body.slice(1, i), flags: body.slice(i + 1) };
335
345
  }
336
-
337
- static #parseMatcherBody(body: string, pos: Position): MatcherBody {
346
+ static #parseMatcherBody(body, pos) {
338
347
  const dialect = AstBuilder.#detectMatcherDialect(body);
339
348
  if (dialect === "regex") {
340
349
  const { pattern, flags } = AstBuilder.#parseRegexLiteral(body, pos);
341
350
  try {
342
351
  new RegExp(pattern, flags);
343
- } catch (e: any) {
352
+ }
353
+ catch (e) {
344
354
  throw new PlurnkParseError(pos.line, pos.column, "visitor", `invalid regex: ${e?.message ?? body}`);
345
355
  }
346
356
  return { dialect: "regex", raw: body, pattern, flags };
@@ -348,7 +358,8 @@ export default class AstBuilder {
348
358
  if (dialect === "xpath") {
349
359
  try {
350
360
  xpath.parse(body);
351
- } catch (e: any) {
361
+ }
362
+ catch (e) {
352
363
  throw new PlurnkParseError(pos.line, pos.column, "visitor", `invalid xpath: ${e?.message ?? body}`);
353
364
  }
354
365
  return { dialect: "xpath", raw: body };
@@ -356,17 +367,21 @@ export default class AstBuilder {
356
367
  if (dialect === "jsonpath") {
357
368
  try {
358
369
  JSONPath({ path: body, json: {} });
359
- } catch (e: any) {
370
+ }
371
+ catch (e) {
360
372
  throw new PlurnkParseError(pos.line, pos.column, "visitor", `invalid jsonpath: ${e?.message ?? body}`);
361
373
  }
362
374
  return { dialect: "jsonpath", raw: body };
363
375
  }
364
376
  return { dialect: "glob", raw: body };
365
377
  }
366
-
367
- static #parseSendBody(raw: string): SendBody {
368
- let json: unknown | null = null;
369
- try { json = JSON.parse(raw); } catch { /* best-effort */ }
378
+ static #parseSendBody(raw) {
379
+ let json = null;
380
+ try {
381
+ json = JSON.parse(raw);
382
+ }
383
+ catch { /* best-effort */ }
370
384
  return { raw, json };
371
385
  }
372
386
  }
387
+ //# sourceMappingURL=AstBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AstBuilder.js","sourceRoot":"","sources":["../../src/AstBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { DefaultErrorStrategy, type Parser, type RecognitionException } from "antlr4ng";
2
+ import { plurnkLexer } from "./generated/plurnkLexer.ts";
3
+ export default class PlurnkErrorStrategy extends DefaultErrorStrategy {
4
+ #private;
5
+ static translateLexerMessage(lexer: plurnkLexer, originalMsg: string): string;
6
+ reportError(recognizer: Parser, e: RecognitionException): void;
7
+ reportMissingToken(recognizer: Parser): void;
8
+ reportUnwantedToken(recognizer: Parser): void;
9
+ }
10
+ //# sourceMappingURL=PlurnkErrorStrategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlurnkErrorStrategy.d.ts","sourceRoot":"","sources":["../../src/PlurnkErrorStrategy.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,oBAAoB,EAIpB,KAAK,MAAM,EACX,KAAK,oBAAoB,EAC5B,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,oBAAoB;;IAuCjE,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAoC7D,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,oBAAoB,GAAG,IAAI;IAiB9D,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAiB5C,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;CAkBhE"}