@glion/util-query 0.26.0 → 0.27.1

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/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2023 Rethink Health
3
+ Copyright (c) 2023 Rethink Health, SUARL
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,10 +1,10 @@
1
1
  # @glion/util-query
2
2
 
3
- Reads HL7v2 ASTs using canonical paths like `PID-5[1].2.1` or `ORDER-ORC-1`.
3
+ Reads HL7v2 ASTs using canonical paths like `PID.5[1].2.1` or `ORDER.ORC.1`.
4
4
 
5
5
  ## What it does
6
6
 
7
- Provides six path-based helpers — `parse`, `select`, `selectAll`, `value`, `matches`, `format` — that operate on HL7v2 AST trees using the same path syntax found in HL7 specs. Paths can address segments (`PID`), groups (`ORDER`), nested groups and segments (`ORDER-TIMING-TQ1`), field repetitions (`PID-5[2]`), components (`PID-5[1].2`), and subcomponents (`PID-5[1].2.1`). Path parsing is memoized in an LRU cache so repeated lookups stay fast.
7
+ Provides six path-based helpers — `parse`, `select`, `selectAll`, `value`, `matches`, `format` — that operate on HL7v2 AST trees using dotted paths: segment groups, the segment, and the field are each separated with `.`, so HL7 element `PID-5.1` is the path `PID.5.1`. Paths can address segments (`PID`), groups (`ORDER`), nested groups and segments (`ORDER.TIMING.TQ1`), field repetitions (`PID.5[2]`), components (`PID.5[1].2`), and subcomponents (`PID.5[1].2.1`).
8
8
 
9
9
  ## Install
10
10
 
@@ -32,8 +32,8 @@ OBX|1||8675-3^Glucose^LN||120|mg/dL|70-105|H|||F`;
32
32
  const ast = parseHL7v2(message);
33
33
 
34
34
  // Values: drills to subcomponents automatically when the path is unique
35
- const lastName = value(ast, "PID-5[1].1.1"); // "Smith"
36
- const sendingApp = value(ast, "MSH-3[1].1.1"); // "MyApp"
35
+ const lastName = value(ast, "PID.5[1].1.1"); // "Smith"
36
+ const sendingApp = value(ast, "MSH.3[1].1.1"); // "MyApp"
37
37
 
38
38
  // Single node: grab the first matching AST node
39
39
  const pidSegment = select(ast, "PID");
@@ -48,22 +48,22 @@ for (const { node } of allObservations) {
48
48
  }
49
49
 
50
50
  // Existence check
51
- if (matches(ast, "PID-5")) {
51
+ if (matches(ast, "PID.5")) {
52
52
  console.log("Patient has a name field");
53
53
  }
54
54
 
55
55
  // Path parsing
56
- const parsed = parse("ORDERS[2]-OBX-5[1].2.1");
56
+ const parsed = parse("ORDERS[2].OBX.5[1].2.1");
57
57
  ```
58
58
 
59
59
  ## API
60
60
 
61
61
  ### `parse(path: string): PathParts`
62
62
 
63
- Breaks a canonical HL7 path into structured pieces. Useful for tooling and diagnostics.
63
+ Breaks a canonical HL7 path into structured pieces.
64
64
 
65
65
  ```typescript
66
- parse("PID-5[1].2.1");
66
+ parse("PID.5[1].2.1");
67
67
  // {
68
68
  // segment: { name: 'PID' },
69
69
  // field: 5,
@@ -73,25 +73,27 @@ parse("PID-5[1].2.1");
73
73
  // }
74
74
  ```
75
75
 
76
- `parse` memoizes up to 1,000 unique paths using an LRU cache so repeated lookups stay fast without leaking memory.
76
+ `parse` returns a new `PathParts` on every call.
77
77
 
78
- ### `select<Path>(root: Root, path: Path): { node: InferNodeType<Path>; ancestors: Nodes[] } | null`
78
+ ### `select<Path>(node: Root | Group | Segment, path: Path): { node: InferNodeType<Path>; ancestors: Nodes[] } | null`
79
79
 
