@digipair/skill-sse 0.89.0 → 0.91.0-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/.swcrc ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "jsc": {
3
+ "target": "es2017",
4
+ "parser": {
5
+ "syntax": "typescript",
6
+ "decorators": true,
7
+ "dynamicImport": true
8
+ },
9
+ "transform": {
10
+ "decoratorMetadata": true,
11
+ "legacyDecorator": true
12
+ },
13
+ "keepClassNames": true,
14
+ "externalHelpers": true,
15
+ "loose": true
16
+ },
17
+ "module": {
18
+ "type": "es6"
19
+ },
20
+ "sourceMaps": true,
21
+ "exclude": [
22
+ "jest.config.ts",
23
+ ".*\\.spec.tsx?$",
24
+ ".*\\.test.tsx?$",
25
+ "./src/jest-setup.ts$",
26
+ "./**/jest-setup.ts$"
27
+ ]
28
+ }
package/README.md ADDED
@@ -0,0 +1,7 @@
1
+ # mylib
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Building
6
+
7
+ Run `nx build mylib` to build the library.
@@ -0,0 +1,22 @@
1
+ import baseConfig from '../../eslint.config.mjs';
2
+
3
+ export default [
4
+ ...baseConfig,
5
+ {
6
+ files: ['**/*.json'],
7
+ rules: {
8
+ '@nx/dependency-checks': [
9
+ 'error',
10
+ {
11
+ ignoredFiles: [
12
+ '{projectRoot}/eslint.config.{js,cjs,mjs}',
13
+ '{projectRoot}/rollup.config.{js,ts,mjs,mts,cjs,cts}',
14
+ ],
15
+ },
16
+ ],
17
+ },
18
+ languageOptions: {
19
+ parser: await import('jsonc-eslint-parser'),
20
+ },
21
+ },
22
+ ];
package/package.json CHANGED
@@ -1,12 +1,28 @@
1
1
  {
2
2
  "name": "@digipair/skill-sse",
3
- "version": "0.89.0",
3
+ "version": "0.91.0-0",
4
+ "type": "module",
5
+ "main": "dist/libs/skill-sse/index.cjs.js",
6
+ "module": "dist/libs/skill-sse/index.esm.js",
7
+ "types": "dist/libs/skill-sse/index.esm.d.ts",
8
+ "exports": {
9
+ "./package.json": "./libs/skill-sse/package.json",
10
+ ".": {
11
+ "development": "./dist/libs/skill-sse/src/index.ts",
12
+ "types": "./dist/libs/skill-sse/index.esm.d.ts",
13
+ "import": "./dist/libs/skill-sse/index.esm.js",
14
+ "default": "./dist/libs/skill-sse/index.cjs.js"
15
+ }
16
+ },
4
17
  "keywords": [
5
18
  "digipair",
6
- "service",
7
- "tool"
19
+ "tool",
20
+ "service"
8
21
  ],
9
- "dependencies": {},
10
- "main": "./index.cjs.js",
11
- "module": "./index.esm.js"
12
- }
22
+ "nx": {
23
+ "name": "skill-sse"
24
+ },
25
+ "dependencies": {
26
+ "@digipair/engine": "0.91.0-0"
27
+ }
28
+ }
@@ -0,0 +1,28 @@
1
+ const { withNx } = require('@nx/rollup/with-nx');
2
+
3
+ module.exports = withNx(
4
+ {
5
+ main: 'libs/skill-sse/src/index.ts',
6
+ outputPath: 'dist/libs/skill-sse',
7
+ tsConfig: 'libs/skill-sse/tsconfig.lib.json',
8
+ compiler: 'swc',
9
+ format: ['esm', "cjs"],
10
+ assets: [
11
+ {
12
+ input: 'libs/skill-sse/',
13
+ glob: 'package.json',
14
+ output: '.'
15
+ },
16
+ {
17
+ input: 'libs/skill-sse/src/',
18
+ glob: '*.json',
19
+ output: '.'
20
+ }
21
+ ]
22
+ },
23
+ {
24
+ // Provide additional rollup configuration here. See: https://rollupjs.org/configuration-options
25
+ // e.g.
26
+ // output: { sourcemap: true },
27
+ }
28
+ );
@@ -0,0 +1 @@
1
+ declare module 'handlebars/dist/handlebars.min.js';
@@ -0,0 +1,7 @@
1
+ import { skillSse } from './skill-sse';
2
+
3
+ describe('skillSse', () => {
4
+ it('should work', () => {
5
+ expect(skillSse()).toEqual('skill-sse');
6
+ });
7
+ });
@@ -0,0 +1,82 @@
1
+ /* eslint-disable @typescript-eslint/no-unused-vars */
2
+ import { createSession, createChannel } from 'better-sse';
3
+ import { executePinsList, PinsSettings } from '@digipair/engine';
4
+
5
+ class SSEService {
6
+ private sessions = new Map();
7
+ private channels = new Map();
8
+
9
+ async registerSession(
10
+ params: any,
11
+ _pinsSettingsList: PinsSettings[],
12
+ context: any,
13
+ ): Promise<any> {
14
+ const { id, disconnected = [] } = params;
15
+ const session = await createSession(context.protected.req, context.protected.res);
16
+
17
+ if (id) {
18
+ const start = context.privates.SSE_SESSION_START || '';
19
+ const name = `${start}__${context.request.digipair}_${context.request.reasoning}__${id}`;
20
+
21
+ this.sessions.set(name, session);
22
+ session.on('disconnected', () => {
23
+ this.sessions.delete(name);
24
+ executePinsList(disconnected, { ...context }, `${context.__PATH__}.disconnected`);
25
+ });
26
+ }
27
+
28
+ return session;
29
+ }
30
+
31
+ async registerChannel(
32
+ params: any,
33
+ _pinsSettingsList: PinsSettings[],
34
+ context: any,
35
+ ): Promise<any> {
36
+ const { session, disconnected = [], id = '' } = params;
37
+ const start = context.privates.SSE_SESSION_START || '';
38
+ const name = `${start}__${context.request.digipair}_${context.request.reasoning}__${id}`;
39
+ let channel = this.channels.get(name);
40
+ if (!channel) {
41
+ channel = createChannel(session);
42
+ this.channels.set(name, channel);
43
+ }
44
+
45
+ const channelSession = session ?? (await this.registerSession({ disconnected }, [], context));
46
+ channel.register(channelSession);
47
+
48
+ return channel;
49
+ }
50
+
51
+ async push(params: any, _pinsSettingsList: PinsSettings[], context: any): Promise<any> {
52
+ const { id, message, reasoning = context.request.reasoning, digipair = context.request.digipair } = params;
53
+ const start = context.privates.SSE_SESSION_START || '';
54
+ const name = `${start}__${digipair}_${reasoning}__${id}`;
55
+ const session = this.sessions.get(name);
56
+
57
+ return session?.push(message);
58
+ }
59
+
60
+ async broadcast(params: any, _pinsSettingsList: PinsSettings[], context: any): Promise<any> {
61
+ const { message, reasoning = context.request.reasoning, id = '', digipair = context.request.digipair, event = 'message' } = params;
62
+ const start = context.privates.SSE_SESSION_START || '';
63
+ const name = `${start}__${digipair}_${reasoning}__${id}`;
64
+ let channel = this.channels.get(name);
65
+
66
+ return channel?.broadcast(message, event);
67
+ }
68
+ }
69
+
70
+ const service = new SSEService();
71
+
72
+ export const registerSession = (params: any, pinsSettingsList: PinsSettings[], context: any) =>
73
+ service.registerSession(params, pinsSettingsList, context);
74
+
75
+ export const registerChannel = (params: any, pinsSettingsList: PinsSettings[], context: any) =>
76
+ service.registerChannel(params, pinsSettingsList, context);
77
+
78
+ export const push = (params: any, pinsSettingsList: PinsSettings[], context: any) =>
79
+ service.push(params, pinsSettingsList, context);
80
+
81
+ export const broadcast = (params: any, pinsSettingsList: PinsSettings[], context: any) =>
82
+ service.broadcast(params, pinsSettingsList, context);
package/tsconfig.json ADDED
@@ -0,0 +1,13 @@
1
+ {
2
+ "extends": "../../tsconfig.base.json",
3
+ "files": [],
4
+ "include": [],
5
+ "references": [
6
+ {
7
+ "path": "../engine"
8
+ },
9
+ {
10
+ "path": "./tsconfig.lib.json"
11
+ }
12
+ ]
13
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "extends": "../../tsconfig.base.json",
3
+ "compilerOptions": {
4
+ "rootDir": "src",
5
+ "outDir": "dist",
6
+ "tsBuildInfoFile": "dist/tsconfig.lib.tsbuildinfo",
7
+ "emitDeclarationOnly": true,
8
+ "module": "esnext",
9
+ "moduleResolution": "node",
10
+ "forceConsistentCasingInFileNames": true,
11
+ "types": ["node"]
12
+ },
13
+ "include": ["src/**/*.ts"],
14
+ "references": [
15
+ {
16
+ "path": "../engine/tsconfig.lib.json"
17
+ }
18
+ ]
19
+ }
package/index.cjs.d.ts DELETED
@@ -1 +0,0 @@
1
- export * from "./src/index";