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/initSelector.ts
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
- class CircularDependencyError extends Error {
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 CircularDependencyError;
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 CircularDependencyError)
358
+ if (e instanceof SelectorEvaluationError)
341
359
  e.track(selector);
342
360
  throw e;
343
361
  }
@@ -0,0 +1,5 @@
1
+ import { SelectorEvaluationError } from "./SelectorEvaluationError";
2
+ export declare class SelectorCircularDependencyError extends SelectorEvaluationError {
3
+ constructor();
4
+ get message(): string;
5
+ }
@@ -0,0 +1,7 @@
1
+ import type { Selector } from "../types/Selector";
2
+ export declare class SelectorEvaluationError extends Error {
3
+ selectors: any[];
4
+ constructor(cause?: any);
5
+ track(selector: Selector<any>): void;
6
+ get message(): string;
7
+ }
@@ -0,0 +1,2 @@
1
+ import type { Selector } from "../../types/Selector";
2
+ export declare const generateSelectorTrace: (selectors: Selector[]) => string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "valdres",
3
- "version": "0.2.0-alpha.61",
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": "083c7d5aa913e9a641d1456e82276c20d8162f0e"
39
+ "gitHead": "c7bbe5a9bad35399cce7fd9da5d1935d3be29ce8"
40
40
  }