@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.
Files changed (147) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +222 -0
  3. package/dist/auth.d.ts +139 -0
  4. package/dist/auth.d.ts.map +1 -0
  5. package/dist/auth.js +991 -0
  6. package/dist/auth.js.map +1 -0
  7. package/dist/cache-status.d.ts +15 -0
  8. package/dist/cache-status.d.ts.map +1 -0
  9. package/dist/cache-status.js +152 -0
  10. package/dist/cache-status.js.map +1 -0
  11. package/dist/cache.d.ts +94 -0
  12. package/dist/cache.d.ts.map +1 -0
  13. package/dist/cache.js +244 -0
  14. package/dist/cache.js.map +1 -0
  15. package/dist/client-hints.d.ts +23 -0
  16. package/dist/client-hints.d.ts.map +1 -0
  17. package/dist/client-hints.js +81 -0
  18. package/dist/client-hints.js.map +1 -0
  19. package/dist/conditional.d.ts +97 -0
  20. package/dist/conditional.d.ts.map +1 -0
  21. package/dist/conditional.js +300 -0
  22. package/dist/conditional.js.map +1 -0
  23. package/dist/content-disposition.d.ts +23 -0
  24. package/dist/content-disposition.d.ts.map +1 -0
  25. package/dist/content-disposition.js +122 -0
  26. package/dist/content-disposition.js.map +1 -0
  27. package/dist/cookie.d.ts +43 -0
  28. package/dist/cookie.d.ts.map +1 -0
  29. package/dist/cookie.js +472 -0
  30. package/dist/cookie.js.map +1 -0
  31. package/dist/cors.d.ts +53 -0
  32. package/dist/cors.d.ts.map +1 -0
  33. package/dist/cors.js +170 -0
  34. package/dist/cors.js.map +1 -0
  35. package/dist/datetime.d.ts +53 -0
  36. package/dist/datetime.d.ts.map +1 -0
  37. package/dist/datetime.js +205 -0
  38. package/dist/datetime.js.map +1 -0
  39. package/dist/digest.d.ts +220 -0
  40. package/dist/digest.d.ts.map +1 -0
  41. package/dist/digest.js +355 -0
  42. package/dist/digest.js.map +1 -0
  43. package/dist/encoding.d.ts +14 -0
  44. package/dist/encoding.d.ts.map +1 -0
  45. package/dist/encoding.js +86 -0
  46. package/dist/encoding.js.map +1 -0
  47. package/dist/etag.d.ts +55 -0
  48. package/dist/etag.d.ts.map +1 -0
  49. package/dist/etag.js +182 -0
  50. package/dist/etag.js.map +1 -0
  51. package/dist/ext-value.d.ts +40 -0
  52. package/dist/ext-value.d.ts.map +1 -0
  53. package/dist/ext-value.js +119 -0
  54. package/dist/ext-value.js.map +1 -0
  55. package/dist/forwarded.d.ts +14 -0
  56. package/dist/forwarded.d.ts.map +1 -0
  57. package/dist/forwarded.js +93 -0
  58. package/dist/forwarded.js.map +1 -0
  59. package/dist/header-utils.d.ts +71 -0
  60. package/dist/header-utils.d.ts.map +1 -0
  61. package/dist/header-utils.js +143 -0
  62. package/dist/header-utils.js.map +1 -0
  63. package/dist/headers.d.ts +71 -0
  64. package/dist/headers.d.ts.map +1 -0
  65. package/dist/headers.js +134 -0
  66. package/dist/headers.js.map +1 -0
  67. package/dist/hsts.d.ts +15 -0
  68. package/dist/hsts.d.ts.map +1 -0
  69. package/dist/hsts.js +106 -0
  70. package/dist/hsts.js.map +1 -0
  71. package/dist/http-signatures.d.ts +202 -0
  72. package/dist/http-signatures.d.ts.map +1 -0
  73. package/dist/http-signatures.js +720 -0
  74. package/dist/http-signatures.js.map +1 -0
  75. package/dist/index.d.ts +41 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +125 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/json-pointer.d.ts +97 -0
  80. package/dist/json-pointer.d.ts.map +1 -0
  81. package/dist/json-pointer.js +278 -0
  82. package/dist/json-pointer.js.map +1 -0
  83. package/dist/jsonpath.d.ts +98 -0
  84. package/dist/jsonpath.d.ts.map +1 -0
  85. package/dist/jsonpath.js +1470 -0
  86. package/dist/jsonpath.js.map +1 -0
  87. package/dist/language.d.ts +14 -0
  88. package/dist/language.d.ts.map +1 -0
  89. package/dist/language.js +95 -0
  90. package/dist/language.js.map +1 -0
  91. package/dist/link.d.ts +102 -0
  92. package/dist/link.d.ts.map +1 -0
  93. package/dist/link.js +437 -0
  94. package/dist/link.js.map +1 -0
  95. package/dist/linkset.d.ts +111 -0
  96. package/dist/linkset.d.ts.map +1 -0
  97. package/dist/linkset.js +501 -0
  98. package/dist/linkset.js.map +1 -0
  99. package/dist/negotiate.d.ts +71 -0
  100. package/dist/negotiate.d.ts.map +1 -0
  101. package/dist/negotiate.js +357 -0
  102. package/dist/negotiate.js.map +1 -0
  103. package/dist/pagination.d.ts +80 -0
  104. package/dist/pagination.d.ts.map +1 -0
  105. package/dist/pagination.js +188 -0
  106. package/dist/pagination.js.map +1 -0
  107. package/dist/prefer.d.ts +18 -0
  108. package/dist/prefer.d.ts.map +1 -0
  109. package/dist/prefer.js +93 -0
  110. package/dist/prefer.js.map +1 -0
  111. package/dist/problem.d.ts +54 -0
  112. package/dist/problem.d.ts.map +1 -0
  113. package/dist/problem.js +104 -0
  114. package/dist/problem.js.map +1 -0
  115. package/dist/proxy-status.d.ts +28 -0
  116. package/dist/proxy-status.d.ts.map +1 -0
  117. package/dist/proxy-status.js +220 -0
  118. package/dist/proxy-status.js.map +1 -0
  119. package/dist/range.d.ts +28 -0
  120. package/dist/range.d.ts.map +1 -0
  121. package/dist/range.js +243 -0
  122. package/dist/range.js.map +1 -0
  123. package/dist/response.d.ts +101 -0
  124. package/dist/response.d.ts.map +1 -0
  125. package/dist/response.js +200 -0
  126. package/dist/response.js.map +1 -0
  127. package/dist/sorting.d.ts +66 -0
  128. package/dist/sorting.d.ts.map +1 -0
  129. package/dist/sorting.js +168 -0
  130. package/dist/sorting.js.map +1 -0
  131. package/dist/structured-fields.d.ts +30 -0
  132. package/dist/structured-fields.d.ts.map +1 -0
  133. package/dist/structured-fields.js +468 -0
  134. package/dist/structured-fields.js.map +1 -0
  135. package/dist/types.d.ts +772 -0
  136. package/dist/types.d.ts.map +1 -0
  137. package/dist/types.js +8 -0
  138. package/dist/types.js.map +1 -0
  139. package/dist/uri-template.d.ts +48 -0
  140. package/dist/uri-template.d.ts.map +1 -0
  141. package/dist/uri-template.js +483 -0
  142. package/dist/uri-template.js.map +1 -0
  143. package/dist/uri.d.ts +80 -0
  144. package/dist/uri.d.ts.map +1 -0
  145. package/dist/uri.js +423 -0
  146. package/dist/uri.js.map +1 -0
  147. 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"}