pino-sse 1.0.0 → 1.0.2

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/psse.mjs ADDED
@@ -0,0 +1,3 @@
1
+ import e from"pino-abstract-transport";import{v4 as t}from"uuid";import{App as n}from"uWebSockets.js";import{cors as r}from"uws-cors";async function i(i={port:3333}){let a=r(n()),o={};return a.get(`/`,e=>{let n=t();e.cork(()=>{e.writeHeader(`Content-Type`,`text/event-stream`),e.writeHeader(`Connection`,`keep-alive`),e.writeHeader(`Cache-Control`,`no-cache`)}),e.writeStatus(`200 OK`),o[n]=e,e.onAborted(()=>{delete o[n]})}),a.listen(i.port,()=>{}),e(async e=>{for await(let n of e){n.log_id=t();let e=JSON.stringify(n);for(let t of Object.values(o))t.cork(()=>t.write(`data: ${e}\n\n`))}},{async close(e){for(let e of Object.values(o))e.cork(()=>e.write(`event: close
2
+ `)),e.close();a.close()},parseLine(e){return JSON.parse(e)}})}export{i as default};
3
+ //# sourceMappingURL=psse.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"psse.mjs","names":["connections: Record<string, HttpResponse>","uuid"],"sources":["../psse.ts"],"sourcesContent":["import build from 'pino-abstract-transport'\nimport { v4 as uuid } from 'uuid'\nimport { App } from 'uWebSockets.js'\nimport type { HttpResponse } from 'uWebSockets.js'\nimport {cors} from 'uws-cors'\n\ninterface SSETransportOptions {\n port: number\n}\n\nexport default async function (opts: SSETransportOptions = {port: 3333}) {\n const app = cors(App())\n const connections: Record<string, HttpResponse> = {}\n\n app.get(\"/\", (conn) => {\n const conn_id = uuid()\n conn.cork(() => {\n conn.writeHeader('Content-Type', 'text/event-stream')\n conn.writeHeader('Connection', 'keep-alive')\n conn.writeHeader('Cache-Control', 'no-cache')\n })\n conn.writeStatus('200 OK')\n\n connections[conn_id] = conn\n\n conn.onAborted(() => {\n delete connections[conn_id]\n })\n\n })\n app.listen(opts.port, () => {})\n\n\n return build(async (stream) => {\n for await (const obj of stream) {\n obj[\"log_id\"] = uuid()\n const log = JSON.stringify(obj)\n for (const conn of Object.values(connections)) {\n conn.cork(() => conn.write(`data: ${log}\\n\\n`))\n }\n }\n }, {\n async close(_) {\n for (const conn of Object.values(connections)) {\n conn.cork(() => conn.write('event: close\\n'))\n conn.close()\n }\n app.close()\n },\n parseLine(line) {\n return JSON.parse(line)\n },\n })\n}\n"],"mappings":"sIAUA,eAAA,EAA+B,EAA4B,CAAC,KAAM,KAAK,CAAE,CACvE,IAAM,EAAM,EAAK,GAAK,CAAC,CACjBA,EAA4C,EAAE,CAqBpD,OAnBA,EAAI,IAAI,IAAM,GAAS,CACrB,IAAM,EAAUC,GAAM,CACtB,EAAK,SAAW,CACd,EAAK,YAAY,eAAgB,oBAAoB,CACrD,EAAK,YAAY,aAAc,aAAa,CAC5C,EAAK,YAAY,gBAAiB,WAAW,EAC7C,CACF,EAAK,YAAY,SAAS,CAE1B,EAAY,GAAW,EAEvB,EAAK,cAAgB,CACnB,OAAO,EAAY,IACnB,EAEF,CACF,EAAI,OAAO,EAAK,SAAY,GAAG,CAGxB,EAAM,KAAO,IAAW,CAC7B,UAAW,IAAM,KAAO,EAAQ,CAC9B,EAAI,OAAYA,GAAM,CACtB,IAAM,EAAM,KAAK,UAAU,EAAI,CAC/B,IAAK,IAAM,KAAQ,OAAO,OAAO,EAAY,CAC3C,EAAK,SAAW,EAAK,MAAM,SAAS,EAAI,MAAM,CAAC,GAGlD,CACD,MAAM,MAAM,EAAG,CACb,IAAK,IAAM,KAAQ,OAAO,OAAO,EAAY,CAC3C,EAAK,SAAW,EAAK,MAAM;EAAiB,CAAC,CAC7C,EAAK,OAAO,CAEd,EAAI,OAAO,EAEb,UAAU,EAAM,CACd,OAAO,KAAK,MAAM,EAAK,EAE1B,CAAC"}
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "pino-sse",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Pino transport for server side events",
5
5
  "license": "MIT",
6
6
  "author": "Jimmy Lew",
7
- "main": "psse.ts",
7
+ "main": "./dist/psse.mjs",
8
8
  "scripts": {
9
9
  "lint": "eslint"
10
10
  },
@@ -17,13 +17,12 @@
17
17
  ],
18
18
  "devDependencies": {
19
19
  "@antfu/eslint-config": "^6.7.3",
20
- "@types/node": "^25.0.3",
21
20
  "@types/uuid": "^11.0.0",
22
21
  "eslint": "^9.39.2"
23
22
  },
24
23
  "dependencies": {
25
- "h3": "^2.0.1-rc.6",
26
24
  "pino-abstract-transport": "^3.0.0",
25
+ "tsdown": "^0.18.3",
27
26
  "uWebSockets.js": "github:uNetworking/uWebSockets.js#v20.56.0",
28
27
  "uuid": "^13.0.0",
29
28
  "uws-cors": "^1.0.0"
@@ -0,0 +1,10 @@
1
+ import { defineConfig } from "tsdown";
2
+
3
+ export default defineConfig (
4
+ {
5
+ entry: 'psse.ts',
6
+ outDir: 'dist',
7
+ minify: true,
8
+ sourcemap: true,
9
+ }
10
+ )
package/psse.h3.ts DELETED
@@ -1,46 +0,0 @@
1
- import build from 'pino-abstract-transport'
2
- import {createEventStream, defineEventHandler, H3, handleCors, serve } from 'h3'
3
- import { v4 as uuid } from 'uuid'
4
-
5
- interface SSETransportOptions {
6
-
7
- }
8
-
9
- export default async function (opts: SSETransportOptions) {
10
- const app = new H3()
11
- let event_stream: any = null
12
-
13
- app.get("/", (event) => {
14
- const cors = handleCors(event, {
15
- origin: '*',
16
- preflight: {
17
- statusCode: 204,
18
- },
19
- methods: '*',
20
- })
21
- if (cors !== false) return cors
22
-
23
- event_stream = createEventStream(event);
24
- return event_stream.send();
25
- });
26
-
27
- const server = serve(app, {port: 3333})
28
-
29
- return build(async (stream) => {
30
- for await (const obj of stream) {
31
- obj["log_id"] = uuid()
32
- const log = JSON.stringify(obj)
33
- if (!event_stream)
34
- continue
35
- await event_stream.push(log)
36
- }
37
- }, {
38
- async close(_) {
39
- console.log('Killing sse transport');
40
- await server.close()
41
- },
42
- parseLine(line) {
43
- return JSON.parse(line)
44
- },
45
- })
46
- }