@lavalogic/scoria 0.13.2 → 0.13.4

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.
@@ -2,6 +2,7 @@
2
2
 
3
3
  <script lang="ts" generics="T extends object">
4
4
  import Button from '../../Button.svelte';
5
+ import { devCatch } from '../../../Helpers/Helpers.svelte.js';
5
6
  import { Side } from '../../../Types/Internal/Side.js';
6
7
  import { Size } from '../../../Types/Internal/Size.js';
7
8
  import { Variant } from '../../../Types/Internal/Variant.js';
@@ -109,7 +110,7 @@
109
110
  <Button
110
111
  side={Side.Bottom}
111
112
  onclick={() => {
112
- tableContext.paginationRepo?.reload?.();
113
+ tableContext.paginationRepo?.reload?.().catch(devCatch);
113
114
  }}
114
115
  toggled={tableContext.dataRepo.isLoading}
115
116
  size={Size.Small}
@@ -2,6 +2,7 @@
2
2
 
3
3
  <script lang="ts" generics="T extends object">
4
4
  import Button from '../../Button.svelte';
5
+ import { devCatch } from '../../../Helpers/Helpers.svelte.js';
5
6
  import { Side } from '../../../Types/Internal/Side.js';
6
7
  import { Size } from '../../../Types/Internal/Size.js';
7
8
  import { Variant } from '../../../Types/Internal/Variant.js';
@@ -121,7 +122,7 @@
121
122
  <Button
122
123
  side={tableContext.toolbarPosition === ToolbarPosition.Left ? Side.Left : Side.Right}
123
124
  onclick={() => {
124
- tableContext.paginationRepo?.reload?.();
125
+ tableContext.paginationRepo?.reload?.().catch(devCatch);
125
126
  }}
126
127
  disabled={!tableContext.allowQuickFiltering}
127
128
  variant={Variant.Toolbar}
@@ -17,7 +17,7 @@ export interface IDataRepository<T extends object> {
17
17
  manualSorting?: boolean;
18
18
  sorting: SortingState;
19
19
  filtering: ColumnFiltersState;
20
- filterModes: ReadonlyMap<string, FilterMode>;
20
+ filterModes: SvelteMap<string, FilterMode>;
21
21
  setFilterMode: (id: string, mode: FilterMode) => void;
22
22
  filterBy: (id: string, value: unknown) => void;
23
23
  dateFilter?: FilterFn<T, DateFilterValueType>;
@@ -26,7 +26,7 @@ export interface IDataRepository<T extends object> {
26
26
  boolFilter?: FilterFn<T, BoolFilterValueType>;
27
27
  stringFilter?: FilterFn<T, StringFilterValueType>;
28
28
  resetFilters: () => void;
29
- reload?: () => void;
29
+ reload?: () => Promise<void>;
30
30
  lastPage?: number;
31
31
  pageStartIndex: number;
32
32
  pageEndIndexExclusive: number;
@@ -1,3 +1,4 @@
1
+ import type { SvelteMap } from 'svelte/reactivity';
1
2
  import type { ColumnFiltersState } from '../Filtering/ColumnFiltersState.js';
2
3
  import type { BoolFilterValueType, DateFilterValueType, FilterFn, NumberFilterValueType, SelectFilterValueType, StringFilterValueType } from '../Filtering/FilterFn.js';
3
4
  import type { FilterMode } from '../Filtering/FilterMode.js';
@@ -9,7 +10,7 @@ export interface ILocalDataRepository<T extends object> extends IDataRepository<
9
10
  nextPage: () => void;
10
11
  prevPage: () => void;
11
12
  filtering: ColumnFiltersState;
12
- filterModes: ReadonlyMap<string, FilterMode>;
13
+ filterModes: SvelteMap<string, FilterMode>;
13
14
  setFilterMode: (id: string, mode: FilterMode) => void;
14
15
  filterBy: (id: string, value: unknown) => void;
15
16
  dateFilter: FilterFn<T, DateFilterValueType>;
@@ -18,5 +19,5 @@ export interface ILocalDataRepository<T extends object> extends IDataRepository<
18
19
  boolFilter: FilterFn<T, BoolFilterValueType>;
19
20
  stringFilter: FilterFn<T, StringFilterValueType>;
20
21
  resetFilters: () => void;
21
- reload?: () => void;
22
+ reload?: () => Promise<void>;
22
23
  }
@@ -14,5 +14,5 @@ export interface IRemoteDataRepository<T extends object> extends IDataRepository
14
14
  filterBy: (id: string, value: unknown) => void;
15
15
  resetFilters: () => void;
16
16
  lastPage: number;
17
- reload?: (debounced?: boolean) => void;
17
+ reload?: (debounced?: boolean) => Promise<void>;
18
18
  }
