@arcraz/common 1.1.0 → 1.2.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.
- package/dist/config/index.d.ts +2 -2
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +1 -1
- package/dist/config/schemas.d.ts +67 -0
- package/dist/config/schemas.d.ts.map +1 -1
- package/dist/config/schemas.js +27 -0
- package/dist/config/types.d.ts +9 -1
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +1 -1
- package/dist/constants/defaults.d.ts +10 -0
- package/dist/constants/defaults.d.ts.map +1 -1
- package/dist/constants/defaults.js +10 -0
- package/dist/constants/index.d.ts +1 -1
- package/dist/constants/index.d.ts.map +1 -1
- package/dist/constants/index.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/socketio/index.d.ts +3 -0
- package/dist/socketio/index.d.ts.map +1 -0
- package/dist/socketio/index.js +1 -0
- package/dist/socketio/server-factory.d.ts +9 -0
- package/dist/socketio/server-factory.d.ts.map +1 -0
- package/dist/socketio/server-factory.js +129 -0
- package/dist/socketio/types.d.ts +74 -0
- package/dist/socketio/types.d.ts.map +1 -0
- package/dist/socketio/types.js +1 -0
- package/package.json +16 -2
package/dist/config/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { loadEnv, getEnv, requireEnv } from './env-loader.js';
|
|
2
2
|
export type { LoadEnvOptions } from './env-loader.js';
|
|
3
|
-
export { DatabaseConfigSchema, RedisConfigSchema, RedisClusterConfigSchema, RabbitMQConfigSchema, LoggingConfigSchema, validateConfig, safeValidateConfig } from './schemas.js';
|
|
4
|
-
export type { DatabaseConfig, RedisConfig, RedisClusterConfig, RabbitMQConfig, LoggingConfig } from './types.js';
|
|
3
|
+
export { DatabaseConfigSchema, RedisConfigSchema, RedisClusterConfigSchema, RabbitMQConfigSchema, LoggingConfigSchema, SocketIOConfigSchema, SocketIORedisAdapterConfigSchema, validateConfig, safeValidateConfig } from './schemas.js';
|
|
4
|
+
export type { DatabaseConfig, RedisConfig, RedisClusterConfig, RabbitMQConfig, LoggingConfig, SocketIOConfig, SocketIORedisAdapterConfig } from './types.js';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC9D,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EACnB,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,kBAAkB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC9D,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,gCAAgC,EAChC,cAAc,EACd,kBAAkB,EACnB,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,kBAAkB,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/config/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { loadEnv, getEnv, requireEnv } from './env-loader.js';
|
|
2
|
-
export { DatabaseConfigSchema, RedisConfigSchema, RedisClusterConfigSchema, RabbitMQConfigSchema, LoggingConfigSchema, validateConfig, safeValidateConfig } from './schemas.js';
|
|
2
|
+
export { DatabaseConfigSchema, RedisConfigSchema, RedisClusterConfigSchema, RabbitMQConfigSchema, LoggingConfigSchema, SocketIOConfigSchema, SocketIORedisAdapterConfigSchema, validateConfig, safeValidateConfig } from './schemas.js';
|
package/dist/config/schemas.d.ts
CHANGED
|
@@ -169,6 +169,73 @@ export declare const LoggingConfigSchema: z.ZodObject<{
|
|
|
169
169
|
timestamp?: boolean | undefined;
|
|
170
170
|
colorize?: boolean | undefined;
|
|
171
171
|
}>;
|
|
172
|
+
/**
|
|
173
|
+
* Socket.IO configuration schema
|
|
174
|
+
*/
|
|
175
|
+
export declare const SocketIOConfigSchema: z.ZodObject<{
|
|
176
|
+
path: z.ZodDefault<z.ZodString>;
|
|
177
|
+
pingTimeout: z.ZodDefault<z.ZodNumber>;
|
|
178
|
+
pingInterval: z.ZodDefault<z.ZodNumber>;
|
|
179
|
+
maxHttpBufferSize: z.ZodDefault<z.ZodNumber>;
|
|
180
|
+
transports: z.ZodDefault<z.ZodArray<z.ZodEnum<["websocket", "polling"]>, "many">>;
|
|
181
|
+
cors: z.ZodOptional<z.ZodObject<{
|
|
182
|
+
origin: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">, z.ZodBoolean]>>;
|
|
183
|
+
methods: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
184
|
+
credentials: z.ZodOptional<z.ZodBoolean>;
|
|
185
|
+
}, "strip", z.ZodTypeAny, {
|
|
186
|
+
origin?: string | boolean | string[] | undefined;
|
|
187
|
+
methods?: string[] | undefined;
|
|
188
|
+
credentials?: boolean | undefined;
|
|
189
|
+
}, {
|
|
190
|
+
origin?: string | boolean | string[] | undefined;
|
|
191
|
+
methods?: string[] | undefined;
|
|
192
|
+
credentials?: boolean | undefined;
|
|
193
|
+
}>>;
|
|
194
|
+
}, "strip", z.ZodTypeAny, {
|
|
195
|
+
path: string;
|
|
196
|
+
pingTimeout: number;
|
|
197
|
+
pingInterval: number;
|
|
198
|
+
maxHttpBufferSize: number;
|
|
199
|
+
transports: ("websocket" | "polling")[];
|
|
200
|
+
cors?: {
|
|
201
|
+
origin?: string | boolean | string[] | undefined;
|
|
202
|
+
methods?: string[] | undefined;
|
|
203
|
+
credentials?: boolean | undefined;
|
|
204
|
+
} | undefined;
|
|
205
|
+
}, {
|
|
206
|
+
path?: string | undefined;
|
|
207
|
+
pingTimeout?: number | undefined;
|
|
208
|
+
pingInterval?: number | undefined;
|
|
209
|
+
maxHttpBufferSize?: number | undefined;
|
|
210
|
+
transports?: ("websocket" | "polling")[] | undefined;
|
|
211
|
+
cors?: {
|
|
212
|
+
origin?: string | boolean | string[] | undefined;
|
|
213
|
+
methods?: string[] | undefined;
|
|
214
|
+
credentials?: boolean | undefined;
|
|
215
|
+
} | undefined;
|
|
216
|
+
}>;
|
|
217
|
+
/**
|
|
218
|
+
* Socket.IO Redis adapter configuration schema
|
|
219
|
+
*/
|
|
220
|
+
export declare const SocketIORedisAdapterConfigSchema: z.ZodObject<{
|
|
221
|
+
host: z.ZodDefault<z.ZodString>;
|
|
222
|
+
port: z.ZodDefault<z.ZodNumber>;
|
|
223
|
+
password: z.ZodOptional<z.ZodString>;
|
|
224
|
+
db: z.ZodDefault<z.ZodNumber>;
|
|
225
|
+
keyPrefix: z.ZodOptional<z.ZodString>;
|
|
226
|
+
}, "strip", z.ZodTypeAny, {
|
|
227
|
+
host: string;
|
|
228
|
+
port: number;
|
|
229
|
+
db: number;
|
|
230
|
+
password?: string | undefined;
|
|
231
|
+
keyPrefix?: string | undefined;
|
|
232
|
+
}, {
|
|
233
|
+
host?: string | undefined;
|
|
234
|
+
port?: number | undefined;
|
|
235
|
+
password?: string | undefined;
|
|
236
|
+
db?: number | undefined;
|
|
237
|
+
keyPrefix?: string | undefined;
|
|
238
|
+
}>;
|
|
172
239
|
/**
|
|
173
240
|
* Validates configuration against a schema
|
|
174
241
|
* @param schema The Zod schema to validate against
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/config/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW/B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW5B,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAcnC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAY/B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;EAK9B,CAAC;AAEH;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAExF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAA;CAAE,CAM7J"}
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/config/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW/B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW5B,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAcnC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAY/B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;EAK9B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAa/B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;EAM3C,CAAC;AAEH;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAExF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAA;CAAE,CAM7J"}
|
package/dist/config/schemas.js
CHANGED
|
@@ -67,6 +67,33 @@ export const LoggingConfigSchema = z.object({
|
|
|
67
67
|
timestamp: z.boolean().default(true),
|
|
68
68
|
colorize: z.boolean().default(false)
|
|
69
69
|
});
|
|
70
|
+
/**
|
|
71
|
+
* Socket.IO configuration schema
|
|
72
|
+
*/
|
|
73
|
+
export const SocketIOConfigSchema = z.object({
|
|
74
|
+
path: z.string().default('/socket.io'),
|
|
75
|
+
pingTimeout: z.number().int().positive().default(20000),
|
|
76
|
+
pingInterval: z.number().int().positive().default(25000),
|
|
77
|
+
maxHttpBufferSize: z.number().positive().default(1e6),
|
|
78
|
+
transports: z.array(z.enum(['websocket', 'polling'])).default(['websocket', 'polling']),
|
|
79
|
+
cors: z
|
|
80
|
+
.object({
|
|
81
|
+
origin: z.union([z.string(), z.array(z.string()), z.boolean()]).optional(),
|
|
82
|
+
methods: z.array(z.string()).optional(),
|
|
83
|
+
credentials: z.boolean().optional()
|
|
84
|
+
})
|
|
85
|
+
.optional()
|
|
86
|
+
});
|
|
87
|
+
/**
|
|
88
|
+
* Socket.IO Redis adapter configuration schema
|
|
89
|
+
*/
|
|
90
|
+
export const SocketIORedisAdapterConfigSchema = z.object({
|
|
91
|
+
host: z.string().min(1).default('localhost'),
|
|
92
|
+
port: z.number().int().positive().default(6379),
|
|
93
|
+
password: z.string().optional(),
|
|
94
|
+
db: z.number().int().nonnegative().default(0),
|
|
95
|
+
keyPrefix: z.string().optional()
|
|
96
|
+
});
|
|
70
97
|
/**
|
|
71
98
|
* Validates configuration against a schema
|
|
72
99
|
* @param schema The Zod schema to validate against
|
package/dist/config/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { DatabaseConfigSchema, RedisConfigSchema, RedisClusterConfigSchema, RabbitMQConfigSchema, LoggingConfigSchema } from './schemas.js';
|
|
2
|
+
import { DatabaseConfigSchema, RedisConfigSchema, RedisClusterConfigSchema, RabbitMQConfigSchema, LoggingConfigSchema, SocketIOConfigSchema, SocketIORedisAdapterConfigSchema } from './schemas.js';
|
|
3
3
|
/**
|
|
4
4
|
* Database configuration type
|
|
5
5
|
*/
|
|
@@ -20,4 +20,12 @@ export type RabbitMQConfig = z.infer<typeof RabbitMQConfigSchema>;
|
|
|
20
20
|
* Logging configuration type
|
|
21
21
|
*/
|
|
22
22
|
export type LoggingConfig = z.infer<typeof LoggingConfigSchema>;
|
|
23
|
+
/**
|
|
24
|
+
* Socket.IO configuration type
|
|
25
|
+
*/
|
|
26
|
+
export type SocketIOConfig = z.infer<typeof SocketIOConfigSchema>;
|
|
27
|
+
/**
|
|
28
|
+
* Socket.IO Redis adapter configuration type
|
|
29
|
+
*/
|
|
30
|
+
export type SocketIORedisAdapterConfig = z.infer<typeof SocketIORedisAdapterConfigSchema>;
|
|
23
31
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,gCAAgC,EACjC,MAAM,cAAc,CAAC;AAEtB;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAC"}
|
package/dist/config/types.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { DatabaseConfigSchema, RedisConfigSchema, RedisClusterConfigSchema, RabbitMQConfigSchema, LoggingConfigSchema } from './schemas.js';
|
|
2
|
+
import { DatabaseConfigSchema, RedisConfigSchema, RedisClusterConfigSchema, RabbitMQConfigSchema, LoggingConfigSchema, SocketIOConfigSchema, SocketIORedisAdapterConfigSchema } from './schemas.js';
|
|
@@ -47,4 +47,14 @@ export declare const PAGINATION_DEFAULTS: {
|
|
|
47
47
|
readonly MAX_PAGE_SIZE: 1000;
|
|
48
48
|
readonly DEFAULT_PAGE: 1;
|
|
49
49
|
};
|
|
50
|
+
/**
|
|
51
|
+
* Default Socket.IO configuration values
|
|
52
|
+
*/
|
|
53
|
+
export declare const SOCKETIO_DEFAULTS: {
|
|
54
|
+
readonly PATH: "/socket.io";
|
|
55
|
+
readonly PING_TIMEOUT_MS: 20000;
|
|
56
|
+
readonly PING_INTERVAL_MS: 25000;
|
|
57
|
+
readonly MAX_HTTP_BUFFER_SIZE: 1000000;
|
|
58
|
+
readonly TRANSPORTS: readonly ["websocket", "polling"];
|
|
59
|
+
};
|
|
50
60
|
//# sourceMappingURL=defaults.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/constants/defaults.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;CAKpB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;CAOjB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;CAQpB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;CAKjB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;CAItB,CAAC"}
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/constants/defaults.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;CAKpB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;CAOjB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;CAQpB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;CAKjB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;CAItB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;CAMpB,CAAC"}
|
|
@@ -47,3 +47,13 @@ export const PAGINATION_DEFAULTS = {
|
|
|
47
47
|
MAX_PAGE_SIZE: 1000,
|
|
48
48
|
DEFAULT_PAGE: 1
|
|
49
49
|
};
|
|
50
|
+
/**
|
|
51
|
+
* Default Socket.IO configuration values
|
|
52
|
+
*/
|
|
53
|
+
export const SOCKETIO_DEFAULTS = {
|
|
54
|
+
PATH: '/socket.io',
|
|
55
|
+
PING_TIMEOUT_MS: 20000,
|
|
56
|
+
PING_INTERVAL_MS: 25000,
|
|
57
|
+
MAX_HTTP_BUFFER_SIZE: 1e6,
|
|
58
|
+
TRANSPORTS: ['websocket', 'polling']
|
|
59
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { CACHE_DURATION } from './cache-durations.js';
|
|
2
2
|
export type { CacheDuration } from './cache-durations.js';
|
|
3
|
-
export { DATABASE_DEFAULTS, REDIS_DEFAULTS, RABBITMQ_DEFAULTS, RETRY_DEFAULTS, PAGINATION_DEFAULTS } from './defaults.js';
|
|
3
|
+
export { DATABASE_DEFAULTS, REDIS_DEFAULTS, RABBITMQ_DEFAULTS, RETRY_DEFAULTS, PAGINATION_DEFAULTS, SOCKETIO_DEFAULTS } from './defaults.js';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/constants/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { CACHE_DURATION } from './cache-durations.js';
|
|
2
|
-
export { DATABASE_DEFAULTS, REDIS_DEFAULTS, RABBITMQ_DEFAULTS, RETRY_DEFAULTS, PAGINATION_DEFAULTS } from './defaults.js';
|
|
2
|
+
export { DATABASE_DEFAULTS, REDIS_DEFAULTS, RABBITMQ_DEFAULTS, RETRY_DEFAULTS, PAGINATION_DEFAULTS, SOCKETIO_DEFAULTS } from './defaults.js';
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,mBAAmB,CAAC;AAGlC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,mBAAmB,CAAC;AAGlC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,kBAAkB,CAAC;AAGjC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,kBAAkB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { createSocketIOServer } from './server-factory.js';
|
|
2
|
+
export type { Server, Socket, Namespace, BroadcastOperator, RemoteSocket, DisconnectReason, AuthVerifyFunction, AuthenticatedSocket, SocketIOServerConfig, SocketIOInstance } from './types.js';
|
|
3
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/socketio/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,YAAY,EACV,MAAM,EACN,MAAM,EACN,SAAS,EACT,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { createSocketIOServer } from './server-factory.js';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { SocketIOServerConfig, SocketIOInstance } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a Socket.IO server instance with optional auth middleware and Redis adapter
|
|
4
|
+
*
|
|
5
|
+
* @param config Server configuration
|
|
6
|
+
* @returns SocketIOInstance with server, namespace, and helper methods
|
|
7
|
+
*/
|
|
8
|
+
export declare function createSocketIOServer<TUser = unknown>(config: SocketIOServerConfig<TUser>): Promise<SocketIOInstance<TUser>>;
|
|
9
|
+
//# sourceMappingURL=server-factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-factory.d.ts","sourceRoot":"","sources":["../../src/socketio/server-factory.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEzE;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,EAAE,oBAAoB,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CA2IjI"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { Server } from 'socket.io';
|
|
2
|
+
import { SOCKETIO_DEFAULTS } from '../constants/defaults.js';
|
|
3
|
+
/**
|
|
4
|
+
* Creates a Socket.IO server instance with optional auth middleware and Redis adapter
|
|
5
|
+
*
|
|
6
|
+
* @param config Server configuration
|
|
7
|
+
* @returns SocketIOInstance with server, namespace, and helper methods
|
|
8
|
+
*/
|
|
9
|
+
export async function createSocketIOServer(config) {
|
|
10
|
+
let connected = false;
|
|
11
|
+
// userId -> Set<socketId>
|
|
12
|
+
const userSockets = new Map();
|
|
13
|
+
// socketId -> userId
|
|
14
|
+
const socketUsers = new Map();
|
|
15
|
+
const server = new Server(config.httpServer, {
|
|
16
|
+
cors: config.cors,
|
|
17
|
+
path: config.path ?? SOCKETIO_DEFAULTS.PATH,
|
|
18
|
+
pingTimeout: config.pingTimeout ?? SOCKETIO_DEFAULTS.PING_TIMEOUT_MS,
|
|
19
|
+
pingInterval: config.pingInterval ?? SOCKETIO_DEFAULTS.PING_INTERVAL_MS,
|
|
20
|
+
maxHttpBufferSize: config.maxHttpBufferSize ?? SOCKETIO_DEFAULTS.MAX_HTTP_BUFFER_SIZE,
|
|
21
|
+
transports: config.transports ?? [...SOCKETIO_DEFAULTS.TRANSPORTS]
|
|
22
|
+
});
|
|
23
|
+
// Set up Redis adapter if configured
|
|
24
|
+
if (config.redisAdapter) {
|
|
25
|
+
const { Redis } = await import('ioredis');
|
|
26
|
+
const { createAdapter } = await import('@socket.io/redis-adapter');
|
|
27
|
+
const redisOpts = {
|
|
28
|
+
host: config.redisAdapter.host,
|
|
29
|
+
port: config.redisAdapter.port,
|
|
30
|
+
password: config.redisAdapter.password,
|
|
31
|
+
db: config.redisAdapter.db ?? 0
|
|
32
|
+
};
|
|
33
|
+
const pubClient = new Redis(redisOpts);
|
|
34
|
+
const subClient = pubClient.duplicate();
|
|
35
|
+
await Promise.all([
|
|
36
|
+
new Promise((resolve, reject) => {
|
|
37
|
+
pubClient.on('ready', resolve);
|
|
38
|
+
pubClient.on('error', reject);
|
|
39
|
+
}),
|
|
40
|
+
new Promise((resolve, reject) => {
|
|
41
|
+
subClient.on('ready', resolve);
|
|
42
|
+
subClient.on('error', reject);
|
|
43
|
+
})
|
|
44
|
+
]);
|
|
45
|
+
const prefix = config.redisAdapter.keyPrefix ?? 'socketio';
|
|
46
|
+
server.adapter(createAdapter(pubClient, subClient, { key: prefix }));
|
|
47
|
+
}
|
|
48
|
+
const namespace = server.of(config.namespace ?? '/');
|
|
49
|
+
// Apply auth middleware if provided
|
|
50
|
+
if (config.authVerify) {
|
|
51
|
+
const verify = config.authVerify;
|
|
52
|
+
namespace.use(async (socket, next) => {
|
|
53
|
+
try {
|
|
54
|
+
const user = await verify(socket.handshake.auth);
|
|
55
|
+
socket.data.user = user;
|
|
56
|
+
next();
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
next(err instanceof Error ? err : new Error(String(err)));
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
connected = true;
|
|
64
|
+
async function close() {
|
|
65
|
+
connected = false;
|
|
66
|
+
userSockets.clear();
|
|
67
|
+
socketUsers.clear();
|
|
68
|
+
await server.close();
|
|
69
|
+
}
|
|
70
|
+
function trackConnection(userId, socketId) {
|
|
71
|
+
if (!userSockets.has(userId)) {
|
|
72
|
+
userSockets.set(userId, new Set());
|
|
73
|
+
}
|
|
74
|
+
userSockets.get(userId).add(socketId);
|
|
75
|
+
socketUsers.set(socketId, userId);
|
|
76
|
+
}
|
|
77
|
+
function untrackConnection(socketId) {
|
|
78
|
+
const userId = socketUsers.get(socketId);
|
|
79
|
+
if (userId) {
|
|
80
|
+
const sockets = userSockets.get(userId);
|
|
81
|
+
if (sockets) {
|
|
82
|
+
sockets.delete(socketId);
|
|
83
|
+
if (sockets.size === 0) {
|
|
84
|
+
userSockets.delete(userId);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
socketUsers.delete(socketId);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
function emitToUser(userId, event, ...args) {
|
|
91
|
+
const sockets = userSockets.get(userId);
|
|
92
|
+
if (sockets) {
|
|
93
|
+
for (const socketId of sockets) {
|
|
94
|
+
namespace.to(socketId).emit(event, ...args);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
function broadcast(event, ...args) {
|
|
99
|
+
namespace.emit(event, ...args);
|
|
100
|
+
}
|
|
101
|
+
function emitToRoom(room, event, ...args) {
|
|
102
|
+
namespace.to(room).emit(event, ...args);
|
|
103
|
+
}
|
|
104
|
+
function isUserOnline(userId) {
|
|
105
|
+
const sockets = userSockets.get(userId);
|
|
106
|
+
return sockets !== undefined && sockets.size > 0;
|
|
107
|
+
}
|
|
108
|
+
function getUserSocketIds(userId) {
|
|
109
|
+
const sockets = userSockets.get(userId);
|
|
110
|
+
return sockets ? [...sockets] : [];
|
|
111
|
+
}
|
|
112
|
+
function getConnectionCount() {
|
|
113
|
+
return socketUsers.size;
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
server,
|
|
117
|
+
namespace,
|
|
118
|
+
close,
|
|
119
|
+
isConnected: () => connected,
|
|
120
|
+
trackConnection,
|
|
121
|
+
untrackConnection,
|
|
122
|
+
emitToUser,
|
|
123
|
+
broadcast,
|
|
124
|
+
emitToRoom,
|
|
125
|
+
isUserOnline,
|
|
126
|
+
getUserSocketIds,
|
|
127
|
+
getConnectionCount
|
|
128
|
+
};
|
|
129
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { Server, Socket, Namespace, BroadcastOperator, RemoteSocket, DisconnectReason, DefaultEventsMap } from 'socket.io';
|
|
2
|
+
import type { SocketIORedisAdapterConfig } from '../config/types.js';
|
|
3
|
+
export type { Server, Socket, Namespace, BroadcastOperator, RemoteSocket, DisconnectReason };
|
|
4
|
+
/**
|
|
5
|
+
* Pluggable auth verification function — consumer provides the implementation
|
|
6
|
+
*/
|
|
7
|
+
export type AuthVerifyFunction<TUser> = (auth: Record<string, unknown>) => Promise<TUser> | TUser;
|
|
8
|
+
/**
|
|
9
|
+
* Socket with authenticated user data attached
|
|
10
|
+
*/
|
|
11
|
+
export type AuthenticatedSocket<TUser> = Socket<DefaultEventsMap, DefaultEventsMap, DefaultEventsMap, {
|
|
12
|
+
user: TUser;
|
|
13
|
+
}>;
|
|
14
|
+
/**
|
|
15
|
+
* Configuration for createSocketIOServer factory
|
|
16
|
+
*/
|
|
17
|
+
export interface SocketIOServerConfig<TUser> {
|
|
18
|
+
/** HTTP server to attach to */
|
|
19
|
+
httpServer: Parameters<typeof Server.prototype.attach>[0];
|
|
20
|
+
/** CORS configuration */
|
|
21
|
+
cors?: {
|
|
22
|
+
origin?: string | string[] | boolean;
|
|
23
|
+
methods?: string[];
|
|
24
|
+
credentials?: boolean;
|
|
25
|
+
};
|
|
26
|
+
/** Socket.IO path (default: /socket.io) */
|
|
27
|
+
path?: string;
|
|
28
|
+
/** Ping timeout in ms (default: 20000) */
|
|
29
|
+
pingTimeout?: number;
|
|
30
|
+
/** Ping interval in ms (default: 25000) */
|
|
31
|
+
pingInterval?: number;
|
|
32
|
+
/** Max HTTP buffer size in bytes (default: 1e6) */
|
|
33
|
+
maxHttpBufferSize?: number;
|
|
34
|
+
/** Allowed transports (default: ['websocket', 'polling']) */
|
|
35
|
+
transports?: ('websocket' | 'polling')[];
|
|
36
|
+
/** Auth verification callback — called on every connection handshake */
|
|
37
|
+
authVerify?: AuthVerifyFunction<TUser>;
|
|
38
|
+
/** Redis adapter config for horizontal scaling — omit for single-instance mode */
|
|
39
|
+
redisAdapter?: SocketIORedisAdapterConfig;
|
|
40
|
+
/** Namespace to use (default: /) */
|
|
41
|
+
namespace?: string;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Return type of createSocketIOServer factory
|
|
45
|
+
*/
|
|
46
|
+
export interface SocketIOInstance<TUser> {
|
|
47
|
+
/** The underlying Socket.IO server (generic preserves TUser for consumer type safety) */
|
|
48
|
+
server: Server<DefaultEventsMap, DefaultEventsMap, DefaultEventsMap, {
|
|
49
|
+
user: TUser;
|
|
50
|
+
}>;
|
|
51
|
+
/** The active namespace */
|
|
52
|
+
namespace: Namespace;
|
|
53
|
+
/** Gracefully close the server */
|
|
54
|
+
close(): Promise<void>;
|
|
55
|
+
/** Check if the server is running */
|
|
56
|
+
isConnected(): boolean;
|
|
57
|
+
/** Track a user's socket connection */
|
|
58
|
+
trackConnection(userId: string, socketId: string): void;
|
|
59
|
+
/** Remove a socket from tracking */
|
|
60
|
+
untrackConnection(socketId: string): void;
|
|
61
|
+
/** Emit an event to all sockets for a specific user */
|
|
62
|
+
emitToUser(userId: string, event: string, ...args: unknown[]): void;
|
|
63
|
+
/** Broadcast an event to all connected sockets */
|
|
64
|
+
broadcast(event: string, ...args: unknown[]): void;
|
|
65
|
+
/** Emit an event to all sockets in a room */
|
|
66
|
+
emitToRoom(room: string, event: string, ...args: unknown[]): void;
|
|
67
|
+
/** Check if a user has any active socket connections */
|
|
68
|
+
isUserOnline(userId: string): boolean;
|
|
69
|
+
/** Get all socket IDs for a user */
|
|
70
|
+
getUserSocketIds(userId: string): string[];
|
|
71
|
+
/** Get total number of tracked connections */
|
|
72
|
+
getConnectionCount(): number;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/socketio/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arcraz/common",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "Common utilities for the arcraz ecosystem",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -64,6 +64,10 @@
|
|
|
64
64
|
"./types": {
|
|
65
65
|
"import": "./dist/types/index.js",
|
|
66
66
|
"types": "./dist/types/index.d.ts"
|
|
67
|
+
},
|
|
68
|
+
"./socketio": {
|
|
69
|
+
"import": "./dist/socketio/index.js",
|
|
70
|
+
"types": "./dist/socketio/index.d.ts"
|
|
67
71
|
}
|
|
68
72
|
},
|
|
69
73
|
"license": "Apache-2.0",
|
|
@@ -104,6 +108,7 @@
|
|
|
104
108
|
"@semantic-release/git": "^10.0.1",
|
|
105
109
|
"@semantic-release/github": "^11.0.1",
|
|
106
110
|
"@semantic-release/npm": "^12.0.1",
|
|
111
|
+
"@socket.io/redis-adapter": "^8.3.0",
|
|
107
112
|
"@types/amqplib": "^0.10.5",
|
|
108
113
|
"@types/eslint": "^9.6.1",
|
|
109
114
|
"@types/humps": "^2.0.6",
|
|
@@ -119,6 +124,7 @@
|
|
|
119
124
|
"globals": "^16.0.0",
|
|
120
125
|
"prettier": "^3.2.5",
|
|
121
126
|
"semantic-release": "^24.2.0",
|
|
127
|
+
"socket.io": "^4.8.1",
|
|
122
128
|
"ts-node": "^10.9.2",
|
|
123
129
|
"typescript": "^5.6.3",
|
|
124
130
|
"vitest": "^4.0.18"
|
|
@@ -128,8 +134,10 @@
|
|
|
128
134
|
"@aws-sdk/client-s3": "^3.0.0",
|
|
129
135
|
"@aws-sdk/cloudfront-signer": "^3.0.0",
|
|
130
136
|
"@aws-sdk/s3-request-presigner": "^3.0.0",
|
|
137
|
+
"@socket.io/redis-adapter": "^8.0.0",
|
|
131
138
|
"cors": "^2.8.5",
|
|
132
|
-
"helmet": "^8.0.0"
|
|
139
|
+
"helmet": "^8.0.0",
|
|
140
|
+
"socket.io": "^4.7.0"
|
|
133
141
|
},
|
|
134
142
|
"peerDependenciesMeta": {
|
|
135
143
|
"@aws-sdk/client-bedrock-runtime": {
|
|
@@ -144,11 +152,17 @@
|
|
|
144
152
|
"@aws-sdk/s3-request-presigner": {
|
|
145
153
|
"optional": true
|
|
146
154
|
},
|
|
155
|
+
"@socket.io/redis-adapter": {
|
|
156
|
+
"optional": true
|
|
157
|
+
},
|
|
147
158
|
"cors": {
|
|
148
159
|
"optional": true
|
|
149
160
|
},
|
|
150
161
|
"helmet": {
|
|
151
162
|
"optional": true
|
|
163
|
+
},
|
|
164
|
+
"socket.io": {
|
|
165
|
+
"optional": true
|
|
152
166
|
}
|
|
153
167
|
}
|
|
154
168
|
}
|