@irvinebroque/http-rfc-utils 0.1.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/LICENSE +21 -0
- package/README.md +222 -0
- package/dist/auth.d.ts +139 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +991 -0
- package/dist/auth.js.map +1 -0
- package/dist/cache-status.d.ts +15 -0
- package/dist/cache-status.d.ts.map +1 -0
- package/dist/cache-status.js +152 -0
- package/dist/cache-status.js.map +1 -0
- package/dist/cache.d.ts +94 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +244 -0
- package/dist/cache.js.map +1 -0
- package/dist/client-hints.d.ts +23 -0
- package/dist/client-hints.d.ts.map +1 -0
- package/dist/client-hints.js +81 -0
- package/dist/client-hints.js.map +1 -0
- package/dist/conditional.d.ts +97 -0
- package/dist/conditional.d.ts.map +1 -0
- package/dist/conditional.js +300 -0
- package/dist/conditional.js.map +1 -0
- package/dist/content-disposition.d.ts +23 -0
- package/dist/content-disposition.d.ts.map +1 -0
- package/dist/content-disposition.js +122 -0
- package/dist/content-disposition.js.map +1 -0
- package/dist/cookie.d.ts +43 -0
- package/dist/cookie.d.ts.map +1 -0
- package/dist/cookie.js +472 -0
- package/dist/cookie.js.map +1 -0
- package/dist/cors.d.ts +53 -0
- package/dist/cors.d.ts.map +1 -0
- package/dist/cors.js +170 -0
- package/dist/cors.js.map +1 -0
- package/dist/datetime.d.ts +53 -0
- package/dist/datetime.d.ts.map +1 -0
- package/dist/datetime.js +205 -0
- package/dist/datetime.js.map +1 -0
- package/dist/digest.d.ts +220 -0
- package/dist/digest.d.ts.map +1 -0
- package/dist/digest.js +355 -0
- package/dist/digest.js.map +1 -0
- package/dist/encoding.d.ts +14 -0
- package/dist/encoding.d.ts.map +1 -0
- package/dist/encoding.js +86 -0
- package/dist/encoding.js.map +1 -0
- package/dist/etag.d.ts +55 -0
- package/dist/etag.d.ts.map +1 -0
- package/dist/etag.js +182 -0
- package/dist/etag.js.map +1 -0
- package/dist/ext-value.d.ts +40 -0
- package/dist/ext-value.d.ts.map +1 -0
- package/dist/ext-value.js +119 -0
- package/dist/ext-value.js.map +1 -0
- package/dist/forwarded.d.ts +14 -0
- package/dist/forwarded.d.ts.map +1 -0
- package/dist/forwarded.js +93 -0
- package/dist/forwarded.js.map +1 -0
- package/dist/header-utils.d.ts +71 -0
- package/dist/header-utils.d.ts.map +1 -0
- package/dist/header-utils.js +143 -0
- package/dist/header-utils.js.map +1 -0
- package/dist/headers.d.ts +71 -0
- package/dist/headers.d.ts.map +1 -0
- package/dist/headers.js +134 -0
- package/dist/headers.js.map +1 -0
- package/dist/hsts.d.ts +15 -0
- package/dist/hsts.d.ts.map +1 -0
- package/dist/hsts.js +106 -0
- package/dist/hsts.js.map +1 -0
- package/dist/http-signatures.d.ts +202 -0
- package/dist/http-signatures.d.ts.map +1 -0
- package/dist/http-signatures.js +720 -0
- package/dist/http-signatures.js.map +1 -0
- package/dist/index.d.ts +41 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +125 -0
- package/dist/index.js.map +1 -0
- package/dist/json-pointer.d.ts +97 -0
- package/dist/json-pointer.d.ts.map +1 -0
- package/dist/json-pointer.js +278 -0
- package/dist/json-pointer.js.map +1 -0
- package/dist/jsonpath.d.ts +98 -0
- package/dist/jsonpath.d.ts.map +1 -0
- package/dist/jsonpath.js +1470 -0
- package/dist/jsonpath.js.map +1 -0
- package/dist/language.d.ts +14 -0
- package/dist/language.d.ts.map +1 -0
- package/dist/language.js +95 -0
- package/dist/language.js.map +1 -0
- package/dist/link.d.ts +102 -0
- package/dist/link.d.ts.map +1 -0
- package/dist/link.js +437 -0
- package/dist/link.js.map +1 -0
- package/dist/linkset.d.ts +111 -0
- package/dist/linkset.d.ts.map +1 -0
- package/dist/linkset.js +501 -0
- package/dist/linkset.js.map +1 -0
- package/dist/negotiate.d.ts +71 -0
- package/dist/negotiate.d.ts.map +1 -0
- package/dist/negotiate.js +357 -0
- package/dist/negotiate.js.map +1 -0
- package/dist/pagination.d.ts +80 -0
- package/dist/pagination.d.ts.map +1 -0
- package/dist/pagination.js +188 -0
- package/dist/pagination.js.map +1 -0
- package/dist/prefer.d.ts +18 -0
- package/dist/prefer.d.ts.map +1 -0
- package/dist/prefer.js +93 -0
- package/dist/prefer.js.map +1 -0
- package/dist/problem.d.ts +54 -0
- package/dist/problem.d.ts.map +1 -0
- package/dist/problem.js +104 -0
- package/dist/problem.js.map +1 -0
- package/dist/proxy-status.d.ts +28 -0
- package/dist/proxy-status.d.ts.map +1 -0
- package/dist/proxy-status.js +220 -0
- package/dist/proxy-status.js.map +1 -0
- package/dist/range.d.ts +28 -0
- package/dist/range.d.ts.map +1 -0
- package/dist/range.js +243 -0
- package/dist/range.js.map +1 -0
- package/dist/response.d.ts +101 -0
- package/dist/response.d.ts.map +1 -0
- package/dist/response.js +200 -0
- package/dist/response.js.map +1 -0
- package/dist/sorting.d.ts +66 -0
- package/dist/sorting.d.ts.map +1 -0
- package/dist/sorting.js +168 -0
- package/dist/sorting.js.map +1 -0
- package/dist/structured-fields.d.ts +30 -0
- package/dist/structured-fields.d.ts.map +1 -0
- package/dist/structured-fields.js +468 -0
- package/dist/structured-fields.js.map +1 -0
- package/dist/types.d.ts +772 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/dist/uri-template.d.ts +48 -0
- package/dist/uri-template.d.ts.map +1 -0
- package/dist/uri-template.js +483 -0
- package/dist/uri-template.js.map +1 -0
- package/dist/uri.d.ts +80 -0
- package/dist/uri.d.ts.map +1 -0
- package/dist/uri.js +423 -0
- package/dist/uri.js.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSONPath query expressions per RFC 9535.
|
|
3
|
+
* RFC 9535 §§2.1-2.7.
|
|
4
|
+
* @see https://www.rfc-editor.org/rfc/rfc9535.html
|
|
5
|
+
*
|
|
6
|
+
* Implements:
|
|
7
|
+
* - Root identifier ($) and current node identifier (@)
|
|
8
|
+
* - Name, wildcard, index, slice, and filter selectors
|
|
9
|
+
* - Child and descendant segments
|
|
10
|
+
* - Built-in functions: length(), count(), match(), search(), value()
|
|
11
|
+
* - Normalized path formatting
|
|
12
|
+
*
|
|
13
|
+
* Out of scope:
|
|
14
|
+
* - Custom function extensions (only built-in functions supported)
|
|
15
|
+
* - Full I-Regexp (RFC 9485) validation (uses JavaScript RegExp)
|
|
16
|
+
*/
|
|
17
|
+
import type { JsonPathQuery, JsonPathSegment, JsonPathSelector, JsonPathNode, JsonPathOptions } from './types.js';
|
|
18
|
+
export type { JsonPathQuery, JsonPathSegment, JsonPathSelector, JsonPathNode, JsonPathOptions, };
|
|
19
|
+
/**
|
|
20
|
+
* Parse a JSONPath query string into an AST.
|
|
21
|
+
* Returns null if the query is not well-formed or valid.
|
|
22
|
+
*
|
|
23
|
+
* @param query - JSONPath query string (e.g., "$.store.book[*].author")
|
|
24
|
+
* @returns Parsed AST, or null on invalid syntax
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* parseJsonPath('$.store.book[*]') // { type: 'query', root: '$', segments: [...] }
|
|
28
|
+
* parseJsonPath('invalid') // null
|
|
29
|
+
*
|
|
30
|
+
* @see https://www.rfc-editor.org/rfc/rfc9535.html#section-2.1
|
|
31
|
+
*/
|
|
32
|
+
export declare function parseJsonPath(query: string): JsonPathQuery | null;
|
|
33
|
+
/**
|
|
34
|
+
* Execute a JSONPath query against a JSON document.
|
|
35
|
+
* Returns an array of matching values (nodelist).
|
|
36
|
+
*
|
|
37
|
+
* @param query - JSONPath query string
|
|
38
|
+
* @param document - JSON document to query
|
|
39
|
+
* @param options - Query options
|
|
40
|
+
* @returns Array of matching values, or null on invalid query
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* queryJsonPath('$.store.book[*].author', doc) // ['Author1', 'Author2']
|
|
44
|
+
* queryJsonPath('$..price', doc) // [8.95, 12.99, 399]
|
|
45
|
+
* queryJsonPath('$.store.book[?@.price<10]', doc) // [{ title: 'Book1', ... }]
|
|
46
|
+
*
|
|
47
|
+
* @see https://www.rfc-editor.org/rfc/rfc9535.html#section-2.1.2
|
|
48
|
+
*/
|
|
49
|
+
export declare function queryJsonPath(query: string, document: unknown, options?: JsonPathOptions): unknown[] | null;
|
|
50
|
+
/**
|
|
51
|
+
* Execute a JSONPath query and return nodes with paths.
|
|
52
|
+
*
|
|
53
|
+
* @param query - JSONPath query string
|
|
54
|
+
* @param document - JSON document to query
|
|
55
|
+
* @returns Array of nodes with values and paths, or null on invalid query
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* queryJsonPathNodes('$.store.book[0].title', doc)
|
|
59
|
+
* // [{ value: 'Sayings of the Century', path: "$['store']['book'][0]['title']" }]
|
|
60
|
+
*
|
|
61
|
+
* @see https://www.rfc-editor.org/rfc/rfc9535.html#section-2.7
|
|
62
|
+
*/
|
|
63
|
+
export declare function queryJsonPathNodes(query: string, document: unknown): JsonPathNode[] | null;
|
|
64
|
+
/**
|
|
65
|
+
* Validate a JSONPath query string without parsing.
|
|
66
|
+
*
|
|
67
|
+
* @param query - String to validate
|
|
68
|
+
* @returns true if valid JSONPath syntax
|
|
69
|
+
*
|
|
70
|
+
* @see https://www.rfc-editor.org/rfc/rfc9535.html#section-2.1
|
|
71
|
+
*/
|
|
72
|
+
export declare function isValidJsonPath(query: string): boolean;
|
|
73
|
+
/**
|
|
74
|
+
* Format a normalized path from path segments.
|
|
75
|
+
*
|
|
76
|
+
* @param segments - Array of string keys or numeric indices
|
|
77
|
+
* @returns Normalized path string
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* formatNormalizedPath(['store', 'book', 0]) // "$['store']['book'][0]"
|
|
81
|
+
*
|
|
82
|
+
* @see https://www.rfc-editor.org/rfc/rfc9535.html#section-2.7
|
|
83
|
+
*/
|
|
84
|
+
export declare function formatNormalizedPath(segments: (string | number)[]): string;
|
|
85
|
+
/**
|
|
86
|
+
* Compile a JSONPath query for repeated execution.
|
|
87
|
+
* More efficient when the same query is used multiple times.
|
|
88
|
+
*
|
|
89
|
+
* @param query - JSONPath query string
|
|
90
|
+
* @returns Compiled query function, or null on invalid query
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* const fn = compileJsonPath('$.store.book[*].author');
|
|
94
|
+
* fn(doc1) // ['Author1', ...]
|
|
95
|
+
* fn(doc2) // ['Author2', ...]
|
|
96
|
+
*/
|
|
97
|
+
export declare function compileJsonPath(query: string): ((document: unknown) => unknown[]) | null;
|
|
98
|
+
//# sourceMappingURL=jsonpath.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonpath.d.ts","sourceRoot":"","sources":["../src/jsonpath.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EACR,aAAa,EACb,eAAe,EAGf,gBAAgB,EAmBhB,YAAY,EACZ,eAAe,EAClB,MAAM,YAAY,CAAC;AAGpB,YAAY,EACR,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,eAAe,GAClB,CAAC;AAqbF;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAcjE;AA2bD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CACzB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,OAAO,EACjB,OAAO,CAAC,EAAE,eAAe,GAC1B,OAAO,EAAE,GAAG,IAAI,CAWlB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAC9B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,OAAO,GAClB,YAAY,EAAE,GAAG,IAAI,CAKvB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,CAe1E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC3B,KAAK,EAAE,MAAM,GACd,CAAC,CAAC,QAAQ,EAAE,OAAO,KAAK,OAAO,EAAE,CAAC,GAAG,IAAI,CAQ3C"}
|