80
- Returns the first AST node addressed by the path, along with its ancestor chain, or `null` when it cannot be found. The return type is automatically inferred from the path string.
80
+ Returns the node the path addresses under `node`, along with its ancestor chain, or `null` when it cannot be found. `node` is a message, a group, or a segment; a path read from a segment starts with the field. A step without `[n]` names the first child with that name, so `select` returns `null` when that child does not lead to a match, even if a later one does. The return type is inferred from the path string.
81
81
 
82
82
  ```typescript
83
- const result = select(ast, "PID-5[1].2");
83
+ const result = select(ast, "PID.5[1].2");
84
84
  if (result) {
85
85
  result.node; // Type: Component
86
86
  result.ancestors; // [Root, Segment, Field, FieldRepetition]
87
87
  }
88
+
89
+ select(pid, "5[1].2"); // the same component, read from the PID segment
88
90
  ```
89
91
 
90
- The `ancestors` array follows the [`unist-util-visit-parents`](https://github.com/syntax-tree/unist-util-visit-parents) convention: it starts at the root node, ends with the immediate parent, and never includes the node itself. You can rely on `ancestors[ancestors.length - 1]` being the direct parent.
92
+ The `ancestors` array follows the [`unist-util-visit-parents`](https://github.com/syntax-tree/unist-util-visit-parents) convention: it starts at the node passed to `select`, ends with the immediate parent, and never includes the node itself. You can rely on `ancestors[ancestors.length - 1]` being the direct parent.
91
93
 
92
- ### `selectAll<Path>(root: Root, path: Path): Array<{ node: InferNodeType<Path>; ancestors: Nodes[] }>`
94
+ ### `selectAll<Path>(node: Root | Group | Segment, path: Path): Array<{ node: InferNodeType<Path>; ancestors: Nodes[] }>`
93
95
 
94
- Returns all AST nodes that match the path. Useful when a message contains multiple segments or groups of the same type.
96
+ Returns every node the path addresses under `node`, in document order. `node` is a message, a group, or a segment, as in `select`.
95
97
 
96
98
  ```typescript
97
99
  // Get all OBX segments
@@ -107,36 +109,38 @@ for (const { node } of orders) {
107
109
  }
108
110
 
109
111
  // Get all observation values
110
- const values = selectAll(ast, "OBX-5");
112
+ const values = selectAll(ast, "OBX.5");
111
113
  for (const { node } of values) {
112
114
  console.log(node.type); // 'field'
113
115
  }
114
116
  ```
115
117
 
116
- ### `value(root: Root, path: string): { value: string; node: Nodes; ancestors: Nodes[] } | null`
118
+ ### `value(node: Root | Group | Segment, path: string): { value: string | null; node: Nodes; ancestors: Nodes[] } | null`
117
119
 
118
- Returns the string value stored at the path. If the node is not a subcomponent, it walks through single-child layers (field → field repetition → component → subcomponent) automatically.
120
+ Returns the string value stored at the path under `node`, a message, a group, or a segment. If the node is not a subcomponent, it walks through single-child layers (field → field repetition → component → subcomponent) automatically.
119
121
 
120
122
  ```typescript
121
- const result = value(ast, "PID-3[1].1.1");
123
+ const result = value(ast, "PID.3[1].1.1");
122
124
  if (result) {
123
125
  console.log(result.value); // "123456789"
124
126
  console.log(result.node.type); // "subcomponent"
125
127
  console.log(result.ancestors); // [Root, Segment, Field, ...]
126
128
  }
129
+
130
+ value(pid, "3[1].1.1")?.value; // "123456789", read from the PID segment
127
131
  ```
128
132
 
129
- ### `matches(root: Root, path: string): boolean`
133
+ ### `matches(node: Root | Group | Segment, path: string): boolean`
130
134
 
131
- Returns `true` when the path points to an existing node, otherwise `false`.
135
+ Returns `true` when `select` finds a node at the path under `node`, otherwise `false`.
132
136
 
133
137
  ```typescript
134
- if (!matches(ast, "OBX-5")) {
138
+ if (!matches(ast, "OBX.5")) {
135
139
  throw new Error("Missing observation value");
136
140
  }
137
141
 
138
- if (matches(ast, "PID-5")) {
139
- const name = value(ast, "PID-5.1.1");
142
+ if (matches(ast, "PID.5")) {
143
+ const name = value(ast, "PID.5.1.1");
140
144
  }
141
145
  ```
142
146
 
@@ -146,34 +150,55 @@ The inverse of `select`. Given a node and its ancestor chain (as returned by `vi
146
150
 
147
151
  ```typescript
148
152
  // With select
149
- const result = select(ast, "PID-5.2");
153
+ const result = select(ast, "PID.5.2");
150
154
  if (result) {
151
- format(result.node, result.ancestors); // "PID-5.2"
155
+ format(result.node, result.ancestors); // "PID.5.2"
152
156
  }
153
157
 
154
158
  // With visit
155
159
  visit(ast, "field", (node, ancestors) => {
156
- const path = format(node, ancestors); // "PID-5", "OBX-1", etc.
160
+ const path = format(node, ancestors); // "PID.5", "OBX.1", etc.
157
161
  console.log(`Visiting ${path}`);
158
162
  });
159
163
 
160
- // Round-trip: format(select(root, path)) === path
164
+ // select(root, format(node, ancestors)) returns node
161
165
  ```
162
166
 
163
- ### `clearParseCache(): void`
167
+ ### `delimiters(root: Root): Delimiters`
168
+
169
+ Returns the message's delimiters, read from MSH-1 and MSH-2, with the HL7v2 defaults for any character the message does not give.
170
+
171
+ ```typescript
172
+ delimiters(ast); // { field: "|", component: "^", repetition: "~", escape: "\\", subcomponent: "&", … }
173
+ ```
164
174
 
165
- Clears the memoized parse results. Useful for long-running services that want to release memory during idle periods or before reloading configuration.
175
+ ### `QueryError`
166
176
 
167
- ### `getParseCacheSize(): number`
177
+ Every function that takes a path throws a `QueryError` when it cannot read the path; `path` carries the path.
168
178
 
169
- Returns the current number of cached path entries so you can monitor cache pressure.
179
+ | `code` | Cause |
180
+ | -------------- | ------------------------------------------ |
181
+ | `EMPTY_PATH` | The path is empty. |
182
+ | `INVALID_PATH` | The path does not follow the path grammar. |
183
+
184
+ ```typescript
185
+ import { QueryError } from "@glion/util-query";
186
+
187
+ try {
188
+ select(ast, userPath);
189
+ } catch (error) {
190
+ if (error instanceof QueryError && error.code === "INVALID_PATH") {
191
+ // userPath is not a path; error.path holds it
192
+ }
193
+ }
194
+ ```
170
195
 
171
196
  ### Types
172
197
 
173
198
  ```typescript
174
199
  type PathParts = {
175
200
  groups?: Array<{ name: string; repetition?: number }>;
176
- segment: { name: string; repetition?: number };
201
+ segment?: { name: string; repetition?: number };
177
202
  field?: number;
178
203
  repetition?: number;
179
204
  component?: number;
@@ -186,24 +211,29 @@ type PathParts = {
186
211
  Canonical path grammar:
187
212
 
188
213
  - `SEGMENT` — segment (e.g., `PID`)
189
- - `SEGMENT-FIELD` — field (e.g., `PID-5`)
190
- - `SEGMENT-FIELD[REP]` — field repetition (e.g., `PID-5[2]`)
191
- - `SEGMENT-FIELD[REP].COMP` — component (e.g., `PID-5[1].2`)
192
- - `SEGMENT-FIELD[REP].COMP.SUB` — subcomponent (e.g., `PID-5[1].2.1`)
193
- - `GROUP[N]-...` — qualify with group ID and optional repetition (e.g., `ORDER_OBSERVATION[2]-OBX-5`)
214
+ - `SEGMENT.FIELD` — field (e.g., `PID.5`)
215
+ - `SEGMENT.FIELD[REP]` — field repetition (e.g., `PID.5[2]`)
216
+ - `SEGMENT.FIELD[REP].COMP` — component (e.g., `PID.5[1].2`)
217
+ - `SEGMENT.FIELD[REP].COMP.SUB` — subcomponent (e.g., `PID.5[1].2.1`)
218
+ - `GROUP[N].` — qualify with group ID and optional repetition (e.g., `PATIENT_RESULT.ORDER_OBSERVATION[2].OBR.4`)
219
+ - `FIELD[REP].COMP.SUB` — the same steps without the segment, read from a segment (e.g., `5[1].2.1`)
220
+
221
+ Every step of a path is separated with `.`. A name starts with a letter and a field is a number, so the first numeric step is the field: in `ORDER.OBR.5.1`, `ORDER` is a group, `OBR` the segment, `5` the field, and `1` the component. Positions count from 1. A string that does not follow this grammar, such as `PID-5.1`, `PID.0`, or `" PID"`, throws `INVALID_PATH`.
194
222
 
195
223
  A segment name or group ID is an uppercase letter followed by uppercase letters, digits, and underscores, such as `PID` or `PATIENT_RESULT`. A path names a group by its `id`, not its `name`: a group with ID `PATIENT_VISIT` and name `Patient Visit` is `PATIENT_VISIT`.
196
224
 
197
- Repetition indexes are **1-based**. If you omit `[n]`, `select`/`value`/`matches` assume `[1]`.
225
+ Repetition indexes are **1-based**. If you omit `[n]`, `select`/`value`/`matches` take the first child with that name at that step, and `selectAll` takes every one. In a message whose first `ORDER` has no `OBX` and whose second has one, `select(ast, "ORDER.OBX")` returns `null` and `selectAll(ast, "ORDER.OBX")` returns the second `ORDER`'s `OBX`; `ORDER[2].OBX` selects it.
226
+
227
+ Every step names a direct child of the node before it, and the first step names a direct child of the node the path is read from: a message or a group holds segments and groups, and a segment holds fields, so a path read from a segment starts with the field. A path that starts with the field finds nothing in a message or a group, and a path that starts with a name finds nothing in a segment. `ORDER.ORC` is an `ORC` directly inside an `ORDER` group directly under the message; an `ORC` nested deeper is not matched. A path to a node inside a group therefore names every group from the message down: in an `ORU_R01` grouped by `@glion/transform-profile-groups`, the patient is `PATIENT_RESULT.PATIENT.PID` and an observation is `PATIENT_RESULT.ORDER_OBSERVATION.OBSERVATION.OBX`.
198
228
 
199
- Paths select whatever exists in the AST — segments or groups. A bare name (`NAME`) returns whichever exists, trying segments first; adding a field suffix (`NAME-N`) forces segment access because field numbers only apply to segments. Groups can also appear as navigation prefixes (`ORDER-ORC`, `ORDER-TIMING-TQ1-1`).
229
+ A path's meaning depends on the tree's grouping. On a flat tree, as the parser produces it, every segment is a direct child of the message, so `PID.3` and `OBX[2].5` match. After grouping, only segments left at the top level, such as `MSH`, match by name alone; `PID.3` returns `null` until the path names `PID`'s groups.
200
230
 
201
- Group prefixes and the final name resolve differently. Each group in the prefix must be a direct child of the previous scope (`INSURANCE-ORDER` matches only an `ORDER` group directly inside `INSURANCE`). The final name is searched at any depth below that scope, in document order, so `select(ast, "OBX")` finds an `OBX` nested inside `ORDER-RESULT` and `select(ast, "RESULT")` finds the nested `RESULT` group. `[n]` on the final name indexes that document-order list across depths, matching the segment-sequence convention of the HL7 `ERL` data type: `OBX[3]` is the third `OBX` in the message regardless of grouping, and `ORDER[2]` may be a nested `ORDER` that opens before the second top-level one. Use a group prefix to pin the level when a name occurs at several depths.
231
+ `[n]` counts the direct children with that name, segments and groups together: in `[MSH, PID, OBX, PID]`, the second `PID` is `PID[2]`, and a group `ZZZ` after a segment `ZZZ` is `ZZZ[2]`. A step without a field number matches a segment or a group; a field number matches only a segment.
202
232
 
203
- Because the final name ignores grouping, a bare segment path returns the same node whether or not a grouping plugin has run on the tree.
233
+ `format(node, ancestors)` returns the path that `select` resolves back to `node`.
204
234
 
205
235
  ```typescript
206
- // Selecting groups directly
236
+ // Selecting a top-level group
207
237
  const orderGroup = select(ast, "ORDER");
208
238
  if (orderGroup?.node.type === "group") {
209
239
  console.log("Found ORDER group");
@@ -216,8 +246,8 @@ if (pid?.node.type === "segment") {
216
246
  }
217
247
 
218
248
  // Navigation through groups to segments
219
- value(ast, "ORDER-ORC-1"); // Order control
220
- value(ast, "ORDER-TIMING-TQ1-1"); // Timing quantity
249
+ value(ast, "ORDER.ORC.1"); // Order control
250
+ value(ast, "ORDER.TIMING.TQ1.1"); // Timing quantity
221
251
  ```
222
252
 
223
253
  ## Common recipes
@@ -225,25 +255,26 @@ value(ast, "ORDER-TIMING-TQ1-1"); // Timing quantity
225
255
  ### Patient demographics
226
256
 
227
257
  ```typescript
228
- const lastName = value(ast, "PID-5[1].1.1")?.value;
229
- const firstName = value(ast, "PID-5[1].2.1")?.value;
230
- const middleName = value(ast, "PID-5[1].3.1")?.value;
231
- const dob = value(ast, "PID-7[1].1.1")?.value;
258
+ const lastName = value(ast, "PID.5[1].1.1")?.value;
259
+ const firstName = value(ast, "PID.5[1].2.1")?.value;
260
+ const middleName = value(ast, "PID.5[1].3.1")?.value;
261
+ const dob = value(ast, "PID.7[1].1.1")?.value;
232
262
  ```
233
263
 
234
264
  ### Observations
235
265
 
236
266
  ```typescript
267
+ import { selectAll, value } from "@glion/util-query";
268
+
237
269
  // Single observation
238
- const obsValue = value(ast, "OBX-5[1].1.1")?.value;
239
- const units = value(ast, "OBX-6[1].1.1")?.value;
240
- const refRange = value(ast, "OBX-7[1].1.1")?.value;
241
-
242
- // Multiple observations
243
- const allOBX = selectAll(ast, "OBX");
244
- for (const { node } of allOBX) {
245
- const val = value(node, "OBX-5")?.value;
246
- const u = value(node, "OBX-6")?.value;
270
+ const obsValue = value(ast, "OBX.5[1].1.1")?.value;
271
+ const units = value(ast, "OBX.6[1].1.1")?.value;
272
+ const refRange = value(ast, "OBX.7[1].1.1")?.value;
273
+
274
+ // Multiple observations: read each OBX from the segment
275
+ for (const { node: obx } of selectAll(ast, "OBX")) {
276
+ const val = value(obx, "5")?.value;
277
+ const u = value(obx, "6")?.value;
247
278
  console.log(`${val} ${u}`);
248
279
  }
249
280
  ```
@@ -252,7 +283,7 @@ for (const { node } of allOBX) {
252
283
 
253
284
  ```typescript
254
285
  if (!matches(ast, "MSH")) throw new Error("Missing message header");
255
- if (!matches(ast, "PID-3[1].1.1")) throw new Error("Missing patient ID");
286
+ if (!matches(ast, "PID.3[1].1.1")) throw new Error("Missing patient ID");
256
287
 
257
288
  if (matches(ast, "OBX")) {
258
289
  const observations = selectAll(ast, "OBX");
@@ -260,12 +291,6 @@ if (matches(ast, "OBX")) {
260
291
  }
261
292
  ```
262
293
 
263
- ## Error messages
264
-
265
- - Invalid formats throw with guidance, e.g. `"Invalid HL7 path format: \"PID-\""`.
266
- - Out-of-range indexes throw, e.g. `"Field number must be ≥1, got: 0"`.
267
- - Whitespace is rejected to catch accidental typos.
268
-
269
294
  ## Part of Glion
270
295
 
271
296
  `@glion/util-query` is part of **[Glion]**, the application framework for HL7v2. See the [Glion README] for the full package catalog and architecture.
@@ -0,0 +1,25 @@
1
+ /**
2
+ * The typed failure for `@glion/util-query`. Branch on `code`; each code is
3
+ * one cause.
4
+ *
5
+ * @module
6
+ */
7
+ /**
8
+ * Machine-readable codes for what a path got wrong:
9
+ *
10
+ * - `EMPTY_PATH` — the path is empty.
11
+ * - `INVALID_PATH` — the path does not follow the path grammar.
12
+ */
13
+ export declare const QueryErrorCode: {
14
+ readonly EMPTY_PATH: "EMPTY_PATH";
15
+ readonly INVALID_PATH: "INVALID_PATH";
16
+ };
17
+ export type QueryErrorCode = (typeof QueryErrorCode)[keyof typeof QueryErrorCode];
18
+ /** A path that `@glion/util-query` cannot read. */
19
+ export declare class QueryError extends Error {
20
+ readonly name = "QueryError";
21
+ readonly code: QueryErrorCode;
22
+ readonly path: string;
23
+ constructor(code: QueryErrorCode, path: string);
24
+ }
25
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,cAAc;;;CAGjB,CAAC;AAEX,MAAM,MAAM,cAAc,GACxB,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAavD,mDAAmD;AACnD,qBAAa,UAAW,SAAQ,KAAK;IACnC,SAAkB,IAAI,gBAAgB;IACtC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAEV,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM;CAK/C"}
package/dist/format.d.ts CHANGED
@@ -2,25 +2,26 @@ import type { Nodes } from "@glion/ast";
2
2
  /**
3
3
  * Format a node and its ancestor chain into a canonical HL7v2 path string.
4
4
  *
5
- * This is the inverse of `select`: given a node and the ancestors
6
- * returned by `visit` or `select`, it produces the path string that
7
- * would select that node.
5
+ * When `ancestors` starts at the root, `select(root, path)` returns `node`:
6
+ * the path names every group, and `[n]` counts the siblings with the same
7
+ * name, segments and groups together.
8
8
  *
9
9
  * @example
10
10
  * ```typescript
11
11
  * visit(tree, "field", (node, ancestors) => {
12
- * format(node, ancestors); // "PID-5"
12
+ * format(node, ancestors); // "PID.5"
13
13
  * });
14
14
  *
15
- * const result = select(root, "PID-5.2");
16
- * format(result.node, result.ancestors); // "PID-5.2"
15
+ * const result = select(root, "PID.5.2");
16
+ * format(result.node, result.ancestors); // "PID.5.2"
17
17
  * ```;
18
18
  *
19
19
  * @param node - The target AST node
20
20
  * @param ancestors - Ancestor chain from root to parent (as provided by
21
21
  * visit/select)
22
- * @returns Canonical path string (e.g., "PID-5.2", "ORDER-ORC-1"), or `null` if the
23
- * ancestor chain contains no segment or group
22
+ * @returns Canonical path string (e.g., "PID.5.2", "ORDER.ORC.1"), or `null` if the
23
+ * ancestor chain contains no segment or group, or an ancestor does not
24
+ * hold the next node in the chain
24
25
  */
25
26
  export declare function format(node: Nodes, ancestors: Nodes[]): string | null;
26
27
  //# sourceMappingURL=format.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAS,KAAK,EAAW,MAAM,YAAY,CAAC;AAMxD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,wBAAgB,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,MAAM,GAAG,IAAI,CAmDrE"}
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAS,KAAK,EAAiB,MAAM,YAAY,CAAC;AAI9D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,MAAM,GAAG,IAAI,CAqCrE"}
package/dist/index.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  export { delimiters } from "./delimiters";
2
+ export { QueryError, QueryErrorCode } from "./errors";
2
3
  export { format } from "./format";
3
4
  export { matches } from "./matches";
4
5
  export { parse } from "./parse";
5
6
  export { select, selectAll } from "./select";
6
- export { set } from "./set";
7
7
  export type { GroupLocator, InferNodeType, PathParts, SegmentLocator, } from "./types";
8
8
  export { value } from "./value";
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,YAAY,EACV,YAAY,EACZ,aAAa,EACb,SAAS,EACT,cAAc,GACf,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC7C,YAAY,EACV,YAAY,EACZ,aAAa,EACb,SAAS,EACT,cAAc,GACf,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC"}