Skip to content

Commit a1896dc

Browse files
committed
build: introduce esm export using tsdown
1 parent d0cbb3f commit a1896dc

21 files changed

+844
-864
lines changed

.mocharc.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"extension": ["ts"],
3+
"reporter": "spec",
4+
"spec": ["test/**/*.ts"],
5+
"import": "tsx/esm"
6+
}

dist/index.cjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Object.defineProperty(exports,`__esModule`,{value:!0});function e(e){return e===`#`||e===``||Array.isArray(e)&&e.length===0||!1}const t=/~1/g,n=/~0/g,r=/(^#?\/?)/g;function i(e){return e.replace(t,`/`).replace(n,`~`)}function a(e){return i(decodeURIComponent(e))}function o(t){if(t==null||typeof t!=`string`||e(t))return Array.isArray(t)?t.slice():[];let n=t.indexOf(`#`)>=0?a:i;t=t.replace(r,``);let o=t.split(`/`);for(let e=0,t=o.length;e<t;e+=1)o[e]=n(o[e]);return o}function s(t,n,r=void 0){if(n==null||t==null)return r;if(e(n))return t;let i=c(t,o(n));return i===void 0?r:i}function c(e,t){let n=t.shift();if(e!==void 0)return n===void 0?e:c(e[n],t)}const l=/^\[.*\]$/,u=/^[[{](.+)[\]}]$/;function d(e,t){return e===`__proto__`||e==`constructor`&&t.length>0&&t[0]==`prototype`}function f(e,t,n){if(t==null)return e;let r=o(t);if(r.length===0)return e;e??=l.test(r[0])?[]:{};let i,a,s=e;for(;r.length>1;)i=r.shift(),a=l.test(r[0])||`${parseInt(r[0])}`===r[0],!d(i,r)&&(s=m(s,i,a));return i=r.pop(),p(s,i,n),e}function p(e,t,n){let r=t.match(u)?.pop()??t;t===`[]`&&Array.isArray(e)?e.push(n):d(r,e)||(e[r]=n)}function m(e,t,n){let r=t.match(u)?.pop()??t;if(e[r]!=null)return e[r];let i=n?[]:{};return p(e,t,i),i}function h(e){let t=0,n=0;for(;t+n<e.length;)e[t+n]===void 0&&(n+=1),e[t]=e[t+n],t+=1;return e.length-=n,e}function g(e,t,n){let r=o(t),i=r.pop(),a=s(e,r);return a&&delete a[i],Array.isArray(a)&&n!==!0&&h(a),e}const _=/~/g,v=/\//g;function y(e,t){if(e.length===0)return t?`#`:``;for(let n=0,r=e.length;n<r;n+=1)e[n]=e[n].replace(_,`~0`).replace(v,`~1`),t&&(e[n]=encodeURIComponent(e[n]));return(t?`#/`:`/`)+e.join(`/`)}function b(e,...t){let n=[];if(Array.isArray(e))return y(e,arguments[1]===!0);let r=arguments[arguments.length-1],i=typeof r==`boolean`?r:e&&e[0]===`#`;for(let e=0,t=arguments.length;e<t;e+=1)n.push.apply(n,o(arguments[e]));let a=[];for(let e=0,t=n.length;e<t;e+=1)if(n[e]===`..`){if(a.length===0)return i?`#`:``;a.pop()}else a.push(n[e]);return y(a,i)}function x(e){let t=o(e);if(t.length===0)return typeof e==`string`&&e[0]===`#`?[`#`,t[0]]:[``,void 0];if(t.length===1)return e[0]===`#`?[`#`,t[0]]:[``,t[0]];let n=t.pop();return[b(t,e[0]===`#`),n]}const S={get:s,set:f,remove:g,join:b,split:o,splitLast:x,isRoot:e,removeUndefinedItems:h};var C=S;exports.default=C,exports.get=s,exports.isRoot=e,exports.join=b,exports.remove=g,exports.removeUndefinedItems=h,exports.set=f,exports.split=o,exports.splitLast=x;

dist/index.d.cts

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
//#region lib/types.d.ts
2+
type JsonPointer = string;
3+
type JsonPath = string[];
4+
type JsonData = unknown;
5+
//#endregion
6+
//#region lib/get.d.ts
7+
/**
8+
* Fetch value at given json-pointer. Returns undefined, if no value can be
9+
* found at json-pointer
10+
*
11+
* @param data - json data to resolve json-pointer
12+
* @param pointer - json pointer to value
13+
* @param [defaultValue] - optional default value to return if json-pointer location does not exist
14+
* @return value at json-pointer, defaultValue if specified or undefined
15+
*/
16+
declare function get<T = unknown>(data: JsonData, pointer: JsonPointer | JsonPath, defaultValue: T): T;
17+
declare function get<T = unknown>(data: JsonData, pointer: JsonPointer | JsonPath, defaultValue?: T): T | undefined;
18+
//#endregion
19+
//#region lib/set.d.ts
20+
declare function set<T = JsonData>(data: T, pointer: JsonPointer | JsonPath, value: unknown): T;
21+
//#endregion
22+
//#region lib/remove.d.ts
23+
/**
24+
* Deletes a value at specified json-pointer from data
25+
* Note: input data is modified
26+
*
27+
* @param data - input data
28+
* @param pointer - location of data to remove
29+
* @param [keepArrayIndices] - if set to `true`, will set array element to undefined (instead of removing it)
30+
*/
31+
declare function remove<T = unknown>(data: T, pointer: JsonPointer | JsonPath, keepArrayIndices?: boolean): T;
32+
//#endregion
33+
//#region lib/join.d.ts
34+
/**
35+
* Convert an array of properties (json-path) to a valid json-pointer.
36+
*
37+
* If the last parameter is a boolean and set to true, a URIFragment is
38+
* returned (leading `#/`)
39+
*
40+
* # examples
41+
*
42+
* `join(["metadata", "title"])` // "metadata/title"
43+
*
44+
* `join(["metadata", "title"], true)` // "#/metadata/title"
45+
*/
46+
declare function join(path: JsonPath, uriFragment?: boolean): JsonPointer;
47+
/**
48+
* Convert a list of json-pointers to a valid json-pointer. Supports as input:
49+
*
50+
* - a list of json-pointers
51+
* - relative json-pointers
52+
*
53+
* If the last parameter is a boolean and set to true, a URIFragment is
54+
* returned (leading `#/`)
55+
*
56+
* # examples
57+
*
58+
* `join("metadata", "title")` // "metadata/title"
59+
*
60+
* `join("#/metadata", "title")` // "#/metadata/title"
61+
*
62+
* `join("metadata", "title", true)` // "#/metadata/title"
63+
*
64+
* `join("metadata", "../title")` // "title"
65+
*/
66+
declare function join(...pointer: (JsonPointer | boolean)[]): JsonPointer;
67+
//#endregion
68+
//#region lib/split.d.ts
69+
/**
70+
* From a json-pointer, creates an array of properties, describing a path into
71+
* json-data
72+
*/
73+
declare function split(pointer: JsonPointer | JsonPath): JsonPath;
74+
//#endregion
75+
//#region lib/splitLast.d.ts
76+
/**
77+
* splits the last property of json-pointer and returns the path and property.
78+
* @returns tuple with parent json-pointer and the last property or undefined if pointer a root pointer
79+
*/
80+
declare function splitLast(pointer: JsonPointer | JsonPath): [string, string | undefined];
81+
//#endregion
82+
//#region lib/isRoot.d.ts
83+
/**
84+
* @returns true, if this pointer location is the root data
85+
*/
86+
declare function isRoot(pointer: JsonPointer | JsonPath): boolean;
87+
//#endregion
88+
//#region lib/removeUndefinedItems.d.ts
89+
/**
90+
* Removes all `undefined` values within an array without creating additional
91+
* arrays
92+
*/
93+
declare function removeUndefinedItems<T = unknown>(array: T[]): T[];
94+
//#endregion
95+
//#region index.d.ts
96+
declare const jsonPointer: {
97+
get: typeof get;
98+
set: typeof set;
99+
remove: typeof remove;
100+
join: typeof join;
101+
split: typeof split;
102+
splitLast: typeof splitLast;
103+
isRoot: typeof isRoot;
104+
removeUndefinedItems: typeof removeUndefinedItems;
105+
};
106+
//#endregion
107+
export { type JsonData, type JsonPath, type JsonPointer, jsonPointer as default, get, isRoot, join, remove, removeUndefinedItems, set, split, splitLast };

dist/index.d.ts

Lines changed: 105 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,107 @@
1-
import { get } from "./lib/get";
2-
import { set } from "./lib/set";
3-
import { remove } from "./lib/remove";
4-
import { join } from "./lib/join";
5-
import { split } from "./lib/split";
6-
import { splitLast } from "./lib/splitLast";
7-
import { isRoot } from "./lib/isRoot";
8-
import { removeUndefinedItems } from "./lib/removeUndefinedItems";
9-
import { JsonPointer, JsonPath, JsonData } from "./lib/types";
1+
//#region lib/types.d.ts
2+
type JsonPointer = string;
3+
type JsonPath = string[];
4+
type JsonData = unknown;
5+
//#endregion
6+
//#region lib/get.d.ts
7+
/**
8+
* Fetch value at given json-pointer. Returns undefined, if no value can be
9+
* found at json-pointer
10+
*
11+
* @param data - json data to resolve json-pointer
12+
* @param pointer - json pointer to value
13+
* @param [defaultValue] - optional default value to return if json-pointer location does not exist
14+
* @return value at json-pointer, defaultValue if specified or undefined
15+
*/
16+
declare function get<T = unknown>(data: JsonData, pointer: JsonPointer | JsonPath, defaultValue: T): T;
17+
declare function get<T = unknown>(data: JsonData, pointer: JsonPointer | JsonPath, defaultValue?: T): T | undefined;
18+
//#endregion
19+
//#region lib/set.d.ts
20+
declare function set<T = JsonData>(data: T, pointer: JsonPointer | JsonPath, value: unknown): T;
21+
//#endregion
22+
//#region lib/remove.d.ts
23+
/**
24+
* Deletes a value at specified json-pointer from data
25+
* Note: input data is modified
26+
*
27+
* @param data - input data
28+
* @param pointer - location of data to remove
29+
* @param [keepArrayIndices] - if set to `true`, will set array element to undefined (instead of removing it)
30+
*/
31+
declare function remove<T = unknown>(data: T, pointer: JsonPointer | JsonPath, keepArrayIndices?: boolean): T;
32+
//#endregion
33+
//#region lib/join.d.ts
34+
/**
35+
* Convert an array of properties (json-path) to a valid json-pointer.
36+
*
37+
* If the last parameter is a boolean and set to true, a URIFragment is
38+
* returned (leading `#/`)
39+
*
40+
* # examples
41+
*
42+
* `join(["metadata", "title"])` // "metadata/title"
43+
*
44+
* `join(["metadata", "title"], true)` // "#/metadata/title"
45+
*/
46+
declare function join(path: JsonPath, uriFragment?: boolean): JsonPointer;
47+
/**
48+
* Convert a list of json-pointers to a valid json-pointer. Supports as input:
49+
*
50+
* - a list of json-pointers
51+
* - relative json-pointers
52+
*
53+
* If the last parameter is a boolean and set to true, a URIFragment is
54+
* returned (leading `#/`)
55+
*
56+
* # examples
57+
*
58+
* `join("metadata", "title")` // "metadata/title"
59+
*
60+
* `join("#/metadata", "title")` // "#/metadata/title"
61+
*
62+
* `join("metadata", "title", true)` // "#/metadata/title"
63+
*
64+
* `join("metadata", "../title")` // "title"
65+
*/
66+
declare function join(...pointer: (JsonPointer | boolean)[]): JsonPointer;
67+
//#endregion
68+
//#region lib/split.d.ts
69+
/**
70+
* From a json-pointer, creates an array of properties, describing a path into
71+
* json-data
72+
*/
73+
declare function split(pointer: JsonPointer | JsonPath): JsonPath;
74+
//#endregion
75+
//#region lib/splitLast.d.ts
76+
/**
77+
* splits the last property of json-pointer and returns the path and property.
78+
* @returns tuple with parent json-pointer and the last property or undefined if pointer a root pointer
79+
*/
80+
declare function splitLast(pointer: JsonPointer | JsonPath): [string, string | undefined];
81+
//#endregion
82+
//#region lib/isRoot.d.ts
83+
/**
84+
* @returns true, if this pointer location is the root data
85+
*/
86+
declare function isRoot(pointer: JsonPointer | JsonPath): boolean;
87+
//#endregion
88+
//#region lib/removeUndefinedItems.d.ts
89+
/**
90+
* Removes all `undefined` values within an array without creating additional
91+
* arrays
92+
*/
93+
declare function removeUndefinedItems<T = unknown>(array: T[]): T[];
94+
//#endregion
95+
//#region index.d.ts
1096
declare const jsonPointer: {
11-
get: typeof get;
12-
set: typeof set;
13-
remove: typeof remove;
14-
join: typeof join;
15-
split: typeof split;
16-
splitLast: typeof splitLast;
17-
isRoot: typeof isRoot;
18-
removeUndefinedItems: typeof removeUndefinedItems;
97+
get: typeof get;
98+
set: typeof set;
99+
remove: typeof remove;
100+
join: typeof join;
101+
split: typeof split;
102+
splitLast: typeof splitLast;
103+
isRoot: typeof isRoot;
104+
removeUndefinedItems: typeof removeUndefinedItems;
19105
};
20-
export default jsonPointer;
21-
export { get, set, remove, join, split, splitLast, isRoot, removeUndefinedItems, };
22-
export type { JsonPointer, JsonPath, JsonData };
106+
//#endregion
107+
export { type JsonData, type JsonPath, type JsonPointer, jsonPointer as default, get, isRoot, join, remove, removeUndefinedItems, set, split, splitLast };

dist/index.js

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/jsonPointer.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/lib/get.d.ts

Lines changed: 0 additions & 12 deletions
This file was deleted.

dist/lib/isRoot.d.ts

Lines changed: 0 additions & 5 deletions
This file was deleted.

0 commit comments

Comments
 (0)