@gurezo/web-serial-rxjs 2.4.0 → 3.1.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.
Files changed (57) hide show
  1. package/README.ja.md +17 -10
  2. package/README.md +21 -12
  3. package/dist/errors/serial-error-code.d.ts +81 -37
  4. package/dist/errors/serial-error-code.d.ts.map +1 -1
  5. package/dist/errors/serial-error-context.d.ts +61 -0
  6. package/dist/errors/serial-error-context.d.ts.map +1 -0
  7. package/dist/errors/serial-error.d.ts +42 -21
  8. package/dist/errors/serial-error.d.ts.map +1 -1
  9. package/dist/index.d.ts +42 -12
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.mjs +1278 -635
  12. package/dist/index.mjs.map +4 -4
  13. package/dist/internal/assert-never.d.ts +11 -0
  14. package/dist/internal/assert-never.d.ts.map +1 -0
  15. package/dist/internal/branded-numbers.d.ts +37 -0
  16. package/dist/internal/branded-numbers.d.ts.map +1 -0
  17. package/dist/internal/strip-ansi-sequences.d.ts +25 -0
  18. package/dist/internal/strip-ansi-sequences.d.ts.map +1 -0
  19. package/dist/session/create-serial-session.d.ts +6 -3
  20. package/dist/session/create-serial-session.d.ts.map +1 -1
  21. package/dist/session/index.d.ts +7 -2
  22. package/dist/session/index.d.ts.map +1 -1
  23. package/dist/session/internal/build-request-options.d.ts +7 -7
  24. package/dist/session/internal/build-request-options.d.ts.map +1 -1
  25. package/dist/session/internal/error-severity.d.ts +38 -0
  26. package/dist/session/internal/error-severity.d.ts.map +1 -0
  27. package/dist/session/internal/line-buffer.d.ts +15 -4
  28. package/dist/session/internal/line-buffer.d.ts.map +1 -1
  29. package/dist/session/internal/receive-pipeline.d.ts +34 -0
  30. package/dist/session/internal/receive-pipeline.d.ts.map +1 -0
  31. package/dist/session/internal/receive-replay-buffer.d.ts +3 -2
  32. package/dist/session/internal/receive-replay-buffer.d.ts.map +1 -1
  33. package/dist/session/internal/session-error-reporter.d.ts +32 -0
  34. package/dist/session/internal/session-error-reporter.d.ts.map +1 -0
  35. package/dist/session/internal/session-lifecycle.d.ts +44 -0
  36. package/dist/session/internal/session-lifecycle.d.ts.map +1 -0
  37. package/dist/session/internal/validate-serial-port-filters.d.ts +12 -0
  38. package/dist/session/internal/validate-serial-port-filters.d.ts.map +1 -0
  39. package/dist/session/is-connected-session-state.d.ts +11 -0
  40. package/dist/session/is-connected-session-state.d.ts.map +1 -0
  41. package/dist/session/normalize-serial-error.d.ts +1 -1
  42. package/dist/session/normalize-serial-error.d.ts.map +1 -1
  43. package/dist/session/serial-session-options.d.ts +118 -65
  44. package/dist/session/serial-session-options.d.ts.map +1 -1
  45. package/dist/session/serial-session-state.d.ts +50 -12
  46. package/dist/session/serial-session-state.d.ts.map +1 -1
  47. package/dist/session/serial-session.d.ts +52 -18
  48. package/dist/session/serial-session.d.ts.map +1 -1
  49. package/dist/session/session-runtime.d.ts +140 -0
  50. package/dist/session/session-runtime.d.ts.map +1 -0
  51. package/dist/terminal/create-terminal-buffer.d.ts +15 -3
  52. package/dist/terminal/create-terminal-buffer.d.ts.map +1 -1
  53. package/dist/types.d.ts +18 -0
  54. package/dist/types.d.ts.map +1 -0
  55. package/package.json +1 -1
  56. package/dist/session/session-state-machine.d.ts +0 -40
  57. package/dist/session/session-state-machine.d.ts.map +0 -1
package/dist/index.d.ts CHANGED
@@ -6,21 +6,30 @@
6
6
  * A TypeScript library that wraps the Web Serial API with a minimal,
7
7
  * RxJS-based session surface.
8
8
  *
9
- * ## Public API (v2)
9
+ * ## Public API
10
10
  *
11
- * The v2 public API intentionally exposes a single, session-oriented surface
12
- * so that apps (Angular, Vue, React, Svelte, vanilla JS/TS) can drive their
13
- * UI entirely from `state$` + `isConnected$` + `receive$` + `terminalText$` + `lines$` + `errors$` without rebuilding any
14
- * state, read loops, or write queues themselves.
11
+ * The public API exposes a single, session-oriented surface so that apps
12
+ * (Angular, Vue, React, Svelte, vanilla JS/TS) can drive their UI from
13
+ * `state$` (canonical lifecycle discriminated union) + `errors$` (error event
14
+ * channel) + `receive$` + `terminalText$` + `lines$` without rebuilding state,
15
+ * read loops, or write queues. Derive convenience booleans from `state$`
16
+ * narrowing; `isConnected$` is deprecated in v3.x.
15
17
  *
16
18
  * - {@link createSerialSession} - factory for a {@link SerialSession}
17
19
  * - {@link createTerminalBuffer} - terminal-style display text from {@link SerialSession.receive$}
