@toa.io/origin 0.0.2 → 0.0.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.
package/README.md CHANGED
@@ -1,3 +1,51 @@
1
1
  # Toa Origin
2
2
 
3
3
  [Exposition](https://github.com/toa-io/toa/tree/dev/extensions/exposition) Client
4
+
5
+ ## `new Resource<T>(path: string, options?: RequestInit)`
6
+
7
+ ### Parameters
8
+
9
+ - `path` — Base API path (e.g. '/favorites/').
10
+ - `options` — Options passed to `fetch`.
11
+ - `T` — Type of the resource representation.
12
+
13
+ Each HTTP verb (get, post, patch, put, delete) provides the following response handling modes:
14
+
15
+ - `.value()`: Expects a single JSON object response `T`.
16
+ - `.array()`: Expects a JSON array response `T[]`.
17
+ - `.none()`: Expects no response body `void`.
18
+
19
+ ```typescript
20
+ (resource.<method>).<mode>(
21
+ segments?: string[], // Optional URL path segments, relative to the base path
22
+ options?: RequestInit // fetch-compatible request options
23
+ ): Promise<...>
24
+ ```
25
+
26
+ ## Usage
27
+
28
+ ```typescript
29
+ import { Resource } from '$origin'
30
+ import type { Favorite } from './Favorite'
31
+
32
+ // Initialize a resource client
33
+ const favorites = new Resource<Favorite>('/favorites/', { credentials: 'include' })
34
+
35
+ // GET /favorites/:identity/
36
+ export async function get(identity: string): Promise<Favorite[] | Error> {
37
+ return favorites.get.array([identity])
38
+ }
39
+
40
+ // POST /favorites/:identity/ with typed body
41
+ type Post = Omit<Favorite, 'id'>
42
+
43
+ export async function post(identity: string, body: Post): Promise<Favorite | Error> {
44
+ return favorites.post.value([identity], { body })
45
+ }
46
+
47
+ // DELETE /favorites/:identity/:id/
48
+ export async function del(identity: string, id: string): Promise<Favorite | Error> {
49
+ return favorites.delete.value([identity, id])
50
+ }
51
+ ```
package/eslint.config.js CHANGED
@@ -15,19 +15,24 @@ module.exports = [
15
15
  },
16
16
  {
17
17
  rules: {
18
+ 'no-void': ['error', { allowAsStatement: true }],
18
19
  curly: ['error', 'multi'],
19
- '@stylistic/space-before-function-paren': ['error', 'never'],
20
- 'padding-line-between-statements': [
20
+ '@stylistic/space-before-function-paren': ['error', {
21
+ asyncArrow: 'always',
22
+ named: 'never',
23
+ anonymous: 'never'
24
+ }],
25
+ '@stylistic/padding-line-between-statements': [
21
26
  'error',
22
27
  {
23
28
  blankLine: 'always',
24
- prev: ['block-like', 'if'],
29
+ prev: ['block-like', 'if', 'multiline-expression'],
25
30
  next: '*'
26
31
  },
27
32
  {
28
33
  blankLine: 'always',
29
34
  prev: '*',
30
- next: ['block-like', 'if']
35
+ next: ['block-like', 'if', 'multiline-expression']
31
36
  },
32
37
  {
33
38
  blankLine: 'always',
@@ -56,7 +61,7 @@ module.exports = [
56
61
  }
57
62
  ],
58
63
  'import/order': ['error', {
59
- groups: ['builtin', 'external', 'internal', 'parent', 'sibling', 'index', 'type'],
64
+ groups: ['builtin', 'external', 'internal', 'unknown', 'parent', 'sibling', 'index', 'type'],
60
65
  alphabetize: {
61
66
  order: 'asc'
62
67
  }
@@ -66,7 +71,6 @@ module.exports = [
66
71
  {
67
72
  files: ['**/*.ts'],
68
73
  rules: {
69
- 'no-void': ['error', { allowAsStatement: true }],
70
74
  '@typescript-eslint/consistent-type-imports': 'error'
71
75
  }
72
76
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toa.io/origin",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -17,14 +17,15 @@
17
17
  },
18
18
  "devDependencies": {
19
19
  "@types/node": "^22.15.17",
20
- "eslint": "^9.26.0",
20
+ "eslint": "^9.27.0",
21
21
  "eslint-plugin-import": "^2.31.0",
22
22
  "husky": "^9.1.7",
23
23
  "neostandard": "^0.12.1"
24
24
  },
25
25
  "scripts": {
26
26
  "prepare": "husky",
27
- "prepublishOnly": "rm -rf transpiled tsconfig.tsbuildinfo && tsc",
27
+ "prepublishOnly": "npm run transpile",
28
+ "transpile": "rm -rf transpiled tsconfig.tsbuildinfo && tsc",
28
29
  "lint": "eslint .",
29
30
  "format": "eslint . --fix",
30
31
  "test": "node --test && npm run lint"
package/source/Method.ts CHANGED
@@ -60,7 +60,7 @@ export class Method<Entity = never> {
60
60
  const entry = chunk.value as OctetsEntry
61
61
  const emitter = mitt<Events>()
62
62
 
63
- void (async() => {
63
+ void (async () => {
64
64
  for await (const part of generator) {
65
65
  const workflow = part as WorkflowStep
66
66
 
@@ -0,0 +1,14 @@
1
+ const settings: Partial<Settings> = {} as const
2
+
3
+ export function connect(values: Settings) {
4
+ Object.assign(settings, values)
5
+
6
+ if (settings.delay) console.warn(`API delay is enabled (${settings.delay}ms)`)
7
+ }
8
+
9
+ interface Settings {
10
+ origin: string
11
+ delay?: number
12
+ }
13
+
14
+ export { settings }
package/source/events.ts CHANGED
@@ -14,7 +14,7 @@ export interface Events extends Record<string | symbol, unknown> {
14
14
 
15
15
  response: {
16
16
  id: string
17
- status: number
17
+ response: Response
18
18
  duration: number
19
19
  }
20
20
  }
package/source/index.ts CHANGED
@@ -3,5 +3,5 @@ export { Method } from './Method'
3
3
  export { Failure } from './Failure'
4
4
  export { authenticate, request, use, type Options } from './request'
5
5
  export { events } from './events'
6
- export { connect } from './settings'
6
+ export { connect } from './connect'
7
7
  export type * from './Octets'
package/source/request.ts CHANGED
@@ -1,13 +1,9 @@
1
+ import { settings } from './connect'
1
2
  import { events } from './events'
2
3
  import { fail } from './fail'
3
4
  import { ok } from './ok'
4
- import { settings } from './settings'
5
5
  import type { Failure } from './Failure'
6
6
 
7
- const delay = settings.delay
8
-
9
- if (delay) console.warn(`API delay is enabled (${delay}ms)`)
10
-
11
7
  let challenge: string | null = null
12
8
 
13
9
  export function authenticate(value: string | null) {
@@ -27,8 +23,8 @@ export async function request<T = unknown>(
27
23
  options.headers ??= {}
28
24
  options.headers['accept'] ??= 'application/json'
29
25
 
30
- if (delay)
31
- options.headers['sleep'] = Math.round((Math.random() * delay) / 2 + delay / 2).toString()
26
+ if (settings.delay)
27
+ options.headers['sleep'] = Math.round((Math.random() * settings.delay) / 2 + settings.delay / 2).toString()
32
28
 
33
29
  const authentication = options.credentials === 'include'
34
30
 
@@ -55,12 +51,13 @@ export async function request<T = unknown>(
55
51
  const id =
56
52
  typeof window !== 'undefined' && (window.crypto.randomUUID?.() ?? Math.random().toString())
57
53
 
58
- if (id) events.emit('request', { id, path, options })
54
+ if (id)
55
+ events.emit('request', { id, path, options })
59
56
 
60
57
  const response = await _fetch(settings.origin + path, options)
61
58
 
62
59
  if (id)
63
- events.emit('response', { id, status: response.status, duration: performance.now() - start })
60
+ events.emit('response', { id, response, duration: performance.now() - start })
64
61
 
65
62
  if (!response.ok) return await fail(response)
66
63
  else return await ok<T>(response)
@@ -1 +1 @@
1
- {"version":3,"file":"Method.js","sourceRoot":"","sources":["../source/Method.ts"],"names":[],"mappings":";;;;;;AAAA,6CAAiC;AACjC,gDAAyC;AACzC,uCAAiD;AAIjD,MAAa,MAAM;IACA,IAAI,CAAQ;IACZ,OAAO,CAAU;IAElC,YAAY,IAAY,EAAE,OAAiB;QACzC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,QAA4B,EAAE,OAAiB;QAC/D,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC9C,CAAC;IAEM,KAAK,CAAC,KAAK,CAAa,QAA4B,EAAE,OAAiB;QAC5E,OAAO,MAAM,IAAI,CAAC,OAAO,CAAI,QAAQ,EAAE,OAAO,CAAC,CAAA;IACjD,CAAC;IAEM,KAAK,CAAC,KAAK,CAAe,QAA4B,EAAE,OAAiB;QAC9E,OAAO,MAAM,IAAI,CAAC,OAAO,CAAM,QAAQ,EAAE,OAAO,CAAC,CAAA;IACnD,CAAC;IAEM,KAAK,CAAC,SAAS,CACpB,QAA4B,EAC5B,OAAiB;QAEjB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAmC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAEzF,IAAI,SAAS,YAAY,KAAK;YAAE,OAAO,SAAS,CAAA;QAEhD,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAA;QAElC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAA;QAEnE,OAAO,CAAC,KAAK,SAAU,CAAC;YACtB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;gBACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBAEpC,IAAI,KAAK,KAAK,KAAK;oBAAE,OAAM;gBAE3B,MAAM,KAAK,CAAA;YACb,CAAC;QACH,CAAC,CAAC,EAAE,CAAA;IACN,CAAC;IAEM,KAAK,CAAC,MAAM,CACjB,QAAmB,EACnB,OAAiB;QAEjB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAEzD,IAAI,SAAS,YAAY,KAAK;YAAE,OAAO,SAAS,CAAA;QAEhD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAA;QACpC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAoB,CAAA;QACxC,MAAM,OAAO,GAAG,IAAA,cAAI,GAAU,CAAA;QAE9B,KAAK,CAAC,KAAK,IAAG,EAAE;YACd,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;gBACnC,MAAM,QAAQ,GAAG,IAAoB,CAAA;gBAErC,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAA;gBAExC,MAAM,OAAO,GACX,QAAQ,CAAC,KAAK,KAAK,SAAS;oBAC1B,CAAC,CAAC,QAAQ,CAAC,MAAM;oBACjB,CAAC,CAAC,IAAI,iBAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;gBAE1D,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAuC,CAAC,CAAA;YACtE,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAClB,CAAC,CAAC,EAAE,CAAA;QAEJ,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IACzB,CAAC;IAEO,KAAK,CAAC,OAAO,CAAI,QAA4B,EAAE,OAAiB;QACtE,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;QAE7B,OAAO,MAAM,IAAA,iBAAO,EAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,EAAE;YAC7C,GAAG,IAAI,CAAC,OAAO;YACf,GAAG,OAAO;SACX,CAAC,CAAA;IACJ,CAAC;CACF;AApFD,wBAoFC;AAED,SAAS,MAAM,CAAC,QAAuC;IACrD,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,EAAE,CAAA;IAErC,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAA;IAEjD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;AAChE,CAAC"}
1
+ {"version":3,"file":"Method.js","sourceRoot":"","sources":["../source/Method.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  declare const settings: Partial<Settings>;
2
- export declare function connect(set: Settings): void;
2
+ export declare function connect(values: Settings): void;
3
3
  interface Settings {
4
4
  origin: string;
5
- delay: number;
5
+ delay?: number;
6
6
  }
7
7
  export { settings };
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.settings = void 0;
4
+ exports.connect = connect;
5
+ const settings = {};
6
+ exports.settings = settings;
7
+ function connect(values) {
8
+ Object.assign(settings, values);
9
+ if (settings.delay)
10
+ console.warn(`API delay is enabled (${settings.delay}ms)`);
11
+ }
12
+ //# sourceMappingURL=connect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../source/connect.ts"],"names":[],"mappings":";;;AAEA,0BAIC;AAND,MAAM,QAAQ,GAAsB,EAAW,CAAA;AAatC,4BAAQ;AAXjB,SAAgB,OAAO,CAAC,MAAgB;IACtC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAE/B,IAAI,QAAQ,CAAC,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,yBAAyB,QAAQ,CAAC,KAAK,KAAK,CAAC,CAAA;AAChF,CAAC"}
@@ -9,7 +9,7 @@ export interface Events extends Record<string | symbol, unknown> {
9
9
  };
10
10
  response: {
11
11
  id: string;
12
- status: number;
12
+ response: Response;
13
13
  duration: number;
14
14
  };
15
15
  }
@@ -3,5 +3,5 @@ export { Method } from './Method';
3
3
  export { Failure } from './Failure';
4
4
  export { authenticate, request, use, type Options } from './request';
5
5
  export { events } from './events';
6
- export { connect } from './settings';
6
+ export { connect } from './connect';
7
7
  export type * from './Octets';
@@ -13,6 +13,6 @@ Object.defineProperty(exports, "request", { enumerable: true, get: function () {
13
13
  Object.defineProperty(exports, "use", { enumerable: true, get: function () { return request_1.use; } });
14
14
  var events_1 = require("./events");
15
15
  Object.defineProperty(exports, "events", { enumerable: true, get: function () { return events_1.events; } });
16
- var settings_1 = require("./settings");
17
- Object.defineProperty(exports, "connect", { enumerable: true, get: function () { return settings_1.connect; } });
16
+ var connect_1 = require("./connect");
17
+ Object.defineProperty(exports, "connect", { enumerable: true, get: function () { return connect_1.connect; } });
18
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":";;;AAAA,uCAAqC;AAA5B,oGAAA,QAAQ,OAAA;AACjB,mCAAiC;AAAxB,gGAAA,MAAM,OAAA;AACf,qCAAmC;AAA1B,kGAAA,OAAO,OAAA;AAChB,qCAAoE;AAA3D,uGAAA,YAAY,OAAA;AAAE,kGAAA,OAAO,OAAA;AAAE,8FAAA,GAAG,OAAA;AACnC,mCAAiC;AAAxB,gGAAA,MAAM,OAAA;AACf,uCAAoC;AAA3B,mGAAA,OAAO,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":";;;AAAA,uCAAqC;AAA5B,oGAAA,QAAQ,OAAA;AACjB,mCAAiC;AAAxB,gGAAA,MAAM,OAAA;AACf,qCAAmC;AAA1B,kGAAA,OAAO,OAAA;AAChB,qCAAoE;AAA3D,uGAAA,YAAY,OAAA;AAAE,kGAAA,OAAO,OAAA;AAAE,8FAAA,GAAG,OAAA;AACnC,mCAAiC;AAAxB,gGAAA,MAAM,OAAA;AACf,qCAAmC;AAA1B,kGAAA,OAAO,OAAA"}
@@ -3,13 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.authenticate = authenticate;
4
4
  exports.use = use;
5
5
  exports.request = request;
6
+ const connect_1 = require("./connect");
6
7
  const events_1 = require("./events");
7
8
  const fail_1 = require("./fail");
8
9
  const ok_1 = require("./ok");
9
- const settings_1 = require("./settings");
10
- const delay = settings_1.settings.delay;
11
- if (delay)
12
- console.warn(`API delay is enabled (${delay}ms)`);
13
10
  let challenge = null;
14
11
  function authenticate(value) {
15
12
  challenge = value;
@@ -21,8 +18,8 @@ function use(fetcher) {
21
18
  async function request(path, options = {}) {
22
19
  options.headers ??= {};
23
20
  options.headers['accept'] ??= 'application/json';
24
- if (delay)
25
- options.headers['sleep'] = Math.round((Math.random() * delay) / 2 + delay / 2).toString();
21
+ if (connect_1.settings.delay)
22
+ options.headers['sleep'] = Math.round((Math.random() * connect_1.settings.delay) / 2 + connect_1.settings.delay / 2).toString();
26
23
  const authentication = options.credentials === 'include';
27
24
  if (options.body !== undefined)
28
25
  if (options.body instanceof File || options.body instanceof ReadableStream) {
@@ -44,9 +41,9 @@ async function request(path, options = {}) {
44
41
  const id = typeof window !== 'undefined' && (window.crypto.randomUUID?.() ?? Math.random().toString());
45
42
  if (id)
46
43
  events_1.events.emit('request', { id, path, options });
47
- const response = await _fetch(settings_1.settings.origin + path, options);
44
+ const response = await _fetch(connect_1.settings.origin + path, options);
48
45
  if (id)
49
- events_1.events.emit('response', { id, status: response.status, duration: performance.now() - start });
46
+ events_1.events.emit('response', { id, response, duration: performance.now() - start });
50
47
  if (!response.ok)
51
48
  return await (0, fail_1.fail)(response);
52
49
  else
@@ -1 +1 @@
1
- {"version":3,"file":"request.js","sourceRoot":"","sources":["../source/request.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../source/request.ts"],"names":[],"mappings":";;AAQA,oCAEC;AAID,kBAEC;AAED,0BA6CC;AA/DD,uCAAoC;AACpC,qCAAiC;AACjC,iCAA6B;AAC7B,6BAAyB;AAGzB,IAAI,SAAS,GAAkB,IAAI,CAAA;AAEnC,SAAgB,YAAY,CAAC,KAAoB;IAC/C,SAAS,GAAG,KAAK,CAAA;AACnB,CAAC;AAED,IAAI,MAAM,GAAG,KAAK,CAAA;AAElB,SAAgB,GAAG,CAAC,OAAqB;IACvC,MAAM,GAAG,OAAO,CAAA;AAClB,CAAC;AAEM,KAAK,UAAU,OAAO,CAC3B,IAAY,EACZ,UAAmB,EAAE;IAErB,OAAO,CAAC,OAAO,KAAK,EAAE,CAAA;IACtB,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,kBAAkB,CAAA;IAEhD,IAAI,kBAAQ,CAAC,KAAK;QAChB,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,kBAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,kBAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;IAE7G,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,KAAK,SAAS,CAAA;IAExD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;QAC5B,IAAI,OAAO,CAAC,IAAI,YAAY,IAAI,IAAI,OAAO,CAAC,IAAI,YAAY,cAAc,EAAE,CAAC;YAC3E,OAAO,CAAC,MAAM,KAAK,MAAM,CAAA;YACzB,OAAO,CAAC,MAAM,GAAG,MAAM,CAAA;YACvB,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,0BAA0B,CAAA;QAChE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YAC3C,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,kBAAkB,CAAA;QACxD,CAAC;IAEH,IAAI,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,SAAS,EAAE,CAAC;QACrE,IAAI,SAAS,KAAK,IAAI;YACpB,MAAM,IAAI,KAAK,CAAC,gEAAgE,OAAO,CAAC,MAAM,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC,CAAA;QAEpH,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,SAAS,CAAA;QAC5C,OAAO,OAAO,CAAC,WAAW,CAAA,CAAC,aAAa;IAC1C,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;IAE/B,MAAM,EAAE,GACN,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA;IAE7F,IAAI,EAAE;QACJ,eAAM,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;IAE/C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,kBAAQ,CAAC,MAAM,GAAG,IAAI,EAAE,OAAO,CAAC,CAAA;IAE9D,IAAI,EAAE;QACJ,eAAM,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,CAAA;IAEhF,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,MAAM,IAAA,WAAI,EAAC,QAAQ,CAAC,CAAA;;QACxC,OAAO,MAAM,IAAA,OAAE,EAAI,QAAQ,CAAC,CAAA;AACnC,CAAC"}
@@ -1,12 +0,0 @@
1
- const settings: Partial<Settings> = {} as const
2
-
3
- export function connect(set: Settings) {
4
- Object.assign(settings, set)
5
- }
6
-
7
- interface Settings {
8
- origin: string
9
- delay: number
10
- }
11
-
12
- export { settings }
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.settings = void 0;
4
- exports.connect = connect;
5
- const settings = {};
6
- exports.settings = settings;
7
- function connect(set) {
8
- Object.assign(settings, set);
9
- }
10
- //# sourceMappingURL=settings.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../source/settings.ts"],"names":[],"mappings":";;;AAEA,0BAEC;AAJD,MAAM,QAAQ,GAAsB,EAAW,CAAA;AAWtC,4BAAQ;AATjB,SAAgB,OAAO,CAAC,GAAa;IACnC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;AAC9B,CAAC"}