From 1366d4497c409387a5816eafeaedc4fbafd3596d Mon Sep 17 00:00:00 2001 From: Kazuki Hamasaki Date: Fri, 12 Sep 2025 23:40:37 +0900 Subject: [PATCH 1/3] chore: update Node.js version requirements and dependencies --- .node-version | 2 +- package-lock.json | 18 +++++++++--------- package.json | 4 ++-- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.node-version b/.node-version index d4b7699..fc90998 100644 --- a/.node-version +++ b/.node-version @@ -1 +1 @@ -20.18.1 +20.19.5 diff --git a/package-lock.json b/package-lock.json index c6a1266..3e9b22b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "devDependencies": { "@biomejs/biome": "2.2.4", "@types/jest": "^29.5.8", - "@types/node": "^18.7.3", + "@types/node": "^20.19.5", "lefthook": "^1.11.14", "npm-run-all": "^4.1.5", "peggy": "^5.0.4", @@ -21,7 +21,7 @@ "vitest": "^3.2.3" }, "engines": { - "node": ">=18" + "node": ">=20" } }, "node_modules/@babel/code-frame": { @@ -1139,13 +1139,13 @@ } }, "node_modules/@types/node": { - "version": "18.19.112", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.112.tgz", - "integrity": "sha512-i+Vukt9POdS/MBI7YrrkkI5fMfwFtOjphSmt4WXYLfwqsfr6z/HdCx7LqT9M7JktGob8WNgj8nFB4TbGNE4Cog==", + "version": "20.19.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.13.tgz", + "integrity": "sha512-yCAeZl7a0DxgNVteXFHt9+uyFbqXGy/ShC4BlcHkoE0AfGXYv/BUiplV72DjMYXHDBXFjhvr6DD1NiRVfB4j8g==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~6.21.0" } }, "node_modules/@types/stack-utils": { @@ -5004,9 +5004,9 @@ } }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "dev": true, "license": "MIT" }, diff --git a/package.json b/package.json index 770ac87..edb1527 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "module": "dist/index.mjs", "types": "dist/index.d.ts", "engines": { - "node": ">=18" + "node": ">=20" }, "files": [ "dist", @@ -40,7 +40,7 @@ "devDependencies": { "@biomejs/biome": "2.2.4", "@types/jest": "^29.5.8", - "@types/node": "^18.7.3", + "@types/node": "^20.19.5", "lefthook": "^1.11.14", "npm-run-all": "^4.1.5", "peggy": "^5.0.4", From 183f117187bf649fbbf520eb984538ab959fbb9a Mon Sep 17 00:00:00 2001 From: Kazuki Hamasaki Date: Fri, 12 Sep 2025 23:42:47 +0900 Subject: [PATCH 2/3] fix biome.json schema for update --- biome.json | 2 +- src/jsonpath_js.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/biome.json b/biome.json index a81e37c..280ca02 100644 --- a/biome.json +++ b/biome.json @@ -1,5 +1,5 @@ { - "$schema": "https://biomejs.dev/schemas/2.0.4/schema.json", + "$schema": "https://biomejs.dev/schemas/2.2.4/schema.json", "vcs": { "enabled": true, "clientKind": "git", diff --git a/src/jsonpath_js.ts b/src/jsonpath_js.ts index c5fe9be..22e163a 100644 --- a/src/jsonpath_js.ts +++ b/src/jsonpath_js.ts @@ -26,7 +26,7 @@ export class JSONPathJS { * @param query - The JSONPath query string to parse * @throws Throws an error if the query string is invalid */ - constructor(private query: string) { + constructor(query: string) { const parseResult = parse(query); this.rootNode = parseResult; } From 8ed18431ababedc480aa7c614ee578561522c838 Mon Sep 17 00:00:00 2001 From: Kazuki Hamasaki Date: Sat, 13 Sep 2025 00:27:42 +0900 Subject: [PATCH 3/3] Enfocing kebab-case file name --- .github/workflows/lint.yml | 4 +-- CLAUDE.md | 27 ++++++++++++++----- biome.json | 13 ++++++--- ...ArrayComparator.ts => array-comparator.ts} | 5 ++-- ...eanComparator.ts => boolean-comparator.ts} | 2 +- ...onOperators.ts => comparison-operators.ts} | 2 +- .../{NodeComparator.ts => node-comparator.ts} | 0 .../{NullComparator.ts => null-comparator.ts} | 0 ...ricComparator.ts => numeric-comparator.ts} | 0 ...jectComparator.ts => object-comparator.ts} | 2 +- src/comparator/{Operators.ts => operators.ts} | 0 ...ringComparator.ts => string-comparator.ts} | 2 +- src/functions/count.ts | 2 +- ...definitions.ts => function-definitions.ts} | 2 +- .../{function_types.ts => function-types.ts} | 0 src/functions/length.ts | 4 +-- src/functions/match.ts | 6 ++--- src/functions/search.ts | 6 ++--- src/functions/value.ts | 2 +- src/grammar/config.js | 2 +- .../{jsonpath_js.d.ts => jsonpath-js.d.ts} | 0 .../{jsonpath_js.js => jsonpath-js.js} | 0 src/index.ts | 2 +- src/{jsonpath_js.ts => jsonpath-js.ts} | 4 +-- ...ce_selector.ts => array-slice-selector.ts} | 0 ...{filter_selector.ts => filter-selector.ts} | 20 +++++++------- ...n_extentions.ts => function-extentions.ts} | 6 ++--- src/parsers/root.ts | 6 ++--- ...exp.ts => convert-iregexp-to-js-regexp.ts} | 0 .../{enumerateNode.ts => enumerate-node.ts} | 0 ...apeMemberName.ts => escape-member-name.ts} | 0 src/utils/{isEqual.ts => is-equal.ts} | 0 ...seDescendant.ts => traverse-descendant.ts} | 2 +- ...jsonpath.test.ts => ietf-jsonpath.test.ts} | 0 .../jsonpath-compliance-test-suite.test.ts | 2 +- ...rator.test.ts => array-comparator.test.ts} | 2 +- ...tor.test.ts => boolean-comparator.test.ts} | 2 +- ...tor.test.ts => numeric-comparator.test.ts} | 2 +- ...ator.test.ts => object-comparator.test.ts} | 2 +- ...ator.test.ts => string-comparator.test.ts} | 2 +- tests/comparisons.test.ts | 2 +- ...query.test.ts => invalidate-query.test.ts} | 0 ...segments.test.ts => path-segments.test.ts} | 0 tests/utils.ts | 2 +- ...s => convert-iregexp-to-js-regexp.test.ts} | 2 +- .../{isEqual.test.ts => is-equal.test.ts} | 2 +- ...nt.test.ts => traverse-descendant.test.ts} | 2 +- 47 files changed, 83 insertions(+), 60 deletions(-) rename src/comparator/{ArrayComparator.ts => array-comparator.ts} (82%) rename src/comparator/{BooleanComparator.ts => boolean-comparator.ts} (80%) rename src/comparator/{ComparisonOperators.ts => comparison-operators.ts} (74%) rename src/comparator/{NodeComparator.ts => node-comparator.ts} (100%) rename src/comparator/{NullComparator.ts => null-comparator.ts} (100%) rename src/comparator/{NumericComparator.ts => numeric-comparator.ts} (100%) rename src/comparator/{ObjectComparator.ts => object-comparator.ts} (93%) rename src/comparator/{Operators.ts => operators.ts} (100%) rename src/comparator/{StringComparator.ts => string-comparator.ts} (89%) rename src/functions/{function_definitions.ts => function-definitions.ts} (98%) rename src/functions/{function_types.ts => function-types.ts} (100%) rename src/grammar/{jsonpath_js.d.ts => jsonpath-js.d.ts} (100%) rename src/grammar/{jsonpath_js.js => jsonpath-js.js} (100%) rename src/{jsonpath_js.ts => jsonpath-js.ts} (95%) rename src/parsers/{array_slice_selector.ts => array-slice-selector.ts} (100%) rename src/parsers/{filter_selector.ts => filter-selector.ts} (91%) rename src/parsers/{function_extentions.ts => function-extentions.ts} (92%) rename src/utils/{convertIRegexpToJsRegexp.ts => convert-iregexp-to-js-regexp.ts} (100%) rename src/utils/{enumerateNode.ts => enumerate-node.ts} (100%) rename src/utils/{escapeMemberName.ts => escape-member-name.ts} (100%) rename src/utils/{isEqual.ts => is-equal.ts} (100%) rename src/utils/{traverseDescendant.ts => traverse-descendant.ts} (85%) rename tests/RFC9535/{ietf_jsonpath.test.ts => ietf-jsonpath.test.ts} (100%) rename tests/comparator/{ArrayComparator.test.ts => array-comparator.test.ts} (95%) rename tests/comparator/{BooleanComparator.test.ts => boolean-comparator.test.ts} (90%) rename tests/comparator/{NumericComparator.test.ts => numeric-comparator.test.ts} (94%) rename tests/comparator/{ObjectComparator.test.ts => object-comparator.test.ts} (96%) rename tests/comparator/{StringComparator.test.ts => string-comparator.test.ts} (95%) rename tests/{invalidate_query.test.ts => invalidate-query.test.ts} (100%) rename tests/{path_segments.test.ts => path-segments.test.ts} (100%) rename tests/utils/{convertIRegexpToJsRegexp.test.ts => convert-iregexp-to-js-regexp.test.ts} (97%) rename tests/utils/{isEqual.test.ts => is-equal.test.ts} (97%) rename tests/utils/{traverseDescendant.test.ts => traverse-descendant.test.ts} (87%) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 255da8c..4262773 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -23,11 +23,11 @@ jobs: - run: npm ci - name: Copy original parser - run: cp -r src/grammar/jsonpath_js.js ${{ runner.temp }} + run: cp -r src/grammar/jsonpath-js.js ${{ runner.temp }} - run: npm run build:parser - name: Compare with original parser run: | - if ! diff -qr src/grammar/jsonpath_js.js ${{ runner.temp }}/jsonpath_js.js; then + if ! diff -qr src/grammar/jsonpath-js.js ${{ runner.temp }}/jsonpath-js.js; then echo 'Generated parser code is out of sync. Please run "npm run build:parser", and commit the changes.' exit 1 fi diff --git a/CLAUDE.md b/CLAUDE.md index b124d7c..ab293b3 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -9,6 +9,7 @@ This is jsonpath-js, a TypeScript library implementing RFC 9535 JSONPath specifi ## Essential Commands ### Development + - `npm install` - Install dependencies - `npm test` - Run all tests (uses Vitest) - `npm run lint` - Run Biome linter @@ -16,15 +17,18 @@ This is jsonpath-js, a TypeScript library implementing RFC 9535 JSONPath specifi - `npm run build:parser` - Regenerate parser from Peggy grammar (required after grammar changes) ### Testing + - `npm test` - Run all tests including RFC compliance tests - Tests are located in `tests/` with RFC compliance tests in `tests/RFC9535/` ### Submodules + - `git submodule update --init --recursive` - Initialize git submodules (required for RFC compliance tests) ## Architecture Overview ### Core Flow + 1. **Parse**: JSONPath string → AST via Peggy-generated parser 2. **Execute**: AST + JSON data → Node objects (value + path pairs) 3. **Return**: Extract values or value+path pairs from final nodes @@ -32,35 +36,41 @@ This is jsonpath-js, a TypeScript library implementing RFC 9535 JSONPath specifi ### Key Components **Grammar System (`src/grammar/`)** + - `jsonpath.pegjs` - Peggy grammar defining JSONPath syntax -- `jsonpath_js.js` - Generated parser (auto-generated, don't edit directly) +- `jsonpath-js.js` - Generated parser (auto-generated, don't edit directly) - `ast.d.ts` - TypeScript definitions for AST nodes - **Important**: Always run `npm run build:parser` after modifying the grammar **Execution Engine** -- `src/jsonpath_js.ts` - Main `JSONPathJS` class with `find()` and `paths()` methods + +- `src/jsonpath-js.ts` - Main `JSONPathJS` class with `find()` and `paths()` methods - `src/parser.ts` - Central execution engine that processes AST - `src/parsers/` - Specialized processors for different selector types: - `root.ts` - Main segment processing logic - - `filter_selector.ts` - Complex filtering with comparisons - - `array_slice_selector.ts` - Array slicing operations - - `function_extentions.ts` - Built-in function execution + - `filter-selector.ts` - Complex filtering with comparisons + - `array-slice-selector.ts` - Array slicing operations + - `function-extentions.ts` - Built-in function execution **Type System** + - `src/types/node.ts` - Core Node abstraction (value + path) - `src/types/json.d.ts` - Comprehensive JSON type definitions - All components use Node objects to maintain path tracking **Comparison System (`src/comparator/`)** + - Type-specific comparators for all JSON types (Array, Boolean, Numeric, Object, String) - Implements all JSONPath comparison operators (==, !=, <, <=, >, >=) - Critical for filter expressions **Function System (`src/functions/`)** + - Built-in JSONPath functions: count, length, match, search, value - Strongly-typed function definitions and execution ### Build System + - **tsup**: Modern bundler producing CommonJS and ESM outputs - **Peggy**: Parser generator for JSONPath grammar - **Dual format**: Both CJS and ESM with TypeScript definitions @@ -68,28 +78,33 @@ This is jsonpath-js, a TypeScript library implementing RFC 9535 JSONPath specifi ## Development Guidelines ### Grammar Changes + 1. Modify `src/grammar/jsonpath.pegjs` 2. Run `npm run build:parser` to regenerate parser 3. Update `src/grammar/ast.d.ts` if AST structure changes 4. Test thoroughly with RFC compliance suite ### Parser Changes + - Parser logic is in `src/parsers/` - each selector type has its own file - All processing works with Node objects containing value and path - Maintain path strings in JSONPath format (e.g., `$['users'][0]['name']`) ### Adding New Functionality + - **Selectors**: Add new selector types in `src/parsers/` - **Functions**: Add new functions in `src/functions/` - **Comparators**: Extend comparison logic in `src/comparator/` ### Testing + - RFC compliance tests in `tests/RFC9535/` use official JSONPath test suite - Unit tests for each component in respective test files - Always run full test suite before committing grammar changes ### Code Patterns + - Use Node objects for all data flow - Type-safe AST processing throughout - Maintain JSONPath specification compliance -- Parse-once, execute-many pattern for performance \ No newline at end of file +- Parse-once, execute-many pattern for performance diff --git a/biome.json b/biome.json index 280ca02..f29e3fd 100644 --- a/biome.json +++ b/biome.json @@ -10,8 +10,8 @@ "includes": [ "**", "!**/src/jsonpath.ts", - "!**/src/grammar/jsonpath_js.js", - "!**/src/grammar/jsonpath_js.d.ts", + "!**/src/grammar/jsonpath-js.js", + "!**/src/grammar/jsonpath-js.d.ts", "!**/tests/RFC9535/jsonpath-compliance-test-suite/**/*" ] }, @@ -35,7 +35,14 @@ "noUnusedTemplateLiteral": "error", "useNumberNamespace": "error", "noInferrableTypes": "error", - "noUselessElse": "error" + "noUselessElse": "error", + "useFilenamingConvention": { + "level": "error", + "options": { + "requireAscii": true, + "filenameCases": ["kebab-case"] + } + } } }, "includes": ["**", "!**/package.json"] diff --git a/src/comparator/ArrayComparator.ts b/src/comparator/array-comparator.ts similarity index 82% rename from src/comparator/ArrayComparator.ts rename to src/comparator/array-comparator.ts index e2fecb1..230651e 100644 --- a/src/comparator/ArrayComparator.ts +++ b/src/comparator/array-comparator.ts @@ -1,6 +1,7 @@ import type { JsonArray } from "../types/json"; -import { isEqual } from "../utils/isEqual"; -import type { ComparisonOperators } from "./ComparisonOperators"; +import { isEqual } from "../utils/is-equal"; + +import type { ComparisonOperators } from "./comparison-operators"; // equal arrays, that is, arrays of the same length where each element of // the first array is equal to the corresponding element of the second array, or diff --git a/src/comparator/BooleanComparator.ts b/src/comparator/boolean-comparator.ts similarity index 80% rename from src/comparator/BooleanComparator.ts rename to src/comparator/boolean-comparator.ts index ce88b19..f77c8cf 100644 --- a/src/comparator/BooleanComparator.ts +++ b/src/comparator/boolean-comparator.ts @@ -1,4 +1,4 @@ -import type { ComparisonOperators } from "./ComparisonOperators"; +import type { ComparisonOperators } from "./comparison-operators"; export const BooleanComparator: ComparisonOperators = { "=="(a, b) { diff --git a/src/comparator/ComparisonOperators.ts b/src/comparator/comparison-operators.ts similarity index 74% rename from src/comparator/ComparisonOperators.ts rename to src/comparator/comparison-operators.ts index c4ed1f0..d86ac98 100644 --- a/src/comparator/ComparisonOperators.ts +++ b/src/comparator/comparison-operators.ts @@ -1,4 +1,4 @@ -import type { Operators } from "./Operators"; +import type { Operators } from "./operators"; export type Comparator = (a: T, b: T) => boolean; diff --git a/src/comparator/NodeComparator.ts b/src/comparator/node-comparator.ts similarity index 100% rename from src/comparator/NodeComparator.ts rename to src/comparator/node-comparator.ts diff --git a/src/comparator/NullComparator.ts b/src/comparator/null-comparator.ts similarity index 100% rename from src/comparator/NullComparator.ts rename to src/comparator/null-comparator.ts diff --git a/src/comparator/NumericComparator.ts b/src/comparator/numeric-comparator.ts similarity index 100% rename from src/comparator/NumericComparator.ts rename to src/comparator/numeric-comparator.ts diff --git a/src/comparator/ObjectComparator.ts b/src/comparator/object-comparator.ts similarity index 93% rename from src/comparator/ObjectComparator.ts rename to src/comparator/object-comparator.ts index e0d0a3b..32140da 100644 --- a/src/comparator/ObjectComparator.ts +++ b/src/comparator/object-comparator.ts @@ -1,5 +1,5 @@ import type { JsonObject } from "../types/json"; -import { isEqual } from "../utils/isEqual"; +import { isEqual } from "../utils/is-equal"; import type { ComparisonOperators } from "./ComparisonOperators"; // equal objects with no duplicate names, that is, where: diff --git a/src/comparator/Operators.ts b/src/comparator/operators.ts similarity index 100% rename from src/comparator/Operators.ts rename to src/comparator/operators.ts diff --git a/src/comparator/StringComparator.ts b/src/comparator/string-comparator.ts similarity index 89% rename from src/comparator/StringComparator.ts rename to src/comparator/string-comparator.ts index fbbd4e1..0303d6d 100644 --- a/src/comparator/StringComparator.ts +++ b/src/comparator/string-comparator.ts @@ -1,4 +1,4 @@ -import type { ComparisonOperators } from "./ComparisonOperators"; +import type { ComparisonOperators } from "./comparison-operators"; // a non-empty string compares less than another non-empty string // if and only if the first string starts with a lower Unicode scalar diff --git a/src/functions/count.ts b/src/functions/count.ts index 063adb3..a1dc85b 100644 --- a/src/functions/count.ts +++ b/src/functions/count.ts @@ -2,7 +2,7 @@ import { createFunctionDefinition, NodesTypeDef, ValueTypeDef, -} from "./function_definitions"; +} from "./function-definitions"; // 2.4.5. count() Function Extension // Parameters: diff --git a/src/functions/function_definitions.ts b/src/functions/function-definitions.ts similarity index 98% rename from src/functions/function_definitions.ts rename to src/functions/function-definitions.ts index ab9b685..5eef824 100644 --- a/src/functions/function_definitions.ts +++ b/src/functions/function-definitions.ts @@ -1,4 +1,4 @@ -import { FunctionType } from "../functions/function_types"; +import { FunctionType } from "../functions/function-types"; import type { Json, JsonValue } from "../types/json"; import { isNode, isNodeList, type Node, type NodeList } from "../types/node"; import { Nothing } from "../types/nothing"; diff --git a/src/functions/function_types.ts b/src/functions/function-types.ts similarity index 100% rename from src/functions/function_types.ts rename to src/functions/function-types.ts diff --git a/src/functions/length.ts b/src/functions/length.ts index e1fed83..8243311 100644 --- a/src/functions/length.ts +++ b/src/functions/length.ts @@ -1,7 +1,7 @@ import { Nothing } from "../types/nothing"; import { isJsonObject } from "../utils"; -import { createFunctionDefinition, ValueTypeDef } from "./function_definitions"; -import type { FunctionType } from "./function_types"; +import { createFunctionDefinition, ValueTypeDef } from "./function-definitions"; +import type { FunctionType } from "./function-types"; // 2.4.4. length() Function Extension // Parameters: diff --git a/src/functions/match.ts b/src/functions/match.ts index e2fbd02..f8c53f7 100644 --- a/src/functions/match.ts +++ b/src/functions/match.ts @@ -1,10 +1,10 @@ -import { convertIRegexpToJsRegexp } from "../utils/convertIRegexpToJsRegexp"; +import { convertIRegexpToJsRegexp } from "../utils/convert-iregexp-to-js-regexp"; import { createFunctionDefinition, LogicalTypeDef, ValueTypeDef, -} from "./function_definitions"; -import { convertLogicalType, FunctionType } from "./function_types"; +} from "./function-definitions"; +import { convertLogicalType, FunctionType } from "./function-types"; // 2.4.6. match() Function Extension // Parameters: diff --git a/src/functions/search.ts b/src/functions/search.ts index 7af3abb..5f59a10 100644 --- a/src/functions/search.ts +++ b/src/functions/search.ts @@ -1,10 +1,10 @@ -import { convertIRegexpToJsRegexp } from "../utils/convertIRegexpToJsRegexp"; +import { convertIRegexpToJsRegexp } from "../utils/convert-iregexp-to-js-regexp"; import { createFunctionDefinition, LogicalTypeDef, ValueTypeDef, -} from "./function_definitions"; -import { convertLogicalType, FunctionType } from "./function_types"; +} from "./function-definitions"; +import { convertLogicalType, FunctionType } from "./function-types"; // 2.4.7. search() Function Extension // Parameters: diff --git a/src/functions/value.ts b/src/functions/value.ts index 3d35f0a..0b1603a 100644 --- a/src/functions/value.ts +++ b/src/functions/value.ts @@ -3,7 +3,7 @@ import { createFunctionDefinition, NodesTypeDef, ValueTypeDef, -} from "./function_definitions"; +} from "./function-definitions"; // 2.4.8. value() Function Extension // Parameters: diff --git a/src/grammar/config.js b/src/grammar/config.js index ca28180..32b8ebd 100644 --- a/src/grammar/config.js +++ b/src/grammar/config.js @@ -2,7 +2,7 @@ module.exports = { input: "./src/grammar/jsonpath.pegjs", allowedStartRules: ["JsonpathQuery"], dts: "true", - output: "src/grammar/jsonpath_js.js", + output: "src/grammar/jsonpath-js.js", returnTypes: { JsonpathQuery: "import('./ast.d.ts').JsonpathQuery", }, diff --git a/src/grammar/jsonpath_js.d.ts b/src/grammar/jsonpath-js.d.ts similarity index 100% rename from src/grammar/jsonpath_js.d.ts rename to src/grammar/jsonpath-js.d.ts diff --git a/src/grammar/jsonpath_js.js b/src/grammar/jsonpath-js.js similarity index 100% rename from src/grammar/jsonpath_js.js rename to src/grammar/jsonpath-js.js diff --git a/src/index.ts b/src/index.ts index ffe80a8..6dab1eb 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,3 +1,3 @@ -import { JSONPathJS } from "./jsonpath_js"; +import { JSONPathJS } from "./jsonpath-js"; export { JSONPathJS }; diff --git a/src/jsonpath_js.ts b/src/jsonpath-js.ts similarity index 95% rename from src/jsonpath_js.ts rename to src/jsonpath-js.ts index 22e163a..8017696 100644 --- a/src/jsonpath_js.ts +++ b/src/jsonpath-js.ts @@ -1,8 +1,8 @@ import type { JsonpathQuery } from "./grammar/ast"; -import { parse } from "./grammar/jsonpath_js"; +import { parse } from "./grammar/jsonpath-js"; import { run } from "./parser"; import type { Json } from "./types/json"; -import { escapeMemberName } from "./utils/escapeMemberName"; +import { escapeMemberName } from "./utils/escape-member-name"; type PathResult = { value: Json; diff --git a/src/parsers/array_slice_selector.ts b/src/parsers/array-slice-selector.ts similarity index 100% rename from src/parsers/array_slice_selector.ts rename to src/parsers/array-slice-selector.ts diff --git a/src/parsers/filter_selector.ts b/src/parsers/filter-selector.ts similarity index 91% rename from src/parsers/filter_selector.ts rename to src/parsers/filter-selector.ts index bf329a5..f89fdc2 100644 --- a/src/parsers/filter_selector.ts +++ b/src/parsers/filter-selector.ts @@ -1,11 +1,11 @@ -import { ArrayComparator } from "../comparator/ArrayComparator"; -import { BooleanComparator } from "../comparator/BooleanComparator"; -import { NodeComparator } from "../comparator/NodeComparator"; -import { NullComparator } from "../comparator/NullComparator"; -import { NumericComparator } from "../comparator/NumericComparator"; -import { ObjectComparator } from "../comparator/ObjectComparator"; -import { StringComparator } from "../comparator/StringComparator"; -import { FunctionType, isLogicalType } from "../functions/function_types"; +import { ArrayComparator } from "../comparator/array-comparator"; +import { BooleanComparator } from "../comparator/boolean-comparator"; +import { NodeComparator } from "../comparator/node-comparator"; +import { NullComparator } from "../comparator/null-comparator"; +import { NumericComparator } from "../comparator/numeric-comparator"; +import { ObjectComparator } from "../comparator/object-comparator"; +import { StringComparator } from "../comparator/string-comparator"; +import { FunctionType, isLogicalType } from "../functions/function-types"; import type { Comparable, ComparisonExpr, @@ -25,8 +25,8 @@ import type { JsonValue } from "../types/json.d"; import type { Node, NodeList } from "../types/node"; import { Nothing } from "../types/nothing"; import { isJsonArray, isJsonObject, isJsonPrimitive } from "../utils"; -import { enumerateNode } from "../utils/enumerateNode"; -import { applyFunction } from "./function_extentions"; +import { enumerateNode } from "../utils/enumerate-node"; +import { applyFunction } from "./function-extentions"; import { applyRoot, applySegments } from "./root"; // 2.3.5. Filter Selector diff --git a/src/parsers/function_extentions.ts b/src/parsers/function-extentions.ts similarity index 92% rename from src/parsers/function_extentions.ts rename to src/parsers/function-extentions.ts index c89f6ff..af95592 100644 --- a/src/parsers/function_extentions.ts +++ b/src/parsers/function-extentions.ts @@ -1,6 +1,6 @@ import { CountFunction } from "../functions/count"; -import { extractArgs } from "../functions/function_definitions"; -import type { FunctionType } from "../functions/function_types"; +import { extractArgs } from "../functions/function-definitions"; +import type { FunctionType } from "../functions/function-types"; import { LengthFunction } from "../functions/length"; import { MatchFunction } from "../functions/match"; import { SearchFunction } from "../functions/search"; @@ -9,7 +9,7 @@ import type { FunctionArgument, FunctionExpr } from "../grammar/ast"; import type { Json } from "../types/json"; import type { Node, NodeList } from "../types/node"; import { Nothing } from "../types/nothing"; -import { applyCurrentNode } from "./filter_selector"; +import { applyCurrentNode } from "./filter-selector"; import { applyRoot } from "./root"; const FunctionDefinitions = { diff --git a/src/parsers/root.ts b/src/parsers/root.ts index 6773094..1d1f6de 100644 --- a/src/parsers/root.ts +++ b/src/parsers/root.ts @@ -16,9 +16,9 @@ import { type NodeList, } from "../types/node"; import { isJsonObject } from "../utils"; -import { traverseDescendant } from "../utils/traverseDescendant"; -import { applySliceSelector } from "./array_slice_selector"; -import { applyFilterSelector } from "./filter_selector"; +import { traverseDescendant } from "../utils/traverse-descendant"; +import { applySliceSelector } from "./array-slice-selector"; +import { applyFilterSelector } from "./filter-selector"; // 2.2. Root Identifier // Every JSONPath query MUST begin with the root identifier $. diff --git a/src/utils/convertIRegexpToJsRegexp.ts b/src/utils/convert-iregexp-to-js-regexp.ts similarity index 100% rename from src/utils/convertIRegexpToJsRegexp.ts rename to src/utils/convert-iregexp-to-js-regexp.ts diff --git a/src/utils/enumerateNode.ts b/src/utils/enumerate-node.ts similarity index 100% rename from src/utils/enumerateNode.ts rename to src/utils/enumerate-node.ts diff --git a/src/utils/escapeMemberName.ts b/src/utils/escape-member-name.ts similarity index 100% rename from src/utils/escapeMemberName.ts rename to src/utils/escape-member-name.ts diff --git a/src/utils/isEqual.ts b/src/utils/is-equal.ts similarity index 100% rename from src/utils/isEqual.ts rename to src/utils/is-equal.ts diff --git a/src/utils/traverseDescendant.ts b/src/utils/traverse-descendant.ts similarity index 85% rename from src/utils/traverseDescendant.ts rename to src/utils/traverse-descendant.ts index 892e159..35c3ebc 100644 --- a/src/utils/traverseDescendant.ts +++ b/src/utils/traverse-descendant.ts @@ -1,5 +1,5 @@ import type { Node, NodeList } from "../types/node"; -import { enumerateNode } from "./enumerateNode"; +import { enumerateNode } from "./enumerate-node"; export const traverseDescendant = (node: Node): NodeList => { const nodelist: NodeList = []; diff --git a/tests/RFC9535/ietf_jsonpath.test.ts b/tests/RFC9535/ietf-jsonpath.test.ts similarity index 100% rename from tests/RFC9535/ietf_jsonpath.test.ts rename to tests/RFC9535/ietf-jsonpath.test.ts diff --git a/tests/RFC9535/jsonpath-compliance-test-suite.test.ts b/tests/RFC9535/jsonpath-compliance-test-suite.test.ts index 65883e6..188e0d0 100644 --- a/tests/RFC9535/jsonpath-compliance-test-suite.test.ts +++ b/tests/RFC9535/jsonpath-compliance-test-suite.test.ts @@ -1,5 +1,5 @@ import { describe, expect, test } from "vitest"; -import { JSONPathJS } from "../../src/jsonpath_js"; +import { JSONPathJS } from "../../src/jsonpath-js"; import type { JsonValue } from "../../src/types/json"; import { testJSONPath, testNormalizedPath } from "../utils"; import cts from "./jsonpath-compliance-test-suite/cts.json"; diff --git a/tests/comparator/ArrayComparator.test.ts b/tests/comparator/array-comparator.test.ts similarity index 95% rename from tests/comparator/ArrayComparator.test.ts rename to tests/comparator/array-comparator.test.ts index e5283b6..789385b 100644 --- a/tests/comparator/ArrayComparator.test.ts +++ b/tests/comparator/array-comparator.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from "vitest"; -import { ArrayComparator } from "../../src/comparator/ArrayComparator"; +import { ArrayComparator } from "../../src/comparator/array-comparator"; describe("ArrayComparator", () => { describe("== operator", () => { diff --git a/tests/comparator/BooleanComparator.test.ts b/tests/comparator/boolean-comparator.test.ts similarity index 90% rename from tests/comparator/BooleanComparator.test.ts rename to tests/comparator/boolean-comparator.test.ts index 92309f2..98d250d 100644 --- a/tests/comparator/BooleanComparator.test.ts +++ b/tests/comparator/boolean-comparator.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from "vitest"; -import { BooleanComparator } from "../../src/comparator/BooleanComparator"; +import { BooleanComparator } from "../../src/comparator/boolean-comparator"; describe("StringComparator", () => { it("== returns true for equal booleans", () => { diff --git a/tests/comparator/NumericComparator.test.ts b/tests/comparator/numeric-comparator.test.ts similarity index 94% rename from tests/comparator/NumericComparator.test.ts rename to tests/comparator/numeric-comparator.test.ts index aee5383..718c3f8 100644 --- a/tests/comparator/NumericComparator.test.ts +++ b/tests/comparator/numeric-comparator.test.ts @@ -1,5 +1,5 @@ import { describe, expect, test as it } from "vitest"; -import { NumericComparator } from "../../src/comparator/NumericComparator"; +import { NumericComparator } from "../../src/comparator/numeric-comparator"; describe("NumericComparator", () => { it("== returns true for equal number", () => { diff --git a/tests/comparator/ObjectComparator.test.ts b/tests/comparator/object-comparator.test.ts similarity index 96% rename from tests/comparator/ObjectComparator.test.ts rename to tests/comparator/object-comparator.test.ts index 6e37e77..898b065 100644 --- a/tests/comparator/ObjectComparator.test.ts +++ b/tests/comparator/object-comparator.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from "vitest"; -import { ObjectComparator } from "../../src/comparator/ObjectComparator"; +import { ObjectComparator } from "../../src/comparator/object-comparator"; describe("ObjectComparator", () => { describe("== operator", () => { diff --git a/tests/comparator/StringComparator.test.ts b/tests/comparator/string-comparator.test.ts similarity index 95% rename from tests/comparator/StringComparator.test.ts rename to tests/comparator/string-comparator.test.ts index 56a28a6..2cb6b1e 100644 --- a/tests/comparator/StringComparator.test.ts +++ b/tests/comparator/string-comparator.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from "vitest"; -import { StringComparator } from "../../src/comparator/StringComparator"; +import { StringComparator } from "../../src/comparator/string-comparator"; describe("StringComparator", () => { it("== returns true for equal strings", () => { diff --git a/tests/comparisons.test.ts b/tests/comparisons.test.ts index f15ddc7..01abf71 100644 --- a/tests/comparisons.test.ts +++ b/tests/comparisons.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from "vitest"; -import { evalCompare } from "../src/parsers/filter_selector"; +import { evalCompare } from "../src/parsers/filter-selector"; import { Nothing } from "../src/types/nothing"; describe("2.3.5.2.2. Comparisons", () => { diff --git a/tests/invalidate_query.test.ts b/tests/invalidate-query.test.ts similarity index 100% rename from tests/invalidate_query.test.ts rename to tests/invalidate-query.test.ts diff --git a/tests/path_segments.test.ts b/tests/path-segments.test.ts similarity index 100% rename from tests/path_segments.test.ts rename to tests/path-segments.test.ts diff --git a/tests/utils.ts b/tests/utils.ts index f8c9931..29e9079 100644 --- a/tests/utils.ts +++ b/tests/utils.ts @@ -1,5 +1,5 @@ import { expect } from "vitest"; -import { JSONPathJS } from "../src/jsonpath_js"; +import { JSONPathJS } from "../src/jsonpath-js"; import type { Json, JsonArray } from "../src/types/json"; export function testJSONPath({ diff --git a/tests/utils/convertIRegexpToJsRegexp.test.ts b/tests/utils/convert-iregexp-to-js-regexp.test.ts similarity index 97% rename from tests/utils/convertIRegexpToJsRegexp.test.ts rename to tests/utils/convert-iregexp-to-js-regexp.test.ts index f772ccc..4dd6749 100644 --- a/tests/utils/convertIRegexpToJsRegexp.test.ts +++ b/tests/utils/convert-iregexp-to-js-regexp.test.ts @@ -1,5 +1,5 @@ import { describe, expect, test } from "vitest"; -import { convertIRegexpToJsRegexp } from "../../src/utils/convertIRegexpToJsRegexp"; +import { convertIRegexpToJsRegexp } from "../../src/utils/convert-iregexp-to-js-regexp"; describe("convertIRegexpToJsRegexp", () => { test("For any unescaped dots (.) outside character classes eplace the dot with [^\n\r]", () => { diff --git a/tests/utils/isEqual.test.ts b/tests/utils/is-equal.test.ts similarity index 97% rename from tests/utils/isEqual.test.ts rename to tests/utils/is-equal.test.ts index fd95890..c423e10 100644 --- a/tests/utils/isEqual.test.ts +++ b/tests/utils/is-equal.test.ts @@ -1,5 +1,5 @@ import { describe, expect, test } from "vitest"; -import { isEqual } from "../../src/utils/isEqual"; +import { isEqual } from "../../src/utils/is-equal"; describe("isEqual", () => { test("should return true for equal primitive values", () => { diff --git a/tests/utils/traverseDescendant.test.ts b/tests/utils/traverse-descendant.test.ts similarity index 87% rename from tests/utils/traverseDescendant.test.ts rename to tests/utils/traverse-descendant.test.ts index c5fbd1f..2678cdb 100644 --- a/tests/utils/traverseDescendant.test.ts +++ b/tests/utils/traverse-descendant.test.ts @@ -1,6 +1,6 @@ import { describe, expect, test } from "vitest"; import { createNode } from "../../src/types/node"; -import { traverseDescendant } from "../../src/utils/traverseDescendant"; +import { traverseDescendant } from "../../src/utils/traverse-descendant"; describe("traverseDescendant", () => { test("empty object traverses empty", () => {