18
20
  * - {@link TerminalBufferOptions} - memory limits for terminal display text
19
21
  * - {@link LineBufferOptions} - memory limits for lines$ incomplete line tail
20
22
  * - {@link SerialSession} - the runtime interface
21
- * - {@link SerialSessionOptions} - connection options
22
- * - {@link SerialSessionState} - `state$` payload values (const + type)
23
+ * - {@link SerialSessionOptions} - factory options (connection + features)
24
+ * - {@link SerialPayload} - payload accepted by {@link SerialSession.send$}
25
+ * - {@link SerialConnectionOptions} - `port.open` connection parameters (excluding filters)
26
+ * - {@link SerialSessionFeatureOptions} - library-specific session feature options
27
+ * - {@link SerialSessionStatus} - lifecycle status literals for `state$.status`
28
+ * - {@link SerialSessionState} - discriminated union emitted by `state$`
29
+ * - {@link isConnectedSessionState} - type predicate for connected `state$` narrowing in RxJS pipelines
23
30
  * - {@link SerialError} / {@link SerialErrorCode} - unified error surface
31
+ * - {@link SerialErrorContextMap} - structured metadata per error code
32
+ * - {@link ValidationErrorContext} - machine-readable validation error metadata
24
33
  *
25
34
  * ## Browser Support
26
35
  *
@@ -41,25 +50,46 @@
41
50
  *
42
51
  * @example
43
52
  * ```typescript
44
- * import { createSerialSession } from '@gurezo/web-serial-rxjs';
53
+ * import { filter } from 'rxjs';
54
+ * import {
55
+ * createSerialSession,
56
+ * isConnectedSessionState,
57
+ * SerialSessionStatus,
58
+ * SerialErrorCode,
59
+ * } from '@gurezo/web-serial-rxjs';
45
60
  *
46
61
  * const session = createSerialSession({ baudRate: 115200 });
47
62
  *
48
63
  * if (!session.isBrowserSupported()) {
49
64
  * console.error('Web Serial API is not supported in this browser');
50
65
  * } else {
51
- * session.state$.subscribe((state) => console.log('state:', state));
66
+ * session.state$.subscribe((state) => {
67
+ * if (state.status === SerialSessionStatus.Connected) {
68
+ * console.log('port:', state.portInfo);
69
+ * }
70
+ * });
71
+ * session.state$
72
+ * .pipe(filter(isConnectedSessionState))
73
+ * .subscribe((state) => {
74
+ * console.log('port:', state.portInfo);
75
+ * });
52
76
  * session.receive$.subscribe((chunk) => console.log('rx:', chunk));
53
- * session.errors$.subscribe((error) => console.error('err:', error));
77
+ * session.errors$.subscribe((error) => {
78
+ * if (error.is(SerialErrorCode.READ_FAILED)) {
79
+ * console.error(error.context.cause);
80
+ * }
81
+ * });
54
82
  *
55
83
  * session.connect$().subscribe();
56
84
  * session.send$('hello\r\n').subscribe();
57
85
  * }
58
86
  * ```
59
87
  */
60
- export { createSerialSession, SerialSessionState, DEFAULT_LINE_BUFFER_OPTIONS } from './session';
61
- export type { SerialSession, SerialSessionOptions, SerialSessionReceiveReplayOptions, LineBufferOptions, } from './session';
88
+ export { assertNever } from './internal/assert-never';
89
+ export { createSerialSession, SerialSessionStatus, isConnectedSessionState, DEFAULT_LINE_BUFFER_OPTIONS, resolveSerialSessionOptions, MAX_RECEIVE_REPLAY_BUFFER_SIZE, MAX_RECEIVE_REPLAY_MAX_CHARS } from './session';
90
+ export type { SerialSession, SerialSessionState, IdleSessionState, ConnectingSessionState, ConnectedSessionState, DisconnectingSessionState, UnsupportedSessionState, ErrorSessionState, DisposedSessionState, SerialSessionOptions, SerialSessionFeatureOptions, SerialSessionReceiveReplayOptions, ResolvedSerialSessionOptions, SerialPayload, SerialConnectionOptions, LineBufferOptions, } from './session';
62
91
  export { SerialError } from './errors/serial-error';
92
+ export type { SerialErrorCauseContext, SerialErrorContextMap, ValidationErrorConstraint, ValidationErrorContext, } from './errors/serial-error';
63
93
  export { SerialErrorCode } from './errors/serial-error-code';
64
94
  export { createTerminalBuffer, DEFAULT_TERMINAL_BUFFER_OPTIONS } from './terminal/create-terminal-buffer';
65
95
  export type { TerminalBuffer, TerminalBufferOptions } from './terminal/create-terminal-buffer';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AAEH,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC;AACjG,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,iCAAiC,EACjC,iBAAiB,GAClB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,OAAO,EAAE,oBAAoB,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AAC1G,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsFG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,8BAA8B,EAAE,4BAA4B,EAAE,MAAM,WAAW,CAAC;AACtN,YAAY,EACV,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,EACzB,uBAAuB,EACvB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,2BAA2B,EAC3B,iCAAiC,EACjC,4BAA4B,EAC5B,aAAa,EACb,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,YAAY,EACV,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,OAAO,EAAE,oBAAoB,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AAC1G,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC"}