nostr-websocket-utils 0.3.18 → 0.4.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/__mocks__/mockLogger.d.ts +7 -7
- package/dist/__mocks__/mockLogger.d.ts.map +1 -1
- package/dist/browser/nostr-websocket-utils.min.js +2 -1
- package/dist/browser/nostr-websocket-utils.min.js.map +3 -3
- package/dist/cjs/__mocks__/mockLogger.d.ts +7 -7
- package/dist/cjs/__mocks__/mockLogger.d.ts.map +1 -1
- package/dist/cjs/core/nostr-server.js +3 -3
- package/dist/cjs/core/nostr-server.js.map +1 -1
- package/dist/cjs/core/server.js +2 -2
- package/dist/cjs/core/server.js.map +1 -1
- package/dist/cjs/crypto/handlers.js +1 -1
- package/dist/cjs/crypto/handlers.js.map +1 -1
- package/dist/cjs/nips/nip-04.js +2 -2
- package/dist/cjs/nips/nip-04.js.map +1 -1
- package/dist/cjs/nips/nip-13.js +1 -1
- package/dist/cjs/nips/nip-13.js.map +1 -1
- package/dist/cjs/nips/nip-16.js +2 -2
- package/dist/cjs/nips/nip-16.js.map +1 -1
- package/dist/cjs/nips/nip-22.js +2 -2
- package/dist/cjs/nips/nip-22.js.map +1 -1
- package/dist/cjs/nips/nip-28.d.ts.map +1 -1
- package/dist/cjs/nips/nip-28.js +4 -12
- package/dist/cjs/nips/nip-28.js.map +1 -1
- package/dist/cjs/nips/nip-33.js +2 -2
- package/dist/cjs/nips/nip-33.js.map +1 -1
- package/dist/cjs/nips/nip-44.js +2 -2
- package/dist/cjs/nips/nip-44.js.map +1 -1
- package/dist/cjs/transport/websocket.js +1 -1
- package/dist/cjs/transport/websocket.js.map +1 -1
- package/dist/cjs/utils/rate-limiter.d.ts.map +1 -1
- package/dist/cjs/utils/rate-limiter.js +4 -17
- package/dist/cjs/utils/rate-limiter.js.map +1 -1
- package/dist/core/nostr-server.js +3 -3
- package/dist/core/nostr-server.js.map +1 -1
- package/dist/core/server.js +2 -2
- package/dist/core/server.js.map +1 -1
- package/dist/crypto/handlers.js +1 -1
- package/dist/crypto/handlers.js.map +1 -1
- package/dist/nips/nip-04.js +2 -2
- package/dist/nips/nip-04.js.map +1 -1
- package/dist/nips/nip-13.js +1 -1
- package/dist/nips/nip-13.js.map +1 -1
- package/dist/nips/nip-16.js +2 -2
- package/dist/nips/nip-16.js.map +1 -1
- package/dist/nips/nip-22.js +2 -2
- package/dist/nips/nip-22.js.map +1 -1
- package/dist/nips/nip-28.d.ts.map +1 -1
- package/dist/nips/nip-28.js +4 -12
- package/dist/nips/nip-28.js.map +1 -1
- package/dist/nips/nip-33.js +2 -2
- package/dist/nips/nip-33.js.map +1 -1
- package/dist/nips/nip-44.js +2 -2
- package/dist/nips/nip-44.js.map +1 -1
- package/dist/transport/websocket.js +1 -1
- package/dist/transport/websocket.js.map +1 -1
- package/dist/utils/rate-limiter.d.ts.map +1 -1
- package/dist/utils/rate-limiter.js +4 -17
- package/dist/utils/rate-limiter.js.map +1 -1
- package/package.json +6 -6
|
@@ -7,13 +7,13 @@ export declare class MockPinoLogger implements Partial<Logger> {
|
|
|
7
7
|
useLevelLabels: boolean;
|
|
8
8
|
useOnlyCustomLevels: boolean;
|
|
9
9
|
customLevels: {};
|
|
10
|
-
debug: import("vitest").Mock<(
|
|
11
|
-
info: import("vitest").Mock<(
|
|
12
|
-
warn: import("vitest").Mock<(
|
|
13
|
-
error: import("vitest").Mock<(
|
|
14
|
-
fatal: import("vitest").Mock<(
|
|
15
|
-
trace: import("vitest").Mock<(
|
|
16
|
-
silent: import("vitest").Mock<(
|
|
10
|
+
debug: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
11
|
+
info: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
12
|
+
warn: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
13
|
+
error: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
14
|
+
fatal: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
15
|
+
trace: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
16
|
+
silent: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
17
17
|
levels: {
|
|
18
18
|
values: {
|
|
19
19
|
fatal: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mockLogger.d.ts","sourceRoot":"","sources":["../../src/__mocks__/mockLogger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAEjE,qBAAa,cAAe,YAAW,OAAO,CAAC,MAAM,CAAC;IACpD,KAAK,EAAE,MAAM,CAAW;IACxB,QAAQ,EAAE,MAAM,CAAM;IACtB,OAAO,EAAE,MAAM,CAAW;IAC1B,WAAW,EAAE,MAAM,CAAK;IACxB,cAAc,EAAE,OAAO,CAAQ;IAC/B,mBAAmB,EAAE,OAAO,CAAS;IACrC,YAAY,KAAM;IAElB,KAAK,
|
|
1
|
+
{"version":3,"file":"mockLogger.d.ts","sourceRoot":"","sources":["../../src/__mocks__/mockLogger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAEjE,qBAAa,cAAe,YAAW,OAAO,CAAC,MAAM,CAAC;IACpD,KAAK,EAAE,MAAM,CAAW;IACxB,QAAQ,EAAE,MAAM,CAAM;IACtB,OAAO,EAAE,MAAM,CAAW;IAC1B,WAAW,EAAE,MAAM,CAAK;IACxB,cAAc,EAAE,OAAO,CAAQ;IAC/B,mBAAmB,EAAE,OAAO,CAAS;IACrC,YAAY,KAAM;IAElB,KAAK,yDAAW;IAChB,IAAI,yDAAW;IACf,IAAI,yDAAW;IACf,KAAK,yDAAW;IAChB,KAAK,yDAAW;IAChB,KAAK,yDAAW;IAChB,MAAM,yDAAW;IAEjB,MAAM;;;;;;;;;;;;;;;;;MAiBJ;IAEF,QAAQ,WAAc;IACtB,KAAK,sBAA2B;IAChC,cAAc,gBAAc;IAE5B,KAAK,CAAC,iBAAiB,SAAS,MAAM,GAAG,KAAK,EAC5C,SAAS,EAAE,QAAQ,EACnB,QAAQ,CAAC,EAAE,kBAAkB,CAAC,iBAAiB,CAAC,GAC/C,MAAM,CAAC,iBAAiB,CAAC;IAI5B,MAAM,CAAC,MAAM,IAAI,MAAM;CAGxB;AAED,eAAO,MAAM,gBAAgB,QAAO,MAAiC,CAAC"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
"use strict";var NostrWebSocketUtils=(()=>{var ee=Object.create;var N=Object.defineProperty;var te=Object.getOwnPropertyDescriptor;var re=Object.getOwnPropertyNames;var ne=Object.getPrototypeOf,se=Object.prototype.hasOwnProperty;var z=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),ie=(e,t)=>{for(var r in t)N(e,r,{get:t[r],enumerable:!0})},P=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of re(t))!se.call(e,i)&&i!==r&&N(e,i,{get:()=>t[i],enumerable:!(s=te(t,i))||s.enumerable});return e};var G=(e,t,r)=>(r=e!=null?ee(ne(e)):{},P(t||!e||!e.__esModule?N(r,"default",{value:e,enumerable:!0}):r,e)),oe=e=>P(N({},"__esModule",{value:!0}),e);var H=z((Te,Q)=>{"use strict";Q.exports=function(){throw new Error("ws does not work in the browser. Browser clients must use the native WebSocket object")}});var B=z((je,V)=>{"use strict";function ae(e){try{return JSON.stringify(e)}catch{return'"[Circular]"'}}V.exports=ce;function ce(e,t,r){var s=r&&r.stringify||ae,i=1;if(typeof e=="object"&&e!==null){var o=t.length+i;if(o===1)return e;var m=new Array(o);m[0]=s(e);for(var u=1;u<o;u++)m[u]=s(t[u]);return m.join(" ")}if(typeof e!="string")return e;var f=t.length;if(f===0)return e;for(var n="",a=1-i,l=-1,g=e&&e.length||0,c=0;c<g;){if(e.charCodeAt(c)===37&&c+1<g){switch(l=l>-1?l:0,e.charCodeAt(c+1)){case 100:case 102:if(a>=f||t[a]==null)break;l<c&&(n+=e.slice(l,c)),n+=Number(t[a]),l=c+2,c++;break;case 105:if(a>=f||t[a]==null)break;l<c&&(n+=e.slice(l,c)),n+=Math.floor(Number(t[a])),l=c+2,c++;break;case 79:case 111:case 106:if(a>=f||t[a]===void 0)break;l<c&&(n+=e.slice(l,c));var w=typeof t[a];if(w==="string"){n+="'"+t[a]+"'",l=c+2,c++;break}if(w==="function"){n+=t[a].name||"<anonymous>",l=c+2,c++;break}n+=s(t[a]),l=c+2,c++;break;case 115:if(a>=f)break;l<c&&(n+=e.slice(l,c)),n+=String(t[a]),l=c+2,c++;break;case 37:l<c&&(n+=e.slice(l,c)),n+="%",l=c+2,c++,a--;break}++a}++c}return l===-1?e:(l<g&&(n+=e.slice(l)),n)}});var Y=z((Ae,T)=>{"use strict";var J=B();T.exports=d;var v=Ne().console||{},le={mapHttpRequest:O,mapHttpResponse:O,wrapRequestSerializer:M,wrapResponseSerializer:M,wrapErrorSerializer:M,req:O,res:O,err:$,errWithCause:$};function C(e,t){return e==="silent"?1/0:t.levels.values[e]}var A=Symbol("pino.logFuncs"),W=Symbol("pino.hierarchy"),ue={error:"log",fatal:"error",warn:"error",info:"log",debug:"log",trace:"log"};function U(e,t){let r={logger:t,parent:e[W]};t[W]=r}function fe(e,t,r){let s={};t.forEach(i=>{s[i]=r[i]?r[i]:v[i]||v[ue[i]||"log"]||y}),e[A]=s}function me(e,t){return Array.isArray(e)?e.filter(function(s){return s!=="!stdSerializers.err"}):e===!0?Object.keys(t):!1}function d(e){e=e||{},e.browser=e.browser||{};let t=e.browser.transmit;if(t&&typeof t.send!="function")throw Error("pino: transmit option must have a send function");let r=e.browser.write||v;e.browser.write&&(e.browser.asObject=!0);let s=e.serializers||{},i=me(e.browser.serialize,s),o=e.browser.serialize;Array.isArray(e.browser.serialize)&&e.browser.serialize.indexOf("!stdSerializers.err")>-1&&(o=!1);let m=Object.keys(e.customLevels||{}),u=["error","fatal","warn","info","debug","trace"].concat(m);typeof r=="function"&&u.forEach(function(h){r[h]=r}),(e.enabled===!1||e.browser.disabled)&&(e.level="silent");let f=e.level||"info",n=Object.create(r);n.log||(n.log=y),fe(n,u,r),U({},n),Object.defineProperty(n,"levelVal",{get:l}),Object.defineProperty(n,"level",{get:g,set:c});let a={transmit:t,serialize:i,asObject:e.browser.asObject,formatters:e.browser.formatters,levels:u,timestamp:Se(e)};n.levels=he(e),n.level=f,n.setMaxListeners=n.getMaxListeners=n.emit=n.addListener=n.on=n.prependListener=n.once=n.prependOnceListener=n.removeListener=n.removeAllListeners=n.listeners=n.listenerCount=n.eventNames=n.write=n.flush=y,n.serializers=s,n._serialize=i,n._stdErrSerialize=o,n.child=w,t&&(n._logEvent=j());function l(){return C(this.level,this)}function g(){return this._level}function c(h){if(h!=="silent"&&!this.levels.values[h])throw Error("unknown level "+h);this._level=h,p(this,a,n,"error"),p(this,a,n,"fatal"),p(this,a,n,"warn"),p(this,a,n,"info"),p(this,a,n,"debug"),p(this,a,n,"trace"),m.forEach(b=>{p(this,a,n,b)})}function w(h,b){if(!h)throw new Error("missing bindings for child Pino");b=b||{},i&&h.serializers&&(b.serializers=h.serializers);let _=b.serializers;if(i&&_){var E=Object.assign({},s,_),I=e.browser.serialize===!0?Object.keys(E):i;delete h.serializers,x([h],I,E,this._stdErrSerialize)}function R(F){this._childLevel=(F._childLevel|0)+1,this.bindings=h,E&&(this.serializers=E,this._serialize=I),t&&(this._logEvent=j([].concat(F._logEvent.bindings,h)))}R.prototype=this;let k=new R(this);return U(this,k),k.level=this.level,k}return n}function he(e){let t=e.customLevels||{},r=Object.assign({},d.levels.values,t),s=Object.assign({},d.levels.labels,ge(t));return{values:r,labels:s}}function ge(e){let t={};return Object.keys(e).forEach(function(r){t[e[r]]=r}),t}d.levels={values:{fatal:60,error:50,warn:40,info:30,debug:20,trace:10},labels:{10:"trace",20:"debug",30:"info",40:"warn",50:"error",60:"fatal"}};d.stdSerializers=le;d.stdTimeFunctions=Object.assign({},{nullTime:K,epochTime:X,unixTime:we,isoTime:Ee});function de(e){let t=[];e.bindings&&t.push(e.bindings);let r=e[W];for(;r.parent;)r=r.parent,r.logger.bindings&&t.push(r.logger.bindings);return t.reverse()}function p(e,t,r,s){if(Object.defineProperty(e,s,{value:C(e.level,r)>C(s,r)?y:r[A][s],writable:!0,enumerable:!0,configurable:!0}),!t.transmit&&e[s]===y)return;e[s]=be(e,t,r,s);let i=de(e);i.length!==0&&(e[s]=pe(i,e[s]))}function pe(e,t){return function(){return t.apply(this,[...e,...arguments])}}function be(e,t,r,s){return(function(i){return function(){let m=t.timestamp(),u=new Array(arguments.length),f=Object.getPrototypeOf&&Object.getPrototypeOf(this)===v?v:this;for(var n=0;n<u.length;n++)u[n]=arguments[n];if(t.serialize&&!t.asObject&&x(u,this._serialize,this.serializers,this._stdErrSerialize),t.asObject||t.formatters?i.call(f,ve(this,s,u,m,t.formatters)):i.apply(f,u),t.transmit){let a=t.transmit.level||e._level,l=r.levels.values[a],g=r.levels.values[s];if(g<l)return;ye(this,{ts:m,methodLevel:s,methodValue:g,transmitLevel:a,transmitValue:r.levels.values[t.transmit.level||e._level],send:t.transmit.send,val:C(e._level,r)},u)}}})(e[A][s])}function ve(e,t,r,s,i={}){let{level:o=()=>e.levels.values[t],log:m=g=>g}=i;e._serialize&&x(r,e._serialize,e.serializers,e._stdErrSerialize);let u=r.slice(),f=u[0],n={};s&&(n.time=s),n.level=o(t,e.levels.values[t]);let a=(e._childLevel|0)+1;if(a<1&&(a=1),f!==null&&typeof f=="object"){for(;a--&&typeof u[0]=="object";)Object.assign(n,u.shift());f=u.length?J(u.shift(),u):void 0}else typeof f=="string"&&(f=J(u.shift(),u));return f!==void 0&&(n.msg=f),m(n)}function x(e,t,r,s){for(let i in e)if(s&&e[i]instanceof Error)e[i]=d.stdSerializers.err(e[i]);else if(typeof e[i]=="object"&&!Array.isArray(e[i]))for(let o in e[i])t&&t.indexOf(o)>-1&&o in r&&(e[i][o]=r[o](e[i][o]))}function ye(e,t,r){let s=t.send,i=t.ts,o=t.methodLevel,m=t.methodValue,u=t.val,f=e._logEvent.bindings;x(r,e._serialize||Object.keys(e.serializers),e.serializers,e._stdErrSerialize===void 0?!0:e._stdErrSerialize),e._logEvent.ts=i,e._logEvent.messages=r.filter(function(n){return f.indexOf(n)===-1}),e._logEvent.level.label=o,e._logEvent.level.value=m,s(o,e._logEvent,u),e._logEvent=j(f)}function j(e){return{ts:0,messages:[],bindings:e||[],level:{label:"",value:0}}}function $(e){let t={type:e.constructor.name,msg:e.message,stack:e.stack};for(let r in e)t[r]===void 0&&(t[r]=e[r]);return t}function Se(e){return typeof e.timestamp=="function"?e.timestamp:e.timestamp===!1?K:X}function O(){return{}}function M(e){return e}function y(){}function K(){return!1}function X(){return Date.now()}function we(){return Math.round(Date.now()/1e3)}function Ee(){return new Date(Date.now()).toISOString()}function Ne(){function e(t){return typeof t<"u"&&t}try{return typeof globalThis<"u"||Object.defineProperty(Object.prototype,"globalThis",{get:function(){return delete Object.prototype.globalThis,this.globalThis=this},configurable:!0}),globalThis}catch{return e(self)||e(window)||e(this)||{}}}T.exports.default=d;T.exports.pino=d});var Ce={};ie(Ce,{NostrWSClient:()=>S,default:()=>Oe});var Z=G(H(),1);var q=G(Y(),1);function L(e){return(0,q.default)({name:e,level:process.env.LOG_LEVEL||"info",timestamp:q.default.stdTimeFunctions.isoTime})}var D=class{constructor(t,r={}){this.sender=t;this.options=r;this.queue=[];this.processing=!1;this.logger=L("MessageQueue")}async enqueue(t){if(this.options.maxSize&&this.queue.length>=this.options.maxSize)throw new Error("Queue is full");let[r,...s]=t,i={type:r,data:s.length===1?s[0]:s,priority:"NORMAL",queuedAt:Date.now(),retryCount:0};this.queue.push(i),this.queue.sort((o,m)=>o.priority===m.priority?o.queuedAt-m.queuedAt:o.priority==="HIGH"?-1:1),this.processing||this.processQueue().catch(o=>{this.logger.error({error:o},"Error processing queue")})}async processQueue(){if(!(this.processing||this.queue.length===0)){this.processing=!0;try{for(;this.queue.length>0;){let t=this.queue[0],r=[t.type,t.data];try{await this.sender(r),this.queue.shift()}catch(s){if(this.logger.error({error:s,message:r},"Failed to send message"),this.options.maxRetries&&t.retryCount>=this.options.maxRetries){this.logger.warn({message:r},"Max retries reached, removing message from queue"),this.queue.shift();continue}t.retryCount++,await new Promise(i=>setTimeout(i,this.options.retryDelay||1e3))}}}finally{this.processing=!1}if(this.options.staleTimeout){let t=Date.now(),r=this.options.staleTimeout;for(let s=this.queue.length-1;s>=0;s--)t-this.queue[s].queuedAt>r&&(this.logger.warn({message:this.queue[s]},"Message is stale, removing from queue"),this.queue.splice(s,1))}}}getSize(){return this.queue.length}clear(){this.queue.length=0}};var S=class{constructor(t,r={}){this.relayUrls=t;this.options=r;this.ws=null;this.connectionState="DISCONNECTED";this.reconnectAttempts=0;this.reconnectTimeout=null;this.logger=r.logger||L("NostrWSClient"),this.queue=new D(async s=>{if(!this.ws||this.connectionState!=="CONNECTED")throw new Error("Not connected to relay");try{this.ws.send(JSON.stringify(s)),this.logger.debug({message:s},"Message sent")}catch(i){throw this.logger.error({error:i,message:s},"Failed to send message"),i}},{maxSize:r.queueSize,maxRetries:r.maxRetries,retryDelay:r.retryDelay})}async connect(){if(this.connectionState==="CONNECTED"){this.logger.debug("Already connected");return}if(this.connectionState==="CONNECTING"){this.logger.debug("Connection already in progress");return}this.connectionState="CONNECTING";try{let t=this.relayUrls[0];t.startsWith("ws://")&&!t.includes("localhost")&&!t.includes("127.0.0.1")&&console.warn("[nostr-websocket] WARNING: Connecting over plaintext ws:// \u2014 messages are not encrypted"),this.ws=new Z.default(t),await new Promise((r,s)=>{let i=setTimeout(()=>{s(new Error("Connection timeout"))},this.options.connectionTimeout||5e3);this.ws.on("open",()=>{clearTimeout(i),this.connectionState="CONNECTED",this.reconnectAttempts=0,this.logger.info("Connected to relay"),r()}),this.ws.on("error",o=>{clearTimeout(i),this.logger.error({error:o},"WebSocket error"),this.options.onError&&this.options.onError(o),s(o)}),this.ws.on("close",()=>{this.handleDisconnect()}),this.ws.on("message",o=>{this.handleMessage(o)})})}catch(t){throw this.logger.error({error:t},"Failed to connect"),this.handleDisconnect(),t}}async disconnect(){if(this.connectionState==="DISCONNECTED"){this.logger.debug("Already disconnected");return}this.connectionState="DISCONNECTED",this.reconnectTimeout&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=null),this.ws&&(this.ws.close(),this.ws=null),this.logger.info("Disconnected from relay")}async sendMessage(t){if(this.connectionState!=="CONNECTED")throw new Error("Not connected to relay");await this.queue.enqueue(t)}handleMessage(t){try{let r=JSON.parse(t.toString());this.logger.debug({message:r},"Received message"),this.options.onMessage&&this.options.onMessage(t.toString())}catch(r){this.logger.error({error:r,data:t},"Failed to parse message"),this.options.onError&&this.options.onError(r)}}handleDisconnect(){if(this.connectionState="DISCONNECTED",this.ws=null,this.options.retryAttempts&&this.reconnectAttempts<this.options.retryAttempts){this.connectionState="RECONNECTING",this.reconnectAttempts++;let t=this.options.retryDelay||1e3,s=Math.min(t*Math.pow(2,this.reconnectAttempts),3e4),i=s*.1*Math.random(),o=s+i;this.logger.info({attempt:this.reconnectAttempts,maxAttempts:this.options.retryAttempts,delay:Math.round(o)},`Reconnecting in ${Math.round(o)}ms`),this.reconnectTimeout=setTimeout(()=>{this.connect().catch(m=>{this.logger.error({error:m},"Reconnection failed")})},o)}else this.logger.warn("Max reconnection attempts reached"),this.connectionState="FAILED"}getConnectionState(){return this.connectionState}};var Oe={NostrWSClient:S};return oe(Ce);})();
|
|
1
|
+
"use strict";var NostrWebSocketUtils=(()=>{var re=Object.create;var L=Object.defineProperty;var ne=Object.getOwnPropertyDescriptor;var se=Object.getOwnPropertyNames;var ie=Object.getPrototypeOf,oe=Object.prototype.hasOwnProperty;var W=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),ae=(e,t)=>{for(var r in t)L(e,r,{get:t[r],enumerable:!0})},G=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of se(t))!oe.call(e,i)&&i!==r&&L(e,i,{get:()=>t[i],enumerable:!(s=ne(t,i))||s.enumerable});return e};var V=(e,t,r)=>(r=e!=null?re(ie(e)):{},G(t||!e||!e.__esModule?L(r,"default",{value:e,enumerable:!0}):r,e)),ce=e=>G(L({},"__esModule",{value:!0}),e);var H=W((je,Q)=>{"use strict";Q.exports=function(){throw new Error("ws does not work in the browser. Browser clients must use the native WebSocket object")}});var J=W((qe,B)=>{"use strict";function le(e){try{return JSON.stringify(e)}catch{return'"[Circular]"'}}B.exports=ue;function ue(e,t,r){var s=r&&r.stringify||le,i=1;if(typeof e=="object"&&e!==null){var a=t.length+i;if(a===1)return e;var f=new Array(a);f[0]=s(e);for(var u=1;u<a;u++)f[u]=s(t[u]);return f.join(" ")}if(typeof e!="string")return e;var m=t.length;if(m===0)return e;for(var n="",c=1-i,o=-1,g=e&&e.length||0,l=0;l<g;){if(e.charCodeAt(l)===37&&l+1<g){switch(o=o>-1?o:0,e.charCodeAt(l+1)){case 100:case 102:if(c>=m||t[c]==null)break;o<l&&(n+=e.slice(o,l)),n+=Number(t[c]),o=l+2,l++;break;case 105:if(c>=m||t[c]==null)break;o<l&&(n+=e.slice(o,l)),n+=Math.floor(Number(t[c])),o=l+2,l++;break;case 79:case 111:case 106:if(c>=m||t[c]===void 0)break;o<l&&(n+=e.slice(o,l));var w=typeof t[c];if(w==="string"){n+="'"+t[c]+"'",o=l+2,l++;break}if(w==="function"){n+=t[c].name||"<anonymous>",o=l+2,l++;break}n+=s(t[c]),o=l+2,l++;break;case 115:if(c>=m)break;o<l&&(n+=e.slice(o,l)),n+=String(t[c]),o=l+2,l++;break;case 37:o<l&&(n+=e.slice(o,l)),n+="%",o=l+2,l++,c--;break}++c}++l}return o===-1?e:(o<g&&(n+=e.slice(o)),n)}});var ee=W((Ie,j)=>{"use strict";var K=J();j.exports=p;var N=Ce().console||{},fe={mapHttpRequest:T,mapHttpResponse:T,wrapRequestSerializer:M,wrapResponseSerializer:M,wrapErrorSerializer:M,req:T,res:T,err:$,errWithCause:$};function b(e,t){return e==="silent"?1/0:t.levels.values[e]}var q=Symbol("pino.logFuncs"),z=Symbol("pino.hierarchy"),me={error:"log",fatal:"error",warn:"error",info:"log",debug:"log",trace:"log"};function U(e,t){let r={logger:t,parent:e[z]};t[z]=r}function he(e,t,r){let s={};t.forEach(i=>{s[i]=r[i]?r[i]:N[i]||N[me[i]||"log"]||v}),e[q]=s}function ge(e,t){return Array.isArray(e)?e.filter(function(s){return s!=="!stdSerializers.err"}):e===!0?Object.keys(t):!1}function p(e){e=e||{},e.browser=e.browser||{};let t=e.browser.transmit;if(t&&typeof t.send!="function")throw Error("pino: transmit option must have a send function");let r=e.browser.write||N;e.browser.write&&(e.browser.asObject=!0);let s=e.serializers||{},i=ge(e.browser.serialize,s),a=e.browser.serialize;Array.isArray(e.browser.serialize)&&e.browser.serialize.indexOf("!stdSerializers.err")>-1&&(a=!1);let f=Object.keys(e.customLevels||{}),u=["error","fatal","warn","info","debug","trace"].concat(f);typeof r=="function"&&u.forEach(function(h){r[h]=r}),(e.enabled===!1||e.browser.disabled)&&(e.level="silent");let m=e.level||"info",n=Object.create(r);n.log||(n.log=v),he(n,u,r),U({},n),Object.defineProperty(n,"levelVal",{get:o}),Object.defineProperty(n,"level",{get:g,set:l});let c={transmit:t,serialize:i,asObject:e.browser.asObject,asObjectBindingsOnly:e.browser.asObjectBindingsOnly,formatters:e.browser.formatters,reportCaller:e.browser.reportCaller,levels:u,timestamp:Ee(e),messageKey:e.messageKey||"msg",onChild:e.onChild||v};n.levels=de(e),n.level=m,n.isLevelEnabled=function(h){return this.levels.values[h]?this.levels.values[h]>=this.levels.values[this.level]:!1},n.setMaxListeners=n.getMaxListeners=n.emit=n.addListener=n.on=n.prependListener=n.once=n.prependOnceListener=n.removeListener=n.removeAllListeners=n.listeners=n.listenerCount=n.eventNames=n.write=n.flush=v,n.serializers=s,n._serialize=i,n._stdErrSerialize=a,n.child=function(...h){return w.call(this,c,...h)},t&&(n._logEvent=A());function o(){return b(this.level,this)}function g(){return this._level}function l(h){if(h!=="silent"&&!this.levels.values[h])throw Error("unknown level "+h);this._level=h,y(this,c,n,"error"),y(this,c,n,"fatal"),y(this,c,n,"warn"),y(this,c,n,"info"),y(this,c,n,"debug"),y(this,c,n,"trace"),f.forEach(d=>{y(this,c,n,d)})}function w(h,d,S){if(!d)throw new Error("missing bindings for child Pino");S=S||{},i&&d.serializers&&(S.serializers=d.serializers);let R=S.serializers;if(i&&R){var C=Object.assign({},s,R),F=e.browser.serialize===!0?Object.keys(C):i;delete d.serializers,I([d],F,C,this._stdErrSerialize)}function P(x){this._childLevel=(x._childLevel|0)+1,this.bindings=d,C&&(this.serializers=C,this._serialize=F),t&&(this._logEvent=A([].concat(x._logEvent.bindings,d)))}P.prototype=this;let E=new P(this);return U(this,E),E.child=function(...x){return w.call(this,h,...x)},E.level=S.level||this.level,h.onChild(E),E}return n}function de(e){let t=e.customLevels||{},r=Object.assign({},p.levels.values,t),s=Object.assign({},p.levels.labels,pe(t));return{values:r,labels:s}}function pe(e){let t={};return Object.keys(e).forEach(function(r){t[e[r]]=r}),t}p.levels={values:{fatal:60,error:50,warn:40,info:30,debug:20,trace:10},labels:{10:"trace",20:"debug",30:"info",40:"warn",50:"error",60:"fatal"}};p.stdSerializers=fe;p.stdTimeFunctions=Object.assign({},{nullTime:Y,epochTime:Z,unixTime:Ne,isoTime:Oe});function be(e){let t=[];e.bindings&&t.push(e.bindings);let r=e[z];for(;r.parent;)r=r.parent,r.logger.bindings&&t.push(r.logger.bindings);return t.reverse()}function y(e,t,r,s){if(Object.defineProperty(e,s,{value:b(e.level,r)>b(s,r)?v:r[q][s],writable:!0,enumerable:!0,configurable:!0}),e[s]===v){if(!t.transmit)return;let a=t.transmit.level||e.level,f=b(a,r);if(b(s,r)<f)return}e[s]=ve(e,t,r,s);let i=be(e);i.length!==0&&(e[s]=ye(i,e[s]))}function ye(e,t){return function(){return t.apply(this,[...e,...arguments])}}function ve(e,t,r,s){return(function(i){return function(){let f=t.timestamp(),u=new Array(arguments.length),m=Object.getPrototypeOf&&Object.getPrototypeOf(this)===N?N:this;for(var n=0;n<u.length;n++)u[n]=arguments[n];var c=!1;if(t.serialize&&(I(u,this._serialize,this.serializers,this._stdErrSerialize),c=!0),t.asObject||t.formatters){let o=we(this,s,u,f,t);if(t.reportCaller&&o&&o.length>0&&o[0]&&typeof o[0]=="object")try{let g=X();g&&(o[0].caller=g)}catch{}i.call(m,...o)}else{if(t.reportCaller)try{let o=X();o&&u.push(o)}catch{}i.apply(m,u)}if(t.transmit){let o=t.transmit.level||e._level,g=b(o,r),l=b(s,r);if(l<g)return;Se(this,{ts:f,methodLevel:s,methodValue:l,transmitLevel:o,transmitValue:r.levels.values[t.transmit.level||e._level],send:t.transmit.send,val:b(e._level,r)},u,c)}}})(e[q][s])}function we(e,t,r,s,i){let{level:a,log:f=o=>o}=i.formatters||{},u=r.slice(),m=u[0],n={},c=(e._childLevel|0)+1;if(c<1&&(c=1),s&&(n.time=s),a){let o=a(t,e.levels.values[t]);Object.assign(n,o)}else n.level=e.levels.values[t];if(i.asObjectBindingsOnly){if(m!==null&&typeof m=="object")for(;c--&&typeof u[0]=="object";)Object.assign(n,u.shift());return[f(n),...u]}else{if(m!==null&&typeof m=="object"){for(;c--&&typeof u[0]=="object";)Object.assign(n,u.shift());m=u.length?K(u.shift(),u):void 0}else typeof m=="string"&&(m=K(u.shift(),u));return m!==void 0&&(n[i.messageKey]=m),[f(n)]}}function I(e,t,r,s){for(let i in e)if(s&&e[i]instanceof Error)e[i]=p.stdSerializers.err(e[i]);else if(typeof e[i]=="object"&&!Array.isArray(e[i])&&t)for(let a in e[i])t.indexOf(a)>-1&&a in r&&(e[i][a]=r[a](e[i][a]))}function Se(e,t,r,s=!1){let i=t.send,a=t.ts,f=t.methodLevel,u=t.methodValue,m=t.val,n=e._logEvent.bindings;s||I(r,e._serialize||Object.keys(e.serializers),e.serializers,e._stdErrSerialize===void 0?!0:e._stdErrSerialize),e._logEvent.ts=a,e._logEvent.messages=r.filter(function(c){return n.indexOf(c)===-1}),e._logEvent.level.label=f,e._logEvent.level.value=u,i(f,e._logEvent,m),e._logEvent=A(n)}function A(e){return{ts:0,messages:[],bindings:e||[],level:{label:"",value:0}}}function $(e){let t={type:e.constructor.name,msg:e.message,stack:e.stack};for(let r in e)t[r]===void 0&&(t[r]=e[r]);return t}function Ee(e){return typeof e.timestamp=="function"?e.timestamp:e.timestamp===!1?Y:Z}function T(){return{}}function M(e){return e}function v(){}function Y(){return!1}function Z(){return Date.now()}function Ne(){return Math.round(Date.now()/1e3)}function Oe(){return new Date(Date.now()).toISOString()}function Ce(){function e(t){return typeof t<"u"&&t}try{return typeof globalThis<"u"||Object.defineProperty(Object.prototype,"globalThis",{get:function(){return delete Object.prototype.globalThis,this.globalThis=this},configurable:!0}),globalThis}catch{return e(self)||e(window)||e(this)||{}}}j.exports.default=p;j.exports.pino=p;function X(){let e=new Error().stack;if(!e)return null;let t=e.split(`
|
|
2
|
+
`);for(let r=1;r<t.length;r++){let s=t[r].trim();if(/(^at\s+)?(createWrap|LOG|set\s*\(|asObject|Object\.apply|Function\.apply)/.test(s)||s.indexOf("browser.js")!==-1||s.indexOf("node:internal")!==-1||s.indexOf("node_modules")!==-1)continue;let i=s.match(/\((.*?):(\d+):(\d+)\)/);if(i||(i=s.match(/at\s+(.*?):(\d+):(\d+)/)),i){let a=i[1],f=i[2],u=i[3];return a+":"+f+":"+u}}return null}});var Le={};ae(Le,{NostrWSClient:()=>O,default:()=>xe});var te=V(H(),1);var _=V(ee(),1);function k(e){return(0,_.default)({name:e,level:process.env.LOG_LEVEL||"info",timestamp:_.default.stdTimeFunctions.isoTime})}var D=class{constructor(t,r={}){this.sender=t;this.options=r;this.queue=[];this.processing=!1;this.logger=k("MessageQueue")}async enqueue(t){if(this.options.maxSize&&this.queue.length>=this.options.maxSize)throw new Error("Queue is full");let[r,...s]=t,i={type:r,data:s.length===1?s[0]:s,priority:"NORMAL",queuedAt:Date.now(),retryCount:0};this.queue.push(i),this.queue.sort((a,f)=>a.priority===f.priority?a.queuedAt-f.queuedAt:a.priority==="HIGH"?-1:1),this.processing||this.processQueue().catch(a=>{this.logger.error({error:a},"Error processing queue")})}async processQueue(){if(!(this.processing||this.queue.length===0)){this.processing=!0;try{for(;this.queue.length>0;){let t=this.queue[0],r=[t.type,t.data];try{await this.sender(r),this.queue.shift()}catch(s){if(this.logger.error({error:s,message:r},"Failed to send message"),this.options.maxRetries&&t.retryCount>=this.options.maxRetries){this.logger.warn({message:r},"Max retries reached, removing message from queue"),this.queue.shift();continue}t.retryCount++,await new Promise(i=>setTimeout(i,this.options.retryDelay||1e3))}}}finally{this.processing=!1}if(this.options.staleTimeout){let t=Date.now(),r=this.options.staleTimeout;for(let s=this.queue.length-1;s>=0;s--)t-this.queue[s].queuedAt>r&&(this.logger.warn({message:this.queue[s]},"Message is stale, removing from queue"),this.queue.splice(s,1))}}}getSize(){return this.queue.length}clear(){this.queue.length=0}};var O=class{constructor(t,r={}){this.relayUrls=t;this.options=r;this.ws=null;this.connectionState="DISCONNECTED";this.reconnectAttempts=0;this.reconnectTimeout=null;this.logger=r.logger||k("NostrWSClient"),this.queue=new D(async s=>{if(!this.ws||this.connectionState!=="CONNECTED")throw new Error("Not connected to relay");try{this.ws.send(JSON.stringify(s)),this.logger.debug({message:s},"Message sent")}catch(i){throw this.logger.error({error:i,message:s},"Failed to send message"),i}},{maxSize:r.queueSize,maxRetries:r.maxRetries,retryDelay:r.retryDelay})}async connect(){if(this.connectionState==="CONNECTED"){this.logger.debug("Already connected");return}if(this.connectionState==="CONNECTING"){this.logger.debug("Connection already in progress");return}this.connectionState="CONNECTING";try{let t=this.relayUrls[0];t.startsWith("ws://")&&!t.includes("localhost")&&!t.includes("127.0.0.1")&&console.warn("[nostr-websocket] WARNING: Connecting over plaintext ws:// \u2014 messages are not encrypted"),this.ws=new te.default(t),await new Promise((r,s)=>{let i=setTimeout(()=>{s(new Error("Connection timeout"))},this.options.connectionTimeout||5e3);this.ws.on("open",()=>{clearTimeout(i),this.connectionState="CONNECTED",this.reconnectAttempts=0,this.logger.info("Connected to relay"),r()}),this.ws.on("error",a=>{clearTimeout(i),this.logger.error({error:a},"WebSocket error"),this.options.onError&&this.options.onError(a),s(a)}),this.ws.on("close",()=>{this.handleDisconnect()}),this.ws.on("message",a=>{this.handleMessage(a)})})}catch(t){throw this.logger.error({error:t},"Failed to connect"),this.handleDisconnect(),t}}async disconnect(){if(this.connectionState==="DISCONNECTED"){this.logger.debug("Already disconnected");return}this.connectionState="DISCONNECTED",this.reconnectTimeout&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=null),this.ws&&(this.ws.close(),this.ws=null),this.logger.info("Disconnected from relay")}async sendMessage(t){if(this.connectionState!=="CONNECTED")throw new Error("Not connected to relay");await this.queue.enqueue(t)}handleMessage(t){try{let r=JSON.parse(t.toString());this.logger.debug({message:r},"Received message"),this.options.onMessage&&this.options.onMessage(t.toString())}catch(r){this.logger.error({error:r,data:t},"Failed to parse message"),this.options.onError&&this.options.onError(r)}}handleDisconnect(){if(this.connectionState="DISCONNECTED",this.ws=null,this.options.retryAttempts&&this.reconnectAttempts<this.options.retryAttempts){this.connectionState="RECONNECTING",this.reconnectAttempts++;let t=this.options.retryDelay||1e3,s=Math.min(t*Math.pow(2,this.reconnectAttempts),3e4),i=s*.1*Math.random(),a=s+i;this.logger.info({attempt:this.reconnectAttempts,maxAttempts:this.options.retryAttempts,delay:Math.round(a)},`Reconnecting in ${Math.round(a)}ms`),this.reconnectTimeout=setTimeout(()=>{this.connect().catch(f=>{this.logger.error({error:f},"Reconnection failed")})},a)}else this.logger.warn("Max reconnection attempts reached"),this.connectionState="FAILED"}getConnectionState(){return this.connectionState}};var xe={NostrWSClient:O};return ce(Le);})();
|
|
2
3
|
//# sourceMappingURL=nostr-websocket-utils.min.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../node_modules/ws/browser.js", "../../node_modules/quick-format-unescaped/index.js", "../../node_modules/pino/browser.js", "../../src/browser.ts", "../../src/core/client.ts", "../../src/utils/logger.ts", "../../src/core/queue.ts"],
|
|
4
|
-
"sourcesContent": ["'use strict';\n\nmodule.exports = function () {\n throw new Error(\n 'ws does not work in the browser. Browser clients must use the native ' +\n 'WebSocket object'\n );\n};\n", "'use strict'\nfunction tryStringify (o) {\n try { return JSON.stringify(o) } catch(e) { return '\"[Circular]\"' }\n}\n\nmodule.exports = format\n\nfunction format(f, args, opts) {\n var ss = (opts && opts.stringify) || tryStringify\n var offset = 1\n if (typeof f === 'object' && f !== null) {\n var len = args.length + offset\n if (len === 1) return f\n var objects = new Array(len)\n objects[0] = ss(f)\n for (var index = 1; index < len; index++) {\n objects[index] = ss(args[index])\n }\n return objects.join(' ')\n }\n if (typeof f !== 'string') {\n return f\n }\n var argLen = args.length\n if (argLen === 0) return f\n var str = ''\n var a = 1 - offset\n var lastPos = -1\n var flen = (f && f.length) || 0\n for (var i = 0; i < flen;) {\n if (f.charCodeAt(i) === 37 && i + 1 < flen) {\n lastPos = lastPos > -1 ? lastPos : 0\n switch (f.charCodeAt(i + 1)) {\n case 100: // 'd'\n case 102: // 'f'\n if (a >= argLen)\n break\n if (args[a] == null) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += Number(args[a])\n lastPos = i + 2\n i++\n break\n case 105: // 'i'\n if (a >= argLen)\n break\n if (args[a] == null) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += Math.floor(Number(args[a]))\n lastPos = i + 2\n i++\n break\n case 79: // 'O'\n case 111: // 'o'\n case 106: // 'j'\n if (a >= argLen)\n break\n if (args[a] === undefined) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n var type = typeof args[a]\n if (type === 'string') {\n str += '\\'' + args[a] + '\\''\n lastPos = i + 2\n i++\n break\n }\n if (type === 'function') {\n str += args[a].name || '<anonymous>'\n lastPos = i + 2\n i++\n break\n }\n str += ss(args[a])\n lastPos = i + 2\n i++\n break\n case 115: // 's'\n if (a >= argLen)\n break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += String(args[a])\n lastPos = i + 2\n i++\n break\n case 37: // '%'\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += '%'\n lastPos = i + 2\n i++\n a--\n break\n }\n ++a\n }\n ++i\n }\n if (lastPos === -1)\n return f\n else if (lastPos < flen) {\n str += f.slice(lastPos)\n }\n\n return str\n}\n", "'use strict'\n\nconst format = require('quick-format-unescaped')\n\nmodule.exports = pino\n\nconst _console = pfGlobalThisOrFallback().console || {}\nconst stdSerializers = {\n mapHttpRequest: mock,\n mapHttpResponse: mock,\n wrapRequestSerializer: passthrough,\n wrapResponseSerializer: passthrough,\n wrapErrorSerializer: passthrough,\n req: mock,\n res: mock,\n err: asErrValue,\n errWithCause: asErrValue\n}\nfunction levelToValue (level, logger) {\n return level === 'silent'\n ? Infinity\n : logger.levels.values[level]\n}\nconst baseLogFunctionSymbol = Symbol('pino.logFuncs')\nconst hierarchySymbol = Symbol('pino.hierarchy')\n\nconst logFallbackMap = {\n error: 'log',\n fatal: 'error',\n warn: 'error',\n info: 'log',\n debug: 'log',\n trace: 'log'\n}\n\nfunction appendChildLogger (parentLogger, childLogger) {\n const newEntry = {\n logger: childLogger,\n parent: parentLogger[hierarchySymbol]\n }\n childLogger[hierarchySymbol] = newEntry\n}\n\nfunction setupBaseLogFunctions (logger, levels, proto) {\n const logFunctions = {}\n levels.forEach(level => {\n logFunctions[level] = proto[level] ? proto[level] : (_console[level] || _console[logFallbackMap[level] || 'log'] || noop)\n })\n logger[baseLogFunctionSymbol] = logFunctions\n}\n\nfunction shouldSerialize (serialize, serializers) {\n if (Array.isArray(serialize)) {\n const hasToFilter = serialize.filter(function (k) {\n return k !== '!stdSerializers.err'\n })\n return hasToFilter\n } else if (serialize === true) {\n return Object.keys(serializers)\n }\n\n return false\n}\n\nfunction pino (opts) {\n opts = opts || {}\n opts.browser = opts.browser || {}\n\n const transmit = opts.browser.transmit\n if (transmit && typeof transmit.send !== 'function') { throw Error('pino: transmit option must have a send function') }\n\n const proto = opts.browser.write || _console\n if (opts.browser.write) opts.browser.asObject = true\n const serializers = opts.serializers || {}\n const serialize = shouldSerialize(opts.browser.serialize, serializers)\n let stdErrSerialize = opts.browser.serialize\n\n if (\n Array.isArray(opts.browser.serialize) &&\n opts.browser.serialize.indexOf('!stdSerializers.err') > -1\n ) stdErrSerialize = false\n\n const customLevels = Object.keys(opts.customLevels || {})\n const levels = ['error', 'fatal', 'warn', 'info', 'debug', 'trace'].concat(customLevels)\n\n if (typeof proto === 'function') {\n levels.forEach(function (level) {\n proto[level] = proto\n })\n }\n if (opts.enabled === false || opts.browser.disabled) opts.level = 'silent'\n const level = opts.level || 'info'\n const logger = Object.create(proto)\n if (!logger.log) logger.log = noop\n\n setupBaseLogFunctions(logger, levels, proto)\n // setup root hierarchy entry\n appendChildLogger({}, logger)\n\n Object.defineProperty(logger, 'levelVal', {\n get: getLevelVal\n })\n Object.defineProperty(logger, 'level', {\n get: getLevel,\n set: setLevel\n })\n\n const setOpts = {\n transmit,\n serialize,\n asObject: opts.browser.asObject,\n formatters: opts.browser.formatters,\n levels,\n timestamp: getTimeFunction(opts)\n }\n logger.levels = getLevels(opts)\n logger.level = level\n\n logger.setMaxListeners = logger.getMaxListeners =\n logger.emit = logger.addListener = logger.on =\n logger.prependListener = logger.once =\n logger.prependOnceListener = logger.removeListener =\n logger.removeAllListeners = logger.listeners =\n logger.listenerCount = logger.eventNames =\n logger.write = logger.flush = noop\n logger.serializers = serializers\n logger._serialize = serialize\n logger._stdErrSerialize = stdErrSerialize\n logger.child = child\n\n if (transmit) logger._logEvent = createLogEventShape()\n\n function getLevelVal () {\n return levelToValue(this.level, this)\n }\n\n function getLevel () {\n return this._level\n }\n function setLevel (level) {\n if (level !== 'silent' && !this.levels.values[level]) {\n throw Error('unknown level ' + level)\n }\n this._level = level\n\n set(this, setOpts, logger, 'error') // <-- must stay first\n set(this, setOpts, logger, 'fatal')\n set(this, setOpts, logger, 'warn')\n set(this, setOpts, logger, 'info')\n set(this, setOpts, logger, 'debug')\n set(this, setOpts, logger, 'trace')\n\n customLevels.forEach((level) => {\n set(this, setOpts, logger, level)\n })\n }\n\n function child (bindings, childOptions) {\n if (!bindings) {\n throw new Error('missing bindings for child Pino')\n }\n childOptions = childOptions || {}\n if (serialize && bindings.serializers) {\n childOptions.serializers = bindings.serializers\n }\n const childOptionsSerializers = childOptions.serializers\n if (serialize && childOptionsSerializers) {\n var childSerializers = Object.assign({}, serializers, childOptionsSerializers)\n var childSerialize = opts.browser.serialize === true\n ? Object.keys(childSerializers)\n : serialize\n delete bindings.serializers\n applySerializers([bindings], childSerialize, childSerializers, this._stdErrSerialize)\n }\n function Child (parent) {\n this._childLevel = (parent._childLevel | 0) + 1\n\n // make sure bindings are available in the `set` function\n this.bindings = bindings\n\n if (childSerializers) {\n this.serializers = childSerializers\n this._serialize = childSerialize\n }\n if (transmit) {\n this._logEvent = createLogEventShape(\n [].concat(parent._logEvent.bindings, bindings)\n )\n }\n }\n Child.prototype = this\n const newLogger = new Child(this)\n\n // must happen before the level is assigned\n appendChildLogger(this, newLogger)\n // required to actually initialize the logger functions for any given child\n newLogger.level = this.level\n\n return newLogger\n }\n return logger\n}\n\nfunction getLevels (opts) {\n const customLevels = opts.customLevels || {}\n\n const values = Object.assign({}, pino.levels.values, customLevels)\n const labels = Object.assign({}, pino.levels.labels, invertObject(customLevels))\n\n return {\n values,\n labels\n }\n}\n\nfunction invertObject (obj) {\n const inverted = {}\n Object.keys(obj).forEach(function (key) {\n inverted[obj[key]] = key\n })\n return inverted\n}\n\npino.levels = {\n values: {\n fatal: 60,\n error: 50,\n warn: 40,\n info: 30,\n debug: 20,\n trace: 10\n },\n labels: {\n 10: 'trace',\n 20: 'debug',\n 30: 'info',\n 40: 'warn',\n 50: 'error',\n 60: 'fatal'\n }\n}\n\npino.stdSerializers = stdSerializers\npino.stdTimeFunctions = Object.assign({}, { nullTime, epochTime, unixTime, isoTime })\n\nfunction getBindingChain (logger) {\n const bindings = []\n if (logger.bindings) {\n bindings.push(logger.bindings)\n }\n\n // traverse up the tree to get all bindings\n let hierarchy = logger[hierarchySymbol]\n while (hierarchy.parent) {\n hierarchy = hierarchy.parent\n if (hierarchy.logger.bindings) {\n bindings.push(hierarchy.logger.bindings)\n }\n }\n\n return bindings.reverse()\n}\n\nfunction set (self, opts, rootLogger, level) {\n // override the current log functions with either `noop` or the base log function\n Object.defineProperty(self, level, {\n value: (levelToValue(self.level, rootLogger) > levelToValue(level, rootLogger)\n ? noop\n : rootLogger[baseLogFunctionSymbol][level]),\n writable: true,\n enumerable: true,\n configurable: true\n })\n\n if (!opts.transmit && self[level] === noop) {\n return\n }\n\n // make sure the log format is correct\n self[level] = createWrap(self, opts, rootLogger, level)\n\n // prepend bindings if it is not the root logger\n const bindings = getBindingChain(self)\n if (bindings.length === 0) {\n // early exit in case for rootLogger\n return\n }\n self[level] = prependBindingsInArguments(bindings, self[level])\n}\n\nfunction prependBindingsInArguments (bindings, logFunc) {\n return function () {\n return logFunc.apply(this, [...bindings, ...arguments])\n }\n}\n\nfunction createWrap (self, opts, rootLogger, level) {\n return (function (write) {\n return function LOG () {\n const ts = opts.timestamp()\n const args = new Array(arguments.length)\n const proto = (Object.getPrototypeOf && Object.getPrototypeOf(this) === _console) ? _console : this\n for (var i = 0; i < args.length; i++) args[i] = arguments[i]\n\n if (opts.serialize && !opts.asObject) {\n applySerializers(args, this._serialize, this.serializers, this._stdErrSerialize)\n }\n if (opts.asObject || opts.formatters) {\n write.call(proto, asObject(this, level, args, ts, opts.formatters))\n } else write.apply(proto, args)\n\n if (opts.transmit) {\n const transmitLevel = opts.transmit.level || self._level\n const transmitValue = rootLogger.levels.values[transmitLevel]\n const methodValue = rootLogger.levels.values[level]\n if (methodValue < transmitValue) return\n transmit(this, {\n ts,\n methodLevel: level,\n methodValue,\n transmitLevel,\n transmitValue: rootLogger.levels.values[opts.transmit.level || self._level],\n send: opts.transmit.send,\n val: levelToValue(self._level, rootLogger)\n }, args)\n }\n }\n })(self[baseLogFunctionSymbol][level])\n}\n\nfunction asObject (logger, level, args, ts, formatters = {}) {\n const {\n level: levelFormatter = () => logger.levels.values[level],\n log: logObjectFormatter = (obj) => obj\n } = formatters\n if (logger._serialize) applySerializers(args, logger._serialize, logger.serializers, logger._stdErrSerialize)\n const argsCloned = args.slice()\n let msg = argsCloned[0]\n const logObject = {}\n if (ts) {\n logObject.time = ts\n }\n logObject.level = levelFormatter(level, logger.levels.values[level])\n\n let lvl = (logger._childLevel | 0) + 1\n if (lvl < 1) lvl = 1\n // deliberate, catching objects, arrays\n if (msg !== null && typeof msg === 'object') {\n while (lvl-- && typeof argsCloned[0] === 'object') {\n Object.assign(logObject, argsCloned.shift())\n }\n msg = argsCloned.length ? format(argsCloned.shift(), argsCloned) : undefined\n } else if (typeof msg === 'string') msg = format(argsCloned.shift(), argsCloned)\n if (msg !== undefined) logObject.msg = msg\n\n const formattedLogObject = logObjectFormatter(logObject)\n return formattedLogObject\n}\n\nfunction applySerializers (args, serialize, serializers, stdErrSerialize) {\n for (const i in args) {\n if (stdErrSerialize && args[i] instanceof Error) {\n args[i] = pino.stdSerializers.err(args[i])\n } else if (typeof args[i] === 'object' && !Array.isArray(args[i])) {\n for (const k in args[i]) {\n if (serialize && serialize.indexOf(k) > -1 && k in serializers) {\n args[i][k] = serializers[k](args[i][k])\n }\n }\n }\n }\n}\n\nfunction transmit (logger, opts, args) {\n const send = opts.send\n const ts = opts.ts\n const methodLevel = opts.methodLevel\n const methodValue = opts.methodValue\n const val = opts.val\n const bindings = logger._logEvent.bindings\n\n applySerializers(\n args,\n logger._serialize || Object.keys(logger.serializers),\n logger.serializers,\n logger._stdErrSerialize === undefined ? true : logger._stdErrSerialize\n )\n logger._logEvent.ts = ts\n logger._logEvent.messages = args.filter(function (arg) {\n // bindings can only be objects, so reference equality check via indexOf is fine\n return bindings.indexOf(arg) === -1\n })\n\n logger._logEvent.level.label = methodLevel\n logger._logEvent.level.value = methodValue\n\n send(methodLevel, logger._logEvent, val)\n\n logger._logEvent = createLogEventShape(bindings)\n}\n\nfunction createLogEventShape (bindings) {\n return {\n ts: 0,\n messages: [],\n bindings: bindings || [],\n level: { label: '', value: 0 }\n }\n}\n\nfunction asErrValue (err) {\n const obj = {\n type: err.constructor.name,\n msg: err.message,\n stack: err.stack\n }\n for (const key in err) {\n if (obj[key] === undefined) {\n obj[key] = err[key]\n }\n }\n return obj\n}\n\nfunction getTimeFunction (opts) {\n if (typeof opts.timestamp === 'function') {\n return opts.timestamp\n }\n if (opts.timestamp === false) {\n return nullTime\n }\n return epochTime\n}\n\nfunction mock () { return {} }\nfunction passthrough (a) { return a }\nfunction noop () {}\n\nfunction nullTime () { return false }\nfunction epochTime () { return Date.now() }\nfunction unixTime () { return Math.round(Date.now() / 1000.0) }\nfunction isoTime () { return new Date(Date.now()).toISOString() } // using Date.now() for testability\n\n/* eslint-disable */\n/* istanbul ignore next */\nfunction pfGlobalThisOrFallback () {\n function defd (o) { return typeof o !== 'undefined' && o }\n try {\n if (typeof globalThis !== 'undefined') return globalThis\n Object.defineProperty(Object.prototype, 'globalThis', {\n get: function () {\n delete Object.prototype.globalThis\n return (this.globalThis = this)\n },\n configurable: true\n })\n return globalThis\n } catch (e) {\n return defd(self) || defd(window) || defd(this) || {}\n }\n}\n/* eslint-enable */\n\nmodule.exports.default = pino\nmodule.exports.pino = pino\n", "import { NostrWSClient } from './core/client';\nimport type { NostrWSMessage, ConnectionState } from './types/index';\nimport type { NostrWSClientOptions } from './types/websocket';\n\n// Re-export the client\nexport { NostrWSClient };\n\n// Re-export types\nexport type {\n NostrWSMessage,\n NostrWSClientOptions,\n ConnectionState\n};\n\n// Export a default object for UMD bundle\nexport default {\n NostrWSClient\n};\n", "import WebSocket from 'ws';\nimport { \n NostrWSMessage, \n ConnectionState\n} from '../types/index.js';\nimport { NostrWSClientOptions } from '../types/websocket.js';\nimport { MessageQueue } from './queue.js';\nimport { createLogger } from '../utils/logger.js';\nimport { Logger } from 'pino';\n\n/**\n * NostrWSClient handles WebSocket connections to Nostr relays\n */\nexport class NostrWSClient {\n private ws: WebSocket | null = null;\n private readonly queue: MessageQueue;\n private readonly logger: Logger;\n private connectionState: ConnectionState = ConnectionState.DISCONNECTED;\n private reconnectAttempts = 0;\n private reconnectTimeout: NodeJS.Timeout | null = null;\n\n constructor(\n private readonly relayUrls: string[],\n private readonly options: NostrWSClientOptions = {}\n ) {\n this.logger = options.logger || createLogger('NostrWSClient');\n this.queue = new MessageQueue(\n async (message: NostrWSMessage) => {\n if (!this.ws || this.connectionState !== ConnectionState.CONNECTED) {\n throw new Error('Not connected to relay');\n }\n try {\n this.ws.send(JSON.stringify(message));\n this.logger.debug({ message }, 'Message sent');\n } catch (error) {\n this.logger.error({ error, message }, 'Failed to send message');\n throw error;\n }\n },\n {\n maxSize: options.queueSize,\n maxRetries: options.maxRetries,\n retryDelay: options.retryDelay\n }\n );\n }\n\n /**\n * Connect to the relay\n */\n async connect(): Promise<void> {\n if (this.connectionState === ConnectionState.CONNECTED) {\n this.logger.debug('Already connected');\n return;\n }\n\n if (this.connectionState === ConnectionState.CONNECTING) {\n this.logger.debug('Connection already in progress');\n return;\n }\n\n this.connectionState = ConnectionState.CONNECTING;\n\n try {\n const url = this.relayUrls[0]; // For now just use first relay\n\n if (url.startsWith('ws://') && !url.includes('localhost') && !url.includes('127.0.0.1')) {\n console.warn('[nostr-websocket] WARNING: Connecting over plaintext ws:// \u2014 messages are not encrypted');\n }\n\n this.ws = new WebSocket(url);\n\n await new Promise<void>((resolve, reject) => {\n const timeout = setTimeout(() => {\n reject(new Error('Connection timeout'));\n }, this.options.connectionTimeout || 5000);\n\n this.ws!.on('open', () => {\n clearTimeout(timeout);\n this.connectionState = ConnectionState.CONNECTED;\n this.reconnectAttempts = 0;\n this.logger.info('Connected to relay');\n resolve();\n });\n\n this.ws!.on('error', (error) => {\n clearTimeout(timeout);\n this.logger.error({ error }, 'WebSocket error');\n if (this.options.onError) {\n this.options.onError(error);\n }\n reject(error);\n });\n\n this.ws!.on('close', () => {\n this.handleDisconnect();\n });\n\n this.ws!.on('message', (data: WebSocket.Data) => {\n this.handleMessage(data);\n });\n });\n } catch (error) {\n this.logger.error({ error }, 'Failed to connect');\n this.handleDisconnect();\n throw error;\n }\n }\n\n /**\n * Disconnect from the relay\n */\n async disconnect(): Promise<void> {\n if (this.connectionState === ConnectionState.DISCONNECTED) {\n this.logger.debug('Already disconnected');\n return;\n }\n\n this.connectionState = ConnectionState.DISCONNECTED;\n \n if (this.reconnectTimeout) {\n clearTimeout(this.reconnectTimeout);\n this.reconnectTimeout = null;\n }\n\n if (this.ws) {\n this.ws.close();\n this.ws = null;\n }\n\n this.logger.info('Disconnected from relay');\n }\n\n /**\n * Send a message to the relay\n */\n async sendMessage(message: NostrWSMessage): Promise<void> {\n if (this.connectionState !== ConnectionState.CONNECTED) {\n throw new Error('Not connected to relay');\n }\n\n await this.queue.enqueue(message);\n }\n\n private handleMessage(data: WebSocket.Data): void {\n try {\n const message = JSON.parse(data.toString()) as NostrWSMessage;\n this.logger.debug({ message }, 'Received message');\n \n if (this.options.onMessage) {\n this.options.onMessage(data.toString());\n }\n } catch (error) {\n this.logger.error({ error, data }, 'Failed to parse message');\n if (this.options.onError) {\n this.options.onError(error as Error);\n }\n }\n }\n\n private handleDisconnect(): void {\n this.connectionState = ConnectionState.DISCONNECTED;\n this.ws = null;\n\n if (\n this.options.retryAttempts &&\n this.reconnectAttempts < this.options.retryAttempts\n ) {\n this.connectionState = ConnectionState.RECONNECTING;\n this.reconnectAttempts++;\n\n const baseDelay = this.options.retryDelay || 1000;\n const maxDelay = 30000; // 30 second cap\n const delay = Math.min(baseDelay * Math.pow(2, this.reconnectAttempts), maxDelay);\n const jitter = delay * 0.1 * Math.random(); // 10% jitter\n const totalDelay = delay + jitter;\n\n this.logger.info(\n { attempt: this.reconnectAttempts, maxAttempts: this.options.retryAttempts, delay: Math.round(totalDelay) },\n `Reconnecting in ${Math.round(totalDelay)}ms`\n );\n\n this.reconnectTimeout = setTimeout(() => {\n this.connect().catch(error => {\n this.logger.error({ error }, 'Reconnection failed');\n });\n }, totalDelay);\n } else {\n this.logger.warn('Max reconnection attempts reached');\n this.connectionState = ConnectionState.FAILED;\n }\n }\n\n /**\n * Get the current connection state\n */\n getConnectionState(): ConnectionState {\n return this.connectionState;\n }\n}\n", "/**\n * @file Logger utility\n * @module utils/logger\n */\n\nimport pino, { Logger } from 'pino';\n\n/**\n * Create a new logger instance\n * @param name Name of the logger\n * @returns Logger instance\n */\nexport function createLogger(name: string): Logger {\n return pino({\n name,\n level: process.env.LOG_LEVEL || 'info',\n timestamp: pino.stdTimeFunctions.isoTime\n });\n}\n\n/**\n * Get a logger instance for a specific component\n * @param component Component name for the logger\n * @returns Logger instance\n */\nexport function getLogger(component: string): Logger {\n return createLogger(component);\n}\n\n/**\n * Get a child logger instance\n * @param parent Parent logger instance\n * @param bindings Additional bindings for the child logger\n * @returns Child logger instance\n */\nexport function getChildLogger(parent: Logger, bindings: object): Logger {\n return parent.child(bindings);\n}\n\nexport type { Logger };\n", "/**\n * @file Message queue implementation\n * @module core/queue\n */\n\nimport { NostrWSMessage, MessagePriority, QueueItem } from '../types/index.js';\nimport { createLogger } from '../utils/logger.js';\nimport { Logger } from 'pino';\n\n/**\n * Message queue implementation for handling WebSocket messages\n */\nexport class MessageQueue {\n private readonly queue: QueueItem[] = [];\n private readonly logger: Logger;\n private processing = false;\n\n constructor(\n private readonly sender: (message: NostrWSMessage) => Promise<void>,\n private readonly options: {\n maxSize?: number;\n maxRetries?: number;\n retryDelay?: number;\n staleTimeout?: number;\n } = {}\n ) {\n this.logger = createLogger('MessageQueue');\n }\n\n /**\n * Add a message to the queue\n */\n async enqueue(message: NostrWSMessage): Promise<void> {\n if (\n this.options.maxSize &&\n this.queue.length >= this.options.maxSize\n ) {\n throw new Error('Queue is full');\n }\n\n const [type, ...data] = message;\n const queueItem: QueueItem = {\n type,\n data: data.length === 1 ? data[0] : data,\n priority: MessagePriority.NORMAL,\n queuedAt: Date.now(),\n retryCount: 0\n };\n\n this.queue.push(queueItem);\n this.queue.sort((a, b) => \n (a.priority === b.priority) ? \n (a.queuedAt - b.queuedAt) : \n (a.priority === MessagePriority.HIGH ? -1 : 1)\n );\n\n if (!this.processing) {\n this.processQueue().catch(error => {\n this.logger.error({ error }, 'Error processing queue');\n });\n }\n }\n\n /**\n * Process messages in the queue\n */\n private async processQueue(): Promise<void> {\n if (this.processing || this.queue.length === 0) {\n return;\n }\n\n this.processing = true;\n\n try {\n while (this.queue.length > 0) {\n const item = this.queue[0];\n const message: NostrWSMessage = [item.type, item.data];\n\n try {\n await this.sender(message);\n this.queue.shift();\n } catch (error) {\n this.logger.error({ error, message }, 'Failed to send message');\n\n if (\n this.options.maxRetries &&\n item.retryCount >= this.options.maxRetries\n ) {\n this.logger.warn(\n { message },\n 'Max retries reached, removing message from queue'\n );\n this.queue.shift();\n continue;\n }\n\n item.retryCount++;\n await new Promise(resolve =>\n setTimeout(resolve, this.options.retryDelay || 1000)\n );\n }\n }\n } finally {\n this.processing = false;\n }\n\n // Clean up stale messages (reverse iteration to avoid index mutation bug)\n if (this.options.staleTimeout) {\n const now = Date.now();\n const staleTimeout = this.options.staleTimeout;\n for (let i = this.queue.length - 1; i >= 0; i--) {\n if (now - this.queue[i].queuedAt > staleTimeout) {\n this.logger.warn(\n { message: this.queue[i] },\n 'Message is stale, removing from queue'\n );\n this.queue.splice(i, 1);\n }\n }\n }\n }\n\n /**\n * Get the current size of the queue\n */\n getSize(): number {\n return this.queue.length;\n }\n\n /**\n * Clear all messages from the queue\n */\n clear(): void {\n this.queue.length = 0;\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["require_browser", "__commonJSMin", "exports", "module", "require_quick_format_unescaped", "__commonJSMin", "exports", "module", "tryStringify", "o", "format", "f", "args", "opts", "ss", "offset", "len", "objects", "index", "argLen", "str", "lastPos", "flen", "i", "type", "require_browser", "__commonJSMin", "exports", "module", "format", "pino", "_console", "pfGlobalThisOrFallback", "stdSerializers", "mock", "passthrough", "asErrValue", "levelToValue", "level", "logger", "baseLogFunctionSymbol", "hierarchySymbol", "logFallbackMap", "appendChildLogger", "parentLogger", "childLogger", "newEntry", "setupBaseLogFunctions", "levels", "proto", "logFunctions", "noop", "shouldSerialize", "serialize", "serializers", "k", "opts", "transmit", "stdErrSerialize", "customLevels", "getLevelVal", "getLevel", "setLevel", "setOpts", "getTimeFunction", "getLevels", "child", "createLogEventShape", "set", "bindings", "childOptions", "childOptionsSerializers", "childSerializers", "childSerialize", "applySerializers", "Child", "parent", "newLogger", "values", "labels", "invertObject", "obj", "inverted", "key", "nullTime", "epochTime", "unixTime", "isoTime", "getBindingChain", "hierarchy", "self", "rootLogger", "createWrap", "prependBindingsInArguments", "logFunc", "write", "ts", "
|
|
4
|
+
"sourcesContent": ["'use strict';\n\nmodule.exports = function () {\n throw new Error(\n 'ws does not work in the browser. Browser clients must use the native ' +\n 'WebSocket object'\n );\n};\n", "'use strict'\nfunction tryStringify (o) {\n try { return JSON.stringify(o) } catch(e) { return '\"[Circular]\"' }\n}\n\nmodule.exports = format\n\nfunction format(f, args, opts) {\n var ss = (opts && opts.stringify) || tryStringify\n var offset = 1\n if (typeof f === 'object' && f !== null) {\n var len = args.length + offset\n if (len === 1) return f\n var objects = new Array(len)\n objects[0] = ss(f)\n for (var index = 1; index < len; index++) {\n objects[index] = ss(args[index])\n }\n return objects.join(' ')\n }\n if (typeof f !== 'string') {\n return f\n }\n var argLen = args.length\n if (argLen === 0) return f\n var str = ''\n var a = 1 - offset\n var lastPos = -1\n var flen = (f && f.length) || 0\n for (var i = 0; i < flen;) {\n if (f.charCodeAt(i) === 37 && i + 1 < flen) {\n lastPos = lastPos > -1 ? lastPos : 0\n switch (f.charCodeAt(i + 1)) {\n case 100: // 'd'\n case 102: // 'f'\n if (a >= argLen)\n break\n if (args[a] == null) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += Number(args[a])\n lastPos = i + 2\n i++\n break\n case 105: // 'i'\n if (a >= argLen)\n break\n if (args[a] == null) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += Math.floor(Number(args[a]))\n lastPos = i + 2\n i++\n break\n case 79: // 'O'\n case 111: // 'o'\n case 106: // 'j'\n if (a >= argLen)\n break\n if (args[a] === undefined) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n var type = typeof args[a]\n if (type === 'string') {\n str += '\\'' + args[a] + '\\''\n lastPos = i + 2\n i++\n break\n }\n if (type === 'function') {\n str += args[a].name || '<anonymous>'\n lastPos = i + 2\n i++\n break\n }\n str += ss(args[a])\n lastPos = i + 2\n i++\n break\n case 115: // 's'\n if (a >= argLen)\n break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += String(args[a])\n lastPos = i + 2\n i++\n break\n case 37: // '%'\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += '%'\n lastPos = i + 2\n i++\n a--\n break\n }\n ++a\n }\n ++i\n }\n if (lastPos === -1)\n return f\n else if (lastPos < flen) {\n str += f.slice(lastPos)\n }\n\n return str\n}\n", "'use strict'\n\nconst format = require('quick-format-unescaped')\n\nmodule.exports = pino\n\nconst _console = pfGlobalThisOrFallback().console || {}\nconst stdSerializers = {\n mapHttpRequest: mock,\n mapHttpResponse: mock,\n wrapRequestSerializer: passthrough,\n wrapResponseSerializer: passthrough,\n wrapErrorSerializer: passthrough,\n req: mock,\n res: mock,\n err: asErrValue,\n errWithCause: asErrValue\n}\nfunction levelToValue (level, logger) {\n return level === 'silent'\n ? Infinity\n : logger.levels.values[level]\n}\nconst baseLogFunctionSymbol = Symbol('pino.logFuncs')\nconst hierarchySymbol = Symbol('pino.hierarchy')\n\nconst logFallbackMap = {\n error: 'log',\n fatal: 'error',\n warn: 'error',\n info: 'log',\n debug: 'log',\n trace: 'log'\n}\n\nfunction appendChildLogger (parentLogger, childLogger) {\n const newEntry = {\n logger: childLogger,\n parent: parentLogger[hierarchySymbol]\n }\n childLogger[hierarchySymbol] = newEntry\n}\n\nfunction setupBaseLogFunctions (logger, levels, proto) {\n const logFunctions = {}\n levels.forEach(level => {\n logFunctions[level] = proto[level] ? proto[level] : (_console[level] || _console[logFallbackMap[level] || 'log'] || noop)\n })\n logger[baseLogFunctionSymbol] = logFunctions\n}\n\nfunction shouldSerialize (serialize, serializers) {\n if (Array.isArray(serialize)) {\n const hasToFilter = serialize.filter(function (k) {\n return k !== '!stdSerializers.err'\n })\n return hasToFilter\n } else if (serialize === true) {\n return Object.keys(serializers)\n }\n\n return false\n}\n\nfunction pino (opts) {\n opts = opts || {}\n opts.browser = opts.browser || {}\n\n const transmit = opts.browser.transmit\n if (transmit && typeof transmit.send !== 'function') { throw Error('pino: transmit option must have a send function') }\n\n const proto = opts.browser.write || _console\n if (opts.browser.write) opts.browser.asObject = true\n const serializers = opts.serializers || {}\n const serialize = shouldSerialize(opts.browser.serialize, serializers)\n let stdErrSerialize = opts.browser.serialize\n\n if (\n Array.isArray(opts.browser.serialize) &&\n opts.browser.serialize.indexOf('!stdSerializers.err') > -1\n ) stdErrSerialize = false\n\n const customLevels = Object.keys(opts.customLevels || {})\n const levels = ['error', 'fatal', 'warn', 'info', 'debug', 'trace'].concat(customLevels)\n\n if (typeof proto === 'function') {\n levels.forEach(function (level) {\n proto[level] = proto\n })\n }\n if (opts.enabled === false || opts.browser.disabled) opts.level = 'silent'\n const level = opts.level || 'info'\n const logger = Object.create(proto)\n if (!logger.log) logger.log = noop\n\n setupBaseLogFunctions(logger, levels, proto)\n // setup root hierarchy entry\n appendChildLogger({}, logger)\n\n Object.defineProperty(logger, 'levelVal', {\n get: getLevelVal\n })\n Object.defineProperty(logger, 'level', {\n get: getLevel,\n set: setLevel\n })\n\n const setOpts = {\n transmit,\n serialize,\n asObject: opts.browser.asObject,\n asObjectBindingsOnly: opts.browser.asObjectBindingsOnly,\n formatters: opts.browser.formatters,\n reportCaller: opts.browser.reportCaller,\n levels,\n timestamp: getTimeFunction(opts),\n messageKey: opts.messageKey || 'msg',\n onChild: opts.onChild || noop\n }\n logger.levels = getLevels(opts)\n logger.level = level\n\n logger.isLevelEnabled = function (level) {\n if (!this.levels.values[level]) {\n return false\n }\n\n return this.levels.values[level] >= this.levels.values[this.level]\n }\n logger.setMaxListeners = logger.getMaxListeners =\n logger.emit = logger.addListener = logger.on =\n logger.prependListener = logger.once =\n logger.prependOnceListener = logger.removeListener =\n logger.removeAllListeners = logger.listeners =\n logger.listenerCount = logger.eventNames =\n logger.write = logger.flush = noop\n logger.serializers = serializers\n logger._serialize = serialize\n logger._stdErrSerialize = stdErrSerialize\n logger.child = function (...args) { return child.call(this, setOpts, ...args) }\n\n if (transmit) logger._logEvent = createLogEventShape()\n\n function getLevelVal () {\n return levelToValue(this.level, this)\n }\n\n function getLevel () {\n return this._level\n }\n function setLevel (level) {\n if (level !== 'silent' && !this.levels.values[level]) {\n throw Error('unknown level ' + level)\n }\n this._level = level\n\n set(this, setOpts, logger, 'error') // <-- must stay first\n set(this, setOpts, logger, 'fatal')\n set(this, setOpts, logger, 'warn')\n set(this, setOpts, logger, 'info')\n set(this, setOpts, logger, 'debug')\n set(this, setOpts, logger, 'trace')\n\n customLevels.forEach((level) => {\n set(this, setOpts, logger, level)\n })\n }\n\n function child (setOpts, bindings, childOptions) {\n if (!bindings) {\n throw new Error('missing bindings for child Pino')\n }\n childOptions = childOptions || {}\n if (serialize && bindings.serializers) {\n childOptions.serializers = bindings.serializers\n }\n const childOptionsSerializers = childOptions.serializers\n if (serialize && childOptionsSerializers) {\n var childSerializers = Object.assign({}, serializers, childOptionsSerializers)\n var childSerialize = opts.browser.serialize === true\n ? Object.keys(childSerializers)\n : serialize\n delete bindings.serializers\n applySerializers([bindings], childSerialize, childSerializers, this._stdErrSerialize)\n }\n function Child (parent) {\n this._childLevel = (parent._childLevel | 0) + 1\n\n // make sure bindings are available in the `set` function\n this.bindings = bindings\n\n if (childSerializers) {\n this.serializers = childSerializers\n this._serialize = childSerialize\n }\n if (transmit) {\n this._logEvent = createLogEventShape(\n [].concat(parent._logEvent.bindings, bindings)\n )\n }\n }\n Child.prototype = this\n const newLogger = new Child(this)\n\n // must happen before the level is assigned\n appendChildLogger(this, newLogger)\n newLogger.child = function (...args) { return child.call(this, setOpts, ...args) }\n // required to actually initialize the logger functions for any given child\n newLogger.level = childOptions.level || this.level // allow level to be set by childOptions\n setOpts.onChild(newLogger)\n\n return newLogger\n }\n return logger\n}\n\nfunction getLevels (opts) {\n const customLevels = opts.customLevels || {}\n\n const values = Object.assign({}, pino.levels.values, customLevels)\n const labels = Object.assign({}, pino.levels.labels, invertObject(customLevels))\n\n return {\n values,\n labels\n }\n}\n\nfunction invertObject (obj) {\n const inverted = {}\n Object.keys(obj).forEach(function (key) {\n inverted[obj[key]] = key\n })\n return inverted\n}\n\npino.levels = {\n values: {\n fatal: 60,\n error: 50,\n warn: 40,\n info: 30,\n debug: 20,\n trace: 10\n },\n labels: {\n 10: 'trace',\n 20: 'debug',\n 30: 'info',\n 40: 'warn',\n 50: 'error',\n 60: 'fatal'\n }\n}\n\npino.stdSerializers = stdSerializers\npino.stdTimeFunctions = Object.assign({}, { nullTime, epochTime, unixTime, isoTime })\n\nfunction getBindingChain (logger) {\n const bindings = []\n if (logger.bindings) {\n bindings.push(logger.bindings)\n }\n\n // traverse up the tree to get all bindings\n let hierarchy = logger[hierarchySymbol]\n while (hierarchy.parent) {\n hierarchy = hierarchy.parent\n if (hierarchy.logger.bindings) {\n bindings.push(hierarchy.logger.bindings)\n }\n }\n\n return bindings.reverse()\n}\n\nfunction set (self, opts, rootLogger, level) {\n // override the current log functions with either `noop` or the base log function\n Object.defineProperty(self, level, {\n value: (levelToValue(self.level, rootLogger) > levelToValue(level, rootLogger)\n ? noop\n : rootLogger[baseLogFunctionSymbol][level]),\n writable: true,\n enumerable: true,\n configurable: true\n })\n\n if (self[level] === noop) {\n if (!opts.transmit) return\n\n const transmitLevel = opts.transmit.level || self.level\n const transmitValue = levelToValue(transmitLevel, rootLogger)\n const methodValue = levelToValue(level, rootLogger)\n if (methodValue < transmitValue) return\n }\n\n // make sure the log format is correct\n self[level] = createWrap(self, opts, rootLogger, level)\n\n // prepend bindings if it is not the root logger\n const bindings = getBindingChain(self)\n if (bindings.length === 0) {\n // early exit in case for rootLogger\n return\n }\n self[level] = prependBindingsInArguments(bindings, self[level])\n}\n\nfunction prependBindingsInArguments (bindings, logFunc) {\n return function () {\n return logFunc.apply(this, [...bindings, ...arguments])\n }\n}\n\nfunction createWrap (self, opts, rootLogger, level) {\n return (function (write) {\n return function LOG () {\n const ts = opts.timestamp()\n const args = new Array(arguments.length)\n const proto = (Object.getPrototypeOf && Object.getPrototypeOf(this) === _console) ? _console : this\n for (var i = 0; i < args.length; i++) args[i] = arguments[i]\n\n var argsIsSerialized = false\n if (opts.serialize) {\n applySerializers(args, this._serialize, this.serializers, this._stdErrSerialize)\n argsIsSerialized = true\n }\n if (opts.asObject || opts.formatters) {\n const out = asObject(this, level, args, ts, opts)\n if (opts.reportCaller && out && out.length > 0 && out[0] && typeof out[0] === 'object') {\n try {\n const caller = getCallerLocation()\n if (caller) out[0].caller = caller\n } catch (e) {}\n }\n write.call(proto, ...out)\n } else {\n if (opts.reportCaller) {\n try {\n const caller = getCallerLocation()\n if (caller) args.push(caller)\n } catch (e) {}\n }\n write.apply(proto, args)\n }\n\n if (opts.transmit) {\n const transmitLevel = opts.transmit.level || self._level\n const transmitValue = levelToValue(transmitLevel, rootLogger)\n const methodValue = levelToValue(level, rootLogger)\n if (methodValue < transmitValue) return\n transmit(this, {\n ts,\n methodLevel: level,\n methodValue,\n transmitLevel,\n transmitValue: rootLogger.levels.values[opts.transmit.level || self._level],\n send: opts.transmit.send,\n val: levelToValue(self._level, rootLogger)\n }, args, argsIsSerialized)\n }\n }\n })(self[baseLogFunctionSymbol][level])\n}\n\nfunction asObject (logger, level, args, ts, opts) {\n const {\n level: levelFormatter,\n log: logObjectFormatter = (obj) => obj\n } = opts.formatters || {}\n const argsCloned = args.slice()\n let msg = argsCloned[0]\n const logObject = {}\n\n let lvl = (logger._childLevel | 0) + 1\n if (lvl < 1) lvl = 1\n\n if (ts) {\n logObject.time = ts\n }\n\n if (levelFormatter) {\n const formattedLevel = levelFormatter(level, logger.levels.values[level])\n Object.assign(logObject, formattedLevel)\n } else {\n logObject.level = logger.levels.values[level]\n }\n\n if (opts.asObjectBindingsOnly) {\n if (msg !== null && typeof msg === 'object') {\n while (lvl-- && typeof argsCloned[0] === 'object') {\n Object.assign(logObject, argsCloned.shift())\n }\n }\n\n const formattedLogObject = logObjectFormatter(logObject)\n return [formattedLogObject, ...argsCloned]\n } else {\n // deliberate, catching objects, arrays\n if (msg !== null && typeof msg === 'object') {\n while (lvl-- && typeof argsCloned[0] === 'object') {\n Object.assign(logObject, argsCloned.shift())\n }\n msg = argsCloned.length ? format(argsCloned.shift(), argsCloned) : undefined\n } else if (typeof msg === 'string') msg = format(argsCloned.shift(), argsCloned)\n if (msg !== undefined) logObject[opts.messageKey] = msg\n\n const formattedLogObject = logObjectFormatter(logObject)\n return [formattedLogObject]\n }\n}\n\nfunction applySerializers (args, serialize, serializers, stdErrSerialize) {\n for (const i in args) {\n if (stdErrSerialize && args[i] instanceof Error) {\n args[i] = pino.stdSerializers.err(args[i])\n } else if (typeof args[i] === 'object' && !Array.isArray(args[i]) && serialize) {\n for (const k in args[i]) {\n if (serialize.indexOf(k) > -1 && k in serializers) {\n args[i][k] = serializers[k](args[i][k])\n }\n }\n }\n }\n}\n\nfunction transmit (logger, opts, args, argsIsSerialized = false) {\n const send = opts.send\n const ts = opts.ts\n const methodLevel = opts.methodLevel\n const methodValue = opts.methodValue\n const val = opts.val\n const bindings = logger._logEvent.bindings\n\n if (!argsIsSerialized) {\n applySerializers(\n args,\n logger._serialize || Object.keys(logger.serializers),\n logger.serializers,\n logger._stdErrSerialize === undefined ? true : logger._stdErrSerialize\n )\n }\n\n logger._logEvent.ts = ts\n logger._logEvent.messages = args.filter(function (arg) {\n // bindings can only be objects, so reference equality check via indexOf is fine\n return bindings.indexOf(arg) === -1\n })\n\n logger._logEvent.level.label = methodLevel\n logger._logEvent.level.value = methodValue\n\n send(methodLevel, logger._logEvent, val)\n\n logger._logEvent = createLogEventShape(bindings)\n}\n\nfunction createLogEventShape (bindings) {\n return {\n ts: 0,\n messages: [],\n bindings: bindings || [],\n level: { label: '', value: 0 }\n }\n}\n\nfunction asErrValue (err) {\n const obj = {\n type: err.constructor.name,\n msg: err.message,\n stack: err.stack\n }\n for (const key in err) {\n if (obj[key] === undefined) {\n obj[key] = err[key]\n }\n }\n return obj\n}\n\nfunction getTimeFunction (opts) {\n if (typeof opts.timestamp === 'function') {\n return opts.timestamp\n }\n if (opts.timestamp === false) {\n return nullTime\n }\n return epochTime\n}\n\nfunction mock () { return {} }\nfunction passthrough (a) { return a }\nfunction noop () {}\n\nfunction nullTime () { return false }\nfunction epochTime () { return Date.now() }\nfunction unixTime () { return Math.round(Date.now() / 1000.0) }\nfunction isoTime () { return new Date(Date.now()).toISOString() } // using Date.now() for testability\n\n/* eslint-disable */\n/* istanbul ignore next */\nfunction pfGlobalThisOrFallback () {\n function defd (o) { return typeof o !== 'undefined' && o }\n try {\n if (typeof globalThis !== 'undefined') return globalThis\n Object.defineProperty(Object.prototype, 'globalThis', {\n get: function () {\n delete Object.prototype.globalThis\n return (this.globalThis = this)\n },\n configurable: true\n })\n return globalThis\n } catch (e) {\n return defd(self) || defd(window) || defd(this) || {}\n }\n}\n/* eslint-enable */\n\nmodule.exports.default = pino\nmodule.exports.pino = pino\n\n// Attempt to extract the user callsite (file:line:column)\n/* istanbul ignore next */\nfunction getCallerLocation () {\n const stack = (new Error()).stack\n if (!stack) return null\n const lines = stack.split('\\n')\n for (let i = 1; i < lines.length; i++) {\n const l = lines[i].trim()\n // skip frames from this file and internals\n if (/(^at\\s+)?(createWrap|LOG|set\\s*\\(|asObject|Object\\.apply|Function\\.apply)/.test(l)) continue\n if (l.indexOf('browser.js') !== -1) continue\n if (l.indexOf('node:internal') !== -1) continue\n if (l.indexOf('node_modules') !== -1) continue\n // try formats like: at func (file:line:col) or at file:line:col\n let m = l.match(/\\((.*?):(\\d+):(\\d+)\\)/)\n if (!m) m = l.match(/at\\s+(.*?):(\\d+):(\\d+)/)\n if (m) {\n const file = m[1]\n const line = m[2]\n const col = m[3]\n return file + ':' + line + ':' + col\n }\n }\n return null\n}\n", "import { NostrWSClient } from './core/client';\nimport type { NostrWSMessage, ConnectionState } from './types/index';\nimport type { NostrWSClientOptions } from './types/websocket';\n\n// Re-export the client\nexport { NostrWSClient };\n\n// Re-export types\nexport type {\n NostrWSMessage,\n NostrWSClientOptions,\n ConnectionState\n};\n\n// Export a default object for UMD bundle\nexport default {\n NostrWSClient\n};\n", "import WebSocket from 'ws';\nimport { \n NostrWSMessage, \n ConnectionState\n} from '../types/index.js';\nimport { NostrWSClientOptions } from '../types/websocket.js';\nimport { MessageQueue } from './queue.js';\nimport { createLogger } from '../utils/logger.js';\nimport { Logger } from 'pino';\n\n/**\n * NostrWSClient handles WebSocket connections to Nostr relays\n */\nexport class NostrWSClient {\n private ws: WebSocket | null = null;\n private readonly queue: MessageQueue;\n private readonly logger: Logger;\n private connectionState: ConnectionState = ConnectionState.DISCONNECTED;\n private reconnectAttempts = 0;\n private reconnectTimeout: NodeJS.Timeout | null = null;\n\n constructor(\n private readonly relayUrls: string[],\n private readonly options: NostrWSClientOptions = {}\n ) {\n this.logger = options.logger || createLogger('NostrWSClient');\n this.queue = new MessageQueue(\n async (message: NostrWSMessage) => {\n if (!this.ws || this.connectionState !== ConnectionState.CONNECTED) {\n throw new Error('Not connected to relay');\n }\n try {\n this.ws.send(JSON.stringify(message));\n this.logger.debug({ message }, 'Message sent');\n } catch (error) {\n this.logger.error({ error, message }, 'Failed to send message');\n throw error;\n }\n },\n {\n maxSize: options.queueSize,\n maxRetries: options.maxRetries,\n retryDelay: options.retryDelay\n }\n );\n }\n\n /**\n * Connect to the relay\n */\n async connect(): Promise<void> {\n if (this.connectionState === ConnectionState.CONNECTED) {\n this.logger.debug('Already connected');\n return;\n }\n\n if (this.connectionState === ConnectionState.CONNECTING) {\n this.logger.debug('Connection already in progress');\n return;\n }\n\n this.connectionState = ConnectionState.CONNECTING;\n\n try {\n const url = this.relayUrls[0]; // For now just use first relay\n\n if (url.startsWith('ws://') && !url.includes('localhost') && !url.includes('127.0.0.1')) {\n console.warn('[nostr-websocket] WARNING: Connecting over plaintext ws:// \u2014 messages are not encrypted');\n }\n\n this.ws = new WebSocket(url);\n\n await new Promise<void>((resolve, reject) => {\n const timeout = setTimeout(() => {\n reject(new Error('Connection timeout'));\n }, this.options.connectionTimeout || 5000);\n\n this.ws!.on('open', () => {\n clearTimeout(timeout);\n this.connectionState = ConnectionState.CONNECTED;\n this.reconnectAttempts = 0;\n this.logger.info('Connected to relay');\n resolve();\n });\n\n this.ws!.on('error', (error) => {\n clearTimeout(timeout);\n this.logger.error({ error }, 'WebSocket error');\n if (this.options.onError) {\n this.options.onError(error);\n }\n reject(error);\n });\n\n this.ws!.on('close', () => {\n this.handleDisconnect();\n });\n\n this.ws!.on('message', (data: WebSocket.Data) => {\n this.handleMessage(data);\n });\n });\n } catch (error) {\n this.logger.error({ error }, 'Failed to connect');\n this.handleDisconnect();\n throw error;\n }\n }\n\n /**\n * Disconnect from the relay\n */\n async disconnect(): Promise<void> {\n if (this.connectionState === ConnectionState.DISCONNECTED) {\n this.logger.debug('Already disconnected');\n return;\n }\n\n this.connectionState = ConnectionState.DISCONNECTED;\n \n if (this.reconnectTimeout) {\n clearTimeout(this.reconnectTimeout);\n this.reconnectTimeout = null;\n }\n\n if (this.ws) {\n this.ws.close();\n this.ws = null;\n }\n\n this.logger.info('Disconnected from relay');\n }\n\n /**\n * Send a message to the relay\n */\n async sendMessage(message: NostrWSMessage): Promise<void> {\n if (this.connectionState !== ConnectionState.CONNECTED) {\n throw new Error('Not connected to relay');\n }\n\n await this.queue.enqueue(message);\n }\n\n private handleMessage(data: WebSocket.Data): void {\n try {\n const message = JSON.parse(data.toString()) as NostrWSMessage;\n this.logger.debug({ message }, 'Received message');\n \n if (this.options.onMessage) {\n this.options.onMessage(data.toString());\n }\n } catch (error) {\n this.logger.error({ error, data }, 'Failed to parse message');\n if (this.options.onError) {\n this.options.onError(error as Error);\n }\n }\n }\n\n private handleDisconnect(): void {\n this.connectionState = ConnectionState.DISCONNECTED;\n this.ws = null;\n\n if (\n this.options.retryAttempts &&\n this.reconnectAttempts < this.options.retryAttempts\n ) {\n this.connectionState = ConnectionState.RECONNECTING;\n this.reconnectAttempts++;\n\n const baseDelay = this.options.retryDelay || 1000;\n const maxDelay = 30000; // 30 second cap\n const delay = Math.min(baseDelay * Math.pow(2, this.reconnectAttempts), maxDelay);\n const jitter = delay * 0.1 * Math.random(); // 10% jitter\n const totalDelay = delay + jitter;\n\n this.logger.info(\n { attempt: this.reconnectAttempts, maxAttempts: this.options.retryAttempts, delay: Math.round(totalDelay) },\n `Reconnecting in ${Math.round(totalDelay)}ms`\n );\n\n this.reconnectTimeout = setTimeout(() => {\n this.connect().catch(error => {\n this.logger.error({ error }, 'Reconnection failed');\n });\n }, totalDelay);\n } else {\n this.logger.warn('Max reconnection attempts reached');\n this.connectionState = ConnectionState.FAILED;\n }\n }\n\n /**\n * Get the current connection state\n */\n getConnectionState(): ConnectionState {\n return this.connectionState;\n }\n}\n", "/**\n * @file Logger utility\n * @module utils/logger\n */\n\nimport pino, { Logger } from 'pino';\n\n/**\n * Create a new logger instance\n * @param name Name of the logger\n * @returns Logger instance\n */\nexport function createLogger(name: string): Logger {\n return pino({\n name,\n level: process.env.LOG_LEVEL || 'info',\n timestamp: pino.stdTimeFunctions.isoTime\n });\n}\n\n/**\n * Get a logger instance for a specific component\n * @param component Component name for the logger\n * @returns Logger instance\n */\nexport function getLogger(component: string): Logger {\n return createLogger(component);\n}\n\n/**\n * Get a child logger instance\n * @param parent Parent logger instance\n * @param bindings Additional bindings for the child logger\n * @returns Child logger instance\n */\nexport function getChildLogger(parent: Logger, bindings: object): Logger {\n return parent.child(bindings);\n}\n\nexport type { Logger };\n", "/**\n * @file Message queue implementation\n * @module core/queue\n */\n\nimport { NostrWSMessage, MessagePriority, QueueItem } from '../types/index.js';\nimport { createLogger } from '../utils/logger.js';\nimport { Logger } from 'pino';\n\n/**\n * Message queue implementation for handling WebSocket messages\n */\nexport class MessageQueue {\n private readonly queue: QueueItem[] = [];\n private readonly logger: Logger;\n private processing = false;\n\n constructor(\n private readonly sender: (message: NostrWSMessage) => Promise<void>,\n private readonly options: {\n maxSize?: number;\n maxRetries?: number;\n retryDelay?: number;\n staleTimeout?: number;\n } = {}\n ) {\n this.logger = createLogger('MessageQueue');\n }\n\n /**\n * Add a message to the queue\n */\n async enqueue(message: NostrWSMessage): Promise<void> {\n if (\n this.options.maxSize &&\n this.queue.length >= this.options.maxSize\n ) {\n throw new Error('Queue is full');\n }\n\n const [type, ...data] = message;\n const queueItem: QueueItem = {\n type,\n data: data.length === 1 ? data[0] : data,\n priority: MessagePriority.NORMAL,\n queuedAt: Date.now(),\n retryCount: 0\n };\n\n this.queue.push(queueItem);\n this.queue.sort((a, b) => \n (a.priority === b.priority) ? \n (a.queuedAt - b.queuedAt) : \n (a.priority === MessagePriority.HIGH ? -1 : 1)\n );\n\n if (!this.processing) {\n this.processQueue().catch(error => {\n this.logger.error({ error }, 'Error processing queue');\n });\n }\n }\n\n /**\n * Process messages in the queue\n */\n private async processQueue(): Promise<void> {\n if (this.processing || this.queue.length === 0) {\n return;\n }\n\n this.processing = true;\n\n try {\n while (this.queue.length > 0) {\n const item = this.queue[0];\n const message: NostrWSMessage = [item.type, item.data];\n\n try {\n await this.sender(message);\n this.queue.shift();\n } catch (error) {\n this.logger.error({ error, message }, 'Failed to send message');\n\n if (\n this.options.maxRetries &&\n item.retryCount >= this.options.maxRetries\n ) {\n this.logger.warn(\n { message },\n 'Max retries reached, removing message from queue'\n );\n this.queue.shift();\n continue;\n }\n\n item.retryCount++;\n await new Promise(resolve =>\n setTimeout(resolve, this.options.retryDelay || 1000)\n );\n }\n }\n } finally {\n this.processing = false;\n }\n\n // Clean up stale messages (reverse iteration to avoid index mutation bug)\n if (this.options.staleTimeout) {\n const now = Date.now();\n const staleTimeout = this.options.staleTimeout;\n for (let i = this.queue.length - 1; i >= 0; i--) {\n if (now - this.queue[i].queuedAt > staleTimeout) {\n this.logger.warn(\n { message: this.queue[i] },\n 'Message is stale, removing from queue'\n );\n this.queue.splice(i, 1);\n }\n }\n }\n }\n\n /**\n * Get the current size of the queue\n */\n getSize(): number {\n return this.queue.length;\n }\n\n /**\n * Clear all messages from the queue\n */\n clear(): void {\n this.queue.length = 0;\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["require_browser", "__commonJSMin", "exports", "module", "require_quick_format_unescaped", "__commonJSMin", "exports", "module", "tryStringify", "o", "format", "f", "args", "opts", "ss", "offset", "len", "objects", "index", "argLen", "str", "a", "lastPos", "flen", "i", "type", "require_browser", "__commonJSMin", "exports", "module", "format", "pino", "_console", "pfGlobalThisOrFallback", "stdSerializers", "mock", "passthrough", "asErrValue", "levelToValue", "level", "logger", "baseLogFunctionSymbol", "hierarchySymbol", "logFallbackMap", "appendChildLogger", "parentLogger", "childLogger", "newEntry", "setupBaseLogFunctions", "levels", "proto", "logFunctions", "noop", "shouldSerialize", "serialize", "serializers", "k", "opts", "transmit", "stdErrSerialize", "customLevels", "getLevelVal", "getLevel", "setLevel", "setOpts", "getTimeFunction", "getLevels", "args", "child", "createLogEventShape", "set", "bindings", "childOptions", "childOptionsSerializers", "childSerializers", "childSerialize", "applySerializers", "Child", "parent", "newLogger", "values", "labels", "invertObject", "obj", "inverted", "key", "nullTime", "epochTime", "unixTime", "isoTime", "getBindingChain", "hierarchy", "self", "rootLogger", "transmitLevel", "transmitValue", "createWrap", "prependBindingsInArguments", "logFunc", "write", "ts", "i", "argsIsSerialized", "out", "asObject", "caller", "getCallerLocation", "methodValue", "levelFormatter", "logObjectFormatter", "argsCloned", "msg", "logObject", "lvl", "formattedLevel", "send", "methodLevel", "val", "arg", "err", "a", "defd", "o", "stack", "lines", "l", "m", "file", "line", "col", "browser_exports", "__export", "NostrWSClient", "browser_default", "import_ws", "import_pino", "createLogger", "name", "pino", "MessageQueue", "sender", "options", "createLogger", "message", "type", "data", "queueItem", "b", "error", "item", "resolve", "now", "staleTimeout", "i", "NostrWSClient", "relayUrls", "options", "createLogger", "MessageQueue", "message", "error", "url", "WebSocket", "resolve", "reject", "timeout", "data", "baseDelay", "delay", "jitter", "totalDelay", "browser_default", "NostrWSClient"]
|
|
7
7
|
}
|
|
@@ -7,13 +7,13 @@ export declare class MockPinoLogger implements Partial<Logger> {
|
|
|
7
7
|
useLevelLabels: boolean;
|
|
8
8
|
useOnlyCustomLevels: boolean;
|
|
9
9
|
customLevels: {};
|
|
10
|
-
debug: import("vitest").Mock<(
|
|
11
|
-
info: import("vitest").Mock<(
|
|
12
|
-
warn: import("vitest").Mock<(
|
|
13
|
-
error: import("vitest").Mock<(
|
|
14
|
-
fatal: import("vitest").Mock<(
|
|
15
|
-
trace: import("vitest").Mock<(
|
|
16
|
-
silent: import("vitest").Mock<(
|
|
10
|
+
debug: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
11
|
+
info: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
12
|
+
warn: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
13
|
+
error: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
14
|
+
fatal: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
15
|
+
trace: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
16
|
+
silent: import("vitest").Mock<import("@vitest/spy").Procedure>;
|
|
17
17
|
levels: {
|
|
18
18
|
values: {
|
|
19
19
|
fatal: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mockLogger.d.ts","sourceRoot":"","sources":["../../../src/__mocks__/mockLogger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAEjE,qBAAa,cAAe,YAAW,OAAO,CAAC,MAAM,CAAC;IACpD,KAAK,EAAE,MAAM,CAAW;IACxB,QAAQ,EAAE,MAAM,CAAM;IACtB,OAAO,EAAE,MAAM,CAAW;IAC1B,WAAW,EAAE,MAAM,CAAK;IACxB,cAAc,EAAE,OAAO,CAAQ;IAC/B,mBAAmB,EAAE,OAAO,CAAS;IACrC,YAAY,KAAM;IAElB,KAAK,
|
|
1
|
+
{"version":3,"file":"mockLogger.d.ts","sourceRoot":"","sources":["../../../src/__mocks__/mockLogger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAEjE,qBAAa,cAAe,YAAW,OAAO,CAAC,MAAM,CAAC;IACpD,KAAK,EAAE,MAAM,CAAW;IACxB,QAAQ,EAAE,MAAM,CAAM;IACtB,OAAO,EAAE,MAAM,CAAW;IAC1B,WAAW,EAAE,MAAM,CAAK;IACxB,cAAc,EAAE,OAAO,CAAQ;IAC/B,mBAAmB,EAAE,OAAO,CAAS;IACrC,YAAY,KAAM;IAElB,KAAK,yDAAW;IAChB,IAAI,yDAAW;IACf,IAAI,yDAAW;IACf,KAAK,yDAAW;IAChB,KAAK,yDAAW;IAChB,KAAK,yDAAW;IAChB,MAAM,yDAAW;IAEjB,MAAM;;;;;;;;;;;;;;;;;MAiBJ;IAEF,QAAQ,WAAc;IACtB,KAAK,sBAA2B;IAChC,cAAc,gBAAc;IAE5B,KAAK,CAAC,iBAAiB,SAAS,MAAM,GAAG,KAAK,EAC5C,SAAS,EAAE,QAAQ,EACnB,QAAQ,CAAC,EAAE,kBAAkB,CAAC,iBAAiB,CAAC,GAC/C,MAAM,CAAC,iBAAiB,CAAC;IAI5B,MAAM,CAAC,MAAM,IAAI,MAAM;CAGxB;AAED,eAAO,MAAM,gBAAgB,QAAO,MAAiC,CAAC"}
|
|
@@ -44,14 +44,14 @@ class NostrWSServer {
|
|
|
44
44
|
socket.on('message', async (data) => {
|
|
45
45
|
try {
|
|
46
46
|
const message = JSON.parse(data.toString());
|
|
47
|
-
logger.info('Received message
|
|
47
|
+
logger.info({ data: message }, 'Received message');
|
|
48
48
|
/**
|
|
49
49
|
* Calls the onMessage handler if provided
|
|
50
50
|
*/
|
|
51
51
|
await options.onMessage?.(message, socket);
|
|
52
52
|
}
|
|
53
53
|
catch (error) {
|
|
54
|
-
logger.error('Error processing message
|
|
54
|
+
logger.error({ error }, 'Error processing message');
|
|
55
55
|
/**
|
|
56
56
|
* Calls the onError handler if provided
|
|
57
57
|
*/
|
|
@@ -64,7 +64,7 @@ class NostrWSServer {
|
|
|
64
64
|
* @param {Error} error - The error that occurred
|
|
65
65
|
*/
|
|
66
66
|
socket.on('error', (error) => {
|
|
67
|
-
logger.error(
|
|
67
|
+
logger.error({ error, clientId: socket.clientId }, 'Client error');
|
|
68
68
|
/**
|
|
69
69
|
* Calls the onError handler if provided
|
|
70
70
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nostr-server.js","sourceRoot":"","sources":["../../../src/core/nostr-server.ts"],"names":[],"mappings":";;;AA4GA,wCAEC;AA9GD,2BAAgD;AAChD,+BAAoC;AACpC,kDAA+C;AAG/C,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,eAAe,CAAC,CAAC;AAE1C;;GAEG;AACH,MAAa,aAAa;IAMxB;;;;OAIG;IACH,YAAY,OAA6B;QACvC,IAAI,CAAC,MAAM,GAAG,IAAI,oBAAe,CAAC;YAChC,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,KAAK,EAAE,eAAe;SACzD,CAAC,CAAC;QAEH;;;;WAIG;QACH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,KAAK,EAAE,EAAa,EAAE,EAAE;YACnD,MAAM,MAAM,GAAG,EAAyB,CAAC;YACzC,MAAM,CAAC,QAAQ,GAAG,IAAA,SAAM,GAAE,CAAC;YAC3B,MAAM,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;YACjC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;YAEtB,MAAM,CAAC,IAAI,CAAC,qBAAqB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YAEpD;;eAEG;YACH,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC;YAErC;;;;eAIG;YACH,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE;gBAC1C,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAyB,CAAC;oBACpE,MAAM,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"nostr-server.js","sourceRoot":"","sources":["../../../src/core/nostr-server.ts"],"names":[],"mappings":";;;AA4GA,wCAEC;AA9GD,2BAAgD;AAChD,+BAAoC;AACpC,kDAA+C;AAG/C,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,eAAe,CAAC,CAAC;AAE1C;;GAEG;AACH,MAAa,aAAa;IAMxB;;;;OAIG;IACH,YAAY,OAA6B;QACvC,IAAI,CAAC,MAAM,GAAG,IAAI,oBAAe,CAAC;YAChC,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,KAAK,EAAE,eAAe;SACzD,CAAC,CAAC;QAEH;;;;WAIG;QACH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,KAAK,EAAE,EAAa,EAAE,EAAE;YACnD,MAAM,MAAM,GAAG,EAAyB,CAAC;YACzC,MAAM,CAAC,QAAQ,GAAG,IAAA,SAAM,GAAE,CAAC;YAC3B,MAAM,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;YACjC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;YAEtB,MAAM,CAAC,IAAI,CAAC,qBAAqB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YAEpD;;eAEG;YACH,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC;YAErC;;;;eAIG;YACH,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE;gBAC1C,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAyB,CAAC;oBACpE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,kBAAkB,CAAC,CAAC;oBACnD;;uBAEG;oBACH,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC7C,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,0BAA0B,CAAC,CAAC;oBACpD;;uBAEG;oBACH,OAAO,CAAC,OAAO,EAAE,CAAC,KAAc,EAAE,MAAM,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC,CAAC,CAAC;YAEH;;;;eAIG;YACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;gBAClC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,cAAc,CAAC,CAAC;gBACnE;;mBAEG;gBACH,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC;YAEH;;eAEG;YACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACtB,MAAM,CAAC,IAAI,CAAC,wBAAwB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACvD;;mBAEG;gBACH,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;YAC5B,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,IAAI;QACT,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;CACF;AA1FD,sCA0FC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,OAA6B;IAC1D,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC"}
|
package/dist/cjs/core/server.js
CHANGED
|
@@ -57,12 +57,12 @@ class NostrWSServer {
|
|
|
57
57
|
await this.handleMessage(socket, rawMessage);
|
|
58
58
|
}
|
|
59
59
|
catch (error) {
|
|
60
|
-
logger.error('Error processing message
|
|
60
|
+
logger.error({ error }, 'Error processing message');
|
|
61
61
|
this.options.onError?.(error, socket);
|
|
62
62
|
}
|
|
63
63
|
});
|
|
64
64
|
socket.on('error', (error) => {
|
|
65
|
-
logger.error(
|
|
65
|
+
logger.error({ error, clientId: socket.clientId }, 'Client error');
|
|
66
66
|
this.options.onError?.(error, socket);
|
|
67
67
|
});
|
|
68
68
|
socket.on('close', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/core/server.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,2BAAgD;AAChD,kDAAkD;AAClD,8DAA6D;AAI7D,+BAAoC;AAEpC,MAAM,MAAM,GAAG,IAAA,wBAAY,EAAC,eAAe,CAAC,CAAC;AAE7C;;GAEG;AACH,MAAa,aAAa;IAMxB,YAAY,OAA6B;QACvC,IAAI,CAAC,OAAO,GAAG;YACb,GAAG,OAAO;YACV,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI;YAC1B,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,WAAW;YACjC,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,IAAI;YAC9C,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,KAAK;YAC3C,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC;QAEF,IAAI,CAAC,GAAG,GAAG,IAAI,oBAAe,CAAC;YAC7B,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YACvB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YACvB,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,KAAK,EAAE,eAAe;SAC9D,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YAC5B,IAAI,CAAC,WAAW,GAAG,IAAA,mCAAiB,EAAC;gBACnC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU;aAC/B,EAAE,MAAM,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IAED;;OAEG;IACK,WAAW;QACjB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,KAAK,EAAE,EAAa,EAAE,EAAE;YAChD,MAAM,MAAM,GAAG,EAAyB,CAAC;YACzC,MAAM,CAAC,QAAQ,GAAG,IAAA,SAAM,GAAE,CAAC;YAC3B,MAAM,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;YACjC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;YAEtB,MAAM,CAAC,IAAI,CAAC,qBAAqB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YAEpD,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,cAAe,EAAE,CAAC;gBACzD,MAAM,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,OAAO,CAAC,cAAc,WAAW,CAAC,CAAC;gBACxE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;gBAC9C,OAAO;YACT,CAAC;YAED,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE;gBAC1C,IAAI,CAAC;oBACH,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACnC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;gBAC/C,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/core/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../src/crypto/handlers.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAeH,sDA2BC;AAQD,8CAkBC;AAlED,kDAA+C;AAE/C,sDAAqD;AAErD,2DAAoE;AAEpE,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,QAAQ,CAAC,CAAC;AAEnC;;;;GAIG;AACI,KAAK,UAAU,qBAAqB,CACzC,OAAuB;IAEvB,IAAI,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,2BAAa,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACjF,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YACvC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAe,CAAC;QAEvC,IAAI,CAAC,IAAA,kCAAa,EAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;YACrC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAA,oCAAe,EAAC,KAAyB,CAAC,CAAC;QACjE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;YAClC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../src/crypto/handlers.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAeH,sDA2BC;AAQD,8CAkBC;AAlED,kDAA+C;AAE/C,sDAAqD;AAErD,2DAAoE;AAEpE,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,QAAQ,CAAC,CAAC;AAEnC;;;;GAIG;AACI,KAAK,UAAU,qBAAqB,CACzC,OAAuB;IAEvB,IAAI,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,2BAAa,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACjF,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YACvC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAe,CAAC;QAEvC,IAAI,CAAC,IAAA,kCAAa,EAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;YACrC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAA,oCAAe,EAAC,KAAyB,CAAC,CAAC;QACjE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;YAClC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,iCAAiC,CAAC,CAAC;QAC3D,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,OAAuB,EAAE,MAAW;IACpE,IAAI,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,2BAAa,CAAC,KAAK,EAAE,CAAC;YAClE,OAAO,IAAI,CAAC,CAAC,uBAAuB;QACtC,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAe,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAChD,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAC7C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,iCAAiC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;QACnD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
package/dist/cjs/nips/nip-04.js
CHANGED
|
@@ -60,7 +60,7 @@ async function decryptDM(message, recipientPrivkey, senderPubkey, logger) {
|
|
|
60
60
|
}
|
|
61
61
|
catch (error) {
|
|
62
62
|
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
63
|
-
logger.error('Failed to decrypt DM
|
|
63
|
+
logger.error({ error: errorMessage }, 'Failed to decrypt DM');
|
|
64
64
|
throw new Error(`Failed to decrypt DM: ${errorMessage}`);
|
|
65
65
|
}
|
|
66
66
|
}
|
|
@@ -97,7 +97,7 @@ function validateEncryptedDM(message, logger) {
|
|
|
97
97
|
return true;
|
|
98
98
|
}
|
|
99
99
|
catch (error) {
|
|
100
|
-
logger.error('Error validating encrypted DM
|
|
100
|
+
logger.error({ error }, 'Error validating encrypted DM');
|
|
101
101
|
return false;
|
|
102
102
|
}
|
|
103
103
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nip-04.js","sourceRoot":"","sources":["../../../src/nips/nip-04.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAmBH,8CAoBC;AAUD,8BAsBC;AAQD,kDAwCC;AArHD,2DAAoE;AAIpE;;GAEG;AACU,QAAA,iBAAiB,GAAG,CAAC,CAAC;AAEnC;;;;;;;GAOG;AACI,KAAK,UAAU,iBAAiB,CACrC,OAAe,EACf,eAAuB,EACvB,aAAqB,EACrB,OAAmB,EAAE;IAErB,IAAI,CAAC;QACH,MAAM,gBAAgB,GAAG,MAAM,IAAA,mCAAc,EAAC,OAAO,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC;QACvF,OAAO,CAAC,OAAO,EAAE;gBACf,IAAI,EAAE,yBAAiB;gBACvB,OAAO,EAAE,gBAAgB;gBACzB,IAAI,EAAE;oBACJ,CAAC,GAAG,EAAE,eAAe,CAAC;oBACtB,GAAG,IAAI;iBACR;aACF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QAC9E,MAAM,IAAI,KAAK,CAAC,kCAAkC,YAAY,EAAE,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACI,KAAK,UAAU,SAAS,CAC7B,OAAuB,EACvB,gBAAwB,EACxB,YAAoB,EACpB,MAAc;IAEd,IAAI,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAe,CAAC;QACvC,IAAI,KAAK,CAAC,IAAI,KAAK,yBAAiB,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,MAAM,IAAA,mCAAc,EAAC,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;IAC7E,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QAC9E,MAAM,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"nip-04.js","sourceRoot":"","sources":["../../../src/nips/nip-04.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/nips/nip-13.js
CHANGED
|
@@ -82,7 +82,7 @@ function validateEventPoW(message, minDifficulty, logger) {
|
|
|
82
82
|
return difficulty >= minDifficulty;
|
|
83
83
|
}
|
|
84
84
|
catch (error) {
|
|
85
|
-
logger.error('Error validating proof of work
|
|
85
|
+
logger.error({ error }, 'Error validating proof of work');
|
|
86
86
|
return false;
|
|
87
87
|
}
|
|
88
88
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nip-13.js","sourceRoot":"","sources":["../../../src/nips/nip-13.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAWH,oDAYC;AASD,kDA+BC;AASD,4CAuBC;AAoBD,gEAsBC;AA6BD,oDA8BC;AAlMD,mCAAoC;AAIpC;;;;GAIG;AACH,SAAgB,oBAAoB,CAAC,GAAW;IAC9C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAClC,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YACjB,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;aAAM,CAAC;YACN,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YACjC,MAAM;QACR,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,mBAAmB,CACvC,KAA8B,EAC9B,gBAAwB,EACxB,cAAsB,OAAO;IAE7B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,SAAS,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;IAE/B,OAAO,KAAK,GAAG,WAAW,EAAE,CAAC;QAC3B,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;YAChC,CAAC;YACD,SAAS,CAAC,MAAM;YAChB,SAAS,CAAC,UAAU;YACpB,SAAS,CAAC,IAAI;YACd,SAAS,CAAC,IAAI;YACd,SAAS,CAAC,OAAO;YACjB,SAAS,CAAC,KAAK;SAChB,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnE,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAE9C,IAAI,UAAU,IAAI,gBAAgB,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,KAAK,EAAE,CAAC;IACV,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;AAC1E,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,gBAAgB,CAC9B,OAAuB,EACvB,aAAqB,EACrB,MAAc;IAEd,IAAI,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;YACtD,OAAO,IAAI,CAAC,CAAC,uBAAuB;QACtC,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAA4B,CAAC;QACpD,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC9C,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YACjC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,uBAAuB;QACvB,MAAM,UAAU,GAAG,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClD,OAAO,UAAU,IAAI,aAAa,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"nip-13.js","sourceRoot":"","sources":["../../../src/nips/nip-13.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/nips/nip-16.js
CHANGED
|
@@ -97,7 +97,7 @@ function validateEventTreatment(message, logger) {
|
|
|
97
97
|
return true;
|
|
98
98
|
}
|
|
99
99
|
catch (error) {
|
|
100
|
-
logger.error('Error validating event treatment
|
|
100
|
+
logger.error({ error }, 'Error validating event treatment');
|
|
101
101
|
return false;
|
|
102
102
|
}
|
|
103
103
|
}
|
|
@@ -148,7 +148,7 @@ function createEventStorageManager(logger) {
|
|
|
148
148
|
return newEvent.created_at > existingEvent.created_at;
|
|
149
149
|
}
|
|
150
150
|
catch (error) {
|
|
151
|
-
logger.error('Error checking event replacement
|
|
151
|
+
logger.error({ error }, 'Error checking event replacement');
|
|
152
152
|
return false;
|
|
153
153
|
}
|
|
154
154
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nip-16.js","sourceRoot":"","sources":["../../../src/nips/nip-16.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"nip-16.js","sourceRoot":"","sources":["../../../src/nips/nip-16.ts"],"names":[],"mappings":"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"}
|