@toa.io/origin 0.0.2 → 0.0.3

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.3",
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
 
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/request.ts CHANGED
@@ -55,12 +55,13 @@ export async function request<T = unknown>(
55
55
  const id =
56
56
  typeof window !== 'undefined' && (window.crypto.randomUUID?.() ?? Math.random().toString())
57
57
 
58
- if (id) events.emit('request', { id, path, options })
58
+ if (id)
59
+ events.emit('request', { id, path, options })
59
60
 
60
61
  const response = await _fetch(settings.origin + path, options)
61
62
 
62
63
  if (id)
63
- events.emit('response', { id, status: response.status, duration: performance.now() - start })
64
+ events.emit('response', { id, response, duration: performance.now() - start })
64
65
 
65
66
  if (!response.ok) return await fail(response)
66
67
  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":";;;;;;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,IAAI,EAAE;YACf,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"}
@@ -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
  }
@@ -46,7 +46,7 @@ async function request(path, options = {}) {
46
46
  events_1.events.emit('request', { id, path, options });
47
47
  const response = await _fetch(settings_1.settings.origin + path, options);
48
48
  if (id)
49
- events_1.events.emit('response', { id, status: response.status, duration: performance.now() - start });
49
+ events_1.events.emit('response', { id, response, duration: performance.now() - start });
50
50
  if (!response.ok)
51
51
  return await (0, fail_1.fail)(response);
52
52
  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":"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"}