fix: worker-relay insert replacable events duplicate
This commit is contained in:
parent
bb5bf34fe9
commit
b764cc1535
@ -26,7 +26,7 @@
|
|||||||
"typescript": "^5.2.2"
|
"typescript": "^5.2.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@tauri-apps/cli": "^1.5.11",
|
"@tauri-apps/cli": "^1.5.14",
|
||||||
"typedoc": "^0.25.7"
|
"typedoc": "^0.25.7"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,11 +4,11 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@cashu/cashu-ts": "^1.0.0-rc.3",
|
"@cashu/cashu-ts": "^1.0.0-rc.3",
|
||||||
"@here/maps-api-for-javascript": "^1.50.0",
|
"@here/maps-api-for-javascript": "^1.50.0",
|
||||||
"@noble/curves": "^1.0.0",
|
"@noble/curves": "^1.4.0",
|
||||||
"@noble/hashes": "^1.3.3",
|
"@noble/hashes": "^1.4.0",
|
||||||
"@scure/base": "^1.1.1",
|
"@scure/base": "^1.1.6",
|
||||||
"@scure/bip32": "^1.3.0",
|
"@scure/bip32": "^1.4.0",
|
||||||
"@scure/bip39": "^1.1.1",
|
"@scure/bip39": "^1.3.0",
|
||||||
"@snort/shared": "workspace:*",
|
"@snort/shared": "workspace:*",
|
||||||
"@snort/system": "workspace:*",
|
"@snort/system": "workspace:*",
|
||||||
"@snort/system-react": "workspace:*",
|
"@snort/system-react": "workspace:*",
|
||||||
@ -16,7 +16,7 @@
|
|||||||
"@snort/system-web": "workspace:*",
|
"@snort/system-web": "workspace:*",
|
||||||
"@snort/wallet": "workspace:*",
|
"@snort/wallet": "workspace:*",
|
||||||
"@snort/worker-relay": "workspace:*",
|
"@snort/worker-relay": "workspace:*",
|
||||||
"@szhsin/react-menu": "^3.3.1",
|
"@szhsin/react-menu": "^3.5.3",
|
||||||
"@uidotdev/usehooks": "^2.4.1",
|
"@uidotdev/usehooks": "^2.4.1",
|
||||||
"@void-cat/api": "^1.0.12",
|
"@void-cat/api": "^1.0.12",
|
||||||
"classnames": "^2.3.2",
|
"classnames": "^2.3.2",
|
||||||
@ -102,7 +102,7 @@
|
|||||||
"@typescript-eslint/eslint-plugin": "^6.1.0",
|
"@typescript-eslint/eslint-plugin": "^6.1.0",
|
||||||
"@typescript-eslint/parser": "^6.1.0",
|
"@typescript-eslint/parser": "^6.1.0",
|
||||||
"@vitejs/plugin-react": "^4.2.0",
|
"@vitejs/plugin-react": "^4.2.0",
|
||||||
"@webbtc/webln-types": "^2.1.0",
|
"@webbtc/webln-types": "^3.0.0",
|
||||||
"@webscopeio/react-textarea-autocomplete": "^4.9.2",
|
"@webscopeio/react-textarea-autocomplete": "^4.9.2",
|
||||||
"@welldone-software/why-did-you-render": "^8.0.1",
|
"@welldone-software/why-did-you-render": "^8.0.1",
|
||||||
"autoprefixer": "^10.4.16",
|
"autoprefixer": "^10.4.16",
|
||||||
|
59
packages/app/src/Pages/CacheDebug.tsx
Normal file
59
packages/app/src/Pages/CacheDebug.tsx
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
import { NostrEvent, TaggedNostrEvent } from "@snort/system";
|
||||||
|
import { SnortContext } from "@snort/system-react";
|
||||||
|
import { useContext, useState } from "react";
|
||||||
|
|
||||||
|
import AsyncButton from "@/Components/Button/AsyncButton";
|
||||||
|
|
||||||
|
export function DebugPage() {
|
||||||
|
const system = useContext(SnortContext);
|
||||||
|
const [filter, setFilter] = useState("");
|
||||||
|
const [event, setEvent] = useState("");
|
||||||
|
const [results, setResult] = useState<Array<TaggedNostrEvent>>([]);
|
||||||
|
|
||||||
|
async function search() {
|
||||||
|
if (filter && system.cacheRelay) {
|
||||||
|
const r = await system.cacheRelay.query(["REQ", "test", JSON.parse(filter)]);
|
||||||
|
setResult(r.map(a => ({ ...a, relays: [] })));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function insert() {
|
||||||
|
if (event && system.cacheRelay) {
|
||||||
|
const r = await system.cacheRelay.event(JSON.parse(event) as NostrEvent);
|
||||||
|
setResult([
|
||||||
|
{
|
||||||
|
content: JSON.stringify(r),
|
||||||
|
} as unknown as TaggedNostrEvent,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function removeEvents() {
|
||||||
|
if (filter && system.cacheRelay) {
|
||||||
|
const r = await system.cacheRelay.delete(["REQ", "delete-events", JSON.parse(filter)]);
|
||||||
|
setResult(r.map(a => ({ id: a }) as TaggedNostrEvent));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (
|
||||||
|
<div className="flex flex-col gap-2">
|
||||||
|
<h3>Cache Query</h3>
|
||||||
|
<textarea value={filter} onChange={e => setFilter(e.target.value)} placeholder="nostr filter" />
|
||||||
|
<AsyncButton onClick={() => search()}>Query</AsyncButton>
|
||||||
|
<AsyncButton onClick={() => removeEvents()} className="!bg-red-500">
|
||||||
|
Delete
|
||||||
|
</AsyncButton>
|
||||||
|
|
||||||
|
<h3>Manual Insert</h3>
|
||||||
|
<textarea value={event} onChange={e => setEvent(e.target.value)} placeholder="nostr event" />
|
||||||
|
<AsyncButton onClick={() => insert()}>Insert</AsyncButton>
|
||||||
|
<div className="p-4 overflow-hidden">
|
||||||
|
<h4>Results: {results.length}</h4>
|
||||||
|
{results?.map(a => (
|
||||||
|
<pre key={a.id} className="text-mono text-xs text-pretty">
|
||||||
|
{JSON.stringify(a, undefined, 2)}
|
||||||
|
</pre>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
@ -1,6 +1,7 @@
|
|||||||
import { FeedCache } from "@snort/shared";
|
import { FeedCache } from "@snort/shared";
|
||||||
import { ReactNode, useEffect, useState, useSyncExternalStore } from "react";
|
import { ReactNode, useEffect, useState, useSyncExternalStore } from "react";
|
||||||
import { FormattedMessage, FormattedNumber } from "react-intl";
|
import { FormattedMessage, FormattedNumber } from "react-intl";
|
||||||
|
import { useNavigate } from "react-router-dom";
|
||||||
|
|
||||||
import { GiftsCache, Relay, RelayMetrics } from "@/Cache";
|
import { GiftsCache, Relay, RelayMetrics } from "@/Cache";
|
||||||
import AsyncButton from "@/Components/Button/AsyncButton";
|
import AsyncButton from "@/Components/Button/AsyncButton";
|
||||||
@ -32,7 +33,6 @@ function CacheDetails<T>({ cache, name }: { cache: FeedCache<T>; name: ReactNode
|
|||||||
<small>
|
<small>
|
||||||
<FormattedMessage
|
<FormattedMessage
|
||||||
defaultMessage="{count} ({count2} in memory)"
|
defaultMessage="{count} ({count2} in memory)"
|
||||||
id="geppt8"
|
|
||||||
values={{
|
values={{
|
||||||
count: <FormattedNumber value={cache.keysOnTable().length} />,
|
count: <FormattedNumber value={cache.keysOnTable().length} />,
|
||||||
count2: <FormattedNumber value={snapshot.length} />,
|
count2: <FormattedNumber value={snapshot.length} />,
|
||||||
@ -53,6 +53,7 @@ function RelayCacheStats() {
|
|||||||
const [counts, setCounts] = useState<Record<string, number>>({});
|
const [counts, setCounts] = useState<Record<string, number>>({});
|
||||||
const [myEvents, setMyEvents] = useState<number>(0);
|
const [myEvents, setMyEvents] = useState<number>(0);
|
||||||
const login = useLogin();
|
const login = useLogin();
|
||||||
|
const navigate = useNavigate();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
Relay.summary().then(setCounts);
|
Relay.summary().then(setCounts);
|
||||||
@ -69,7 +70,6 @@ function RelayCacheStats() {
|
|||||||
<p>
|
<p>
|
||||||
<FormattedMessage
|
<FormattedMessage
|
||||||
defaultMessage="My events: {n}"
|
defaultMessage="My events: {n}"
|
||||||
id="lEnclp"
|
|
||||||
values={{
|
values={{
|
||||||
n: <FormattedNumber value={myEvents} />,
|
n: <FormattedNumber value={myEvents} />,
|
||||||
}}
|
}}
|
||||||
@ -124,6 +124,9 @@ function RelayCacheStats() {
|
|||||||
}}>
|
}}>
|
||||||
<FormattedMessage defaultMessage="Dump" />
|
<FormattedMessage defaultMessage="Dump" />
|
||||||
</AsyncButton>
|
</AsyncButton>
|
||||||
|
<AsyncButton onClick={() => navigate("/cache-debug")}>
|
||||||
|
<FormattedMessage defaultMessage="Debug" />
|
||||||
|
</AsyncButton>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
@ -13,6 +13,7 @@ import { IntlProvider } from "@/Components/IntlProvider/IntlProvider";
|
|||||||
import { db } from "@/Db";
|
import { db } from "@/Db";
|
||||||
import { addCachedMetadataToFuzzySearch } from "@/Db/FuzzySearch";
|
import { addCachedMetadataToFuzzySearch } from "@/Db/FuzzySearch";
|
||||||
import { AboutPage } from "@/Pages/About";
|
import { AboutPage } from "@/Pages/About";
|
||||||
|
import { DebugPage } from "@/Pages/CacheDebug";
|
||||||
import { SnortDeckLayout } from "@/Pages/Deck/DeckLayout";
|
import { SnortDeckLayout } from "@/Pages/Deck/DeckLayout";
|
||||||
import DonatePage from "@/Pages/Donate/DonatePage";
|
import DonatePage from "@/Pages/Donate/DonatePage";
|
||||||
import ErrorPage from "@/Pages/ErrorPage";
|
import ErrorPage from "@/Pages/ErrorPage";
|
||||||
@ -74,6 +75,10 @@ async function initSite() {
|
|||||||
let didInit = false;
|
let didInit = false;
|
||||||
const mainRoutes = [
|
const mainRoutes = [
|
||||||
...RootRoutes,
|
...RootRoutes,
|
||||||
|
{
|
||||||
|
path: "/cache-debug",
|
||||||
|
element: <DebugPage />,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: "/help",
|
path: "/help",
|
||||||
element: <HelpPage />,
|
element: <HelpPage />,
|
||||||
|
@ -13,9 +13,9 @@
|
|||||||
"build": "rm -rf dist && tsc"
|
"build": "rm -rf dist && tsc"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@noble/curves": "^1.2.0",
|
"@noble/curves": "^1.4.0",
|
||||||
"@noble/hashes": "^1.3.2",
|
"@noble/hashes": "^1.4.0",
|
||||||
"@scure/base": "^1.1.2",
|
"@scure/base": "^1.1.6",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"eventemitter3": "^5.0.1",
|
"eventemitter3": "^5.0.1",
|
||||||
"light-bolt11-decoder": "^3.0.0"
|
"light-bolt11-decoder": "^3.0.0"
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
],
|
],
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@jest/globals": "^29.5.0",
|
"@jest/globals": "^29.5.0",
|
||||||
"@peculiar/webcrypto": "^1.4.3",
|
"@peculiar/webcrypto": "^1.4.6",
|
||||||
"@types/debug": "^4.1.8",
|
"@types/debug": "^4.1.8",
|
||||||
"@types/jest": "^29.5.11",
|
"@types/jest": "^29.5.11",
|
||||||
"@types/lokijs": "^1.5.14",
|
"@types/lokijs": "^1.5.14",
|
||||||
@ -33,10 +33,10 @@
|
|||||||
"typescript": "^5.2.2"
|
"typescript": "^5.2.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@noble/curves": "^1.2.0",
|
"@noble/curves": "^1.4.0",
|
||||||
"@noble/hashes": "^1.3.2",
|
"@noble/hashes": "^1.4.0",
|
||||||
"@nostr-dev-kit/ndk": "^2.7.1",
|
"@nostr-dev-kit/ndk": "^2.8.2",
|
||||||
"@scure/base": "^1.1.2",
|
"@scure/base": "^1.1.6",
|
||||||
"@snort/shared": "^1.0.15",
|
"@snort/shared": "^1.0.15",
|
||||||
"@stablelib/xchacha20": "^1.0.1",
|
"@stablelib/xchacha20": "^1.0.1",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
|
@ -14,4 +14,9 @@ export interface CacheRelay {
|
|||||||
* Read event from cache relay
|
* Read event from cache relay
|
||||||
*/
|
*/
|
||||||
query(req: ReqCommand): Promise<Array<NostrEvent>>;
|
query(req: ReqCommand): Promise<Array<NostrEvent>>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete events by filter
|
||||||
|
*/
|
||||||
|
delete(req: ReqCommand): Promise<Array<string>>;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@snort/worker-relay",
|
"name": "@snort/worker-relay",
|
||||||
"version": "1.0.10",
|
"version": "1.1.0",
|
||||||
"description": "A nostr relay in a service worker",
|
"description": "A nostr relay in a service worker",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"types": "dist/index.d.ts",
|
"types": "dist/index.d.ts",
|
||||||
@ -18,7 +18,7 @@
|
|||||||
"dist"
|
"dist"
|
||||||
],
|
],
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sqlite.org/sqlite-wasm": "^3.45.1-build1",
|
"@sqlite.org/sqlite-wasm": "^3.45.3-build3",
|
||||||
"eventemitter3": "^5.0.1",
|
"eventemitter3": "^5.0.1",
|
||||||
"uuid": "^9.0.1"
|
"uuid": "^9.0.1"
|
||||||
},
|
},
|
||||||
|
@ -63,6 +63,11 @@ export class WorkerRelayInterface {
|
|||||||
return await this.#workerRpc<ReqCommand, number>("count", req);
|
return await this.#workerRpc<ReqCommand, number>("count", req);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async delete(req: ReqCommand) {
|
||||||
|
console.debug("DELETE", req);
|
||||||
|
return await this.#workerRpc<ReqCommand, Array<string>>("delete", req);
|
||||||
|
}
|
||||||
|
|
||||||
async summary() {
|
async summary() {
|
||||||
return await this.#workerRpc<void, Record<string, number>>("summary");
|
return await this.#workerRpc<void, Record<string, number>>("summary");
|
||||||
}
|
}
|
||||||
|
@ -80,6 +80,13 @@ export class InMemoryRelay extends EventEmitter<RelayHandlerEvents> implements R
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
delete(filter: ReqFilter) {
|
||||||
|
const forDelete = this.req("ids-for-delete", { ...filter, ids_only: true }) as Array<string>;
|
||||||
|
forDelete.forEach(a => this.#events.delete(a));
|
||||||
|
|
||||||
|
return forDelete;
|
||||||
|
}
|
||||||
|
|
||||||
setEventMetadata(_id: string, _meta: EventMetadata) {
|
setEventMetadata(_id: string, _meta: EventMetadata) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -99,6 +99,7 @@ export class SqliteRelay extends EventEmitter<RelayHandlerEvents> implements Rel
|
|||||||
}
|
}
|
||||||
|
|
||||||
#deleteById(db: Database, ids: Array<string>) {
|
#deleteById(db: Database, ids: Array<string>) {
|
||||||
|
if (ids.length === 0) return;
|
||||||
db.exec(`delete from events where id in (${this.#repeatParams(ids.length)})`, {
|
db.exec(`delete from events where id in (${this.#repeatParams(ids.length)})`, {
|
||||||
bind: ids,
|
bind: ids,
|
||||||
});
|
});
|
||||||
@ -126,6 +127,9 @@ export class SqliteRelay extends EventEmitter<RelayHandlerEvents> implements Rel
|
|||||||
this.#deleteById(db, toDelete);
|
this.#deleteById(db, toDelete);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
} else {
|
||||||
|
// delete older versions
|
||||||
|
this.#deleteById(db, oldEvents);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (ev.kind >= 30_000 && ev.kind < 40_000) {
|
if (ev.kind >= 30_000 && ev.kind < 40_000) {
|
||||||
@ -142,6 +146,9 @@ export class SqliteRelay extends EventEmitter<RelayHandlerEvents> implements Rel
|
|||||||
this.#deleteById(db, toDelete);
|
this.#deleteById(db, toDelete);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
} else {
|
||||||
|
// delete older versions
|
||||||
|
this.#deleteById(db, oldEvents);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
db.exec("insert or ignore into events(id, pubkey, created, kind, json) values(?,?,?,?,?)", {
|
db.exec("insert or ignore into events(id, pubkey, created, kind, json) values(?,?,?,?,?)", {
|
||||||
@ -196,6 +203,32 @@ export class SqliteRelay extends EventEmitter<RelayHandlerEvents> implements Rel
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete events by nostr filter
|
||||||
|
*/
|
||||||
|
delete(req: ReqFilter) {
|
||||||
|
this.#log(`Starting delete of ${JSON.stringify(req)}`);
|
||||||
|
const start = unixNowMs();
|
||||||
|
const for_delete = this.req("ids-for-delete", { ...req, ids_only: true }) as Array<string>;
|
||||||
|
|
||||||
|
const grouped = for_delete.reduce(
|
||||||
|
(acc, v, i) => {
|
||||||
|
const batch = (i / 1000).toFixed(0);
|
||||||
|
acc[batch] ??= [];
|
||||||
|
acc[batch].push(v);
|
||||||
|
return acc;
|
||||||
|
},
|
||||||
|
{} as Record<string, Array<string>>,
|
||||||
|
);
|
||||||
|
this.#log(`Starting delete of ${Object.keys(grouped).length} batches`);
|
||||||
|
Object.entries(grouped).forEach(([batch, ids]) => {
|
||||||
|
this.#deleteById(this.db!, ids);
|
||||||
|
});
|
||||||
|
const time = unixNowMs() - start;
|
||||||
|
this.#log(`Delete ${for_delete.length} events took ${time.toLocaleString()}ms`);
|
||||||
|
return for_delete;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a summary about events table
|
* Get a summary about events table
|
||||||
*/
|
*/
|
||||||
@ -231,7 +264,7 @@ export class SqliteRelay extends EventEmitter<RelayHandlerEvents> implements Rel
|
|||||||
return new Uint8Array();
|
return new Uint8Array();
|
||||||
}
|
}
|
||||||
|
|
||||||
#buildQuery(req: ReqFilter, count = false): [string, Array<any>] {
|
#buildQuery(req: ReqFilter, count = false, remove = false): [string, Array<any>] {
|
||||||
const conditions: Array<string> = [];
|
const conditions: Array<string> = [];
|
||||||
const params: Array<any> = [];
|
const params: Array<any> = [];
|
||||||
|
|
||||||
@ -241,7 +274,11 @@ export class SqliteRelay extends EventEmitter<RelayHandlerEvents> implements Rel
|
|||||||
} else if (req.ids_only === true) {
|
} else if (req.ids_only === true) {
|
||||||
resultType = "id";
|
resultType = "id";
|
||||||
}
|
}
|
||||||
let sql = `select ${resultType} from events`;
|
let operation = `select ${resultType}`;
|
||||||
|
if (remove) {
|
||||||
|
operation = "delete";
|
||||||
|
}
|
||||||
|
let sql = `${operation} from events`;
|
||||||
const tags = Object.entries(req).filter(([k]) => k.startsWith("#"));
|
const tags = Object.entries(req).filter(([k]) => k.startsWith("#"));
|
||||||
let tx = 0;
|
let tx = 0;
|
||||||
for (const [key, values] of tags) {
|
for (const [key, values] of tags) {
|
||||||
|
@ -12,7 +12,8 @@ export type WorkerMessageCommand =
|
|||||||
| "emit-event"
|
| "emit-event"
|
||||||
| "forYouFeed"
|
| "forYouFeed"
|
||||||
| "setEventMetadata"
|
| "setEventMetadata"
|
||||||
| "debug";
|
| "debug"
|
||||||
|
| "delete";
|
||||||
|
|
||||||
export interface WorkerMessage<T> {
|
export interface WorkerMessage<T> {
|
||||||
id: string;
|
id: string;
|
||||||
@ -70,6 +71,7 @@ export interface RelayHandler extends EventEmitter<RelayHandlerEvents> {
|
|||||||
count(req: ReqFilter): number;
|
count(req: ReqFilter): number;
|
||||||
summary(): Record<string, number>;
|
summary(): Record<string, number>;
|
||||||
dump(): Promise<Uint8Array>;
|
dump(): Promise<Uint8Array>;
|
||||||
|
delete(req: ReqFilter): Array<string>;
|
||||||
setEventMetadata(id: string, meta: EventMetadata): void;
|
setEventMetadata(id: string, meta: EventMetadata): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,7 +4,16 @@ import { SqliteRelay } from "./sqlite-relay";
|
|||||||
import { InMemoryRelay } from "./memory-relay";
|
import { InMemoryRelay } from "./memory-relay";
|
||||||
import { setLogging } from "./debug";
|
import { setLogging } from "./debug";
|
||||||
import { WorkQueueItem, barrierQueue, processWorkQueue } from "./queue";
|
import { WorkQueueItem, barrierQueue, processWorkQueue } from "./queue";
|
||||||
import { NostrEvent, RelayHandler, ReqCommand, ReqFilter, WorkerMessage, unixNowMs, EventMetadata } from "./types";
|
import {
|
||||||
|
NostrEvent,
|
||||||
|
RelayHandler,
|
||||||
|
ReqCommand,
|
||||||
|
ReqFilter,
|
||||||
|
WorkerMessage,
|
||||||
|
unixNowMs,
|
||||||
|
EventMetadata,
|
||||||
|
OkResponse,
|
||||||
|
} from "./types";
|
||||||
import { getForYouFeed } from "./forYouFeed";
|
import { getForYouFeed } from "./forYouFeed";
|
||||||
|
|
||||||
let relay: RelayHandler | undefined;
|
let relay: RelayHandler | undefined;
|
||||||
@ -86,8 +95,13 @@ const handleMsg = async (port: MessagePort | DedicatedWorkerGlobalScope, ev: Mes
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "event": {
|
case "event": {
|
||||||
eventWriteQueue.push(msg.args as NostrEvent);
|
const ev = msg.args as NostrEvent;
|
||||||
reply(msg.id, true);
|
eventWriteQueue.push(ev);
|
||||||
|
reply(msg.id, {
|
||||||
|
ok: true,
|
||||||
|
id: ev.id,
|
||||||
|
relay: "",
|
||||||
|
} as OkResponse);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "close": {
|
case "close": {
|
||||||
@ -130,6 +144,20 @@ const handleMsg = async (port: MessagePort | DedicatedWorkerGlobalScope, ev: Mes
|
|||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case "delete": {
|
||||||
|
console.debug("DELETE", msg.args);
|
||||||
|
await barrierQueue(cmdQueue, async () => {
|
||||||
|
const req = msg.args as ReqCommand;
|
||||||
|
let results = [];
|
||||||
|
const filters = req.slice(2) as Array<ReqFilter>;
|
||||||
|
for (const r of filters) {
|
||||||
|
const c = relay!.delete(r);
|
||||||
|
results.push(...c);
|
||||||
|
}
|
||||||
|
reply(msg.id, results);
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
case "summary": {
|
case "summary": {
|
||||||
await barrierQueue(cmdQueue, async () => {
|
await barrierQueue(cmdQueue, async () => {
|
||||||
const res = relay!.summary();
|
const res = relay!.summary();
|
||||||
|
206
yarn.lock
206
yarn.lock
@ -4060,7 +4060,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@noble/curves@npm:1.2.0, @noble/curves@npm:^1.0.0, @noble/curves@npm:^1.2.0, @noble/curves@npm:~1.2.0":
|
"@noble/curves@npm:1.2.0":
|
||||||
version: 1.2.0
|
version: 1.2.0
|
||||||
resolution: "@noble/curves@npm:1.2.0"
|
resolution: "@noble/curves@npm:1.2.0"
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -4085,14 +4085,14 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@noble/hashes@npm:1.3.2, @noble/hashes@npm:^1.3.2, @noble/hashes@npm:~1.3.0, @noble/hashes@npm:~1.3.2":
|
"@noble/hashes@npm:1.3.2, @noble/hashes@npm:~1.3.0":
|
||||||
version: 1.3.2
|
version: 1.3.2
|
||||||
resolution: "@noble/hashes@npm:1.3.2"
|
resolution: "@noble/hashes@npm:1.3.2"
|
||||||
checksum: 10/685f59d2d44d88e738114b71011d343a9f7dce9dfb0a121f1489132f9247baa60bc985e5ec6f3213d114fbd1e1168e7294644e46cbd0ce2eba37994f28eeb51b
|
checksum: 10/685f59d2d44d88e738114b71011d343a9f7dce9dfb0a121f1489132f9247baa60bc985e5ec6f3213d114fbd1e1168e7294644e46cbd0ce2eba37994f28eeb51b
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@noble/hashes@npm:1.4.0, @noble/hashes@npm:^1.3.1, @noble/hashes@npm:~1.4.0":
|
"@noble/hashes@npm:1.4.0, @noble/hashes@npm:^1.3.1, @noble/hashes@npm:^1.4.0, @noble/hashes@npm:~1.4.0":
|
||||||
version: 1.4.0
|
version: 1.4.0
|
||||||
resolution: "@noble/hashes@npm:1.4.0"
|
resolution: "@noble/hashes@npm:1.4.0"
|
||||||
checksum: 10/e156e65794c473794c52fa9d06baf1eb20903d0d96719530f523cc4450f6c721a957c544796e6efd0197b2296e7cd70efeb312f861465e17940a3e3c7e0febc6
|
checksum: 10/e156e65794c473794c52fa9d06baf1eb20903d0d96719530f523cc4450f6c721a957c544796e6efd0197b2296e7cd70efeb312f861465e17940a3e3c7e0febc6
|
||||||
@ -4140,9 +4140,9 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@nostr-dev-kit/ndk@npm:^2.7.1":
|
"@nostr-dev-kit/ndk@npm:^2.8.2":
|
||||||
version: 2.7.1
|
version: 2.8.2
|
||||||
resolution: "@nostr-dev-kit/ndk@npm:2.7.1"
|
resolution: "@nostr-dev-kit/ndk@npm:2.8.2"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@noble/curves": "npm:^1.4.0"
|
"@noble/curves": "npm:^1.4.0"
|
||||||
"@noble/hashes": "npm:^1.3.1"
|
"@noble/hashes": "npm:^1.3.1"
|
||||||
@ -4156,7 +4156,7 @@ __metadata:
|
|||||||
typescript-lru-cache: "npm:^2.0.0"
|
typescript-lru-cache: "npm:^2.0.0"
|
||||||
utf8-buffer: "npm:^1.0.0"
|
utf8-buffer: "npm:^1.0.0"
|
||||||
websocket-polyfill: "npm:^0.0.3"
|
websocket-polyfill: "npm:^0.0.3"
|
||||||
checksum: 10/8553167dbc8e93952f5deb15dea443272827039a8e03410f851ec898c68811f6d3d21b36becc7194009ff5994cf073c8997355b43d29a55ad98d1ce95176f1f7
|
checksum: 10/4ee2513259800e4cedf88c772cfdf2e2c9652b9ecd432e25582363158635909c293ba7748d1cd314b612ca5344f1da820df456cdd6d908f6533856c0b038b648
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -4182,7 +4182,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@peculiar/asn1-schema@npm:^2.3.6":
|
"@peculiar/asn1-schema@npm:^2.3.8":
|
||||||
version: 2.3.8
|
version: 2.3.8
|
||||||
resolution: "@peculiar/asn1-schema@npm:2.3.8"
|
resolution: "@peculiar/asn1-schema@npm:2.3.8"
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -4202,16 +4202,16 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@peculiar/webcrypto@npm:^1.4.3":
|
"@peculiar/webcrypto@npm:^1.4.6":
|
||||||
version: 1.4.3
|
version: 1.4.6
|
||||||
resolution: "@peculiar/webcrypto@npm:1.4.3"
|
resolution: "@peculiar/webcrypto@npm:1.4.6"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@peculiar/asn1-schema": "npm:^2.3.6"
|
"@peculiar/asn1-schema": "npm:^2.3.8"
|
||||||
"@peculiar/json-schema": "npm:^1.1.12"
|
"@peculiar/json-schema": "npm:^1.1.12"
|
||||||
pvtsutils: "npm:^1.3.2"
|
pvtsutils: "npm:^1.3.5"
|
||||||
tslib: "npm:^2.5.0"
|
tslib: "npm:^2.6.2"
|
||||||
webcrypto-core: "npm:^1.7.7"
|
webcrypto-core: "npm:^1.7.9"
|
||||||
checksum: 10/548f5e32badcfdb02c903ca240daccac5d87ba841e436bd6d30e5455ced22917146130dab21afb718568ea935d6b04dc66fb33a4b6ab652dd868abff81e74a81
|
checksum: 10/c1700b585cac0a161539f0060c97d52dc0d99c6e05a40b01ec714a83bfdb54708e615cd5a1fe4c9f22c617fdf05936de2f552dd33e856a2d1c5b0f39ec25ccab
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -4500,7 +4500,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@scure/base@npm:^1.1.1, @scure/base@npm:^1.1.2, @scure/base@npm:~1.1.0, @scure/base@npm:~1.1.2":
|
"@scure/base@npm:^1.1.1, @scure/base@npm:~1.1.0":
|
||||||
version: 1.1.3
|
version: 1.1.3
|
||||||
resolution: "@scure/base@npm:1.1.3"
|
resolution: "@scure/base@npm:1.1.3"
|
||||||
checksum: 10/cb715fa8cdb043c4d96b6ba0666791d4eb4d033f7b5285a853aba25e0ba94914f05ff5d956029ad060005f9bdd02dab0caef9a0a63f07ed096a2c2a0c0cf9c36
|
checksum: 10/cb715fa8cdb043c4d96b6ba0666791d4eb4d033f7b5285a853aba25e0ba94914f05ff5d956029ad060005f9bdd02dab0caef9a0a63f07ed096a2c2a0c0cf9c36
|
||||||
@ -4525,18 +4525,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@scure/bip32@npm:^1.3.0":
|
"@scure/bip32@npm:^1.3.3, @scure/bip32@npm:^1.4.0":
|
||||||
version: 1.3.2
|
|
||||||
resolution: "@scure/bip32@npm:1.3.2"
|
|
||||||
dependencies:
|
|
||||||
"@noble/curves": "npm:~1.2.0"
|
|
||||||
"@noble/hashes": "npm:~1.3.2"
|
|
||||||
"@scure/base": "npm:~1.1.2"
|
|
||||||
checksum: 10/b90da28dfe75519496a85c97e77c9443734873910f32b8557762910a5c4e642290a462b0ed14fa42e0efed6acb9a7f6155ad5cb5d38d4ff87eb2de4760eb32a4
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@scure/bip32@npm:^1.3.3":
|
|
||||||
version: 1.4.0
|
version: 1.4.0
|
||||||
resolution: "@scure/bip32@npm:1.4.0"
|
resolution: "@scure/bip32@npm:1.4.0"
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -4547,7 +4536,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@scure/bip39@npm:1.2.1, @scure/bip39@npm:^1.1.1":
|
"@scure/bip39@npm:1.2.1":
|
||||||
version: 1.2.1
|
version: 1.2.1
|
||||||
resolution: "@scure/bip39@npm:1.2.1"
|
resolution: "@scure/bip39@npm:1.2.1"
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -4557,7 +4546,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@scure/bip39@npm:^1.2.2":
|
"@scure/bip39@npm:^1.2.2, @scure/bip39@npm:^1.3.0":
|
||||||
version: 1.3.0
|
version: 1.3.0
|
||||||
resolution: "@scure/bip39@npm:1.3.0"
|
resolution: "@scure/bip39@npm:1.3.0"
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -4599,11 +4588,11 @@ __metadata:
|
|||||||
"@cashu/cashu-ts": "npm:^1.0.0-rc.3"
|
"@cashu/cashu-ts": "npm:^1.0.0-rc.3"
|
||||||
"@formatjs/cli": "npm:^6.1.3"
|
"@formatjs/cli": "npm:^6.1.3"
|
||||||
"@here/maps-api-for-javascript": "npm:^1.50.0"
|
"@here/maps-api-for-javascript": "npm:^1.50.0"
|
||||||
"@noble/curves": "npm:^1.0.0"
|
"@noble/curves": "npm:^1.4.0"
|
||||||
"@noble/hashes": "npm:^1.3.3"
|
"@noble/hashes": "npm:^1.4.0"
|
||||||
"@scure/base": "npm:^1.1.1"
|
"@scure/base": "npm:^1.1.6"
|
||||||
"@scure/bip32": "npm:^1.3.0"
|
"@scure/bip32": "npm:^1.4.0"
|
||||||
"@scure/bip39": "npm:^1.1.1"
|
"@scure/bip39": "npm:^1.3.0"
|
||||||
"@snort/shared": "workspace:*"
|
"@snort/shared": "workspace:*"
|
||||||
"@snort/system": "workspace:*"
|
"@snort/system": "workspace:*"
|
||||||
"@snort/system-react": "workspace:*"
|
"@snort/system-react": "workspace:*"
|
||||||
@ -4611,7 +4600,7 @@ __metadata:
|
|||||||
"@snort/system-web": "workspace:*"
|
"@snort/system-web": "workspace:*"
|
||||||
"@snort/wallet": "workspace:*"
|
"@snort/wallet": "workspace:*"
|
||||||
"@snort/worker-relay": "workspace:*"
|
"@snort/worker-relay": "workspace:*"
|
||||||
"@szhsin/react-menu": "npm:^3.3.1"
|
"@szhsin/react-menu": "npm:^3.5.3"
|
||||||
"@types/config": "npm:^3.3.3"
|
"@types/config": "npm:^3.3.3"
|
||||||
"@types/debug": "npm:^4.1.8"
|
"@types/debug": "npm:^4.1.8"
|
||||||
"@types/latlon-geohash": "npm:^2.0.3"
|
"@types/latlon-geohash": "npm:^2.0.3"
|
||||||
@ -4628,7 +4617,7 @@ __metadata:
|
|||||||
"@uidotdev/usehooks": "npm:^2.4.1"
|
"@uidotdev/usehooks": "npm:^2.4.1"
|
||||||
"@vitejs/plugin-react": "npm:^4.2.0"
|
"@vitejs/plugin-react": "npm:^4.2.0"
|
||||||
"@void-cat/api": "npm:^1.0.12"
|
"@void-cat/api": "npm:^1.0.12"
|
||||||
"@webbtc/webln-types": "npm:^2.1.0"
|
"@webbtc/webln-types": "npm:^3.0.0"
|
||||||
"@webscopeio/react-textarea-autocomplete": "npm:^4.9.2"
|
"@webscopeio/react-textarea-autocomplete": "npm:^4.9.2"
|
||||||
"@welldone-software/why-did-you-render": "npm:^8.0.1"
|
"@welldone-software/why-did-you-render": "npm:^8.0.1"
|
||||||
autoprefixer: "npm:^10.4.16"
|
autoprefixer: "npm:^10.4.16"
|
||||||
@ -4696,9 +4685,9 @@ __metadata:
|
|||||||
version: 0.0.0-use.local
|
version: 0.0.0-use.local
|
||||||
resolution: "@snort/shared@workspace:packages/shared"
|
resolution: "@snort/shared@workspace:packages/shared"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@noble/curves": "npm:^1.2.0"
|
"@noble/curves": "npm:^1.4.0"
|
||||||
"@noble/hashes": "npm:^1.3.2"
|
"@noble/hashes": "npm:^1.4.0"
|
||||||
"@scure/base": "npm:^1.1.2"
|
"@scure/base": "npm:^1.1.6"
|
||||||
"@types/debug": "npm:^4.1.8"
|
"@types/debug": "npm:^4.1.8"
|
||||||
debug: "npm:^4.3.4"
|
debug: "npm:^4.3.4"
|
||||||
eventemitter3: "npm:^5.0.1"
|
eventemitter3: "npm:^5.0.1"
|
||||||
@ -4752,11 +4741,11 @@ __metadata:
|
|||||||
resolution: "@snort/system@workspace:packages/system"
|
resolution: "@snort/system@workspace:packages/system"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@jest/globals": "npm:^29.5.0"
|
"@jest/globals": "npm:^29.5.0"
|
||||||
"@noble/curves": "npm:^1.2.0"
|
"@noble/curves": "npm:^1.4.0"
|
||||||
"@noble/hashes": "npm:^1.3.2"
|
"@noble/hashes": "npm:^1.4.0"
|
||||||
"@nostr-dev-kit/ndk": "npm:^2.7.1"
|
"@nostr-dev-kit/ndk": "npm:^2.8.2"
|
||||||
"@peculiar/webcrypto": "npm:^1.4.3"
|
"@peculiar/webcrypto": "npm:^1.4.6"
|
||||||
"@scure/base": "npm:^1.1.2"
|
"@scure/base": "npm:^1.1.6"
|
||||||
"@snort/shared": "npm:^1.0.15"
|
"@snort/shared": "npm:^1.0.15"
|
||||||
"@stablelib/xchacha20": "npm:^1.0.1"
|
"@stablelib/xchacha20": "npm:^1.0.1"
|
||||||
"@types/debug": "npm:^4.1.8"
|
"@types/debug": "npm:^4.1.8"
|
||||||
@ -4801,7 +4790,7 @@ __metadata:
|
|||||||
version: 0.0.0-use.local
|
version: 0.0.0-use.local
|
||||||
resolution: "@snort/worker-relay@workspace:packages/worker-relay"
|
resolution: "@snort/worker-relay@workspace:packages/worker-relay"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@sqlite.org/sqlite-wasm": "npm:^3.45.1-build1"
|
"@sqlite.org/sqlite-wasm": "npm:^3.45.3-build3"
|
||||||
"@types/debug": "npm:^4.1.12"
|
"@types/debug": "npm:^4.1.12"
|
||||||
"@types/sharedworker": "npm:^0.0.112"
|
"@types/sharedworker": "npm:^0.0.112"
|
||||||
"@types/uuid": "npm:^9.0.7"
|
"@types/uuid": "npm:^9.0.7"
|
||||||
@ -4819,12 +4808,12 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@sqlite.org/sqlite-wasm@npm:^3.45.1-build1":
|
"@sqlite.org/sqlite-wasm@npm:^3.45.3-build3":
|
||||||
version: 3.45.1-build1
|
version: 3.45.3-build3
|
||||||
resolution: "@sqlite.org/sqlite-wasm@npm:3.45.1-build1"
|
resolution: "@sqlite.org/sqlite-wasm@npm:3.45.3-build3"
|
||||||
bin:
|
bin:
|
||||||
sqlite-wasm: bin/index.js
|
sqlite-wasm: bin/index.js
|
||||||
checksum: 10/ae86fedbccfc56f115195dc8f2afefa99b1f63969eb4571ed48bf4bd846773c0bfb9daa84703b95d5f1393954d30042f3aeafc903077ba042aed89dec9c3366f
|
checksum: 10/58dd96936973c8bb3989a7d23d6d6021b05e4b35ae997d617d28b5faf5f370196aaf71d1a060eb1822fed3636acb4b5e0d444807d86687bff2a6efa637f9f1dc
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -4884,7 +4873,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@szhsin/react-menu@npm:^3.3.1":
|
"@szhsin/react-menu@npm:^3.5.3":
|
||||||
version: 3.5.3
|
version: 3.5.3
|
||||||
resolution: "@szhsin/react-menu@npm:3.5.3"
|
resolution: "@szhsin/react-menu@npm:3.5.3"
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -4897,90 +4886,90 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@tauri-apps/cli-darwin-arm64@npm:1.5.11":
|
"@tauri-apps/cli-darwin-arm64@npm:1.5.14":
|
||||||
version: 1.5.11
|
version: 1.5.14
|
||||||
resolution: "@tauri-apps/cli-darwin-arm64@npm:1.5.11"
|
resolution: "@tauri-apps/cli-darwin-arm64@npm:1.5.14"
|
||||||
conditions: os=darwin & cpu=arm64
|
conditions: os=darwin & cpu=arm64
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@tauri-apps/cli-darwin-x64@npm:1.5.11":
|
"@tauri-apps/cli-darwin-x64@npm:1.5.14":
|
||||||
version: 1.5.11
|
version: 1.5.14
|
||||||
resolution: "@tauri-apps/cli-darwin-x64@npm:1.5.11"
|
resolution: "@tauri-apps/cli-darwin-x64@npm:1.5.14"
|
||||||
conditions: os=darwin & cpu=x64
|
conditions: os=darwin & cpu=x64
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@tauri-apps/cli-linux-arm-gnueabihf@npm:1.5.11":
|
"@tauri-apps/cli-linux-arm-gnueabihf@npm:1.5.14":
|
||||||
version: 1.5.11
|
version: 1.5.14
|
||||||
resolution: "@tauri-apps/cli-linux-arm-gnueabihf@npm:1.5.11"
|
resolution: "@tauri-apps/cli-linux-arm-gnueabihf@npm:1.5.14"
|
||||||
conditions: os=linux & cpu=arm
|
conditions: os=linux & cpu=arm
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@tauri-apps/cli-linux-arm64-gnu@npm:1.5.11":
|
"@tauri-apps/cli-linux-arm64-gnu@npm:1.5.14":
|
||||||
version: 1.5.11
|
version: 1.5.14
|
||||||
resolution: "@tauri-apps/cli-linux-arm64-gnu@npm:1.5.11"
|
resolution: "@tauri-apps/cli-linux-arm64-gnu@npm:1.5.14"
|
||||||
conditions: os=linux & cpu=arm64 & libc=glibc
|
conditions: os=linux & cpu=arm64 & libc=glibc
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@tauri-apps/cli-linux-arm64-musl@npm:1.5.11":
|
"@tauri-apps/cli-linux-arm64-musl@npm:1.5.14":
|
||||||
version: 1.5.11
|
version: 1.5.14
|
||||||
resolution: "@tauri-apps/cli-linux-arm64-musl@npm:1.5.11"
|
resolution: "@tauri-apps/cli-linux-arm64-musl@npm:1.5.14"
|
||||||
conditions: os=linux & cpu=arm64 & libc=musl
|
conditions: os=linux & cpu=arm64 & libc=musl
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@tauri-apps/cli-linux-x64-gnu@npm:1.5.11":
|
"@tauri-apps/cli-linux-x64-gnu@npm:1.5.14":
|
||||||
version: 1.5.11
|
version: 1.5.14
|
||||||
resolution: "@tauri-apps/cli-linux-x64-gnu@npm:1.5.11"
|
resolution: "@tauri-apps/cli-linux-x64-gnu@npm:1.5.14"
|
||||||
conditions: os=linux & cpu=x64 & libc=glibc
|
conditions: os=linux & cpu=x64 & libc=glibc
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@tauri-apps/cli-linux-x64-musl@npm:1.5.11":
|
"@tauri-apps/cli-linux-x64-musl@npm:1.5.14":
|
||||||
version: 1.5.11
|
version: 1.5.14
|
||||||
resolution: "@tauri-apps/cli-linux-x64-musl@npm:1.5.11"
|
resolution: "@tauri-apps/cli-linux-x64-musl@npm:1.5.14"
|
||||||
conditions: os=linux & cpu=x64 & libc=musl
|
conditions: os=linux & cpu=x64 & libc=musl
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@tauri-apps/cli-win32-arm64-msvc@npm:1.5.11":
|
"@tauri-apps/cli-win32-arm64-msvc@npm:1.5.14":
|
||||||
version: 1.5.11
|
version: 1.5.14
|
||||||
resolution: "@tauri-apps/cli-win32-arm64-msvc@npm:1.5.11"
|
resolution: "@tauri-apps/cli-win32-arm64-msvc@npm:1.5.14"
|
||||||
conditions: os=win32 & cpu=arm64
|
conditions: os=win32 & cpu=arm64
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@tauri-apps/cli-win32-ia32-msvc@npm:1.5.11":
|
"@tauri-apps/cli-win32-ia32-msvc@npm:1.5.14":
|
||||||
version: 1.5.11
|
version: 1.5.14
|
||||||
resolution: "@tauri-apps/cli-win32-ia32-msvc@npm:1.5.11"
|
resolution: "@tauri-apps/cli-win32-ia32-msvc@npm:1.5.14"
|
||||||
conditions: os=win32 & cpu=ia32
|
conditions: os=win32 & cpu=ia32
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@tauri-apps/cli-win32-x64-msvc@npm:1.5.11":
|
"@tauri-apps/cli-win32-x64-msvc@npm:1.5.14":
|
||||||
version: 1.5.11
|
version: 1.5.14
|
||||||
resolution: "@tauri-apps/cli-win32-x64-msvc@npm:1.5.11"
|
resolution: "@tauri-apps/cli-win32-x64-msvc@npm:1.5.14"
|
||||||
conditions: os=win32 & cpu=x64
|
conditions: os=win32 & cpu=x64
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@tauri-apps/cli@npm:^1.5.11":
|
"@tauri-apps/cli@npm:^1.5.14":
|
||||||
version: 1.5.11
|
version: 1.5.14
|
||||||
resolution: "@tauri-apps/cli@npm:1.5.11"
|
resolution: "@tauri-apps/cli@npm:1.5.14"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@tauri-apps/cli-darwin-arm64": "npm:1.5.11"
|
"@tauri-apps/cli-darwin-arm64": "npm:1.5.14"
|
||||||
"@tauri-apps/cli-darwin-x64": "npm:1.5.11"
|
"@tauri-apps/cli-darwin-x64": "npm:1.5.14"
|
||||||
"@tauri-apps/cli-linux-arm-gnueabihf": "npm:1.5.11"
|
"@tauri-apps/cli-linux-arm-gnueabihf": "npm:1.5.14"
|
||||||
"@tauri-apps/cli-linux-arm64-gnu": "npm:1.5.11"
|
"@tauri-apps/cli-linux-arm64-gnu": "npm:1.5.14"
|
||||||
"@tauri-apps/cli-linux-arm64-musl": "npm:1.5.11"
|
"@tauri-apps/cli-linux-arm64-musl": "npm:1.5.14"
|
||||||
"@tauri-apps/cli-linux-x64-gnu": "npm:1.5.11"
|
"@tauri-apps/cli-linux-x64-gnu": "npm:1.5.14"
|
||||||
"@tauri-apps/cli-linux-x64-musl": "npm:1.5.11"
|
"@tauri-apps/cli-linux-x64-musl": "npm:1.5.14"
|
||||||
"@tauri-apps/cli-win32-arm64-msvc": "npm:1.5.11"
|
"@tauri-apps/cli-win32-arm64-msvc": "npm:1.5.14"
|
||||||
"@tauri-apps/cli-win32-ia32-msvc": "npm:1.5.11"
|
"@tauri-apps/cli-win32-ia32-msvc": "npm:1.5.14"
|
||||||
"@tauri-apps/cli-win32-x64-msvc": "npm:1.5.11"
|
"@tauri-apps/cli-win32-x64-msvc": "npm:1.5.14"
|
||||||
dependenciesMeta:
|
dependenciesMeta:
|
||||||
"@tauri-apps/cli-darwin-arm64":
|
"@tauri-apps/cli-darwin-arm64":
|
||||||
optional: true
|
optional: true
|
||||||
@ -5004,7 +4993,7 @@ __metadata:
|
|||||||
optional: true
|
optional: true
|
||||||
bin:
|
bin:
|
||||||
tauri: tauri.js
|
tauri: tauri.js
|
||||||
checksum: 10/18376915830153f4670f3c68e8acfdb75a33f8f011ba7d366ad8c0babd8d28381d231a8924f0163d48680d72e15345ff6ffa02cc057cb9f936a852426cc38861
|
checksum: 10/000fd57f22997a90555f344c64efa1535b8dec853937763b41abc0fb1735e96b3a64115cd6a9a3269477aeaac21f4954ed806d74c92e47372e76498f388519b7
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -5985,13 +5974,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@webbtc/webln-types@npm:^2.1.0":
|
|
||||||
version: 2.1.0
|
|
||||||
resolution: "@webbtc/webln-types@npm:2.1.0"
|
|
||||||
checksum: 10/18bb0e33e7961f9de8040332448ee6d4b02fbd2b63c92c05b3bc19dfd955379e419a0c102753ed7af9dac03c09029e5f7a10a30ec1a20a8856173a41cba3ab6c
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"@webbtc/webln-types@npm:^3.0.0":
|
"@webbtc/webln-types@npm:^3.0.0":
|
||||||
version: 3.0.0
|
version: 3.0.0
|
||||||
resolution: "@webbtc/webln-types@npm:3.0.0"
|
resolution: "@webbtc/webln-types@npm:3.0.0"
|
||||||
@ -13466,7 +13448,7 @@ __metadata:
|
|||||||
resolution: "root-workspace-0b6124@workspace:."
|
resolution: "root-workspace-0b6124@workspace:."
|
||||||
dependencies:
|
dependencies:
|
||||||
"@cloudflare/workers-types": "npm:^4.20230307.0"
|
"@cloudflare/workers-types": "npm:^4.20230307.0"
|
||||||
"@tauri-apps/cli": "npm:^1.5.11"
|
"@tauri-apps/cli": "npm:^1.5.14"
|
||||||
eslint: "npm:^8.48.0"
|
eslint: "npm:^8.48.0"
|
||||||
prettier: "npm:^3.0.3"
|
prettier: "npm:^3.0.3"
|
||||||
typedoc: "npm:^0.25.7"
|
typedoc: "npm:^0.25.7"
|
||||||
@ -14569,7 +14551,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"tslib@npm:2.6.2, tslib@npm:^2.0.0, tslib@npm:^2.4.0, tslib@npm:^2.5.0, tslib@npm:^2.6.1, tslib@npm:^2.6.2":
|
"tslib@npm:2.6.2, tslib@npm:^2.0.0, tslib@npm:^2.4.0, tslib@npm:^2.6.1, tslib@npm:^2.6.2":
|
||||||
version: 2.6.2
|
version: 2.6.2
|
||||||
resolution: "tslib@npm:2.6.2"
|
resolution: "tslib@npm:2.6.2"
|
||||||
checksum: 10/bd26c22d36736513980091a1e356378e8b662ded04204453d353a7f34a4c21ed0afc59b5f90719d4ba756e581a162ecbf93118dc9c6be5acf70aa309188166ca
|
checksum: 10/bd26c22d36736513980091a1e356378e8b662ded04204453d353a7f34a4c21ed0afc59b5f90719d4ba756e581a162ecbf93118dc9c6be5acf70aa309188166ca
|
||||||
@ -15333,16 +15315,16 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"webcrypto-core@npm:^1.7.7":
|
"webcrypto-core@npm:^1.7.9":
|
||||||
version: 1.7.7
|
version: 1.7.9
|
||||||
resolution: "webcrypto-core@npm:1.7.7"
|
resolution: "webcrypto-core@npm:1.7.9"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@peculiar/asn1-schema": "npm:^2.3.6"
|
"@peculiar/asn1-schema": "npm:^2.3.8"
|
||||||
"@peculiar/json-schema": "npm:^1.1.12"
|
"@peculiar/json-schema": "npm:^1.1.12"
|
||||||
asn1js: "npm:^3.0.1"
|
asn1js: "npm:^3.0.1"
|
||||||
pvtsutils: "npm:^1.3.2"
|
pvtsutils: "npm:^1.3.5"
|
||||||
tslib: "npm:^2.4.0"
|
tslib: "npm:^2.6.2"
|
||||||
checksum: 10/e87ac59d7d05c2aa96117c8f589e99ec9556dfc9ff3cd7fe9464de32e60ed6ff237cdfd35ed53c93546dd0d548bab67b244be381e97b162fe87b6d826e8765ae
|
checksum: 10/515140c6330024f49142a8dd7d84cdb5adddfc09827b6d3aad5fdec398038465fe8f2b48a3a2d9f67a34ab2ac5324c150ec68d552c9313b65a3130d23629da16
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user