@cldmv/wisp 1.0.1 → 1.0.5
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cldmv/wisp",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.5",
|
|
4
4
|
"description": "Version-agnostic JSON importing for Node.js with fallback handling and caller path resolution.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"scripts": {
|
|
13
13
|
"test": "mocha --recursive \"test/**/*.mjs\"",
|
|
14
14
|
"test:watch": "mocha --watch \"test/**/*.mjs\"",
|
|
15
|
-
"lint": "eslint
|
|
15
|
+
"lint": "eslint --config .configs/eslint.config.mjs .",
|
|
16
16
|
"build:types": "tsc",
|
|
17
17
|
"test:types": "tsc --noEmit",
|
|
18
18
|
"build:ci": "npm run test && npm run build:types && npm run test:types"
|
|
@@ -64,10 +64,13 @@
|
|
|
64
64
|
"package.json"
|
|
65
65
|
],
|
|
66
66
|
"devDependencies": {
|
|
67
|
-
"
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
"
|
|
67
|
+
"@eslint/js": "^10.0.1",
|
|
68
|
+
"@types/node": "^26.6.2",
|
|
69
|
+
"chai": "^6.2.2",
|
|
70
|
+
"eslint": "^10.10.0",
|
|
71
|
+
"globals": "^17.12.0",
|
|
72
|
+
"mocha": "^12.0.1",
|
|
73
|
+
"typescript": "^6.0.3"
|
|
71
74
|
},
|
|
72
75
|
"publishConfig": {
|
|
73
76
|
"access": "public"
|
|
@@ -133,7 +133,6 @@ export function getStack(skipFn) {
|
|
|
133
133
|
}
|
|
134
134
|
|
|
135
135
|
const THIS_FILE = fileURLToPath(import.meta.url);
|
|
136
|
-
const THIS_DIR = path.dirname(THIS_FILE);
|
|
137
136
|
|
|
138
137
|
// Find the package root by looking for package.json
|
|
139
138
|
function findPackageRoot(startPath) {
|
|
@@ -182,6 +181,11 @@ const PACKAGE_ROOT = findPackageRoot(THIS_FILE);
|
|
|
182
181
|
*/
|
|
183
182
|
function pickPrimaryBaseFile() {
|
|
184
183
|
let exitedSrcOrDist = false; // Flag 1: Have we exited src/ or dist/?
|
|
184
|
+
// This function's own docstring documents a "Flag 2 set, return this!"
|
|
185
|
+
// scenario, but nothing reads exitedIndex to return early once it's set --
|
|
186
|
+
// looks like a pre-existing gap between the documented intent and the
|
|
187
|
+
// implementation. Left as-is; fixing the behavior is a separate decision
|
|
188
|
+
// from unblocking lint.
|
|
185
189
|
let exitedIndex = false; // Flag 2: Have we exited index.*?
|
|
186
190
|
let previousWasInSrcOrDist = false;
|
|
187
191
|
let previousWasIndex = false;
|
|
@@ -214,6 +218,7 @@ function pickPrimaryBaseFile() {
|
|
|
214
218
|
|
|
215
219
|
// Flag 2: Check if we've exited index.* (was index, now not index)
|
|
216
220
|
if (previousWasIndex && !currentIsIndex) {
|
|
221
|
+
// eslint-disable-next-line no-unused-vars -- see the declaration above
|
|
217
222
|
exitedIndex = true;
|
|
218
223
|
}
|
|
219
224
|
|
package/src/wisp.mjs
CHANGED
|
@@ -90,14 +90,15 @@ export async function wisp(input, options = {}) {
|
|
|
90
90
|
try {
|
|
91
91
|
validate(val);
|
|
92
92
|
} catch (e) {
|
|
93
|
-
throw new Error(`@cldmv/wisp: ${e?.message ?? e}
|
|
93
|
+
throw new Error(`@cldmv/wisp: ${e?.message ?? e}`, { cause: e });
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
96
|
return val;
|
|
97
97
|
} catch {}
|
|
98
98
|
|
|
99
99
|
try {
|
|
100
|
-
|
|
100
|
+
// Legacy import assertions (`assert`) for Node 16.14-20.9, which predate `with`; the cast keeps the type checker from rejecting the key.
|
|
101
|
+
const mod = await import(url.href, /** @type {any} */ ({ assert: { type } }));
|
|
101
102
|
if (!reviver && !validate) return mod?.default ?? mod;
|
|
102
103
|
let val = deepClone(mod?.default ?? mod);
|
|
103
104
|
if (reviver) val = JSON.parse(JSON.stringify(val), reviver);
|
|
@@ -105,7 +106,7 @@ export async function wisp(input, options = {}) {
|
|
|
105
106
|
try {
|
|
106
107
|
validate(val);
|
|
107
108
|
} catch (e) {
|
|
108
|
-
throw new Error(`@cldmv/wisp: ${e?.message ?? e}
|
|
109
|
+
throw new Error(`@cldmv/wisp: ${e?.message ?? e}`, { cause: e });
|
|
109
110
|
}
|
|
110
111
|
}
|
|
111
112
|
return val;
|
|
@@ -119,7 +120,7 @@ export async function wisp(input, options = {}) {
|
|
|
119
120
|
try {
|
|
120
121
|
validate(val);
|
|
121
122
|
} catch (e) {
|
|
122
|
-
throw new Error(`@cldmv/wisp: ${e?.message ?? e}
|
|
123
|
+
throw new Error(`@cldmv/wisp: ${e?.message ?? e}`, { cause: e });
|
|
123
124
|
}
|
|
124
125
|
}
|
|
125
126
|
return val;
|
|
@@ -127,7 +128,7 @@ export async function wisp(input, options = {}) {
|
|
|
127
128
|
if (fallback) {
|
|
128
129
|
return wisp(fallback, options);
|
|
129
130
|
}
|
|
130
|
-
throw new Error(`@cldmv/wisp: Failed to load JSON file at ${url.href}: ${e.message}
|
|
131
|
+
throw new Error(`@cldmv/wisp: Failed to load JSON file at ${url.href}: ${e.message}`, { cause: e });
|
|
131
132
|
}
|
|
132
133
|
}
|
|
133
134
|
|
|
@@ -154,7 +155,7 @@ export async function wisp(input, options = {}) {
|
|
|
154
155
|
* const data = wispSync('./config.json');
|
|
155
156
|
*/
|
|
156
157
|
export function wispSync(input, options = {}) {
|
|
157
|
-
const { base, validate, reviver,
|
|
158
|
+
const { base, validate, reviver, fallback } = options;
|
|
158
159
|
let url;
|
|
159
160
|
if (input instanceof URL) url = input;
|
|
160
161
|
else {
|
|
@@ -172,7 +173,7 @@ export function wispSync(input, options = {}) {
|
|
|
172
173
|
try {
|
|
173
174
|
validate(val);
|
|
174
175
|
} catch (e) {
|
|
175
|
-
throw new Error(`@cldmv/wisp: ${e?.message ?? e}
|
|
176
|
+
throw new Error(`@cldmv/wisp: ${e?.message ?? e}`, { cause: e });
|
|
176
177
|
}
|
|
177
178
|
}
|
|
178
179
|
return val;
|
|
@@ -180,7 +181,7 @@ export function wispSync(input, options = {}) {
|
|
|
180
181
|
if (fallback) {
|
|
181
182
|
return wispSync(fallback, options);
|
|
182
183
|
}
|
|
183
|
-
throw new Error(`@cldmv/wisp: Failed to load JSON file at ${url.href}: ${e.message}
|
|
184
|
+
throw new Error(`@cldmv/wisp: Failed to load JSON file at ${url.href}: ${e.message}`, { cause: e });
|
|
184
185
|
}
|
|
185
186
|
}
|
|
186
187
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-from-caller.d.mts","sourceRoot":"","sources":["../../src/lib/resolve-from-caller.mjs"],"names":[],"mappings":"AAqFA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,6CAhCa,KAAK,CAAC,QAAQ,CAAC,CA0C3B;
|
|
1
|
+
{"version":3,"file":"resolve-from-caller.d.mts","sourceRoot":"","sources":["../../src/lib/resolve-from-caller.mjs"],"names":[],"mappings":"AAqFA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,6CAhCa,KAAK,CAAC,QAAQ,CAAC,CA0C3B;AA4MD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,2CAzCW,MAAM,GACJ,MAAM,CAsDlB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,0CA1CW,MAAM,GACJ,MAAM,CAuDlB;AAtXM,4BAvBI,GAAG,GACD,MAAM,GAAC,IAAI,CAsB+F;;iBA0XzG,MAAY,MAAM,GAAC,SAAS;mBAC5B,MAAY,MAAM,GAAC,SAAS;qBAC5B,MAAY,MAAM,GAAC,SAAS;iBAC5B,MAAY,MAAM,GAAC,SAAS;mBAC5B,MAAY,MAAM,GAAC,SAAS;8BAC5B,MAAY,MAAM,GAAC,SAAS;qBAC5B,MAAY,MAAM,GAAC,SAAS;cAC5B,MAAY,OAAO,GAAC,SAAS;YAC7B,MAAY,OAAO,GAAC,SAAS;mBAC7B,MAAY,OAAO,GAAC,SAAS;gBAC7B,MAAY,OAAO,GAAC,SAAS;aAC7B,MAAY,OAAO,GAAC,SAAS;kBAC7B,MAAY,OAAO,GAAC,SAAS;qBAC7B,MAAY,MAAM,GAAC,SAAS"}
|
package/types/wisp.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wisp.d.mts","sourceRoot":"","sources":["../src/wisp.mjs"],"names":[],"mappings":"AAmDA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,4BAjBW,MAAM,GAAC,GAAG,YAElB;IAA6B,IAAI,GAAzB,MAAM,GAAC,GAAG;IACmB,QAAQ,GAArC,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI;IACoC,OAAO,GAA7D,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG;IAC1B,IAAI,GAArB,MAAM;IACe,QAAQ,GAA7B,MAAM,GAAC,GAAG;CAClB,GAAU,OAAO,CAAC,GAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"wisp.d.mts","sourceRoot":"","sources":["../src/wisp.mjs"],"names":[],"mappings":"AAmDA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,4BAjBW,MAAM,GAAC,GAAG,YAElB;IAA6B,IAAI,GAAzB,MAAM,GAAC,GAAG;IACmB,QAAQ,GAArC,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI;IACoC,OAAO,GAA7D,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG;IAC1B,IAAI,GAArB,MAAM;IACe,QAAQ,GAA7B,MAAM,GAAC,GAAG;CAClB,GAAU,OAAO,CAAC,GAAC,CAAC,CA0EtB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,gCAhBW,MAAM,GAAC,GAAG,YAElB;IAA6B,IAAI,GAAzB,MAAM,GAAC,GAAG;IACmB,QAAQ,GAArC,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI;IACoC,OAAO,GAA7D,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG;IAC1B,IAAI,GAArB,MAAM;IACe,QAAQ,GAA7B,MAAM,GAAC,GAAG;CAClB,GAAU,GAAC,CAsCb"}
|