@@ -37,12 +37,12 @@ export declare abstract class TableDataRepository<T extends object> implements I
37
37
  get previouslyViewedPage(): number;
38
38
  private set previouslyViewedPage(value);
39
39
  protected _filterModes: SvelteMap<string, FilterMode>;
40
- get filterModes(): ReadonlyMap<string, FilterMode>;
40
+ get filterModes(): SvelteMap<string, FilterMode>;
41
41
  private _forceRefresh;
42
42
  get forceRefresh(): () => void;
43
43
  set forceRefresh(v: () => void);
44
44
  readonly registerRefreshMethod: (method: () => void) => void;
45
45
  protected getValueSet(values: Array<string | number | undefined>): Set<number>;
46
46
  static getValues(values: Array<string | number | undefined>): Array<number>;
47
- static getMinMax(values: Array<string | number | undefined>): number[] | undefined[];
47
+ static getMinMax(values: Array<string | number | null | undefined>): number[] | undefined[];
48
48
  }
@@ -56,12 +56,12 @@ export class ToastContext {
56
56
  result: Validity.Invalid,
57
57
  closeable,
58
58
  timeout,
59
- message: getErrorMessage(message, false),
59
+ message: getErrorMessage(message, { includeUUID: false }),
60
60
  id,
61
61
  close: () => {
62
62
  this.dismiss(id);
63
63
  },
64
- getVerbose: () => getErrorMessage(message, true)
64
+ getVerbose: () => getErrorMessage(message)
65
65
  };
66
66
  })();
67
67
  this.toasts.push(newMessage);
@@ -24,7 +24,13 @@ export interface IErrorResponse {
24
24
  readonly uuid: string | null;
25
25
  }
26
26
  export declare function isErrorResponse(error: unknown): error is IErrorResponse;
27
- export declare function getErrorMessage(error: unknown, includeUUID?: boolean): string;
27
+ export declare function isJSError(error: object): error is Error;
28
+ export type GetErrorMessageProps = {
29
+ includeUUID?: boolean;
30
+ includeStack?: boolean;
31
+ includeCause?: boolean;
32
+ };
33
+ export declare function getErrorMessage(error: unknown, { includeUUID, includeStack, includeCause }?: GetErrorMessageProps): string;
28
34
  export declare function isValidEmailAddress(emailAddress: string): RegExpMatchArray | null;
29
35
  export declare function gridItem(element: HTMLElement): (() => void) | undefined;
30
36
  export type Milliseconds = number;
@@ -123,7 +123,10 @@ export function isErrorResponse(error) {
123
123
  (Array.isArray(error.errors) || typeof error.errors === 'string') &&
124
124
  !!error.errors.length);
125
125
  }
126
- export function getErrorMessage(error, includeUUID = true) {
126
+ export function isJSError(error) {
127
+ return 'message' in error && typeof error.message == 'string';
128
+ }
129
+ export function getErrorMessage(error, { includeUUID = true, includeStack = false, includeCause = false } = {}) {
127
130
  if (!error) {
128
131
  return 'Unknown Error';
129
132
  }
@@ -139,8 +142,14 @@ export function getErrorMessage(error, includeUUID = true) {
139
142
  });
140
143
  }
141
144
  }
