valdres 0.2.0-alpha.61 → 0.2.0-alpha.62
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/dist/index.js
CHANGED
|
@@ -235,14 +235,7 @@ var findClosestStoreWithAtomInitialized = (atom, data) => {
|
|
|
235
235
|
return findClosestStoreWithAtomInitialized(atom, data.parent);
|
|
236
236
|
};
|
|
237
237
|
|
|
238
|
-
// src/lib/
|
|
239
|
-
class SuspendAndWaitForResolveError extends Error {
|
|
240
|
-
promise;
|
|
241
|
-
constructor(promise) {
|
|
242
|
-
super();
|
|
243
|
-
this.promise = promise;
|
|
244
|
-
}
|
|
245
|
-
}
|
|
238
|
+
// src/errors/lib/generateSelectorTrace.ts
|
|
246
239
|
var generateSelectorTrace = (selectors) => {
|
|
247
240
|
const lastIndex = selectors.length - 1;
|
|
248
241
|
return [...selectors].reverse().map((selector, index) => {
|
|
@@ -258,21 +251,44 @@ var generateSelectorTrace = (selectors) => {
|
|
|
258
251
|
`);
|
|
259
252
|
};
|
|
260
253
|
|
|
261
|
-
|
|
254
|
+
// src/errors/SelectorEvaluationError.ts
|
|
255
|
+
class SelectorEvaluationError extends Error {
|
|
262
256
|
selectors;
|
|
263
|
-
constructor() {
|
|
257
|
+
constructor(cause) {
|
|
264
258
|
super();
|
|
259
|
+
this.cause = cause;
|
|
265
260
|
this.selectors = [];
|
|
266
261
|
}
|
|
267
262
|
track(selector) {
|
|
268
263
|
this.selectors.push(selector);
|
|
269
264
|
}
|
|
265
|
+
get message() {
|
|
266
|
+
const firstSelectorName = this.selectors[0].name ?? "Anonymous Selector";
|
|
267
|
+
return `Selector eval crashed in '${firstSelectorName}'
|
|
268
|
+
${generateSelectorTrace(this.selectors)}`;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
// src/errors/SelectorCircularDependencyError.ts
|
|
273
|
+
class SelectorCircularDependencyError extends SelectorEvaluationError {
|
|
274
|
+
constructor() {
|
|
275
|
+
super();
|
|
276
|
+
}
|
|
270
277
|
get message() {
|
|
271
278
|
const firstSelectorName = this.selectors[0].name ?? "Anonymous Selector";
|
|
272
279
|
return `Circular dependency detected in '${firstSelectorName}'
|
|
273
280
|
${generateSelectorTrace(this.selectors)}`;
|
|
274
281
|
}
|
|
275
282
|
}
|
|
283
|
+
|
|
284
|
+
// src/lib/initSelector.ts
|
|
285
|
+
class SuspendAndWaitForResolveError extends Error {
|
|
286
|
+
promise;
|
|
287
|
+
constructor(promise) {
|
|
288
|
+
super();
|
|
289
|
+
this.promise = promise;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
276
292
|
var getOrInitConsumersSet = (state, data) => {
|
|
277
293
|
const set = data.stateConsumers.get(state);
|
|
278
294
|
if (set)
|
|
@@ -284,7 +300,7 @@ var getOrInitConsumersSet = (state, data) => {
|
|
|
284
300
|
var evaluateSelector = (selector, data, circularDependencyMap = new WeakSet) => {
|
|
285
301
|
const updatedDependencies = new Set;
|
|
286
302
|
if (circularDependencyMap.has(selector)) {
|
|
287
|
-
throw new
|
|
303
|
+
throw new SelectorCircularDependencyError;
|
|
288
304
|
}
|
|
289
305
|
circularDependencyMap.add(selector);
|
|
290
306
|
let result;
|
|
@@ -299,8 +315,10 @@ var evaluateSelector = (selector, data, circularDependencyMap = new WeakSet) =>
|
|
|
299
315
|
} catch (error) {
|
|
300
316
|
if (error instanceof SuspendAndWaitForResolveError) {
|
|
301
317
|
result = error;
|
|
302
|
-
} else {
|
|
318
|
+
} else if (error instanceof SelectorEvaluationError) {
|
|
303
319
|
throw error;
|
|
320
|
+
} else {
|
|
321
|
+
throw new SelectorEvaluationError(error);
|
|
304
322
|
}
|
|
305
323
|
}
|
|
306
324
|
const currentDependencies = data.stateDependencies.get(selector) ?? new Set;
|
|
@@ -337,7 +355,7 @@ var initSelector = (selector, data, circularDependencySet = new WeakSet) => {
|
|
|
337
355
|
try {
|
|
338
356
|
tmpValue = evaluateSelector(selector, data, circularDependencySet);
|
|
339
357
|
} catch (e) {
|
|
340
|
-
if (e instanceof
|
|
358
|
+
if (e instanceof SelectorEvaluationError)
|
|
341
359
|
e.track(selector);
|
|
342
360
|
throw e;
|
|
343
361
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "valdres",
|
|
3
|
-
"version": "0.2.0-alpha.
|
|
3
|
+
"version": "0.2.0-alpha.62",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Eigil Sagafos"
|
|
@@ -36,5 +36,5 @@
|
|
|
36
36
|
"access": "public",
|
|
37
37
|
"registry": "https://registry.npmjs.org/"
|
|
38
38
|
},
|
|
39
|
-
"gitHead": "
|
|
39
|
+
"gitHead": "c7bbe5a9bad35399cce7fd9da5d1935d3be29ce8"
|
|
40
40
|
}
|