Skip to content

Commit 57467b0

Browse files
authored
chore: improve performance by skipping unnecessary JSON pointer (un)escaping (#2483)
1 parent 57f383f commit 57467b0

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

.changeset/rare-planes-leave.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@redocly/openapi-core": patch
3+
---
4+
5+
Improved overall performance by skipping unnecessary JSON pointer escaping and unescaping.

packages/core/src/ref-utils.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ export class Location {
4141
}
4242

4343
export function unescapePointerFragment(fragment: string): string {
44-
const unescaped = fragment.replace(/~1/g, '/').replace(/~0/g, '~');
44+
const unescaped =
45+
fragment.indexOf('~') === -1 ? fragment : fragment.replaceAll('~1', '/').replaceAll('~0', '~');
4546

4647
try {
4748
return decodeURIComponent(unescaped);
@@ -52,6 +53,8 @@ export function unescapePointerFragment(fragment: string): string {
5253

5354
export function escapePointerFragment<T extends string | number>(fragment: T): T {
5455
if (typeof fragment === 'number') return fragment;
56+
if (fragment.indexOf('/') === -1 && fragment.indexOf('~') === -1) return fragment;
57+
5558
return fragment.replaceAll('~', '~0').replaceAll('/', '~1') as T;
5659
}
5760

0 commit comments

Comments
 (0)