@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.1",
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 src/",
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
- "mocha": "^10.2.0",
68
- "chai": "^4.3.10",
69
- "typescript": "^5.2.0",
70
- "@types/node": "^20.8.0"
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
- const mod = await import(url.href, { assert: { type } });
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, type = "json", fallback } = options;
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;AAuMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,2CAzCW,MAAM,GACJ,MAAM,CAsDlB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,0CA1CW,MAAM,GACJ,MAAM,CAuDlB;AAjXM,4BAvBI,GAAG,GACD,MAAM,GAAC,IAAI,CAsB+F;;iBAqXzG,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"}
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"}
@@ -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,CAyEtB;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"}
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"}