@lemoncloud/chatic-sockets-lib 0.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 (46) hide show
  1. package/README.md +44 -0
  2. package/dist/client-socket-v2/common.d.ts +4 -0
  3. package/dist/client-socket-v2/common.js +21 -0
  4. package/dist/client-socket-v2/connection-rotation-controller.d.ts +26 -0
  5. package/dist/client-socket-v2/connection-rotation-controller.js +79 -0
  6. package/dist/client-socket-v2/create-client-socket-v2.d.ts +2 -0
  7. package/dist/client-socket-v2/create-client-socket-v2.js +164 -0
  8. package/dist/client-socket-v2/create-device-runtime.d.ts +19 -0
  9. package/dist/client-socket-v2/create-device-runtime.js +53 -0
  10. package/dist/client-socket-v2/domain-sync-plan.d.ts +1 -0
  11. package/dist/client-socket-v2/domain-sync-plan.js +2 -0
  12. package/dist/client-socket-v2/gateways/create-domain-gateway.d.ts +6 -0
  13. package/dist/client-socket-v2/gateways/create-domain-gateway.js +19 -0
  14. package/dist/client-socket-v2/gateways/device-gateway.d.ts +8 -0
  15. package/dist/client-socket-v2/gateways/device-gateway.js +13 -0
  16. package/dist/client-socket-v2/index.d.ts +23 -0
  17. package/dist/client-socket-v2/index.js +41 -0
  18. package/dist/client-socket-v2/keep-alive-loop.d.ts +29 -0
  19. package/dist/client-socket-v2/keep-alive-loop.js +93 -0
  20. package/dist/client-socket-v2/message-router.d.ts +9 -0
  21. package/dist/client-socket-v2/message-router.js +45 -0
  22. package/dist/client-socket-v2/pending-request-store.d.ts +23 -0
  23. package/dist/client-socket-v2/pending-request-store.js +85 -0
  24. package/dist/client-socket-v2/plans/device-sync-plan.d.ts +30 -0
  25. package/dist/client-socket-v2/plans/device-sync-plan.js +64 -0
  26. package/dist/client-socket-v2/reconnect-controller.d.ts +32 -0
  27. package/dist/client-socket-v2/reconnect-controller.js +120 -0
  28. package/dist/client-socket-v2/shared-timer-scheduler.d.ts +17 -0
  29. package/dist/client-socket-v2/shared-timer-scheduler.js +72 -0
  30. package/dist/client-socket-v2/socket-runtime.d.ts +32 -0
  31. package/dist/client-socket-v2/socket-runtime.js +52 -0
  32. package/dist/client-socket-v2/socket-transport.d.ts +18 -0
  33. package/dist/client-socket-v2/socket-transport.js +124 -0
  34. package/dist/client-socket-v2/sync-scheduler.d.ts +36 -0
  35. package/dist/client-socket-v2/sync-scheduler.js +189 -0
  36. package/dist/client-socket-v2/types.d.ts +135 -0
  37. package/dist/client-socket-v2/types.js +2 -0
  38. package/dist/lib/device/contracts.d.ts +36 -0
  39. package/dist/lib/device/contracts.js +7 -0
  40. package/dist/lib/device/types.d.ts +55 -0
  41. package/dist/lib/device/types.js +2 -0
  42. package/dist/lib/sockets/packets.d.ts +67 -0
  43. package/dist/lib/sockets/packets.js +2 -0
  44. package/dist/lib/types.d.ts +122 -0
  45. package/dist/lib/types.js +11 -0
  46. package/package.json +31 -0