142
- else if ('message' in error && typeof error.message == 'string') {
145
+ else if (isJSError(error)) {
143
146
  errorList += error.message + '\n';
147
+ if (includeCause && error.cause) {
148
+ errorList += `Cause: ${getErrorMessage(error.cause)}`;
149
+ }
150
+ if (includeStack && error.stack) {
151
+ errorList += `Stack: ${error.stack}`;
152
+ }
144
153
  }
145
154
  else {
146
155
  errorList += 'Unknown Error' + '\n';
package/dist/index.d.ts CHANGED
@@ -133,7 +133,7 @@ export { TooltipContext } from './Contexts/TooltipContext.svelte.js';
133
133
  export { UntypedInputContext } from './Contexts/UntypedInputContext.svelte.js';
134
134
  export { Delay } from './Delay/Delay.js';
135
135
  export { DATAMatrix } from './Helpers/Datamatrix.js';
136
- export { asyncAll, asyncEvery, asyncFilter, asyncFilterIndices, asyncFlatMap, asyncForEach, asyncMap, asyncSleep, asyncSome, autoPluralise, devCatch, generateShortUUID, generateUUID, getCanvasContext, getErrorMessage, gridItem, isValidEmailAddress, localTimeFormat, passthrough, refWrapper, SQLFriendly, SQLFriendlyWithLocalTime, vowels } from './Helpers/Helpers.svelte.js';
136
+ export { asyncAll, asyncEvery, asyncFilter, asyncFilterIndices, asyncFlatMap, asyncForEach, asyncMap, asyncSleep, asyncSome, autoPluralise, devCatch, generateShortUUID, generateUUID, getCanvasContext, getErrorMessage, gridItem, isDateTuple, isNumberTuple, isValidEmailAddress, localTimeFormat, passthrough, refWrapper, SQLFriendly, SQLFriendlyWithLocalTime, vowels } from './Helpers/Helpers.svelte.js';
137
137
  export { type INamed } from './Helpers/INamed.js';
138
138
  export { AttributeOperation } from './Types/Internal/AttributeOperation.js';
139
139
  export { type BigRadioOption } from './Types/Internal/BigRadioOption.js';
package/dist/index.js CHANGED
@@ -140,7 +140,7 @@ export { TooltipContext } from './Contexts/TooltipContext.svelte.js';
140
140
  export { UntypedInputContext } from './Contexts/UntypedInputContext.svelte.js';
141
141
  export { Delay } from './Delay/Delay.js';
142
142
  export { DATAMatrix } from './Helpers/Datamatrix.js';
143
- export { asyncAll, asyncEvery, asyncFilter, asyncFilterIndices, asyncFlatMap, asyncForEach, asyncMap, asyncSleep, asyncSome, autoPluralise, devCatch, generateShortUUID, generateUUID, getCanvasContext, getErrorMessage, gridItem, isValidEmailAddress, localTimeFormat, passthrough, refWrapper, SQLFriendly, SQLFriendlyWithLocalTime, vowels } from './Helpers/Helpers.svelte.js';
143
+ export { asyncAll, asyncEvery, asyncFilter, asyncFilterIndices, asyncFlatMap, asyncForEach, asyncMap, asyncSleep, asyncSome, autoPluralise, devCatch, generateShortUUID, generateUUID, getCanvasContext, getErrorMessage, gridItem, isDateTuple, isNumberTuple, isValidEmailAddress, localTimeFormat, passthrough, refWrapper, SQLFriendly, SQLFriendlyWithLocalTime, vowels } from './Helpers/Helpers.svelte.js';
144
144
  export {} from './Helpers/INamed.js';
145
145
  export { AttributeOperation } from './Types/Internal/AttributeOperation.js';
146
146
  export {} from './Types/Internal/BigRadioOption.js';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@lavalogic/scoria",
3
3
  "description": "Svelte components used for the FloWMS Web Frontend",
4
- "version": "0.13.2",
4
+ "version": "0.13.4",
5
5
  "publishConfig": {
6
6
  "access": "restricted"
7
7
  },
@@ -33,13 +33,13 @@
33
33
  "@eslint/compat": "^2.0.2",
34
34
  "@eslint/js": "^10.0.1",
35
35
  "@playwright/test": "^1.58.2",
36
- "@storybook/addon-a11y": "^10.2.11",
37
- "@storybook/addon-docs": "^10.2.11",
36
+ "@storybook/addon-a11y": "^10.2.12",
37
+ "@storybook/addon-docs": "^10.2.12",
38
38
  "@storybook/addon-svelte-csf": "^5.0.11",
39
- "@storybook/addon-vitest": "^10.2.11",
40
- "@storybook/sveltekit": "^10.2.11",
39
+ "@storybook/addon-vitest": "^10.2.12",
40
+ "@storybook/sveltekit": "^10.2.12",
41
41
  "@sveltejs/adapter-node": "^5.5.3",
42
- "@sveltejs/kit": "^2.53.0",
42
+ "@sveltejs/kit": "^2.53.1",
43
43
  "@sveltejs/package": "^2.5.7",
44
44
  "@sveltejs/vite-plugin-svelte": "^6.2.4",
45
45
  "@types/eslint": "^9.6.1",
@@ -50,7 +50,7 @@
50
50
  "@vitest/browser-playwright": "^4.0.18",
51
51
  "eslint": "^10.0.2",
52
52
  "eslint-config-prettier": "^10.1.8",
53
- "eslint-plugin-storybook": "^10.2.11",
53
+ "eslint-plugin-storybook": "^10.2.12",
54
54
  "eslint-plugin-svelte": "^3.15.0",
55
55
  "globals": "^17.3.0",
56
56
  "mdsvex": "^0.12.6",
@@ -59,8 +59,8 @@
59
59
  "prettier-plugin-svelte": "^3.5.0",
60
60
  "publint": "^0.3.17",
61
61
  "sass-embedded": "^1.97.3",
62
- "storybook": "^10.2.11",
63
- "svelte": "^5.53.3",
62
+ "storybook": "^10.2.12",
63
+ "svelte": "^5.53.4",
64
64
  "svelte-check": "^4.4.3",
65
65
  "svelte-render-scan": "^1.1.0",
66
66
  "typescript": "^5.9.3",