@candypoets/nipworker 0.0.21 → 0.0.23
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/hooks.d.ts +4 -0
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +1 -1
- package/dist/hooks.js.map +1 -1
- package/dist/index.d.ts +4 -22
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index2.js.map +1 -1
- package/dist/index3.js +1 -1
- package/dist/index3.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +3 -3
package/dist/hooks.d.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
|
+
import { NostrEvent } from 'nostr-tools';
|
|
1
2
|
import { SubscriptionOptions } from '.';
|
|
2
3
|
import { Request } from './types';
|
|
3
4
|
|
|
4
5
|
export declare function useSubscription(subId: string, requests: Request[], callback?: any, options?: SubscriptionOptions): () => void;
|
|
6
|
+
export declare function usePublish(pubId: string, event: NostrEvent, callback?: any, options?: {
|
|
7
|
+
trackStatus?: boolean;
|
|
8
|
+
}): () => void;
|
|
5
9
|
//# sourceMappingURL=hooks.d.ts.map
|
package/dist/hooks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,mBAAmB,EAAE,MAAM,GAAG,CAAC;AAEtD,OAAO,KAAK,EAAuB,OAAO,EAAE,MAAM,WAAW,CAAC;AAE9D,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,OAAO,EAAE,EACnB,QAAQ,GAAE,GAAc,EACxB,OAAO,GAAE,mBAA4C,GACpD,MAAM,IAAI,CAsFZ"}
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,UAAU,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAgB,mBAAmB,EAAE,MAAM,GAAG,CAAC;AAEtD,OAAO,KAAK,EAAuB,OAAO,EAAE,MAAM,WAAW,CAAC;AAE9D,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,OAAO,EAAE,EACnB,QAAQ,GAAE,GAAc,EACxB,OAAO,GAAE,mBAA4C,GACpD,MAAM,IAAI,CAsFZ;AAGD,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,UAAU,EACjB,QAAQ,GAAE,GAAc,EACxB,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAA0B,GACzD,MAAM,IAAI,CA2CZ"}
|
package/dist/hooks.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as
|
|
1
|
+
import{n as T,S as m}from"./index3.js";function C(i,S,o=()=>{},l={closeOnEose:!1}){if(!i)return console.warn("useSharedSubscription: No subscription ID provided"),()=>{};let s=null,r=4,e=null,t=15;const E=4e3;let a=!0,u=!1,c=!1;const b=()=>{a=!1,e!==null&&clearTimeout(e),c&&!u&&(T.unsubscribe(i),u=!0)};s=T.subscribe(i,S,l),c=!0;const d=()=>{if(!a||!s){e!==null&&clearTimeout(e);return}const p=m.readMessages(s,r);p.hasNewData?(t=32,p.messages.forEach(n=>{"SubscriptionEvent"in n?n.SubscriptionEvent.event_type==="BUFFER_FULL"?(o([],"BUFFER_FULL"),b()):n.SubscriptionEvent.event_data.forEach(w=>{o(w,n.SubscriptionEvent.event_type)}):"ConnectionStatus"in n?(l.closeOnEose&&n.ConnectionStatus.status=="EOSE"&&b(),o(n.ConnectionStatus,"CONNECTION_STATUS")):"Eoce"in n?o([],"EOCE"):"Proofs"in n?o(n.Proofs):"Count"in n&&o([n.Count],"Count")}),r=p.newReadPosition):t=Math.min(t*2,E),e!==null&&clearTimeout(e),e=window.setTimeout(d,t)};return e=window.setTimeout(d,0),b}function f(i,S,o=()=>{},l={trackStatus:!0}){if(!i)return console.warn("usePublish: No publish ID provided"),()=>{};let s=null,r=4,e=null,t=!0;const E=()=>{t=!1,e!==null&&clearTimeout(e)};if(s=T.publish(i,S),l.trackStatus&&s){const a=()=>{if(!t||!s){e!==null&&clearTimeout(e);return}const u=m.readMessages(s,r);u.hasNewData&&(u.messages.forEach(c=>{"ConnectionStatus"in c&&o(c.ConnectionStatus,"CONNECTION_STATUS")}),r=u.newReadPosition),e=window.setTimeout(a,50)};e=window.setTimeout(a,0)}return E}export{f as usePublish,C as useSubscription};
|
package/dist/hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../src/hooks.ts"],"sourcesContent":["import { nostrManager, SubscriptionOptions } from \".\";\nimport { SharedBufferReader } from \"src/lib/sharedBuffer\";\nimport type { WorkerToMainMessage, Request } from \"src/types\";\n\nexport function useSubscription(\n subId: string,\n requests: Request[],\n callback: any = () => {},\n options: SubscriptionOptions = { closeOnEose: false },\n): () => void {\n if (!subId) {\n console.warn(\"useSharedSubscription: No subscription ID provided\");\n return () => {};\n }\n let buffer: SharedArrayBuffer | null = null;\n let lastReadPos: number = 4;\n let timeoutId: number | null = null;\n let pollInterval: number = 15; // Start at 5ms - very aggressive\n const maxInterval: number = 4000; // Max 4 seconds\n let running: boolean = true;\n\n let hasUnsubscribed = false;\n let hasSubscribed = false;\n\n const unsubscribe = (): void => {\n running = false;\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n }\n if (hasSubscribed && !hasUnsubscribed) {\n nostrManager.unsubscribe(subId);\n hasUnsubscribed = true;\n }\n };\n\n buffer = nostrManager.subscribe(subId, requests, options);\n\n hasSubscribed = true;\n\n const processEvents = (): void => {\n if (!running || !buffer) {\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n }\n return;\n }\n\n const result = SharedBufferReader.readMessages(buffer, lastReadPos);\n\n if (result.hasNewData) {\n // Found new data - reset to aggressive polling\n pollInterval = 32;\n\n result.messages.forEach((message: WorkerToMainMessage) => {\n if (\"SubscriptionEvent\" in message) {\n if (message.SubscriptionEvent.event_type === \"BUFFER_FULL\" as any) {\n callback([], \"BUFFER_FULL\");\n unsubscribe()\n } else {\n message.SubscriptionEvent.event_data.forEach((event) => {\n callback(event, message.SubscriptionEvent.event_type);\n });\n }\n } else if (\"
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../src/hooks.ts"],"sourcesContent":["import { EventTemplate, NostrEvent } from \"nostr-tools\";\nimport { nostrManager, SubscriptionOptions } from \".\";\nimport { SharedBufferReader } from \"src/lib/sharedBuffer\";\nimport type { WorkerToMainMessage, Request } from \"src/types\";\n\nexport function useSubscription(\n subId: string,\n requests: Request[],\n callback: any = () => {},\n options: SubscriptionOptions = { closeOnEose: false },\n): () => void {\n if (!subId) {\n console.warn(\"useSharedSubscription: No subscription ID provided\");\n return () => {};\n }\n let buffer: SharedArrayBuffer | null = null;\n let lastReadPos: number = 4;\n let timeoutId: number | null = null;\n let pollInterval: number = 15; // Start at 5ms - very aggressive\n const maxInterval: number = 4000; // Max 4 seconds\n let running: boolean = true;\n\n let hasUnsubscribed = false;\n let hasSubscribed = false;\n\n const unsubscribe = (): void => {\n running = false;\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n }\n if (hasSubscribed && !hasUnsubscribed) {\n nostrManager.unsubscribe(subId);\n hasUnsubscribed = true;\n }\n };\n\n buffer = nostrManager.subscribe(subId, requests, options);\n\n hasSubscribed = true;\n\n const processEvents = (): void => {\n if (!running || !buffer) {\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n }\n return;\n }\n\n const result = SharedBufferReader.readMessages(buffer, lastReadPos);\n\n if (result.hasNewData) {\n // Found new data - reset to aggressive polling\n pollInterval = 32;\n\n result.messages.forEach((message: WorkerToMainMessage) => {\n if (\"SubscriptionEvent\" in message) {\n if (message.SubscriptionEvent.event_type === \"BUFFER_FULL\" as any) {\n callback([], \"BUFFER_FULL\");\n unsubscribe()\n } else {\n message.SubscriptionEvent.event_data.forEach((event) => {\n callback(event, message.SubscriptionEvent.event_type);\n });\n }\n } else if (\"ConnectionStatus\" in message) {\n if (options.closeOnEose && message.ConnectionStatus.status == \"EOSE\") {\n unsubscribe();\n }\n callback(message.ConnectionStatus, \"CONNECTION_STATUS\");\n } else if (\"Eoce\" in message) {\n callback([], \"EOCE\");\n } else if (\"Proofs\" in message) {\n callback(message.Proofs);\n } else if (\"Count\" in message) {\n callback([message.Count], \"Count\")\n }\n });\n lastReadPos = result.newReadPosition;\n } else {\n // No new data - back off exponentially (faster backoff)\n pollInterval = Math.min(pollInterval * 2, maxInterval);\n }\n\n // Clear any existing timeout before scheduling a new one\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n }\n\n // Schedule next poll\n timeoutId = window.setTimeout(processEvents, pollInterval);\n };\n\n // Start after a minimal delay to ensure the return function is available\n timeoutId = window.setTimeout(processEvents, 0);\n\n return unsubscribe\n}\n\n\nexport function usePublish(\n pubId: string,\n event: NostrEvent,\n callback: any = () => {},\n options: { trackStatus?: boolean } = { trackStatus: true }\n): () => void {\n if (!pubId) {\n console.warn(\"usePublish: No publish ID provided\");\n return () => {};\n }\n\n let buffer: SharedArrayBuffer | null = null;\n let lastReadPos: number = 4;\n let timeoutId: number | null = null;\n let running = true;\n\n const unsubscribe = (): void => {\n running = false;\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n }\n };\n\n buffer = nostrManager.publish(pubId, event);\n\n if (options.trackStatus && buffer) {\n const poll = (): void => {\n if (!running || !buffer) {\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n }\n return;\n }\n const result = SharedBufferReader.readMessages(buffer, lastReadPos);\n if (result.hasNewData) {\n result.messages.forEach((message: WorkerToMainMessage) => {\n if (\"ConnectionStatus\" in message) {\n callback(message.ConnectionStatus, \"CONNECTION_STATUS\");\n }\n });\n lastReadPos = result.newReadPosition;\n }\n timeoutId = window.setTimeout(poll, 50);\n };\n timeoutId = window.setTimeout(poll, 0);\n }\n\n return unsubscribe;\n}\n"],"names":["useSubscription","subId","requests","callback","options","buffer","lastReadPos","timeoutId","pollInterval","maxInterval","running","hasUnsubscribed","hasSubscribed","unsubscribe","nostrManager","processEvents","result","SharedBufferReader","message","event","usePublish","pubId","poll"],"mappings":";AAKO,SAASA,EACdC,GACAC,GACAC,IAAgB,MAAM;AAAC,GACvBC,IAA+B,EAAE,aAAa,MAClC;AACZ,MAAI,CAACH;AACH,mBAAQ,KAAK,oDAAoD,GAC1D,MAAM;AAAA,IAAC;AAEhB,MAAII,IAAmC,MACnCC,IAAsB,GACtBC,IAA2B,MAC3BC,IAAuB;AAC3B,QAAMC,IAAsB;AAC5B,MAAIC,IAAmB,IAEnBC,IAAkB,IAClBC,IAAgB;AAEpB,QAAMC,IAAc,MAAY;AAC9B,IAAAH,IAAU,IACNH,MAAc,QAChB,aAAaA,CAAS,GAEpBK,KAAiB,CAACD,MACpBG,EAAa,YAAYb,CAAK,GAC9BU,IAAkB;AAAA,EAEtB;AAEA,EAAAN,IAASS,EAAa,UAAUb,GAAOC,GAAUE,CAAO,GAExDQ,IAAgB;AAEhB,QAAMG,IAAgB,MAAY;AAChC,QAAI,CAACL,KAAW,CAACL,GAAQ;AACvB,MAAIE,MAAc,QAChB,aAAaA,CAAS;AAExB;AAAA,IACF;AAEA,UAAMS,IAASC,EAAmB,aAAaZ,GAAQC,CAAW;AAElE,IAAIU,EAAO,cAETR,IAAe,IAEfQ,EAAO,SAAS,QAAQ,CAACE,MAAiC;AACxD,MAAI,uBAAuBA,IACrBA,EAAQ,kBAAkB,eAAe,iBAC3Cf,EAAS,CAAA,GAAI,aAAa,GAC1BU,EAAA,KAEAK,EAAQ,kBAAkB,WAAW,QAAQ,CAACC,MAAU;AACtD,QAAAhB,EAASgB,GAAOD,EAAQ,kBAAkB,UAAU;AAAA,MACtD,CAAC,IAEM,sBAAsBA,KAC3Bd,EAAQ,eAAec,EAAQ,iBAAiB,UAAU,UAC5DL,EAAA,GAEFV,EAASe,EAAQ,kBAAkB,mBAAmB,KAC7C,UAAUA,IACnBf,EAAS,CAAA,GAAI,MAAM,IACV,YAAYe,IACrBf,EAASe,EAAQ,MAAM,IACd,WAAWA,KACpBf,EAAS,CAACe,EAAQ,KAAK,GAAG,OAAO;AAAA,IAErC,CAAC,GACDZ,IAAcU,EAAO,mBAGrBR,IAAe,KAAK,IAAIA,IAAe,GAAGC,CAAW,GAInDF,MAAc,QAChB,aAAaA,CAAS,GAIxBA,IAAY,OAAO,WAAWQ,GAAeP,CAAY;AAAA,EAC3D;AAGA,SAAAD,IAAY,OAAO,WAAWQ,GAAe,CAAC,GAEvCF;AACT;AAGO,SAASO,EACdC,GACAF,GACAhB,IAAgB,MAAM;AAAC,GACvBC,IAAqC,EAAE,aAAa,MACxC;AACZ,MAAI,CAACiB;AACH,mBAAQ,KAAK,oCAAoC,GAC1C,MAAM;AAAA,IAAC;AAGhB,MAAIhB,IAAmC,MACnCC,IAAsB,GACtBC,IAA2B,MAC3BG,IAAU;AAEd,QAAMG,IAAc,MAAY;AAC9B,IAAAH,IAAU,IACNH,MAAc,QAChB,aAAaA,CAAS;AAAA,EAE1B;AAIA,MAFAF,IAASS,EAAa,QAAQO,GAAOF,CAAK,GAEtCf,EAAQ,eAAeC,GAAQ;AACjC,UAAMiB,IAAO,MAAY;AACvB,UAAI,CAACZ,KAAW,CAACL,GAAQ;AACvB,QAAIE,MAAc,QAChB,aAAaA,CAAS;AAExB;AAAA,MACF;AACA,YAAMS,IAASC,EAAmB,aAAaZ,GAAQC,CAAW;AAClE,MAAIU,EAAO,eACTA,EAAO,SAAS,QAAQ,CAACE,MAAiC;AACxD,QAAI,sBAAsBA,KACxBf,EAASe,EAAQ,kBAAkB,mBAAmB;AAAA,MAE1D,CAAC,GACDZ,IAAcU,EAAO,kBAEvBT,IAAY,OAAO,WAAWe,GAAM,EAAE;AAAA,IACxC;AACA,IAAAf,IAAY,OAAO,WAAWe,GAAM,CAAC;AAAA,EACvC;AAEA,SAAOT;AACT;"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,24 +1,9 @@
|
|
|
1
|
-
import { PipelineConfig,
|
|
2
|
-
import { AnyKind, ParsedEvent, SubscribeKind
|
|
1
|
+
import { PipelineConfig, Request, WorkerToMainMessage, ConnectionStatus } from '@candypoets/rust-main';
|
|
2
|
+
import { AnyKind, ParsedEvent, SubscribeKind } from './types';
|
|
3
3
|
import { NostrEvent } from 'nostr-tools';
|
|
4
4
|
|
|
5
|
-
export type { Request };
|
|
5
|
+
export type { Request, ConnectionStatus };
|
|
6
6
|
export type SubscriptionCallback = (data: ParsedEvent<AnyKind>[] | number, type: SubscribeKind) => void;
|
|
7
|
-
type PublishCallback = (data: RelayStatusUpdate, type: PublishKind) => void;
|
|
8
|
-
export declare enum PublishStatus {
|
|
9
|
-
StatusPending = "pending",
|
|
10
|
-
StatusSent = "sent",
|
|
11
|
-
StatusSuccess = "success",
|
|
12
|
-
StatusFailed = "failed",
|
|
13
|
-
StatusRejected = "rejected",
|
|
14
|
-
StatusConnError = "connection_error"
|
|
15
|
-
}
|
|
16
|
-
export type RelayStatus = {
|
|
17
|
-
relay: string;
|
|
18
|
-
status: PublishStatus;
|
|
19
|
-
message: string;
|
|
20
|
-
timestamp: number;
|
|
21
|
-
};
|
|
22
7
|
export interface SubscriptionOptions {
|
|
23
8
|
pipeline?: PipelineConfig;
|
|
24
9
|
closeOnEose?: boolean;
|
|
@@ -58,19 +43,16 @@ declare class NostrManager {
|
|
|
58
43
|
private createWorker;
|
|
59
44
|
private setupWorkerListener;
|
|
60
45
|
private handleWorkerMessage;
|
|
61
|
-
private handlePublishStatus;
|
|
62
46
|
private handleSignedEvent;
|
|
63
47
|
private handlePublicKey;
|
|
64
48
|
private createShortId;
|
|
65
|
-
private writeToBuffer;
|
|
66
49
|
subscribe(subscriptionId: string, requests: Request[], options?: SubscriptionOptions): SharedArrayBuffer;
|
|
67
50
|
getBuffer(subId: string): SharedArrayBuffer | undefined;
|
|
68
51
|
unsubscribe(subscriptionId: string): void;
|
|
69
|
-
publish(publish_id: string, event: NostrEvent
|
|
52
|
+
publish(publish_id: string, event: NostrEvent): SharedArrayBuffer;
|
|
70
53
|
setSigner(name: string, secretKeyHex: string): void;
|
|
71
54
|
signEvent(event: NostrEvent): void;
|
|
72
55
|
getPublicKey(): void;
|
|
73
|
-
addPublishCallbackAll(callback: (status: RelayStatusUpdate, eventId: string) => void): void;
|
|
74
56
|
cleanup(): void;
|
|
75
57
|
}
|
|
76
58
|
/**
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,OAAO,EAEZ,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACtB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAK/C,YAAY,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAI1C,MAAM,MAAM,oBAAoB,GAAG,CACjC,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,GAAG,MAAM,EACrC,IAAI,EAAE,aAAa,KAChB,IAAI,CAAC;AAGV,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,mBAAmB,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID;;;GAGG;AACH,cAAM,YAAY;IAChB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAOjB;IACJ,OAAO,CAAC,SAAS,CAAkD;IACnE,OAAO,CAAC,OAAO,CAA6B;IAErC,uBAAuB,WAAoC;gBAEtD,MAAM,GAAE,kBAAuB;IAK3C,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,mBAAmB;IA2B3B,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,aAAa;IAWrB,SAAS,CACP,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,GAAE,mBAAwB,GAChC,iBAAiB;IA4FpB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IASvD,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAWzC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,iBAAiB;IAkCjE,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAanD,SAAS,CAAC,KAAK,EAAE,UAAU;IAgB3B,YAAY;IAQZ,OAAO,IAAI,IAAI;CA0BhB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,GAAE,kBAAuB,GAC9B,YAAY,CAEd;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,cAAqB,CAAC;AAE/C,wBAAgB,OAAO,IAAI,IAAI,CAE9B;AAED,cAAc,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{R as a,a as s,c as r,i as o,n as e}from"./index3.js";import"@msgpack/msgpack";import"@candypoets/rust-worker/worker.js?worker";import{S as t}from"./index2.js";export{a as ReactionType,t as SignerTypes,s as cleanup,r as createNostrManager,o as isKind39089,e as nostrManager};
|
package/dist/index2.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index2.js","sources":["../src/types/index.ts"],"sourcesContent":["export {\n type MainToWorkerMessage,\n type PipeConfig,\n type PipelineConfig,\n type RelayStatusUpdate,\n type Request,\n type SubscriptionConfig,\n type WorkerToMainMessage,\n} from \"@candypoets/rust-main\";\n\nimport type { NostrEvent } from \"nostr-tools\";\n\nimport { type Kind0Parsed } from \"./kind0\";\nimport { type Kind1Parsed } from \"./kind1\";\nimport { type Kind10002Parsed } from \"./kind10002\";\nimport { type Kind10019Parsed } from \"./kind10019\";\nimport { type Kind17Parsed } from \"./kind17\";\nimport { type Kind17375Parsed } from \"./kind17375\";\nimport { type Kind3Parsed } from \"./kind3\";\nimport { type Kind39089Parsed } from \"./kind39089\";\nimport { type Kind4Parsed } from \"./kind4\";\nimport { type Kind6Parsed } from \"./kind6\";\nimport { type Kind7Parsed } from \"./kind7\";\nimport { type Kind7374Parsed } from \"./kind7374\";\nimport { type Kind7375Parsed } from \"./kind7375\";\nimport type { Kind7376Parsed } from \"./kind7376\";\nimport { type Kind9321Parsed } from \"./kind9321\";\nimport { type Kind9735Parsed } from \"./kind9735\";\n\nexport * from \"./proofs\";\n\nexport * from \"./kind0\";\nexport * from \"./kind1\";\nexport * from \"./kind10002\";\nexport * from \"./kind10019\";\nexport * from \"./kind17\";\nexport * from \"./kind17375\";\nexport * from \"./kind3\";\nexport * from \"./kind39089\";\nexport * from \"./kind4\";\nexport * from \"./kind6\";\nexport * from \"./kind7\";\nexport * from \"./kind7374\";\nexport * from \"./kind7375\";\nexport * from \"./kind7376\";\nexport * from \"./kind9321\";\nexport * from \"./kind9735\";\n\nexport type ParsedEvent<T> = NostrEvent & {\n parsed?: T | null;\n requests?: Request[];\n relays?: string[];\n};\n\nexport type ContentBlock = {\n type:\n | \"text\"\n | \"image\"\n | \"video\"\n | \"mediaGrid\"\n | \"code\"\n | \"link\"\n | \"npub\"\n | \"nprofile\"\n | \"note\"\n | \"nevent\"\n | \"naddr\"\n | \"hashtag\"\n | \"cashu\";\n text: string;\n data?: Record<string, any>;\n};\n\nexport type AnyKind =\n | Kind0Parsed\n | Kind1Parsed\n | Kind3Parsed\n | Kind4Parsed\n | Kind6Parsed\n | Kind7Parsed\n | Kind17Parsed\n | Kind9735Parsed\n | Kind9321Parsed // For Kind9321 which seems to use Kind1Parsed\n | Kind10002Parsed\n | Kind10019Parsed\n | Kind17375Parsed\n | Kind7374Parsed\n | Kind7375Parsed\n | Kind7376Parsed\n | Kind39089Parsed;\n\nexport type SubscribeKind =\n | \"CACHED_EVENT\"\n | \"FETCHED_EVENT\"\n | \"COUNT\"\n | \"
|
|
1
|
+
{"version":3,"file":"index2.js","sources":["../src/types/index.ts"],"sourcesContent":["export {\n type MainToWorkerMessage,\n type PipeConfig,\n type PipelineConfig,\n type RelayStatusUpdate,\n type Request,\n type SubscriptionConfig,\n type WorkerToMainMessage,\n} from \"@candypoets/rust-main\";\n\nimport type { NostrEvent } from \"nostr-tools\";\n\nimport { type Kind0Parsed } from \"./kind0\";\nimport { type Kind1Parsed } from \"./kind1\";\nimport { type Kind10002Parsed } from \"./kind10002\";\nimport { type Kind10019Parsed } from \"./kind10019\";\nimport { type Kind17Parsed } from \"./kind17\";\nimport { type Kind17375Parsed } from \"./kind17375\";\nimport { type Kind3Parsed } from \"./kind3\";\nimport { type Kind39089Parsed } from \"./kind39089\";\nimport { type Kind4Parsed } from \"./kind4\";\nimport { type Kind6Parsed } from \"./kind6\";\nimport { type Kind7Parsed } from \"./kind7\";\nimport { type Kind7374Parsed } from \"./kind7374\";\nimport { type Kind7375Parsed } from \"./kind7375\";\nimport type { Kind7376Parsed } from \"./kind7376\";\nimport { type Kind9321Parsed } from \"./kind9321\";\nimport { type Kind9735Parsed } from \"./kind9735\";\n\nexport * from \"./proofs\";\n\nexport * from \"./kind0\";\nexport * from \"./kind1\";\nexport * from \"./kind10002\";\nexport * from \"./kind10019\";\nexport * from \"./kind17\";\nexport * from \"./kind17375\";\nexport * from \"./kind3\";\nexport * from \"./kind39089\";\nexport * from \"./kind4\";\nexport * from \"./kind6\";\nexport * from \"./kind7\";\nexport * from \"./kind7374\";\nexport * from \"./kind7375\";\nexport * from \"./kind7376\";\nexport * from \"./kind9321\";\nexport * from \"./kind9735\";\n\nexport type ParsedEvent<T> = NostrEvent & {\n parsed?: T | null;\n requests?: Request[];\n relays?: string[];\n};\n\nexport type ContentBlock = {\n type:\n | \"text\"\n | \"image\"\n | \"video\"\n | \"mediaGrid\"\n | \"code\"\n | \"link\"\n | \"npub\"\n | \"nprofile\"\n | \"note\"\n | \"nevent\"\n | \"naddr\"\n | \"hashtag\"\n | \"cashu\";\n text: string;\n data?: Record<string, any>;\n};\n\nexport type AnyKind =\n | Kind0Parsed\n | Kind1Parsed\n | Kind3Parsed\n | Kind4Parsed\n | Kind6Parsed\n | Kind7Parsed\n | Kind17Parsed\n | Kind9735Parsed\n | Kind9321Parsed // For Kind9321 which seems to use Kind1Parsed\n | Kind10002Parsed\n | Kind10019Parsed\n | Kind17375Parsed\n | Kind7374Parsed\n | Kind7375Parsed\n | Kind7376Parsed\n | Kind39089Parsed;\n\nexport type SubscribeKind =\n | \"CACHED_EVENT\"\n | \"FETCHED_EVENT\"\n | \"COUNT\"\n | \"CONNECTION_STATUS\"\n | \"EOCE\"\n | \"BUFFER_FULL\";\n\nexport type PublishKind = \"PUBLISH_STATUS\";\n\nexport type SignerType = string;\n\n// Enum-like object for SignerType\nexport const SignerTypes = {\n PK: \"privkey\" as SignerType,\n // SignerTypeNone: \"none\" as SignerType\n} as const;\n"],"names":["SignerTypes"],"mappings":"AAwGO,MAAMA,IAAc;AAAA,EACzB,IAAI;AAAA;AAEN;"}
|
package/dist/index3.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{encode as l,decode as y}from"@msgpack/msgpack";import{unpack as
|
|
1
|
+
import{encode as l,decode as y}from"@msgpack/msgpack";import{unpack as M}from"msgpackr";import S from"@candypoets/rust-worker/worker.js?worker";import"./index2.js";class f{static initializeBuffer(e){new DataView(e).setUint32(0,4,!0)}static writeMessage(e,t){const s=new DataView(e),r=new Uint8Array(e),n=s.getUint32(0,!0),i=4+t.length;if(n+i>e.byteLength)return console.warn("Buffer full, cannot write message"),!1;s.setUint32(n,t.length,!0),r.set(t,n+4);const u=n+i;return s.setUint32(0,u,!0),!0}static writeMessageObject(e,t){try{const s=l(t);return this.writeMessage(e,new Uint8Array(s))}catch(s){return console.error("Failed to encode message:",s),!1}}static readMessages(e,t=0){const s=new DataView(e),r=new Uint8Array(e),n=s.getUint32(0,!0),i=Math.max(t,4);if(n<=i)return{messages:[],newReadPosition:i,hasNewData:!1};const u=[];let o=i;try{for(;o<n&&!(o+4>n);){const c=s.getUint32(o,!0);if(o+=4,c===1&&o+1<=n&&r[o]===255){const p={SubscriptionEvent:{subscription_id:"",event_type:"BUFFER_FULL",event_data:[]}};u.push(p),o+=1;continue}if(o+c>n)break;const h=r.slice(o,o+c),d=M(h);u.push(d),o+=c}return{messages:u,newReadPosition:o,hasNewData:u.length>0}}catch(c){return console.error("Failed to decode length-prefixed msgpack data from SharedArrayBuffer:",c),{messages:u,newReadPosition:i,hasNewData:!1}}}static readAllMessages(e){const t=this.readMessages(e,0);return{messages:t.messages,totalMessages:t.messages.length}}static getCurrentWritePosition(e){return new DataView(e).getUint32(0,!0)}static hasNewData(e,t){const s=this.getCurrentWritePosition(e),r=Math.max(t,4);return s>r}static calculateBufferSize(e=100,t=3072){const s=e*t,r=Math.floor(s*.25);return 4+s+r}}function E(a){return a.kind===39089}var b=(a=>(a.LIKE="+",a.DISLIKE="-",a.EMOJI="emoji",a.CUSTOM="custom",a))(b||{});class w{constructor(e={}){this.subscriptions=new Map,this.publishes=new Map,this.signers=new Map,this.PERPETUAL_SUBSCRIPTIONS=["notifications","starterpack"],this.worker=this.createWorker(e),this.setupWorkerListener()}createWorker(e){return new S}setupWorkerListener(){this.worker.onmessage=async e=>{if(e.data instanceof Uint8Array){let t=e.data;try{const s=y(t);this.handleWorkerMessage(s)}catch(s){console.error("Failed to decode worker message:",s)}finally{t&&(t.fill(0),t=null)}}else console.log("Received non-arrayBuffer message:",e.data)},this.worker.onerror=e=>{console.error("Worker error:",e)}}handleWorkerMessage(e){"Count"in e||("SignedEvent"in e?this.handleSignedEvent(e.SignedEvent.content,e.SignedEvent.signed_event):"PublicKey"in e?this.handlePublicKey(e.PublicKey.public_key):console.warn("Unknown message type from worker:",e))}handleSignedEvent(e,t){console.log("Signed event received:",e,t)}handlePublicKey(e){console.log("Public key received:",e)}createShortId(e){let t=0;for(let s=0;s<e.length;s++){const r=e.charCodeAt(s);t=(t<<5)-t+r,t=t&t}return Math.abs(t).toString(36).substring(0,63)}subscribe(e,t,s={}){const r=e.length<64?e:this.createShortId(e),n=this.subscriptions.get(r);if(n)return n.refCount++,n.buffer;const i={closeOnEose:!1,cacheFirst:!0,skipCache:!1,force:!1,enableOptimization:!0,...s},u=t.reduce((g,k)=>g+(k.limit||100),0),o=f.calculateBufferSize(u,s.bytesPerEvent);let c=new Uint8Array;s.initialMessage&&(c=l(s.initialMessage));const h=new SharedArrayBuffer(o+c.length);f.initializeBuffer(h),c.length>0&&(f.writeMessage(h,c)||console.error("Failed to write initial message to buffer")),this.subscriptions.set(r,{buffer:h,options:i,refCount:1});const d={pipeline:i.pipeline,closeOnEose:i.closeOnEose,cacheFirst:i.cacheFirst,timeoutMs:i.timeoutMs,maxEvents:i.maxEvents,enableOptimization:i.enableOptimization,skipCache:i.skipCache,force:i.force,bytesPerEvent:i.bytesPerEvent},p={Subscribe:{subscription_id:r,requests:t,config:d}};try{const g=l(p);return this.worker.postMessage({serializedMessage:g,sharedBuffer:h}),h}catch(g){throw this.subscriptions.delete(r),g}}getBuffer(e){const t=this.subscriptions.get(e);if(t)return t.refCount++,t.buffer}unsubscribe(e){const t=e.length<64?e:this.createShortId(e),s=this.subscriptions.get(t);s&&s.refCount--}publish(e,t){const s=new SharedArrayBuffer(3072);f.initializeBuffer(s);try{const r={kind:t.kind,content:t.content,tags:t.tags||[]},n=l({Publish:{publish_id:e,template:r}});return this.worker.postMessage({serializedMessage:n,sharedBuffer:s}),this.publishes.set(e,{buffer:s}),s}catch(r){throw console.error("Failed to publish event:",r),r}}setSigner(e,t){const s=l({SetSigner:{signer_type:e,private_key:t}});this.worker.postMessage(s),this.signers.set(e,t)}signEvent(e){const t={SignEvent:{template:{kind:e.kind,content:e.content,tags:e.tags}}},s=l(t);this.worker.postMessage(s)}getPublicKey(){const e=l({GetPublicKey:{}});this.worker.postMessage(e)}cleanup(){const e=[];for(const[t,s]of this.subscriptions.entries())s.refCount<=0&&!this.PERPETUAL_SUBSCRIPTIONS.includes(t)&&e.push(t);for(const t of e)if(this.subscriptions.get(t)){const s=l({Unsubscribe:{subscription_id:t}});this.worker.postMessage(s),this.subscriptions.delete(t)}}}function v(a={}){return new w(a)}const m=new w;function P(){m.cleanup()}export{b as R,f as S,P as a,v as c,E as i,m as n};
|
package/dist/index3.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index3.js","sources":["../src/lib/sharedBuffer.ts","../src/types/kind39089.ts","../src/types/kind7.ts","../src/index.ts"],"sourcesContent":["import { encode } from \"@msgpack/msgpack\";\nimport { unpack } from \"msgpackr\";\nimport type { WorkerToMainMessage } from \"src/types\";\n\n/**\n * Utility library for reading from SharedArrayBuffer with 4-byte header approach\n * Header format: [0-3]: Write position (4 bytes, little endian)\n * Data format: [4+]: [4-byte length][msgpack event][4-byte length][msgpack event]...\n */\nexport class SharedBufferReader {\n /**\n * Initialize a buffer for writing - sets the write position header to 4\n * @param buffer The SharedArrayBuffer to initialize\n */\n static initializeBuffer(buffer: SharedArrayBuffer): void {\n const view = new DataView(buffer);\n // Set initial write position to 4 (right after the header)\n view.setUint32(0, 4, true);\n }\n\n /**\n * Write a message to the SharedArrayBuffer\n * @param buffer The SharedArrayBuffer to write to\n * @param data The data to write (already encoded as Uint8Array)\n * @returns True if written successfully, false if buffer is full\n */\n static writeMessage(buffer: SharedArrayBuffer, data: Uint8Array): boolean {\n const view = new DataView(buffer);\n const uint8View = new Uint8Array(buffer);\n\n // Get current write position\n const currentWritePosition = view.getUint32(0, true);\n\n // Check if there's enough space (4 bytes for length + data length)\n const requiredSpace = 4 + data.length;\n if (currentWritePosition + requiredSpace > buffer.byteLength) {\n console.warn(\"Buffer full, cannot write message\");\n return false;\n }\n\n // Write the length prefix (4 bytes, little endian)\n view.setUint32(currentWritePosition, data.length, true);\n\n // Write the actual data\n uint8View.set(data, currentWritePosition + 4);\n\n // Update the write position header\n const newWritePosition = currentWritePosition + requiredSpace;\n view.setUint32(0, newWritePosition, true);\n\n return true;\n }\n\n /**\n * Write a message object to the SharedArrayBuffer (handles encoding)\n * @param buffer The SharedArrayBuffer to write to\n * @param message The message object to write\n * @returns True if written successfully, false if buffer is full\n */\n static writeMessageObject(buffer: SharedArrayBuffer, message: any): boolean {\n try {\n const encoded = encode(message);\n return this.writeMessage(buffer, new Uint8Array(encoded));\n } catch (error) {\n console.error(\"Failed to encode message:\", error);\n return false;\n }\n }\n /**\n * Read new messages from SharedArrayBuffer since last read position\n * @param buffer The SharedArrayBuffer to read from\n * @param lastReadPosition Last position read (default: 0, meaning read from beginning)\n * @returns Object containing new messages and updated read position\n */\n static readMessages(\n buffer: SharedArrayBuffer,\n lastReadPosition: number = 0,\n ): {\n messages: WorkerToMainMessage[];\n newReadPosition: number;\n hasNewData: boolean;\n } {\n const view = new DataView(buffer);\n const uint8View = new Uint8Array(buffer);\n\n // Read current write position from header (first 4 bytes, little endian)\n const currentWritePosition = view.getUint32(0, true);\n\n // Check if there's new data to read\n const dataStartOffset = 4; // Skip 4-byte write position header\n const actualLastReadPosition = Math.max(lastReadPosition, dataStartOffset);\n\n if (currentWritePosition <= actualLastReadPosition) {\n return {\n messages: [],\n newReadPosition: actualLastReadPosition,\n hasNewData: false,\n };\n }\n\n const messages: WorkerToMainMessage[] = [];\n let currentPos = actualLastReadPosition;\n\n try {\n // Read length-prefixed events\n while (currentPos < currentWritePosition) {\n // Read 4-byte length prefix (little endian)\n if (currentPos + 4 > currentWritePosition) break;\n const eventLength = view.getUint32(currentPos, true);\n currentPos += 4;\n\n // Check for special \"buffer full\" marker\n if (eventLength === 1) {\n if (currentPos + 1 <= currentWritePosition) {\n const marker = uint8View[currentPos];\n if (marker === 0xFF) {\n // Buffer full detected - create special message\n const bufferFullMessage: WorkerToMainMessage = {\n SubscriptionEvent: {\n subscription_id: \"\",\n event_type: \"BUFFER_FULL\" as any,\n event_data: []\n }\n };\n messages.push(bufferFullMessage);\n currentPos += 1;\n continue;\n }\n }\n }\n\n // Read the event data\n if (currentPos + eventLength > currentWritePosition) break;\n const eventData = uint8View.slice(currentPos, currentPos + eventLength);\n\n // Decode the event\n const message = unpack(eventData) as WorkerToMainMessage;\n messages.push(message);\n\n currentPos += eventLength;\n }\n\n return {\n messages,\n newReadPosition: currentPos,\n hasNewData: messages.length > 0,\n };\n } catch (error) {\n console.error(\n \"Failed to decode length-prefixed msgpack data from SharedArrayBuffer:\",\n error,\n );\n return {\n messages,\n newReadPosition: actualLastReadPosition,\n hasNewData: false,\n };\n }\n }\n\n /**\n * Read all messages from SharedArrayBuffer from the beginning (ignores lastReadPosition)\n * @param buffer The SharedArrayBuffer to read from\n * @returns Object containing all messages in the buffer\n */\n static readAllMessages(buffer: SharedArrayBuffer): {\n messages: WorkerToMainMessage[];\n totalMessages: number;\n } {\n const result = this.readMessages(buffer, 0); // Always start from beginning\n return {\n messages: result.messages,\n totalMessages: result.messages.length,\n };\n }\n\n /**\n * Get current write position from buffer header\n * @param buffer The SharedArrayBuffer to read from\n * @returns Current write position\n */\n static getCurrentWritePosition(buffer: SharedArrayBuffer): number {\n const view = new DataView(buffer);\n return view.getUint32(0, true);\n }\n\n /**\n * Check if buffer has new data since last read\n * @param buffer The SharedArrayBuffer to check\n * @param lastReadPosition Last position read\n * @returns True if there's new data to read\n */\n static hasNewData(\n buffer: SharedArrayBuffer,\n lastReadPosition: number,\n ): boolean {\n const currentWritePosition = this.getCurrentWritePosition(buffer);\n const dataStartOffset = 4;\n const actualLastReadPosition = Math.max(lastReadPosition, dataStartOffset);\n return currentWritePosition > actualLastReadPosition;\n }\n\n /**\n * Calculate recommended buffer size based on request limits\n * @param totalEventLimit Total expected events across all requests\n * @param bytesPerEvent Estimated bytes per event (default: 3072)\n * @returns Recommended buffer size in bytes\n */\n static calculateBufferSize(\n totalEventLimit: number = 100,\n bytesPerEvent: number = 3072,\n ): number {\n const headerSize = 4;\n const dataSize = totalEventLimit * bytesPerEvent;\n const overhead = Math.floor(dataSize * 0.25); // 25% overhead\n return headerSize + dataSize + overhead;\n }\n}\n","import type { ParsedEvent } from 'src/types';\n\nexport interface Kind39089Parsed {\n\tlist_identifier: string;\n\tpeople: string[];\n\ttitle?: string;\n\tdescription?: string;\n\timage?: string;\n}\n\nexport function isKind39089(event: ParsedEvent<unknown>): event is ParsedEvent<Kind39089Parsed> {\n\treturn event.kind === 39089;\n}\n","export enum ReactionType {\n\tLIKE = '+',\n\tDISLIKE = '-',\n\tEMOJI = 'emoji',\n\tCUSTOM = 'custom'\n}\n\nexport type Kind7Parsed = {\n\ttype: ReactionType;\n\teventId: string; // The id of the event being reacted to\n\tpubkey: string; // The pubkey of the author of the reacted event\n\teventKind?: number; // The kind of the event being reacted to (from k tag)\n\temoji?: {\n\t\tshortcode: string;\n\t\turl: string;\n\t};\n\ttargetCoordinates?: string; // For addressable events (from a tag)\n};\n","import { SharedBufferReader } from \"src/lib/sharedBuffer\";\nimport {\n type MainToWorkerMessage,\n type PipelineConfig,\n type RelayStatusUpdate,\n type Request,\n type SubscriptionConfig,\n type WorkerToMainMessage,\n} from \"@candypoets/rust-main\";\n\nimport type { AnyKind, ParsedEvent } from \"src/types\";\n\nimport { decode, encode } from \"@msgpack/msgpack\";\nimport type { NostrEvent } from \"nostr-tools\";\nimport type { SubscribeKind, PublishKind } from \"src/types\";\n\nimport RustWorker from \"@candypoets/rust-worker/worker.js?worker\";\n\n// Re-export types for external use\nexport type { Request };\n\n// Callback for subscription events\nexport type SubscriptionCallback = (\n data: ParsedEvent<AnyKind>[] | number,\n type: SubscribeKind,\n) => void;\ntype PublishCallback = (data: RelayStatusUpdate, type: PublishKind) => void;\n\nexport enum PublishStatus {\n StatusPending = \"pending\",\n StatusSent = \"sent\",\n StatusSuccess = \"success\",\n StatusFailed = \"failed\",\n StatusRejected = \"rejected\",\n StatusConnError = \"connection_error\",\n}\n\nexport type RelayStatus = {\n relay: string;\n status: PublishStatus;\n message: string;\n timestamp: number;\n};\n\nexport interface SubscriptionOptions {\n pipeline?: PipelineConfig;\n closeOnEose?: boolean;\n cacheFirst?: boolean;\n timeoutMs?: number;\n maxEvents?: number;\n enableOptimization?: boolean;\n skipCache?: boolean;\n force?: boolean;\n bytesPerEvent?: number;\n initialMessage?: WorkerToMainMessage;\n}\n\n/**\n * Configuration for the Nostr Manager\n */\nexport interface NostrManagerConfig {\n /**\n * Custom worker URL. If not provided, uses the bundled worker.\n */\n workerUrl?: string;\n /**\n * Custom worker instance. If provided, workerUrl is ignored.\n */\n worker?: Worker;\n}\n\n// const wasmReady = init(mainWasmUrl);\n\n/**\n * Pure TypeScript NostrClient that manages worker communication and state.\n * Uses WASM utilities for heavy lifting (encoding, decoding, crypto).\n */\nclass NostrManager {\n private worker: Worker;\n private subscriptions = new Map<\n string,\n {\n buffer: SharedArrayBuffer;\n options: SubscriptionOptions;\n refCount: number;\n }\n >();\n private publishes = new Map<string, PublishCallback>();\n private signers = new Map<string, string>(); // name -> secret key hex\n\n public PERPETUAL_SUBSCRIPTIONS = [\"notifications\", \"starterpack\"];\n\n constructor(config: NostrManagerConfig = {}) {\n this.worker = this.createWorker(config);\n this.setupWorkerListener();\n }\n\n private createWorker(config: NostrManagerConfig): Worker {\n return new RustWorker();\n }\n\n private setupWorkerListener() {\n this.worker.onmessage = async (event) => {\n // await wasmReady;\n if (event.data instanceof Uint8Array) {\n let uint8Array = event.data;\n try {\n const message: any = decode(uint8Array);\n this.handleWorkerMessage(message);\n } catch (error) {\n console.error(\"Failed to decode worker message:\", error);\n } finally {\n // Aggressively clear memory references\n if (uint8Array) {\n uint8Array.fill(0);\n (uint8Array as any) = null;\n }\n }\n } else {\n console.log(\"Received non-arrayBuffer message:\", event.data);\n }\n };\n\n this.worker.onerror = (error) => {\n console.error(\"Worker error:\", error);\n };\n }\n\n private handleWorkerMessage(message: WorkerToMainMessage) {\n if (\"PublishStatus\" in message) {\n this.handlePublishStatus(\n message.PublishStatus.publish_id,\n message.PublishStatus.status,\n );\n } else if (\"Count\" in message) {\n // this.handleSubscriptionCount(message.Count.subscription_id, message.Count.count);\n } else if (\"SignedEvent\" in message) {\n this.handleSignedEvent(\n message.SignedEvent.content,\n message.SignedEvent.signed_event,\n );\n } else if (\"PublicKey\" in message) {\n this.handlePublicKey(message.PublicKey.public_key);\n } else {\n console.warn(\"Unknown message type from worker:\", message);\n }\n }\n\n private handlePublishStatus(\n publishId: string,\n statuses: RelayStatusUpdate[],\n ) {\n const publishCallback = this.publishes.get(publishId);\n if (!statuses[0]) return;\n if (!publishCallback) {\n const publishAllCallback = this.publishes.get(\"*\");\n return (\n publishAllCallback && publishAllCallback(statuses[0], \"PUBLISH_STATUS\")\n );\n }\n\n if (statuses.length > 0) {\n publishCallback(statuses[0], \"PUBLISH_STATUS\");\n }\n }\n\n private handleSignedEvent(content: string, signedEvent: any) {\n console.log(\"Signed event received:\", content, signedEvent);\n }\n\n private handlePublicKey(publicKey: string) {\n console.log(\"Public key received:\", publicKey);\n }\n\n private createShortId(input: string): string {\n let hash = 0;\n for (let i = 0; i < input.length; i++) {\n const char = input.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n const shortId = Math.abs(hash).toString(36);\n return shortId.substring(0, 63);\n }\n\n private writeToBuffer(\n sharedBuffer: SharedArrayBuffer,\n data: Uint8Array\n ): void {\n // Get the buffer as Uint8Array for manipulation\n const bufferUint8 = new Uint8Array(sharedBuffer);\n\n // Write the length prefix (4 bytes, little endian) at position 0\n const lengthView = new DataView(new ArrayBuffer(4));\n lengthView.setUint32(0, data.length, true); // little endian\n bufferUint8.set(new Uint8Array(lengthView.buffer), 0);\n\n // Write the actual data after the length prefix (starting at position 4)\n bufferUint8.set(data, 4);\n }\n\n subscribe(\n subscriptionId: string,\n requests: Request[],\n options: SubscriptionOptions = {},\n ): SharedArrayBuffer {\n const subId =\n subscriptionId.length < 64\n ? subscriptionId\n : this.createShortId(subscriptionId);\n\n const existingSubscription = this.subscriptions.get(subId);\n\n if (existingSubscription) {\n existingSubscription.refCount++;\n return existingSubscription.buffer;\n }\n\n const defaultOptions: SubscriptionOptions = {\n closeOnEose: false,\n cacheFirst: true,\n skipCache: false,\n force: false,\n enableOptimization: true,\n ...options,\n };\n\n const totalLimit = requests.reduce(\n (sum, req) => sum + (req.limit || 100),\n 0,\n );\n\n const bufferSize = SharedBufferReader.calculateBufferSize(\n totalLimit,\n options.bytesPerEvent,\n );\n\n let initialMessage: Uint8Array<ArrayBufferLike> = new Uint8Array();\n\n if(options.initialMessage) {\n initialMessage = encode(options.initialMessage);\n }\n\n const buffer = new SharedArrayBuffer(bufferSize + initialMessage.length);\n\n // Initialize the buffer (sets write position to 4)\n SharedBufferReader.initializeBuffer(buffer);\n\n // Write the initial message if provided\n if(initialMessage.length > 0) {\n const success = SharedBufferReader.writeMessage(buffer, initialMessage);\n if (!success) {\n console.error(\"Failed to write initial message to buffer\");\n }\n }\n\n this.subscriptions.set(subId, {\n buffer,\n options: defaultOptions,\n refCount: 1,\n });\n\n // Convert SubscriptionOptions to SubscriptionConfig for the worker\n const config: SubscriptionConfig = {\n pipeline: defaultOptions.pipeline,\n closeOnEose: defaultOptions.closeOnEose,\n cacheFirst: defaultOptions.cacheFirst,\n timeoutMs: defaultOptions.timeoutMs,\n maxEvents: defaultOptions.maxEvents,\n enableOptimization: defaultOptions.enableOptimization,\n skipCache: defaultOptions.skipCache,\n force: defaultOptions.force,\n bytesPerEvent: defaultOptions.bytesPerEvent,\n };\n\n const message: MainToWorkerMessage = {\n Subscribe: {\n subscription_id: subId,\n requests: requests,\n config: config,\n },\n };\n\n try {\n const pack = encode(message);\n this.worker.postMessage({\n serializedMessage: pack,\n sharedBuffer: buffer,\n });\n\n return buffer;\n } catch (error) {\n this.subscriptions.delete(subId);\n throw error;\n }\n }\n\n getBuffer(subId: string): SharedArrayBuffer | undefined {\n const existingSubscription = this.subscriptions.get(subId);\n if (existingSubscription) {\n existingSubscription.refCount++;\n return existingSubscription.buffer;\n }\n return undefined;\n }\n\n unsubscribe(subscriptionId: string): void {\n const subId =\n subscriptionId.length < 64\n ? subscriptionId\n : this.createShortId(subscriptionId);\n const subscription = this.subscriptions.get(subId);\n if (subscription) {\n subscription.refCount--;\n }\n }\n\n publish(publish_id: string, event: NostrEvent, callback?: PublishCallback) {\n try {\n if (callback) {\n this.publishes.set(publish_id, callback);\n }\n\n const template = {\n kind: event.kind,\n content: event.content,\n tags: event.tags || [],\n };\n\n const message: MainToWorkerMessage = {\n Publish: {\n publish_id: publish_id,\n template,\n },\n };\n\n const p = encode(message);\n this.worker.postMessage(p);\n } catch (error) {\n console.error(\"Failed to publish event:\", error);\n throw error;\n }\n }\n\n setSigner(name: string, secretKeyHex: string): void {\n const message: MainToWorkerMessage = {\n SetSigner: {\n signer_type: name,\n private_key: secretKeyHex,\n },\n };\n\n const pack = encode(message);\n this.worker.postMessage(pack);\n this.signers.set(name, secretKeyHex);\n }\n\n signEvent(event: NostrEvent) {\n const template = {\n kind: event.kind,\n content: event.content,\n tags: event.tags,\n };\n\n const message: MainToWorkerMessage = {\n SignEvent: {\n template: template,\n },\n };\n const pack = encode(message);\n this.worker.postMessage(pack);\n }\n\n getPublicKey() {\n const message: MainToWorkerMessage = {\n GetPublicKey: {},\n };\n const pack = encode(message);\n this.worker.postMessage(pack);\n }\n\n addPublishCallbackAll(\n callback: (status: RelayStatusUpdate, eventId: string) => void,\n ) {\n this.publishes.set(\"*\", callback as any);\n }\n\n cleanup(): void {\n const subscriptionsToDelete: string[] = [];\n\n for (const [subId, subscription] of this.subscriptions.entries()) {\n if (\n subscription.refCount <= 0 &&\n !this.PERPETUAL_SUBSCRIPTIONS.includes(subId)\n ) {\n subscriptionsToDelete.push(subId);\n }\n }\n\n for (const subId of subscriptionsToDelete) {\n const subscription = this.subscriptions.get(subId);\n if (subscription) {\n const message: MainToWorkerMessage = {\n Unsubscribe: {\n subscription_id: subId,\n },\n };\n const pack = encode(message);\n this.worker.postMessage(pack);\n this.subscriptions.delete(subId);\n }\n }\n }\n}\n\n/**\n * Factory function to create a new NostrManager instance.\n * @param config - Configuration for the NostrManager.\n * @returns A new instance of NostrManager.\n */\nexport function createNostrManager(\n config: NostrManagerConfig = {},\n): NostrManager {\n return new NostrManager(config);\n}\n\n/**\n * Default singleton instance of the NostrManager.\n * Useful for applications that only need one instance.\n */\nexport const nostrManager = new NostrManager();\n\nexport function cleanup(): void {\n nostrManager.cleanup();\n}\n\nexport * from \"./types\";\n"],"names":["SharedBufferReader","buffer","data","view","uint8View","currentWritePosition","requiredSpace","newWritePosition","message","encoded","encode","error","lastReadPosition","actualLastReadPosition","messages","currentPos","eventLength","bufferFullMessage","eventData","unpack","result","totalEventLimit","bytesPerEvent","dataSize","overhead","isKind39089","event","ReactionType","PublishStatus","NostrManager","config","RustWorker","uint8Array","decode","publishId","statuses","publishCallback","publishAllCallback","content","signedEvent","publicKey","input","hash","i","char","sharedBuffer","bufferUint8","lengthView","subscriptionId","requests","options","subId","existingSubscription","defaultOptions","totalLimit","sum","req","bufferSize","initialMessage","pack","subscription","publish_id","callback","template","p","name","secretKeyHex","subscriptionsToDelete","createNostrManager","nostrManager","cleanup"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index3.js","sources":["../src/lib/sharedBuffer.ts","../src/types/kind39089.ts","../src/types/kind7.ts","../src/index.ts"],"sourcesContent":["import { encode } from \"@msgpack/msgpack\";\nimport { unpack } from \"msgpackr\";\nimport type { WorkerToMainMessage } from \"src/types\";\n\n/**\n * Utility library for reading from SharedArrayBuffer with 4-byte header approach\n * Header format: [0-3]: Write position (4 bytes, little endian)\n * Data format: [4+]: [4-byte length][msgpack event][4-byte length][msgpack event]...\n */\nexport class SharedBufferReader {\n /**\n * Initialize a buffer for writing - sets the write position header to 4\n * @param buffer The SharedArrayBuffer to initialize\n */\n static initializeBuffer(buffer: SharedArrayBuffer): void {\n const view = new DataView(buffer);\n // Set initial write position to 4 (right after the header)\n view.setUint32(0, 4, true);\n }\n\n /**\n * Write a message to the SharedArrayBuffer\n * @param buffer The SharedArrayBuffer to write to\n * @param data The data to write (already encoded as Uint8Array)\n * @returns True if written successfully, false if buffer is full\n */\n static writeMessage(buffer: SharedArrayBuffer, data: Uint8Array): boolean {\n const view = new DataView(buffer);\n const uint8View = new Uint8Array(buffer);\n\n // Get current write position\n const currentWritePosition = view.getUint32(0, true);\n\n // Check if there's enough space (4 bytes for length + data length)\n const requiredSpace = 4 + data.length;\n if (currentWritePosition + requiredSpace > buffer.byteLength) {\n console.warn(\"Buffer full, cannot write message\");\n return false;\n }\n\n // Write the length prefix (4 bytes, little endian)\n view.setUint32(currentWritePosition, data.length, true);\n\n // Write the actual data\n uint8View.set(data, currentWritePosition + 4);\n\n // Update the write position header\n const newWritePosition = currentWritePosition + requiredSpace;\n view.setUint32(0, newWritePosition, true);\n\n return true;\n }\n\n /**\n * Write a message object to the SharedArrayBuffer (handles encoding)\n * @param buffer The SharedArrayBuffer to write to\n * @param message The message object to write\n * @returns True if written successfully, false if buffer is full\n */\n static writeMessageObject(buffer: SharedArrayBuffer, message: any): boolean {\n try {\n const encoded = encode(message);\n return this.writeMessage(buffer, new Uint8Array(encoded));\n } catch (error) {\n console.error(\"Failed to encode message:\", error);\n return false;\n }\n }\n /**\n * Read new messages from SharedArrayBuffer since last read position\n * @param buffer The SharedArrayBuffer to read from\n * @param lastReadPosition Last position read (default: 0, meaning read from beginning)\n * @returns Object containing new messages and updated read position\n */\n static readMessages(\n buffer: SharedArrayBuffer,\n lastReadPosition: number = 0,\n ): {\n messages: WorkerToMainMessage[];\n newReadPosition: number;\n hasNewData: boolean;\n } {\n const view = new DataView(buffer);\n const uint8View = new Uint8Array(buffer);\n\n // Read current write position from header (first 4 bytes, little endian)\n const currentWritePosition = view.getUint32(0, true);\n\n // Check if there's new data to read\n const dataStartOffset = 4; // Skip 4-byte write position header\n const actualLastReadPosition = Math.max(lastReadPosition, dataStartOffset);\n\n if (currentWritePosition <= actualLastReadPosition) {\n return {\n messages: [],\n newReadPosition: actualLastReadPosition,\n hasNewData: false,\n };\n }\n\n const messages: WorkerToMainMessage[] = [];\n let currentPos = actualLastReadPosition;\n\n try {\n // Read length-prefixed events\n while (currentPos < currentWritePosition) {\n // Read 4-byte length prefix (little endian)\n if (currentPos + 4 > currentWritePosition) break;\n const eventLength = view.getUint32(currentPos, true);\n currentPos += 4;\n\n // Check for special \"buffer full\" marker\n if (eventLength === 1) {\n if (currentPos + 1 <= currentWritePosition) {\n const marker = uint8View[currentPos];\n if (marker === 0xFF) {\n // Buffer full detected - create special message\n const bufferFullMessage: WorkerToMainMessage = {\n SubscriptionEvent: {\n subscription_id: \"\",\n event_type: \"BUFFER_FULL\" as any,\n event_data: []\n }\n };\n messages.push(bufferFullMessage);\n currentPos += 1;\n continue;\n }\n }\n }\n\n // Read the event data\n if (currentPos + eventLength > currentWritePosition) break;\n const eventData = uint8View.slice(currentPos, currentPos + eventLength);\n\n // Decode the event\n const message = unpack(eventData) as WorkerToMainMessage;\n messages.push(message);\n\n currentPos += eventLength;\n }\n\n return {\n messages,\n newReadPosition: currentPos,\n hasNewData: messages.length > 0,\n };\n } catch (error) {\n console.error(\n \"Failed to decode length-prefixed msgpack data from SharedArrayBuffer:\",\n error,\n );\n return {\n messages,\n newReadPosition: actualLastReadPosition,\n hasNewData: false,\n };\n }\n }\n\n /**\n * Read all messages from SharedArrayBuffer from the beginning (ignores lastReadPosition)\n * @param buffer The SharedArrayBuffer to read from\n * @returns Object containing all messages in the buffer\n */\n static readAllMessages(buffer: SharedArrayBuffer): {\n messages: WorkerToMainMessage[];\n totalMessages: number;\n } {\n const result = this.readMessages(buffer, 0); // Always start from beginning\n return {\n messages: result.messages,\n totalMessages: result.messages.length,\n };\n }\n\n /**\n * Get current write position from buffer header\n * @param buffer The SharedArrayBuffer to read from\n * @returns Current write position\n */\n static getCurrentWritePosition(buffer: SharedArrayBuffer): number {\n const view = new DataView(buffer);\n return view.getUint32(0, true);\n }\n\n /**\n * Check if buffer has new data since last read\n * @param buffer The SharedArrayBuffer to check\n * @param lastReadPosition Last position read\n * @returns True if there's new data to read\n */\n static hasNewData(\n buffer: SharedArrayBuffer,\n lastReadPosition: number,\n ): boolean {\n const currentWritePosition = this.getCurrentWritePosition(buffer);\n const dataStartOffset = 4;\n const actualLastReadPosition = Math.max(lastReadPosition, dataStartOffset);\n return currentWritePosition > actualLastReadPosition;\n }\n\n /**\n * Calculate recommended buffer size based on request limits\n * @param totalEventLimit Total expected events across all requests\n * @param bytesPerEvent Estimated bytes per event (default: 3072)\n * @returns Recommended buffer size in bytes\n */\n static calculateBufferSize(\n totalEventLimit: number = 100,\n bytesPerEvent: number = 3072,\n ): number {\n const headerSize = 4;\n const dataSize = totalEventLimit * bytesPerEvent;\n const overhead = Math.floor(dataSize * 0.25); // 25% overhead\n return headerSize + dataSize + overhead;\n }\n}\n","import type { ParsedEvent } from 'src/types';\n\nexport interface Kind39089Parsed {\n\tlist_identifier: string;\n\tpeople: string[];\n\ttitle?: string;\n\tdescription?: string;\n\timage?: string;\n}\n\nexport function isKind39089(event: ParsedEvent<unknown>): event is ParsedEvent<Kind39089Parsed> {\n\treturn event.kind === 39089;\n}\n","export enum ReactionType {\n\tLIKE = '+',\n\tDISLIKE = '-',\n\tEMOJI = 'emoji',\n\tCUSTOM = 'custom'\n}\n\nexport type Kind7Parsed = {\n\ttype: ReactionType;\n\teventId: string; // The id of the event being reacted to\n\tpubkey: string; // The pubkey of the author of the reacted event\n\teventKind?: number; // The kind of the event being reacted to (from k tag)\n\temoji?: {\n\t\tshortcode: string;\n\t\turl: string;\n\t};\n\ttargetCoordinates?: string; // For addressable events (from a tag)\n};\n","import { SharedBufferReader } from \"src/lib/sharedBuffer\";\nimport {\n type MainToWorkerMessage,\n type PipelineConfig,\n type Request,\n type SubscriptionConfig,\n type WorkerToMainMessage,\n type ConnectionStatus\n} from \"@candypoets/rust-main\";\n\nimport type { AnyKind, ParsedEvent } from \"src/types\";\n\nimport { decode, encode } from \"@msgpack/msgpack\";\nimport type { NostrEvent } from \"nostr-tools\";\nimport type { SubscribeKind } from \"src/types\";\n\nimport RustWorker from \"@candypoets/rust-worker/worker.js?worker\";\n\n// Re-export types for external use\nexport type { Request, ConnectionStatus };\n\n\n// Callback for subscription events\nexport type SubscriptionCallback = (\n data: ParsedEvent<AnyKind>[] | number,\n type: SubscribeKind,\n) => void;\n\n\nexport interface SubscriptionOptions {\n pipeline?: PipelineConfig;\n closeOnEose?: boolean;\n cacheFirst?: boolean;\n timeoutMs?: number;\n maxEvents?: number;\n enableOptimization?: boolean;\n skipCache?: boolean;\n force?: boolean;\n bytesPerEvent?: number;\n initialMessage?: WorkerToMainMessage;\n}\n\n/**\n * Configuration for the Nostr Manager\n */\nexport interface NostrManagerConfig {\n /**\n * Custom worker URL. If not provided, uses the bundled worker.\n */\n workerUrl?: string;\n /**\n * Custom worker instance. If provided, workerUrl is ignored.\n */\n worker?: Worker;\n}\n\n// const wasmReady = init(mainWasmUrl);\n\n/**\n * Pure TypeScript NostrClient that manages worker communication and state.\n * Uses WASM utilities for heavy lifting (encoding, decoding, crypto).\n */\nclass NostrManager {\n private worker: Worker;\n private subscriptions = new Map<\n string,\n {\n buffer: SharedArrayBuffer;\n options: SubscriptionOptions;\n refCount: number;\n }\n >();\n private publishes = new Map<string, {buffer: SharedArrayBuffer}>();\n private signers = new Map<string, string>(); // name -> secret key hex\n\n public PERPETUAL_SUBSCRIPTIONS = [\"notifications\", \"starterpack\"];\n\n constructor(config: NostrManagerConfig = {}) {\n this.worker = this.createWorker(config);\n this.setupWorkerListener();\n }\n\n private createWorker(config: NostrManagerConfig): Worker {\n return new RustWorker();\n }\n\n private setupWorkerListener() {\n this.worker.onmessage = async (event) => {\n // await wasmReady;\n if (event.data instanceof Uint8Array) {\n let uint8Array = event.data;\n try {\n const message: any = decode(uint8Array);\n this.handleWorkerMessage(message);\n } catch (error) {\n console.error(\"Failed to decode worker message:\", error);\n } finally {\n // Aggressively clear memory references\n if (uint8Array) {\n uint8Array.fill(0);\n (uint8Array as any) = null;\n }\n }\n } else {\n console.log(\"Received non-arrayBuffer message:\", event.data);\n }\n };\n\n this.worker.onerror = (error) => {\n console.error(\"Worker error:\", error);\n };\n }\n\n private handleWorkerMessage(message: WorkerToMainMessage) {\n if (\"Count\" in message) {\n // this.handleSubscriptionCount(message.Count.subscription_id, message.Count.count);\n } else if (\"SignedEvent\" in message) {\n this.handleSignedEvent(\n message.SignedEvent.content,\n message.SignedEvent.signed_event,\n );\n } else if (\"PublicKey\" in message) {\n this.handlePublicKey(message.PublicKey.public_key);\n } else {\n console.warn(\"Unknown message type from worker:\", message);\n }\n }\n\n private handleSignedEvent(content: string, signedEvent: any) {\n console.log(\"Signed event received:\", content, signedEvent);\n }\n\n private handlePublicKey(publicKey: string) {\n console.log(\"Public key received:\", publicKey);\n }\n\n private createShortId(input: string): string {\n let hash = 0;\n for (let i = 0; i < input.length; i++) {\n const char = input.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n const shortId = Math.abs(hash).toString(36);\n return shortId.substring(0, 63);\n }\n\n subscribe(\n subscriptionId: string,\n requests: Request[],\n options: SubscriptionOptions = {},\n ): SharedArrayBuffer {\n const subId =\n subscriptionId.length < 64\n ? subscriptionId\n : this.createShortId(subscriptionId);\n\n const existingSubscription = this.subscriptions.get(subId);\n\n if (existingSubscription) {\n existingSubscription.refCount++;\n return existingSubscription.buffer;\n }\n\n const defaultOptions: SubscriptionOptions = {\n closeOnEose: false,\n cacheFirst: true,\n skipCache: false,\n force: false,\n enableOptimization: true,\n ...options,\n };\n\n const totalLimit = requests.reduce(\n (sum, req) => sum + (req.limit || 100),\n 0,\n );\n\n const bufferSize = SharedBufferReader.calculateBufferSize(\n totalLimit,\n options.bytesPerEvent,\n );\n\n let initialMessage: Uint8Array<ArrayBufferLike> = new Uint8Array();\n\n if(options.initialMessage) {\n initialMessage = encode(options.initialMessage);\n }\n\n const buffer = new SharedArrayBuffer(bufferSize + initialMessage.length);\n\n // Initialize the buffer (sets write position to 4)\n SharedBufferReader.initializeBuffer(buffer);\n\n // Write the initial message if provided\n if(initialMessage.length > 0) {\n const success = SharedBufferReader.writeMessage(buffer, initialMessage);\n if (!success) {\n console.error(\"Failed to write initial message to buffer\");\n }\n }\n\n this.subscriptions.set(subId, {\n buffer,\n options: defaultOptions,\n refCount: 1,\n });\n\n // Convert SubscriptionOptions to SubscriptionConfig for the worker\n const config: SubscriptionConfig = {\n pipeline: defaultOptions.pipeline,\n closeOnEose: defaultOptions.closeOnEose,\n cacheFirst: defaultOptions.cacheFirst,\n timeoutMs: defaultOptions.timeoutMs,\n maxEvents: defaultOptions.maxEvents,\n enableOptimization: defaultOptions.enableOptimization,\n skipCache: defaultOptions.skipCache,\n force: defaultOptions.force,\n bytesPerEvent: defaultOptions.bytesPerEvent,\n };\n\n const message: MainToWorkerMessage = {\n Subscribe: {\n subscription_id: subId,\n requests: requests,\n config: config,\n },\n };\n\n try {\n const pack = encode(message);\n this.worker.postMessage({\n serializedMessage: pack,\n sharedBuffer: buffer,\n });\n\n return buffer;\n } catch (error) {\n this.subscriptions.delete(subId);\n throw error;\n }\n }\n\n getBuffer(subId: string): SharedArrayBuffer | undefined {\n const existingSubscription = this.subscriptions.get(subId);\n if (existingSubscription) {\n existingSubscription.refCount++;\n return existingSubscription.buffer;\n }\n return undefined;\n }\n\n unsubscribe(subscriptionId: string): void {\n const subId =\n subscriptionId.length < 64\n ? subscriptionId\n : this.createShortId(subscriptionId);\n const subscription = this.subscriptions.get(subId);\n if (subscription) {\n subscription.refCount--;\n }\n }\n\n publish(publish_id: string, event: NostrEvent): SharedArrayBuffer {\n\n // a publish buffer fit in 3kb\n const buffer = new SharedArrayBuffer(3072);\n\n // Initialize the buffer (sets write position to 4)\n SharedBufferReader.initializeBuffer(buffer);\n\n try {\n const template = {\n kind: event.kind,\n content: event.content,\n tags: event.tags || [],\n };\n\n const message: MainToWorkerMessage = {\n Publish: {\n publish_id: publish_id,\n template,\n },\n };\n\n const p = encode(message);\n\n this.worker.postMessage({ serializedMessage: p, sharedBuffer: buffer });\n\n this.publishes.set(publish_id, {buffer});\n return buffer;\n } catch (error) {\n console.error(\"Failed to publish event:\", error);\n throw error;\n }\n }\n\n setSigner(name: string, secretKeyHex: string): void {\n const message: MainToWorkerMessage = {\n SetSigner: {\n signer_type: name,\n private_key: secretKeyHex,\n },\n };\n\n const pack = encode(message);\n this.worker.postMessage(pack);\n this.signers.set(name, secretKeyHex);\n }\n\n signEvent(event: NostrEvent) {\n const template = {\n kind: event.kind,\n content: event.content,\n tags: event.tags,\n };\n\n const message: MainToWorkerMessage = {\n SignEvent: {\n template: template,\n },\n };\n const pack = encode(message);\n this.worker.postMessage(pack);\n }\n\n getPublicKey() {\n const message: MainToWorkerMessage = {\n GetPublicKey: {},\n };\n const pack = encode(message);\n this.worker.postMessage(pack);\n }\n\n cleanup(): void {\n const subscriptionsToDelete: string[] = [];\n\n for (const [subId, subscription] of this.subscriptions.entries()) {\n if (\n subscription.refCount <= 0 &&\n !this.PERPETUAL_SUBSCRIPTIONS.includes(subId)\n ) {\n subscriptionsToDelete.push(subId);\n }\n }\n\n for (const subId of subscriptionsToDelete) {\n const subscription = this.subscriptions.get(subId);\n if (subscription) {\n const message: MainToWorkerMessage = {\n Unsubscribe: {\n subscription_id: subId,\n },\n };\n const pack = encode(message);\n this.worker.postMessage(pack);\n this.subscriptions.delete(subId);\n }\n }\n }\n}\n\n/**\n * Factory function to create a new NostrManager instance.\n * @param config - Configuration for the NostrManager.\n * @returns A new instance of NostrManager.\n */\nexport function createNostrManager(\n config: NostrManagerConfig = {},\n): NostrManager {\n return new NostrManager(config);\n}\n\n/**\n * Default singleton instance of the NostrManager.\n * Useful for applications that only need one instance.\n */\nexport const nostrManager = new NostrManager();\n\nexport function cleanup(): void {\n nostrManager.cleanup();\n}\n\nexport * from \"./types\";\n"],"names":["SharedBufferReader","buffer","data","view","uint8View","currentWritePosition","requiredSpace","newWritePosition","message","encoded","encode","error","lastReadPosition","actualLastReadPosition","messages","currentPos","eventLength","bufferFullMessage","eventData","unpack","result","totalEventLimit","bytesPerEvent","dataSize","overhead","isKind39089","event","ReactionType","NostrManager","config","RustWorker","uint8Array","decode","content","signedEvent","publicKey","input","hash","i","char","subscriptionId","requests","options","subId","existingSubscription","defaultOptions","totalLimit","sum","req","bufferSize","initialMessage","pack","subscription","publish_id","template","p","name","secretKeyHex","subscriptionsToDelete","createNostrManager","nostrManager","cleanup"],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -44,7 +44,7 @@ export type ContentBlock = {
|
|
|
44
44
|
data?: Record<string, any>;
|
|
45
45
|
};
|
|
46
46
|
export type AnyKind = Kind0Parsed | Kind1Parsed | Kind3Parsed | Kind4Parsed | Kind6Parsed | Kind7Parsed | Kind17Parsed | Kind9735Parsed | Kind9321Parsed | Kind10002Parsed | Kind10019Parsed | Kind17375Parsed | Kind7374Parsed | Kind7375Parsed | Kind7376Parsed | Kind39089Parsed;
|
|
47
|
-
export type SubscribeKind = "CACHED_EVENT" | "FETCHED_EVENT" | "COUNT" | "
|
|
47
|
+
export type SubscribeKind = "CACHED_EVENT" | "FETCHED_EVENT" | "COUNT" | "CONNECTION_STATUS" | "EOCE" | "BUFFER_FULL";
|
|
48
48
|
export type PublishKind = "PUBLISH_STATUS";
|
|
49
49
|
export type SignerType = string;
|
|
50
50
|
export declare const SignerTypes: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,OAAO,EACZ,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,GACzB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,cAAc,UAAU,CAAC;AAEzB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAE3B,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,UAAU,GAAG;IACxC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EACA,MAAM,GACN,OAAO,GACP,OAAO,GACP,WAAW,GACX,MAAM,GACN,MAAM,GACN,MAAM,GACN,UAAU,GACV,MAAM,GACN,QAAQ,GACR,OAAO,GACP,SAAS,GACT,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,OAAO,GACf,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,YAAY,GACZ,cAAc,GACd,cAAc,GACd,eAAe,GACf,eAAe,GACf,eAAe,GACf,cAAc,GACd,cAAc,GACd,cAAc,GACd,eAAe,CAAC;AAEpB,MAAM,MAAM,aAAa,GACrB,cAAc,GACd,eAAe,GACf,OAAO,GACP,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@candypoets/nipworker",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.23",
|
|
4
4
|
"description": "Nostr client library with worker-based architecture using Rust WASM",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -60,8 +60,8 @@
|
|
|
60
60
|
"vite-plugin-wasm": "^3.0.0"
|
|
61
61
|
},
|
|
62
62
|
"dependencies": {
|
|
63
|
-
"@candypoets/rust-main": "0.0.
|
|
64
|
-
"@candypoets/rust-worker": "0.0.
|
|
63
|
+
"@candypoets/rust-main": "0.0.23",
|
|
64
|
+
"@candypoets/rust-worker": "0.0.23",
|
|
65
65
|
"@msgpack/msgpack": "^3.0.0",
|
|
66
66
|
"msgpackr": "^1.11.5",
|
|
67
67
|
"nostr-tools": "^2.0.0"
|