@@ -0,0 +1,67 @@
1
+ import type { InferSocketError, InferSocketRequest, InferSocketResponse, SocketErrorMessage, SocketRequestMessage, SocketResponseMessage } from '../types';
2
+ declare module '../types' {
3
+ interface SocketPacketRegistry {
4
+ 'system.ping': {
5
+ request: null;
6
+ response: {
7
+ ts: number;
8
+ };
9
+ error: null;
10
+ };
11
+ 'system.fail': {
12
+ request: {
13
+ count?: number;
14
+ };
15
+ response: null;
16
+ error: null;
17
+ };
18
+ 'demo.echo': {
19
+ request: {
20
+ text?: string;
21
+ };
22
+ response: {
23
+ echoed?: string;
24
+ };
25
+ error: null;
26
+ };
27
+ 'demo.route': {
28
+ request: null;
29
+ response: {
30
+ route?: string;
31
+ kind: 'socket';
32
+ };
33
+ error: null;
34
+ };
35
+ }
36
+ interface SocketPacketAliasRegistry {
37
+ ping: 'system.ping';
38
+ }
39
+ }
40
+ export declare type SystemPingType = 'system.ping';
41
+ export declare type SystemPingRequestData = InferSocketRequest<SystemPingType>;
42
+ export declare type SystemPingResponseData = InferSocketResponse<SystemPingType>;
43
+ export declare type SystemPingErrorData = InferSocketError<SystemPingType>;
44
+ export declare type SystemPingRequestMessage = SocketRequestMessage<SystemPingType>;
45
+ export declare type SystemPingResponseMessage = SocketResponseMessage<SystemPingType>;
46
+ export declare type SystemPingErrorMessage = SocketErrorMessage<SystemPingType>;
47
+ export declare type SystemFailType = 'system.fail';
48
+ export declare type SystemFailRequestData = InferSocketRequest<SystemFailType>;
49
+ export declare type SystemFailResponseData = InferSocketResponse<SystemFailType>;
50
+ export declare type SystemFailErrorData = InferSocketError<SystemFailType>;
51
+ export declare type SystemFailRequestMessage = SocketRequestMessage<SystemFailType>;
52
+ export declare type SystemFailResponseMessage = SocketResponseMessage<SystemFailType>;
53
+ export declare type SystemFailErrorMessage = SocketErrorMessage<SystemFailType>;
54
+ export declare type DemoEchoType = 'demo.echo';
55
+ export declare type DemoEchoRequestData = InferSocketRequest<DemoEchoType>;
56
+ export declare type DemoEchoResponseData = InferSocketResponse<DemoEchoType>;
57
+ export declare type DemoEchoErrorData = InferSocketError<DemoEchoType>;
58
+ export declare type DemoEchoRequestMessage = SocketRequestMessage<DemoEchoType>;
59
+ export declare type DemoEchoResponseMessage = SocketResponseMessage<DemoEchoType>;
60
+ export declare type DemoEchoErrorMessage = SocketErrorMessage<DemoEchoType>;
61
+ export declare type DemoRouteType = 'demo.route';
62
+ export declare type DemoRouteRequestData = InferSocketRequest<DemoRouteType>;
63
+ export declare type DemoRouteResponseData = InferSocketResponse<DemoRouteType>;
64
+ export declare type DemoRouteErrorData = InferSocketError<DemoRouteType>;
65
+ export declare type DemoRouteRequestMessage = SocketRequestMessage<DemoRouteType>;
66
+ export declare type DemoRouteResponseMessage = SocketResponseMessage<DemoRouteType>;
67
+ export declare type DemoRouteErrorMessage = SocketErrorMessage<DemoRouteType>;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,122 @@
1
+ /**
2
+ * `lib/types.ts`
3
+ * - shared socket packet contracts for both server and client.
4
+ *
5
+ * RULES
6
+ * - every new socket packet type must be registered here first.
7
+ * - `SocketMessage<T>` payload usage must be derived from this file.
8
+ * - server/client code should treat this file as the source of truth for packet shapes.
9
+ */
10
+ /**
11
+ * common socket message metadata.
12
+ */
13
+ export interface SocketMessageMeta {
14
+ /** timestamp (ms) */
15
+ ts: number;
16
+ /** extensible metadata bag */
17
+ [key: string]: unknown;
18
+ }
19
+ /**
20
+ * base socket message envelope.
21
+ */
22
+ export interface SocketMessage<T = any, TType extends string = string> {
23
+ /** message type like `system.ping`, `system.ping:ok`, `system.ping:error` */
24
+ type: TType;
25
+ /** payload data */
26
+ data: T | null;
27
+ /** request-response correlation id */
28
+ mid?: string;
29
+ /** optional metadata */
30
+ meta?: SocketMessageMeta;
31
+ /** optional error message */
32
+ error?: string;
33
+ }
34
+ /**
35
+ * shared packet registry extension point.
36
+ *
37
+ * NOTE
38
+ * - keep only the base contract here.
39
+ * - each `src/lib/<domain>/types.ts` can extend this registry via module augmentation.
40
+ * - response types `:ok` / `:error` are derived from the merged registry.
41
+ */
42
+ export interface SocketPacketRegistry {
43
+ }
44
+ /**
45
+ * shorthand alias extension point.
46
+ * - domain folders can add aliases via module augmentation.
47
+ */
48
+ export interface SocketPacketAliasRegistry {
49
+ }
50
+ /**
51
+ * registered request packet type.
52
+ */
53
+ export declare type SocketPacketType = Extract<keyof SocketPacketRegistry, string>;
54
+ /**
55
+ * request input type before canonical normalization.
56
+ */
57
+ export declare type SocketPacketInputType = SocketPacketType | Extract<keyof SocketPacketAliasRegistry, string>;
58
+ /**
59
+ * resolve shorthand input into canonical packet type.
60
+ */
61
+ export declare type ResolveSocketPacketType<TType extends SocketPacketInputType> = TType extends keyof SocketPacketAliasRegistry ? SocketPacketAliasRegistry[TType] : TType;
62
+ /**
63
+ * packet status suffix.
64
+ */
65
+ export declare type SocketPacketStatus = 'request' | 'ok' | 'error';
66
+ /**
67
+ * derived success response type.
68
+ */
69
+ export declare type SocketPacketOkType<TType extends SocketPacketType = SocketPacketType> = `${TType}:ok`;
70
+ /**
71
+ * derived error response type.
72
+ */
73
+ export declare type SocketPacketErrorType<TType extends SocketPacketType = SocketPacketType> = `${TType}:error`;
74
+ /**
75
+ * union of all request/response packet type strings.
76
+ */
77
+ export declare type SocketMessageType<TType extends SocketPacketType = SocketPacketType> = TType | SocketPacketOkType<TType> | SocketPacketErrorType<TType>;
78
+ /**
79
+ * request payload of a registered packet.
80
+ */
81
+ export declare type SocketPacketRequestData<TType extends SocketPacketType> = SocketPacketRegistry[TType]['request'];
82
+ /**
83
+ * success payload of a registered packet.
84
+ */
85
+ export declare type SocketPacketResponseData<TType extends SocketPacketType> = SocketPacketRegistry[TType]['response'];
86
+ /**
87
+ * error payload of a registered packet.
88
+ */
89
+ export declare type SocketPacketErrorData<TType extends SocketPacketType> = SocketPacketRegistry[TType]['error'];
90
+ /**
91
+ * typed request message.
92
+ */
93
+ export declare type SocketRequestMessage<TType extends SocketPacketType = SocketPacketType> = SocketMessage<SocketPacketRequestData<TType>, TType>;
94
+ /**
95
+ * typed success message.
96
+ */
97
+ export declare type SocketResponseMessage<TType extends SocketPacketType = SocketPacketType> = SocketMessage<SocketPacketResponseData<TType>, SocketPacketOkType<TType>>;
98
+ /**
99
+ * typed error message.
100
+ */
101
+ export declare type SocketErrorMessage<TType extends SocketPacketType = SocketPacketType> = SocketMessage<SocketPacketErrorData<TType>, SocketPacketErrorType<TType>>;
102
+ /**
103
+ * helper to infer request payload from packet type.
104
+ */
105
+ export declare type InferSocketRequest<TType extends SocketPacketType> = SocketPacketRequestData<TType>;
106
+ /**
107
+ * helper to infer success payload from packet type.
108
+ */
109
+ export declare type InferSocketResponse<TType extends SocketPacketType> = SocketPacketResponseData<TType>;
110
+ /**
111
+ * helper to infer error payload from packet type.
112
+ */
113
+ export declare type InferSocketError<TType extends SocketPacketType> = SocketPacketErrorData<TType>;
114
+ /**
115
+ * optional normalized error shape for higher-level usage.
116
+ * - transport still uses `SocketMessage.error` as the primary field.
117
+ */
118
+ export interface SocketErrorShape {
119
+ message: string;
120
+ code?: string;
121
+ retryable?: boolean;
122
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ /**
3
+ * `lib/types.ts`
4
+ * - shared socket packet contracts for both server and client.
5
+ *
6
+ * RULES
7
+ * - every new socket packet type must be registered here first.
8
+ * - `SocketMessage<T>` payload usage must be derived from this file.
9
+ * - server/client code should treat this file as the source of truth for packet shapes.
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
package/package.json ADDED
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "@lemoncloud/chatic-sockets-lib",
3
+ "version": "0.1.0",
4
+ "description": "Client websocket transport and sync runtime for chatic sockets v2",
5
+ "main": "dist/client-socket-v2/index.js",
6
+ "types": "dist/client-socket-v2/index.d.ts",
7
+ "files": [
8
+ "dist/**/*",
9
+ "README.md"
10
+ ],
11
+ "exports": {
12
+ ".": {
13
+ "types": "./dist/client-socket-v2/index.d.ts",
14
+ "require": "./dist/client-socket-v2/index.js",
15
+ "default": "./dist/client-socket-v2/index.js"
16
+ },
17
+ "./package.json": "./package.json"
18
+ },
19
+ "keywords": [
20
+ "websocket",
21
+ "aws-apigateway",
22
+ "lambda",
23
+ "sync",
24
+ "chatic"
25
+ ],
26
+ "license": "MIT",
27
+ "sideEffects": true,
28
+ "engines": {
29
+ "node": ">=18.0.0"
30
+ }
31
+ }