@jmespath-community/jmespath 1.2.0 → 1.3.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/README.md +76 -4
- package/dist/cli.d.ts +2 -0
- package/dist/cli.mjs +2181 -0
- package/dist/cli.mjs.map +1 -0
- package/dist/index.cjs +2118 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +412 -0
- package/dist/index.d.ts +412 -0
- package/dist/index.esm.js +2099 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/index.esm.min.js +2 -0
- package/dist/index.esm.min.js.map +1 -0
- package/dist/index.mjs +2089 -0
- package/dist/index.mjs.map +1 -0
- package/dist/index.umd.js +2133 -0
- package/dist/index.umd.js.map +1 -0
- package/dist/index.umd.min.js +2 -0
- package/dist/index.umd.min.js.map +1 -0
- package/package.json +28 -6
- package/dist/jmespath.esm.js +0 -2369
- package/dist/jmespath.esm.min.js +0 -2
- package/dist/jmespath.esm.min.js.map +0 -1
- package/dist/jmespath.umd.js +0 -2398
- package/dist/jmespath.umd.min.js +0 -2
- package/dist/jmespath.umd.min.js.map +0 -1
- package/dist/lib/bin/jp.js +0 -127
- package/dist/lib/bin/jp.js.map +0 -1
- package/dist/lib/package.json +0 -70
- package/dist/lib/src/AST.type.js +0 -3
- package/dist/lib/src/AST.type.js.map +0 -1
- package/dist/lib/src/JSON.type.js +0 -3
- package/dist/lib/src/JSON.type.js.map +0 -1
- package/dist/lib/src/Lexer.js +0 -327
- package/dist/lib/src/Lexer.js.map +0 -1
- package/dist/lib/src/Lexer.type.js +0 -46
- package/dist/lib/src/Lexer.type.js.map +0 -1
- package/dist/lib/src/Parser.js +0 -468
- package/dist/lib/src/Parser.js.map +0 -1
- package/dist/lib/src/Parser.type.js +0 -3
- package/dist/lib/src/Parser.type.js.map +0 -1
- package/dist/lib/src/Runtime.js +0 -924
- package/dist/lib/src/Runtime.js.map +0 -1
- package/dist/lib/src/Scope.js +0 -29
- package/dist/lib/src/Scope.js.map +0 -1
- package/dist/lib/src/TreeInterpreter.js +0 -319
- package/dist/lib/src/TreeInterpreter.js.map +0 -1
- package/dist/lib/src/index.js +0 -65
- package/dist/lib/src/index.js.map +0 -1
- package/dist/lib/src/utils/index.js +0 -145
- package/dist/lib/src/utils/index.js.map +0 -1
- package/dist/lib/src/utils/strings.js +0 -92
- package/dist/lib/src/utils/strings.js.map +0 -1
- package/dist/lib/src/utils/text.js +0 -45
- package/dist/lib/src/utils/text.js.map +0 -1
- package/dist/types/bin/jp.d.ts +0 -2
- package/dist/types/src/AST.type.d.ts +0 -104
- package/dist/types/src/JSON.type.d.ts +0 -10
- package/dist/types/src/Lexer.d.ts +0 -19
- package/dist/types/src/Lexer.type.d.ts +0 -51
- package/dist/types/src/Parser.d.ts +0 -33
- package/dist/types/src/Parser.type.d.ts +0 -4
- package/dist/types/src/Runtime.d.ts +0 -87
- package/dist/types/src/Scope.d.ts +0 -8
- package/dist/types/src/TreeInterpreter.d.ts +0 -22
- package/dist/types/src/index.d.ts +0 -45
- package/dist/types/src/utils/index.d.ts +0 -16
- package/dist/types/src/utils/strings.d.ts +0 -11
- package/dist/types/src/utils/text.d.ts +0 -11
package/README.md
CHANGED
|
@@ -91,11 +91,13 @@ TreeInterpreter.search(ast, { foo: { bar: "BAZ" } });
|
|
|
91
91
|
|
|
92
92
|
## EXTENSIONS TO ORIGINAL SPEC
|
|
93
93
|
|
|
94
|
-
1. ### Register
|
|
94
|
+
1. ### Register your own custom functions
|
|
95
95
|
|
|
96
|
-
####
|
|
96
|
+
#### Enhanced Function Registry API
|
|
97
97
|
|
|
98
|
-
|
|
98
|
+
The library provides both backward-compatible and enhanced APIs for registering custom functions with improved developer experience, type safety, and flexible override behavior.
|
|
99
|
+
|
|
100
|
+
##### Basic Usage (Backward Compatible)
|
|
99
101
|
|
|
100
102
|
```javascript
|
|
101
103
|
import { search, registerFunction, TYPE_NUMBER } from "@jmespath-community/jmespath";
|
|
@@ -117,6 +119,76 @@ TreeInterpreter.search(ast, { foo: { bar: "BAZ" } });
|
|
|
117
119
|
// OUTPUTS: 6
|
|
118
120
|
```
|
|
119
121
|
|
|
122
|
+
##### Enhanced Registry API with Type Safety
|
|
123
|
+
|
|
124
|
+
```typescript
|
|
125
|
+
import { register, search, TYPE_NUMBER } from "@jmespath-community/jmespath";
|
|
126
|
+
|
|
127
|
+
// TypeScript prevents registering built-in functions at compile time
|
|
128
|
+
// register('sum', myFunc, signature); // TypeScript error!
|
|
129
|
+
|
|
130
|
+
// Enhanced registration with better error handling
|
|
131
|
+
const result = register('multiply', ([a, b]) => a * b, [
|
|
132
|
+
{ types: [TYPE_NUMBER] },
|
|
133
|
+
{ types: [TYPE_NUMBER] }
|
|
134
|
+
]);
|
|
135
|
+
|
|
136
|
+
if (result.success) {
|
|
137
|
+
console.log(result.message); // "Function multiply() registered successfully"
|
|
138
|
+
} else {
|
|
139
|
+
console.error(result.message); // Detailed error information
|
|
140
|
+
}
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
##### Override Existing Functions
|
|
144
|
+
|
|
145
|
+
```javascript
|
|
146
|
+
import { registerFunction, register } from "@jmespath-community/jmespath";
|
|
147
|
+
|
|
148
|
+
// Option 1: Using registerFunction with options
|
|
149
|
+
registerFunction('myFunc', () => 'first', []);
|
|
150
|
+
registerFunction('myFunc', () => 'second', [], { override: true, warn: true });
|
|
151
|
+
// Console: "Warning: Overriding existing function: myFunc()"
|
|
152
|
+
|
|
153
|
+
// Option 2: Using enhanced register API
|
|
154
|
+
const result = register('myFunc', () => 'third', [], { override: true });
|
|
155
|
+
console.log(result.message); // "Function myFunc() overridden successfully"
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
##### Registry Management
|
|
159
|
+
|
|
160
|
+
```javascript
|
|
161
|
+
import {
|
|
162
|
+
isRegistered,
|
|
163
|
+
getRegisteredFunctions,
|
|
164
|
+
getCustomFunctions,
|
|
165
|
+
unregisterFunction,
|
|
166
|
+
clearCustomFunctions
|
|
167
|
+
} from "@jmespath-community/jmespath";
|
|
168
|
+
|
|
169
|
+
// Check if function exists
|
|
170
|
+
console.log(isRegistered('sum')); // true (built-in)
|
|
171
|
+
console.log(isRegistered('myFunc')); // true (if registered)
|
|
172
|
+
|
|
173
|
+
// Get all registered functions
|
|
174
|
+
const allFunctions = getRegisteredFunctions();
|
|
175
|
+
console.log(allFunctions); // ['abs', 'avg', 'ceil', ..., 'myFunc']
|
|
176
|
+
|
|
177
|
+
// Get only custom functions
|
|
178
|
+
const customFunctions = getCustomFunctions();
|
|
179
|
+
console.log(customFunctions); // ['myFunc', 'divide', ...]
|
|
180
|
+
|
|
181
|
+
// Unregister custom function (built-ins cannot be unregistered)
|
|
182
|
+
const removed = unregisterFunction('myFunc');
|
|
183
|
+
console.log(removed); // true if successful
|
|
184
|
+
|
|
185
|
+
// Clear all custom functions
|
|
186
|
+
clearCustomFunctions();
|
|
187
|
+
console.log(getCustomFunctions()); // []
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
##### Optional Arguments
|
|
191
|
+
|
|
120
192
|
Optional arguments are supported by setting `{..., optional: true}` in argument signatures
|
|
121
193
|
|
|
122
194
|
```javascript
|
|
@@ -124,7 +196,7 @@ TreeInterpreter.search(ast, { foo: { bar: "BAZ" } });
|
|
|
124
196
|
"divide",
|
|
125
197
|
(resolvedArgs) => {
|
|
126
198
|
const [dividend, divisor] = resolvedArgs;
|
|
127
|
-
return dividend / divisor ?? 1; //OPTIONAL DIVISOR THAT DEFAULTS TO 1
|
|
199
|
+
return dividend / (divisor ?? 1); //OPTIONAL DIVISOR THAT DEFAULTS TO 1
|
|
128
200
|
},
|
|
129
201
|
[{ types: [TYPE_NUMBER] }, { types: [TYPE_NUMBER], optional: true }], //SIGNATURE
|
|
130
202
|
);
|
package/dist/cli.d.ts
ADDED