@douglasneuroinformatics/libjs 2.3.0 → 2.5.0

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.
@@ -26,7 +26,13 @@ type ExceptionStatic<TParams extends ExceptionParams, TOptions extends Exception
26
26
  };
27
27
  type ExceptionConstructor<TParams extends ExceptionParams, TOptions extends ExceptionOptions> = new (...args: ExceptionConstructorArgs<TParams, TOptions>) => BaseException<TParams, TOptions>;
28
28
  type ExceptionType<TParams extends ExceptionParams = ExceptionParams, TOptions extends ExceptionOptions = ExceptionOptions, TStaticProps = unknown> = ExceptionConstructor<TParams, TOptions> & ExceptionStatic<TParams, TOptions> & TStaticProps;
29
- declare abstract class BaseException<TParams extends ExceptionParams, TOptions extends ExceptionOptions> extends Error {
29
+ interface ExceptionLike extends Error, ExceptionOptions {
30
+ name: string;
31
+ toAsyncErr(): ResultAsync<never, this>;
32
+ toErr(): Result<never, this>;
33
+ toString(): string;
34
+ }
35
+ declare abstract class BaseException<TParams extends ExceptionParams, TOptions extends ExceptionOptions> extends Error implements ExceptionLike {
30
36
  cause: TOptions['cause'];
31
37
  details: TOptions['details'];
32
38
  abstract name: TParams['name'];
@@ -117,6 +123,6 @@ export declare const ValidationException: ExceptionType<{
117
123
  }, {
118
124
  [key: string]: unknown;
119
125
  }>;
120
- export type { ExceptionConstructor, ExceptionConstructorArgs, ExceptionName, ExceptionOptions, ExceptionParams, ExceptionStatic, ExceptionType };
126
+ export type { ExceptionConstructor, ExceptionConstructorArgs, ExceptionLike, ExceptionName, ExceptionOptions, ExceptionParams, ExceptionStatic, ExceptionType };
121
127
  export { BaseException, ExceptionBuilder, OutOfRangeException, RuntimeException, ValueException };
122
128
  //# sourceMappingURL=exception.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exception.d.ts","sourceRoot":"","sources":["../src/exception.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exception.d.ts","sourceRoot":"","sources":["../src/exception.ts"],"names":[],"mappings":"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"}
package/dist/exception.js CHANGED
@@ -1,3 +1,4 @@
1
+ /* eslint-disable @typescript-eslint/consistent-type-definitions */
1
2
  /* eslint-disable @typescript-eslint/no-unsafe-return */
2
3
  /* eslint-disable no-dupe-class-members */
3
4
  import cleanStack from 'clean-stack';
package/dist/http.d.ts ADDED
@@ -0,0 +1,38 @@
1
+ import { ResultAsync } from 'neverthrow';
2
+ import type { ExceptionLike } from './exception.js';
3
+ type NetworkErrorOptions = {
4
+ cause: unknown;
5
+ details: {
6
+ kind: 'NETWORK_ERROR';
7
+ url: string;
8
+ };
9
+ };
10
+ type HttpErrorOptions = {
11
+ details: {
12
+ kind: 'HTTP_ERROR';
13
+ status: number;
14
+ statusText: string;
15
+ url: string;
16
+ };
17
+ };
18
+ export declare const FetchException: import("./exception.js").ExceptionType<{
19
+ readonly message: (details: {
20
+ kind: "NETWORK_ERROR";
21
+ url: string;
22
+ } | {
23
+ kind: "HTTP_ERROR";
24
+ status: number;
25
+ statusText: string;
26
+ url: string;
27
+ }) => string;
28
+ readonly name: "FetchException";
29
+ }, NetworkErrorOptions | HttpErrorOptions, {
30
+ [key: string]: unknown;
31
+ }>;
32
+ export declare function safeFetch(url: string, init: RequestInit): ResultAsync<Response, typeof FetchException.Instance>;
33
+ export declare function waitForServer(url: string, { interval, timeout }?: {
34
+ interval?: number;
35
+ timeout?: number;
36
+ }): ResultAsync<void, ExceptionLike>;
37
+ export {};
38
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,WAAW,EAAE,MAAM,YAAY,CAAC;AAM7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE;QACP,IAAI,EAAE,eAAe,CAAC;QACtB,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,OAAO,EAAE;QACP,IAAI,EAAE,YAAY,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH,CAAC;AAEF,eAAO,MAAQ,cAAc;;cAdnB,eAAe;aAChB,MAAM;;cAML,YAAY;gBACV,MAAM;oBACF,MAAM;aACb,MAAM;;;;;EAUL,CAAC;AAEX,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,WAAW,CAAC,QAAQ,EAAE,OAAO,cAAc,CAAC,QAAQ,CAAC,CAyB/G;AAED,wBAAgB,aAAa,CAC3B,GAAG,EAAE,MAAM,EACX,EAAE,QAAY,EAAE,OAAY,EAAE,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAC3E,WAAW,CAAC,IAAI,EAAE,aAAa,CAAC,CAmBlC"}
package/dist/http.js ADDED
@@ -0,0 +1,58 @@
1
+ import { ok, ResultAsync } from 'neverthrow';
2
+ import { sleep } from './datetime.js';
3
+ import { ExceptionBuilder, RuntimeException } from './exception.js';
4
+ import { asyncResultify } from './result.js';
5
+ export const { FetchException } = new ExceptionBuilder()
6
+ .setOptionsType()
7
+ .setParams({
8
+ message: (details) => `HTTP request to '${details.url}' failed`,
9
+ name: 'FetchException'
10
+ })
11
+ .build();
12
+ export function safeFetch(url, init) {
13
+ return asyncResultify(async () => {
14
+ try {
15
+ const response = await fetch(url, init);
16
+ if (response.ok) {
17
+ return ok(response);
18
+ }
19
+ return FetchException.asErr({
20
+ details: {
21
+ kind: 'HTTP_ERROR',
22
+ status: response.status,
23
+ statusText: response.statusText,
24
+ url
25
+ }
26
+ });
27
+ }
28
+ catch (err) {
29
+ return FetchException.asErr({
30
+ cause: err,
31
+ details: {
32
+ kind: 'NETWORK_ERROR',
33
+ url
34
+ }
35
+ });
36
+ }
37
+ });
38
+ }
39
+ export function waitForServer(url, { interval = 1, timeout = 10 } = {}) {
40
+ return asyncResultify(async () => {
41
+ let secondsElapsed = 0;
42
+ while (secondsElapsed < timeout) {
43
+ const fetchResult = await safeFetch(url, { method: 'GET' });
44
+ if (fetchResult.isOk()) {
45
+ return ok();
46
+ }
47
+ const { error } = fetchResult;
48
+ if (error.details.kind === 'HTTP_ERROR') {
49
+ return RuntimeException.asErr(`Request to '${url}' returned status code ${error.details.status}`, {
50
+ cause: fetchResult.error
51
+ });
52
+ }
53
+ await sleep(interval);
54
+ secondsElapsed += interval;
55
+ }
56
+ return RuntimeException.asErr(`Failed to connect to '${url}' after timeout of ${timeout}s`);
57
+ });
58
+ }
package/dist/index.d.ts CHANGED
@@ -1,11 +1,13 @@
1
1
  export * from './array.js';
2
2
  export * from './datetime.js';
3
3
  export * from './exception.js';
4
+ export * from './http.js';
4
5
  export * from './json.js';
5
6
  export * from './number.js';
6
7
  export * from './object.js';
7
8
  export * from './random.js';
8
9
  export * from './range.js';
10
+ export * from './result.js';
9
11
  export * from './string.js';
10
12
  export * from './types.js';
11
13
  export * from './zod.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC"}
package/dist/index.js CHANGED
@@ -1,11 +1,13 @@
1
1
  export * from './array.js';
2
2
  export * from './datetime.js';
3
3
  export * from './exception.js';
4
+ export * from './http.js';
4
5
  export * from './json.js';
5
6
  export * from './number.js';
6
7
  export * from './object.js';
7
8
  export * from './random.js';
8
9
  export * from './range.js';
10
+ export * from './result.js';
9
11
  export * from './string.js';
10
12
  export * from './types.js';
11
13
  export * from './zod.js';
@@ -0,0 +1,3 @@
1
+ import { Result, ResultAsync } from 'neverthrow';
2
+ export declare function asyncResultify<T, E>(fn: () => Promise<Result<T, E>>): ResultAsync<T, E>;
3
+ //# sourceMappingURL=result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../src/result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEjD,wBAAgB,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAEvF"}
package/dist/result.js ADDED
@@ -0,0 +1,4 @@
1
+ import { Result, ResultAsync } from 'neverthrow';
2
+ export function asyncResultify(fn) {
3
+ return new ResultAsync(fn());
4
+ }
@@ -1 +1 @@
1
- {"root":["../src/array.ts","../src/datetime.ts","../src/exception.ts","../src/index.ts","../src/json.ts","../src/number.ts","../src/object.ts","../src/random.ts","../src/range.ts","../src/string.ts","../src/types.ts","../src/zod.ts"],"version":"5.6.3"}
1
+ {"root":["../src/array.ts","../src/datetime.ts","../src/exception.ts","../src/http.ts","../src/index.ts","../src/json.ts","../src/number.ts","../src/object.ts","../src/random.ts","../src/range.ts","../src/result.ts","../src/string.ts","../src/types.ts","../src/zod.ts"],"version":"5.6.3"}
package/dist/types.d.ts CHANGED
@@ -21,4 +21,5 @@ export type IsUnion<T, U = T> = (T extends U ? (U extends T ? true : false) : ne
21
21
  export type SingleKeyMap<K extends PropertyKey, V> = IsStringLiteral<K> extends true ? IsUnion<K> extends false ? {
22
22
  [key in K]: V;
23
23
  } : never : never;
24
+ export type FallbackIfNever<T, U> = [T] extends [never] ? U : T;
24
25
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE1D;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS;IACxD,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,GACG,OAAO,CACL,MAAM;KACH,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,KAAK;CAC1F,EACD,KAAK,EACL,IAAI,CACL,GACD,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GACnB,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,GAClB,KAAK,CAAC;AAEZ,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,IAAI,CAAC,SAAS,KACnF,GAAG,IAAI,EAAE,MAAM,KAAK,SAAS,GAAG,EAAE,KAC/B,MAAM,OAAO,GACd,QAAQ,MAAM,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,GACxC,KAAK,CAAC;AAEV,MAAM,MAAM,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,SAAS,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;AAEjH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,IAC/C,eAAe,CAAC,CAAC,CAAC,SAAS,IAAI,GAC3B,OAAO,CAAC,CAAC,CAAC,SAAS,KAAK,GACtB;KACG,GAAG,IAAI,CAAC,GAAG,CAAC;CACd,GACD,KAAK,GACP,KAAK,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE1D;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS;IACxD,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,GACG,OAAO,CACL,MAAM;KACH,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,KAAK;CAC1F,EACD,KAAK,EACL,IAAI,CACL,GACD,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GACnB,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,GAClB,KAAK,CAAC;AAEZ,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,IAAI,CAAC,SAAS,KACnF,GAAG,IAAI,EAAE,MAAM,KAAK,SAAS,GAAG,EAAE,KAC/B,MAAM,OAAO,GACd,QAAQ,MAAM,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,GACxC,KAAK,CAAC;AAEV,MAAM,MAAM,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,SAAS,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;AAEjH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,IAC/C,eAAe,CAAC,CAAC,CAAC,SAAS,IAAI,GAC3B,OAAO,CAAC,CAAC,CAAC,SAAS,KAAK,GACtB;KACG,GAAG,IAAI,CAAC,GAAG,CAAC;CACd,GACD,KAAK,GACP,KAAK,CAAC;AAEZ,MAAM,MAAM,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@douglasneuroinformatics/libjs",
3
3
  "type": "module",
4
- "version": "2.3.0",
4
+ "version": "2.5.0",
5
5
  "packageManager": "pnpm@10.3.0",
6
6
  "description": "A collection of utility functions and types for Node.js and the browser",
7
7
  "author": "Joshua Unrau",
@@ -40,7 +40,7 @@
40
40
  "type-fest": "^4.34.1"
41
41
  },
42
42
  "devDependencies": {
43
- "@douglasneuroinformatics/eslint-config": "^5.3.1",
43
+ "@douglasneuroinformatics/eslint-config": "^5.3.2",
44
44
  "@douglasneuroinformatics/prettier-config": "^0.0.1",
45
45
  "@douglasneuroinformatics/semantic-release": "^0.2.1",
46
46
  "@douglasneuroinformatics/tsconfig": "^1.0.2",