ns-auth-sdk 1.14.0 → 1.14.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{cjs-CSUAVztq.cjs → browser-index.cjs} +5476 -296
- package/dist/browser-index.cjs.map +1 -0
- package/dist/browser-index.d.cts +1998 -0
- package/dist/browser-index.d.cts.map +1 -0
- package/dist/browser-index.d.mts +1998 -0
- package/dist/browser-index.d.mts.map +1 -0
- package/dist/{cjs-sm5h7qxv.mjs → browser-index.mjs} +5169 -69
- package/dist/browser-index.mjs.map +1 -0
- package/dist/{group-coordination-BlFpBVpn.mjs → group-coordination-BV6PKlKp.mjs} +1 -1
- package/dist/{group-coordination-BlFpBVpn.mjs.map → group-coordination-BV6PKlKp.mjs.map} +1 -1
- package/dist/{group-coordination-ImuoJEoy.mjs → group-coordination-BytkmY9j.mjs} +1 -1
- package/dist/{group-coordination-LGIyipaX.cjs → group-coordination-DL39hJ3R.cjs} +1 -1
- package/dist/{group-coordination-LGIyipaX.cjs.map → group-coordination-DL39hJ3R.cjs.map} +1 -1
- package/dist/{group-coordination-Cf18OjZt.cjs → group-coordination-DLban6a7.cjs} +1 -1
- package/dist/index.cjs +8899 -41
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.mjs +9072 -213
- package/dist/index.mjs.map +1 -1
- package/dist/{prf-handler-D3EqUNWe.cjs → prf-handler-BNd7gmXJ.cjs} +1 -1
- package/dist/{prf-handler-D3EqUNWe.cjs.map → prf-handler-BNd7gmXJ.cjs.map} +1 -1
- package/dist/prf-handler-CRMgzJG2.cjs +3 -0
- package/dist/{prf-handler-Dly_WZGn.mjs → prf-handler-DG99ZkS2.mjs} +1 -1
- package/dist/{prf-handler-Db8CsoIP.mjs → prf-handler-Dj2WTO9i.mjs} +1 -1
- package/dist/{prf-handler-Db8CsoIP.mjs.map → prf-handler-Dj2WTO9i.mjs.map} +1 -1
- package/dist/zkm.service-Bv88tVS5.mjs +3 -0
- package/dist/zkm.service-D2BZ_aqA.cjs +3 -0
- package/dist/{zkm.service-DfSPbuOl.cjs → zkm.service-DX06sSfB.cjs} +1 -1
- package/dist/{zkm.service-DfSPbuOl.cjs.map → zkm.service-DX06sSfB.cjs.map} +1 -1
- package/dist/{zkm.service-B24N_0FB.mjs → zkm.service-j0HlN7Oq.mjs} +1 -1
- package/dist/{zkm.service-B24N_0FB.mjs.map → zkm.service-j0HlN7Oq.mjs.map} +1 -1
- package/package.json +19 -6
- package/dist/_esm-C7FRLTj2.cjs +0 -9030
- package/dist/_esm-C7FRLTj2.cjs.map +0 -1
- package/dist/_esm-D_oMW5T5.mjs +0 -9028
- package/dist/_esm-D_oMW5T5.mjs.map +0 -1
- package/dist/base64-js-B8y7dH5k.mjs +0 -93
- package/dist/base64-js-B8y7dH5k.mjs.map +0 -1
- package/dist/base64-js-Tm-kCeud.cjs +0 -98
- package/dist/base64-js-Tm-kCeud.cjs.map +0 -1
- package/dist/ccip-157tdxqP.cjs +0 -7947
- package/dist/ccip-157tdxqP.cjs.map +0 -1
- package/dist/ccip-BEMMdVyd.cjs +0 -4
- package/dist/ccip-BSmCdJ3K.mjs +0 -3
- package/dist/ccip-okqXkslP.mjs +0 -6567
- package/dist/ccip-okqXkslP.mjs.map +0 -1
- package/dist/chains-CTeD2UcS.mjs +0 -33
- package/dist/chains-CTeD2UcS.mjs.map +0 -1
- package/dist/chains-Du-lv_5i.cjs +0 -33
- package/dist/chains-Du-lv_5i.cjs.map +0 -1
- package/dist/chunk-Bnu9O96Y.cjs +0 -60
- package/dist/chunk-CVYhg9ik.mjs +0 -45
- package/dist/cjs-CSUAVztq.cjs.map +0 -1
- package/dist/cjs-sm5h7qxv.mjs.map +0 -1
- package/dist/defineChain-7QG67hYU.cjs +0 -30
- package/dist/defineChain-7QG67hYU.cjs.map +0 -1
- package/dist/defineChain-DBem8ZQY.mjs +0 -24
- package/dist/defineChain-DBem8ZQY.mjs.map +0 -1
- package/dist/dist-BPmSxkxc.cjs +0 -10676
- package/dist/dist-BPmSxkxc.cjs.map +0 -1
- package/dist/dist-BSjH4t6s.cjs +0 -12932
- package/dist/dist-BSjH4t6s.cjs.map +0 -1
- package/dist/dist-C-KjTK4Q.cjs +0 -447
- package/dist/dist-C-KjTK4Q.cjs.map +0 -1
- package/dist/dist-C2h97xM-.mjs +0 -355
- package/dist/dist-C2h97xM-.mjs.map +0 -1
- package/dist/dist-CT7grDWb.mjs +0 -12920
- package/dist/dist-CT7grDWb.mjs.map +0 -1
- package/dist/dist-D7fRmK6G.mjs +0 -10632
- package/dist/dist-D7fRmK6G.mjs.map +0 -1
- package/dist/dist-DlmcyFmM.mjs +0 -16951
- package/dist/dist-DlmcyFmM.mjs.map +0 -1
- package/dist/dist-O0uZr5OF.cjs +0 -17122
- package/dist/dist-O0uZr5OF.cjs.map +0 -1
- package/dist/echo-BB-JgAYZ.cjs +0 -339
- package/dist/echo-BB-JgAYZ.cjs.map +0 -1
- package/dist/echo-Bwy4_Cvh.mjs +0 -316
- package/dist/echo-Bwy4_Cvh.mjs.map +0 -1
- package/dist/echo-D6X2IuNW.cjs +0 -9
- package/dist/echo-DvfG_heb.mjs +0 -8
- package/dist/esm-BcHKCX5i.mjs +0 -569
- package/dist/esm-BcHKCX5i.mjs.map +0 -1
- package/dist/esm-Bh_YwFIz.cjs +0 -599
- package/dist/esm-Bh_YwFIz.cjs.map +0 -1
- package/dist/esm-C0XO9TQm.cjs +0 -30449
- package/dist/esm-C0XO9TQm.cjs.map +0 -1
- package/dist/esm-vMUVj9k4.mjs +0 -30440
- package/dist/esm-vMUVj9k4.mjs.map +0 -1
- package/dist/keyset-CKMQXvsb.mjs +0 -172
- package/dist/keyset-CKMQXvsb.mjs.map +0 -1
- package/dist/keyset-Cxdgu110.cjs +0 -237
- package/dist/keyset-Cxdgu110.cjs.map +0 -1
- package/dist/keyset-DLxpGhdu.cjs +0 -6
- package/dist/keyset-IKjlhvqF.mjs +0 -4
- package/dist/node-3EUJ4ga9.cjs +0 -9
- package/dist/node-C2UpE11T.cjs +0 -444
- package/dist/node-C2UpE11T.cjs.map +0 -1
- package/dist/node-CHdpTQdN.mjs +0 -8679
- package/dist/node-CHdpTQdN.mjs.map +0 -1
- package/dist/node-DQt1CVGl.mjs +0 -6
- package/dist/node-Dy8ww1LG.cjs +0 -8680
- package/dist/node-Dy8ww1LG.cjs.map +0 -1
- package/dist/node-IX55IH6z.mjs +0 -397
- package/dist/node-IX55IH6z.mjs.map +0 -1
- package/dist/nostr-BTOpBN_5.cjs +0 -11
- package/dist/nostr-D4E52XRU.mjs +0 -224
- package/dist/nostr-D4E52XRU.mjs.map +0 -1
- package/dist/nostr-Hv2tsnuI.cjs +0 -272
- package/dist/nostr-Hv2tsnuI.cjs.map +0 -1
- package/dist/nostr-ZwJe_DlZ.mjs +0 -4
- package/dist/pako.esm-DTVnlCJh.cjs +0 -3856
- package/dist/pako.esm-DTVnlCJh.cjs.map +0 -1
- package/dist/pako.esm-ORhkEHM2.mjs +0 -3838
- package/dist/pako.esm-ORhkEHM2.mjs.map +0 -1
- package/dist/peer-B9g3OQ5D.cjs +0 -18
- package/dist/peer-CptDj7zu.mjs +0 -745
- package/dist/peer-CptDj7zu.mjs.map +0 -1
- package/dist/peer-CtqL0yiE.mjs +0 -9
- package/dist/peer-XrPL0O6z.cjs +0 -822
- package/dist/peer-XrPL0O6z.cjs.map +0 -1
- package/dist/ping-BXKREIdI.mjs +0 -7
- package/dist/ping-BtVhKocl.cjs +0 -379
- package/dist/ping-BtVhKocl.cjs.map +0 -1
- package/dist/ping-D5fpMhGC.cjs +0 -11
- package/dist/ping-DOD50kW_.mjs +0 -332
- package/dist/ping-DOD50kW_.mjs.map +0 -1
- package/dist/policy-8HcjulLD.cjs +0 -293
- package/dist/policy-8HcjulLD.cjs.map +0 -1
- package/dist/policy-BA6MEOBY.mjs +0 -5
- package/dist/policy-BFNdXvmM.cjs +0 -11
- package/dist/policy-D_nFHHjo.mjs +0 -228
- package/dist/policy-D_nFHHjo.mjs.map +0 -1
- package/dist/prf-handler-BNiyCQMt.cjs +0 -3
- package/dist/src-CVfTUJQl.mjs +0 -822
- package/dist/src-CVfTUJQl.mjs.map +0 -1
- package/dist/src-D5S86Xpf.cjs +0 -827
- package/dist/src-D5S86Xpf.cjs.map +0 -1
- package/dist/types-B-TLIS13.cjs +0 -212
- package/dist/types-B-TLIS13.cjs.map +0 -1
- package/dist/types-CTm_FHYD.mjs +0 -111
- package/dist/types-CTm_FHYD.mjs.map +0 -1
- package/dist/validation-1xwWVXqE.mjs +0 -3
- package/dist/validation-DnpurN79.cjs +0 -405
- package/dist/validation-DnpurN79.cjs.map +0 -1
- package/dist/validation-IsAUvsvy.mjs +0 -334
- package/dist/validation-IsAUvsvy.mjs.map +0 -1
- package/dist/validation-yCvZCqIs.cjs +0 -6
- package/dist/wrapper-C5NpyacC.cjs +0 -3552
- package/dist/wrapper-C5NpyacC.cjs.map +0 -1
- package/dist/wrapper-CHq_CV4J.mjs +0 -3552
- package/dist/wrapper-CHq_CV4J.mjs.map +0 -1
- package/dist/zkm.service-BrXyI4BS.mjs +0 -3
- package/dist/zkm.service-BvQ01wSH.cjs +0 -3
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"policy-8HcjulLD.cjs","names":["PolicyError","npubToHex","NodePolicyInputSchema"],"sources":["../node_modules/@frostr/igloo-core/dist/policy.js"],"sourcesContent":["import { NodePolicyInputSchema, PolicyError } from './types.js';\nimport { npubToHex } from './nostr.js';\nconst COMPRESSED_PUBKEY_REGEX = /^(02|03)[0-9a-fA-F]{64}$/;\nconst STRIPPED_PUBKEY_REGEX = /^[0-9a-fA-F]{64}$/;\nconst policyMetadataStore = new WeakMap();\nfunction normalizePolicyPubkey(pubkey) {\n if (!pubkey) {\n throw new PolicyError('Peer pubkey is required');\n }\n let normalized = pubkey.trim();\n if (normalized.startsWith('npub')) {\n try {\n normalized = npubToHex(normalized);\n }\n catch (error) {\n throw new PolicyError('Failed to convert npub to hex', { pubkey, error });\n }\n }\n if (COMPRESSED_PUBKEY_REGEX.test(normalized)) {\n normalized = normalized.slice(2);\n }\n if (STRIPPED_PUBKEY_REGEX.test(normalized)) {\n return normalized.toLowerCase();\n }\n throw new PolicyError('Peer pubkey must be a 64-character hex string', { pubkey });\n}\nfunction normalizePeerPubkeyLoose(pubkey) {\n if (!pubkey)\n return '';\n const trimmed = pubkey.trim();\n if (STRIPPED_PUBKEY_REGEX.test(trimmed)) {\n return trimmed.toLowerCase();\n }\n if (COMPRESSED_PUBKEY_REGEX.test(trimmed)) {\n return trimmed.slice(2).toLowerCase();\n }\n return trimmed.toLowerCase();\n}\nfunction extractPolicyExtras(policy) {\n const { label, roles, metadata, note, source } = policy;\n const extras = {};\n if (label)\n extras.label = label;\n if (roles && roles.length)\n extras.roles = [...roles];\n if (metadata && Object.keys(metadata).length)\n extras.metadata = metadata;\n if (note)\n extras.note = note;\n if (source)\n extras.source = source;\n return Object.keys(extras).length ? extras : undefined;\n}\nfunction getPolicyMetadataMap(node) {\n let map = policyMetadataStore.get(node);\n if (!map) {\n map = new Map();\n policyMetadataStore.set(node, map);\n }\n return map;\n}\nfunction normalizeNodePolicyInputInternal(policy) {\n const parsed = NodePolicyInputSchema.parse(policy);\n const pubkey = normalizePolicyPubkey(parsed.pubkey);\n const allowSend = parsed.allowSend ?? parsed.send ?? parsed.policy?.send ?? true;\n const allowReceive = parsed.allowReceive ?? parsed.recv ?? parsed.policy?.recv ?? true;\n return {\n pubkey,\n allowSend,\n allowReceive,\n label: parsed.label,\n roles: parsed.roles,\n metadata: parsed.metadata,\n note: parsed.note,\n source: parsed.source ?? 'config'\n };\n}\nexport function normalizeNodePolicyInput(policy) {\n return normalizeNodePolicyInputInternal(policy);\n}\nexport function normalizeNodePolicies(policies) {\n if (!policies || policies.length === 0) {\n return [];\n }\n const dedup = new Map();\n for (const policy of policies) {\n const normalized = normalizeNodePolicyInputInternal(policy);\n dedup.set(normalized.pubkey, normalized);\n }\n return Array.from(dedup.values());\n}\nfunction toPeerConfig(policy) {\n return {\n pubkey: policy.pubkey,\n policy: {\n send: policy.allowSend,\n recv: policy.allowReceive\n }\n };\n}\nexport function prepareNodePolicies(policies) {\n const normalizedPolicies = normalizeNodePolicies(policies);\n const peerConfigs = normalizedPolicies.map(toPeerConfig);\n return { peerConfigs, normalizedPolicies };\n}\nfunction syncPolicyMetadata(node, policies, merge) {\n const map = getPolicyMetadataMap(node);\n if (!merge) {\n map.clear();\n }\n for (const policy of policies) {\n const extras = extractPolicyExtras(policy);\n if (extras) {\n if (merge && map.has(policy.pubkey)) {\n map.set(policy.pubkey, {\n ...map.get(policy.pubkey),\n ...extras\n });\n }\n else {\n map.set(policy.pubkey, extras);\n }\n }\n else if (!merge) {\n map.delete(policy.pubkey);\n }\n }\n}\nfunction syncPeersWithPolicies(node, policyMap, merge) {\n const peers = node.peers;\n if (!peers)\n return;\n for (const peer of peers) {\n const key = normalizePeerPubkeyLoose(peer.pubkey);\n const policy = policyMap.get(key);\n if (policy) {\n peer.policy = { send: policy.send, recv: policy.recv };\n }\n else if (!merge) {\n peer.policy = { send: true, recv: true };\n }\n }\n}\nfunction collectPolicyMapFromConfig(node) {\n const map = new Map();\n const configPolicies = node.config?.policies;\n if (!configPolicies)\n return map;\n for (const peerConfig of configPolicies) {\n const key = normalizePeerPubkeyLoose(peerConfig.pubkey);\n const send = peerConfig.policy?.send ?? true;\n const recv = peerConfig.policy?.recv ?? true;\n map.set(key, { send, recv });\n }\n return map;\n}\nfunction buildNodePolicySummary(pubkey, policy, peer, extras, defaultSource) {\n const status = peer?.status === 'online' || peer?.status === 'offline'\n ? peer.status\n : 'unknown';\n const lastUpdated = typeof peer?.updated === 'number' && !Number.isNaN(peer.updated)\n ? new Date(peer.updated)\n : undefined;\n return {\n pubkey,\n allowSend: policy.send,\n allowReceive: policy.recv,\n label: extras?.label,\n roles: extras?.roles,\n metadata: extras?.metadata,\n note: extras?.note,\n source: extras?.source ?? defaultSource,\n status,\n lastUpdated\n };\n}\nexport function registerNodePolicyMetadata(node, policies) {\n if (!policies.length)\n return;\n syncPolicyMetadata(node, policies, false);\n}\nexport function setNodePolicies(node, policies, options = {}) {\n const { merge = false } = options;\n const { normalizedPolicies } = prepareNodePolicies(policies);\n const policyMap = merge\n ? collectPolicyMapFromConfig(node)\n : new Map();\n for (const policy of normalizedPolicies) {\n policyMap.set(policy.pubkey, {\n send: policy.allowSend,\n recv: policy.allowReceive\n });\n }\n const config = node.config;\n if (!config) {\n throw new PolicyError('Bifrost node config is not available');\n }\n const newConfigPolicies = Array.from(policyMap.entries()).map(([pubkey, policy]) => ({\n pubkey,\n policy\n }));\n config.policies = newConfigPolicies;\n syncPeersWithPolicies(node, policyMap, merge);\n syncPolicyMetadata(node, normalizedPolicies, merge);\n return getNodePolicies(node);\n}\nexport function updateNodePolicy(node, policy) {\n const summaries = setNodePolicies(node, [policy], { merge: true });\n const targetPubkey = normalizePolicyPubkey(policy.pubkey);\n return summaries.find(summary => summary.pubkey === targetPubkey);\n}\nexport function getNodePolicies(node) {\n const peers = node.peers;\n const configMap = collectPolicyMapFromConfig(node);\n const metadataMap = getPolicyMetadataMap(node);\n const summaries = [];\n const seen = new Set();\n if (peers) {\n for (const peer of peers) {\n const key = normalizePeerPubkeyLoose(peer.pubkey);\n const policy = configMap.get(key) ?? peer.policy ?? { send: true, recv: true };\n const extras = metadataMap.get(key);\n summaries.push(buildNodePolicySummary(key, policy, peer, extras, 'runtime'));\n seen.add(key);\n }\n }\n for (const [pubkey, policy] of configMap.entries()) {\n if (seen.has(pubkey))\n continue;\n const extras = metadataMap.get(pubkey);\n summaries.push(buildNodePolicySummary(pubkey, policy, undefined, extras, 'config'));\n }\n return summaries.sort((a, b) => a.pubkey.localeCompare(b.pubkey));\n}\nexport function getNodePolicy(node, pubkey) {\n const normalized = normalizePolicyPubkey(pubkey);\n return getNodePolicies(node).find(policy => policy.pubkey === normalized);\n}\nexport function canSendToPeer(node, pubkey) {\n const normalized = normalizePolicyPubkey(pubkey);\n const configMap = collectPolicyMapFromConfig(node);\n if (configMap.has(normalized)) {\n return configMap.get(normalized).send !== false;\n }\n const peers = node.peers;\n const peer = peers?.find(p => normalizePeerPubkeyLoose(p.pubkey) === normalized);\n return peer?.policy?.send ?? true;\n}\nexport function canReceiveFromPeer(node, pubkey) {\n const normalized = normalizePolicyPubkey(pubkey);\n const configMap = collectPolicyMapFromConfig(node);\n if (configMap.has(normalized)) {\n return configMap.get(normalized).recv !== false;\n }\n const peers = node.peers;\n const peer = peers?.find(p => normalizePeerPubkeyLoose(p.pubkey) === normalized);\n return peer?.policy?.recv ?? true;\n}\nexport function summarizeNodePolicyMatrix(node) {\n const summaries = getNodePolicies(node);\n return summaries.reduce((acc, summary) => {\n acc[summary.pubkey] = {\n send: summary.allowSend,\n recv: summary.allowReceive,\n status: summary.status\n };\n return acc;\n }, {});\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
|
package/dist/policy-BA6MEOBY.mjs
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import "./types-CTm_FHYD.mjs";
|
|
2
|
-
import "./nostr-D4E52XRU.mjs";
|
|
3
|
-
import { a as normalizeNodePolicies, c as registerNodePolicyMetadata, d as updateNodePolicy, i as getNodePolicy, l as setNodePolicies, n as canSendToPeer, o as normalizeNodePolicyInput, r as getNodePolicies, s as prepareNodePolicies, t as canReceiveFromPeer, u as summarizeNodePolicyMatrix } from "./policy-D_nFHHjo.mjs";
|
|
4
|
-
|
|
5
|
-
export { canReceiveFromPeer, canSendToPeer, getNodePolicies, getNodePolicy, setNodePolicies, summarizeNodePolicyMatrix, updateNodePolicy };
|
package/dist/policy-BFNdXvmM.cjs
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
require('./types-B-TLIS13.cjs');
|
|
2
|
-
require('./nostr-Hv2tsnuI.cjs');
|
|
3
|
-
const require_policy = require('./policy-8HcjulLD.cjs');
|
|
4
|
-
|
|
5
|
-
exports.canReceiveFromPeer = require_policy.canReceiveFromPeer;
|
|
6
|
-
exports.canSendToPeer = require_policy.canSendToPeer;
|
|
7
|
-
exports.getNodePolicies = require_policy.getNodePolicies;
|
|
8
|
-
exports.getNodePolicy = require_policy.getNodePolicy;
|
|
9
|
-
exports.setNodePolicies = require_policy.setNodePolicies;
|
|
10
|
-
exports.summarizeNodePolicyMatrix = require_policy.summarizeNodePolicyMatrix;
|
|
11
|
-
exports.updateNodePolicy = require_policy.updateNodePolicy;
|
package/dist/policy-D_nFHHjo.mjs
DELETED
|
@@ -1,228 +0,0 @@
|
|
|
1
|
-
import { m as PolicyError, u as NodePolicyInputSchema } from "./types-CTm_FHYD.mjs";
|
|
2
|
-
import { a as npubToHex } from "./nostr-D4E52XRU.mjs";
|
|
3
|
-
|
|
4
|
-
//#region node_modules/@frostr/igloo-core/dist/policy.js
|
|
5
|
-
const COMPRESSED_PUBKEY_REGEX = /^(02|03)[0-9a-fA-F]{64}$/;
|
|
6
|
-
const STRIPPED_PUBKEY_REGEX = /^[0-9a-fA-F]{64}$/;
|
|
7
|
-
const policyMetadataStore = /* @__PURE__ */ new WeakMap();
|
|
8
|
-
function normalizePolicyPubkey(pubkey) {
|
|
9
|
-
if (!pubkey) throw new PolicyError("Peer pubkey is required");
|
|
10
|
-
let normalized = pubkey.trim();
|
|
11
|
-
if (normalized.startsWith("npub")) try {
|
|
12
|
-
normalized = npubToHex(normalized);
|
|
13
|
-
} catch (error) {
|
|
14
|
-
throw new PolicyError("Failed to convert npub to hex", {
|
|
15
|
-
pubkey,
|
|
16
|
-
error
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
if (COMPRESSED_PUBKEY_REGEX.test(normalized)) normalized = normalized.slice(2);
|
|
20
|
-
if (STRIPPED_PUBKEY_REGEX.test(normalized)) return normalized.toLowerCase();
|
|
21
|
-
throw new PolicyError("Peer pubkey must be a 64-character hex string", { pubkey });
|
|
22
|
-
}
|
|
23
|
-
function normalizePeerPubkeyLoose(pubkey) {
|
|
24
|
-
if (!pubkey) return "";
|
|
25
|
-
const trimmed = pubkey.trim();
|
|
26
|
-
if (STRIPPED_PUBKEY_REGEX.test(trimmed)) return trimmed.toLowerCase();
|
|
27
|
-
if (COMPRESSED_PUBKEY_REGEX.test(trimmed)) return trimmed.slice(2).toLowerCase();
|
|
28
|
-
return trimmed.toLowerCase();
|
|
29
|
-
}
|
|
30
|
-
function extractPolicyExtras(policy) {
|
|
31
|
-
const { label, roles, metadata, note, source } = policy;
|
|
32
|
-
const extras = {};
|
|
33
|
-
if (label) extras.label = label;
|
|
34
|
-
if (roles && roles.length) extras.roles = [...roles];
|
|
35
|
-
if (metadata && Object.keys(metadata).length) extras.metadata = metadata;
|
|
36
|
-
if (note) extras.note = note;
|
|
37
|
-
if (source) extras.source = source;
|
|
38
|
-
return Object.keys(extras).length ? extras : void 0;
|
|
39
|
-
}
|
|
40
|
-
function getPolicyMetadataMap(node) {
|
|
41
|
-
let map = policyMetadataStore.get(node);
|
|
42
|
-
if (!map) {
|
|
43
|
-
map = /* @__PURE__ */ new Map();
|
|
44
|
-
policyMetadataStore.set(node, map);
|
|
45
|
-
}
|
|
46
|
-
return map;
|
|
47
|
-
}
|
|
48
|
-
function normalizeNodePolicyInputInternal(policy) {
|
|
49
|
-
const parsed = NodePolicyInputSchema.parse(policy);
|
|
50
|
-
return {
|
|
51
|
-
pubkey: normalizePolicyPubkey(parsed.pubkey),
|
|
52
|
-
allowSend: parsed.allowSend ?? parsed.send ?? parsed.policy?.send ?? true,
|
|
53
|
-
allowReceive: parsed.allowReceive ?? parsed.recv ?? parsed.policy?.recv ?? true,
|
|
54
|
-
label: parsed.label,
|
|
55
|
-
roles: parsed.roles,
|
|
56
|
-
metadata: parsed.metadata,
|
|
57
|
-
note: parsed.note,
|
|
58
|
-
source: parsed.source ?? "config"
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
function normalizeNodePolicyInput(policy) {
|
|
62
|
-
return normalizeNodePolicyInputInternal(policy);
|
|
63
|
-
}
|
|
64
|
-
function normalizeNodePolicies(policies) {
|
|
65
|
-
if (!policies || policies.length === 0) return [];
|
|
66
|
-
const dedup = /* @__PURE__ */ new Map();
|
|
67
|
-
for (const policy of policies) {
|
|
68
|
-
const normalized = normalizeNodePolicyInputInternal(policy);
|
|
69
|
-
dedup.set(normalized.pubkey, normalized);
|
|
70
|
-
}
|
|
71
|
-
return Array.from(dedup.values());
|
|
72
|
-
}
|
|
73
|
-
function toPeerConfig(policy) {
|
|
74
|
-
return {
|
|
75
|
-
pubkey: policy.pubkey,
|
|
76
|
-
policy: {
|
|
77
|
-
send: policy.allowSend,
|
|
78
|
-
recv: policy.allowReceive
|
|
79
|
-
}
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
function prepareNodePolicies(policies) {
|
|
83
|
-
const normalizedPolicies = normalizeNodePolicies(policies);
|
|
84
|
-
return {
|
|
85
|
-
peerConfigs: normalizedPolicies.map(toPeerConfig),
|
|
86
|
-
normalizedPolicies
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
function syncPolicyMetadata(node, policies, merge) {
|
|
90
|
-
const map = getPolicyMetadataMap(node);
|
|
91
|
-
if (!merge) map.clear();
|
|
92
|
-
for (const policy of policies) {
|
|
93
|
-
const extras = extractPolicyExtras(policy);
|
|
94
|
-
if (extras) if (merge && map.has(policy.pubkey)) map.set(policy.pubkey, {
|
|
95
|
-
...map.get(policy.pubkey),
|
|
96
|
-
...extras
|
|
97
|
-
});
|
|
98
|
-
else map.set(policy.pubkey, extras);
|
|
99
|
-
else if (!merge) map.delete(policy.pubkey);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
function syncPeersWithPolicies(node, policyMap, merge) {
|
|
103
|
-
const peers = node.peers;
|
|
104
|
-
if (!peers) return;
|
|
105
|
-
for (const peer of peers) {
|
|
106
|
-
const key = normalizePeerPubkeyLoose(peer.pubkey);
|
|
107
|
-
const policy = policyMap.get(key);
|
|
108
|
-
if (policy) peer.policy = {
|
|
109
|
-
send: policy.send,
|
|
110
|
-
recv: policy.recv
|
|
111
|
-
};
|
|
112
|
-
else if (!merge) peer.policy = {
|
|
113
|
-
send: true,
|
|
114
|
-
recv: true
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
function collectPolicyMapFromConfig(node) {
|
|
119
|
-
const map = /* @__PURE__ */ new Map();
|
|
120
|
-
const configPolicies = node.config?.policies;
|
|
121
|
-
if (!configPolicies) return map;
|
|
122
|
-
for (const peerConfig of configPolicies) {
|
|
123
|
-
const key = normalizePeerPubkeyLoose(peerConfig.pubkey);
|
|
124
|
-
const send = peerConfig.policy?.send ?? true;
|
|
125
|
-
const recv = peerConfig.policy?.recv ?? true;
|
|
126
|
-
map.set(key, {
|
|
127
|
-
send,
|
|
128
|
-
recv
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
return map;
|
|
132
|
-
}
|
|
133
|
-
function buildNodePolicySummary(pubkey, policy, peer, extras, defaultSource) {
|
|
134
|
-
const status = peer?.status === "online" || peer?.status === "offline" ? peer.status : "unknown";
|
|
135
|
-
const lastUpdated = typeof peer?.updated === "number" && !Number.isNaN(peer.updated) ? new Date(peer.updated) : void 0;
|
|
136
|
-
return {
|
|
137
|
-
pubkey,
|
|
138
|
-
allowSend: policy.send,
|
|
139
|
-
allowReceive: policy.recv,
|
|
140
|
-
label: extras?.label,
|
|
141
|
-
roles: extras?.roles,
|
|
142
|
-
metadata: extras?.metadata,
|
|
143
|
-
note: extras?.note,
|
|
144
|
-
source: extras?.source ?? defaultSource,
|
|
145
|
-
status,
|
|
146
|
-
lastUpdated
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
function registerNodePolicyMetadata(node, policies) {
|
|
150
|
-
if (!policies.length) return;
|
|
151
|
-
syncPolicyMetadata(node, policies, false);
|
|
152
|
-
}
|
|
153
|
-
function setNodePolicies(node, policies, options = {}) {
|
|
154
|
-
const { merge = false } = options;
|
|
155
|
-
const { normalizedPolicies } = prepareNodePolicies(policies);
|
|
156
|
-
const policyMap = merge ? collectPolicyMapFromConfig(node) : /* @__PURE__ */ new Map();
|
|
157
|
-
for (const policy of normalizedPolicies) policyMap.set(policy.pubkey, {
|
|
158
|
-
send: policy.allowSend,
|
|
159
|
-
recv: policy.allowReceive
|
|
160
|
-
});
|
|
161
|
-
const config = node.config;
|
|
162
|
-
if (!config) throw new PolicyError("Bifrost node config is not available");
|
|
163
|
-
config.policies = Array.from(policyMap.entries()).map(([pubkey, policy]) => ({
|
|
164
|
-
pubkey,
|
|
165
|
-
policy
|
|
166
|
-
}));
|
|
167
|
-
syncPeersWithPolicies(node, policyMap, merge);
|
|
168
|
-
syncPolicyMetadata(node, normalizedPolicies, merge);
|
|
169
|
-
return getNodePolicies(node);
|
|
170
|
-
}
|
|
171
|
-
function updateNodePolicy(node, policy) {
|
|
172
|
-
const summaries = setNodePolicies(node, [policy], { merge: true });
|
|
173
|
-
const targetPubkey = normalizePolicyPubkey(policy.pubkey);
|
|
174
|
-
return summaries.find((summary) => summary.pubkey === targetPubkey);
|
|
175
|
-
}
|
|
176
|
-
function getNodePolicies(node) {
|
|
177
|
-
const peers = node.peers;
|
|
178
|
-
const configMap = collectPolicyMapFromConfig(node);
|
|
179
|
-
const metadataMap = getPolicyMetadataMap(node);
|
|
180
|
-
const summaries = [];
|
|
181
|
-
const seen = /* @__PURE__ */ new Set();
|
|
182
|
-
if (peers) for (const peer of peers) {
|
|
183
|
-
const key = normalizePeerPubkeyLoose(peer.pubkey);
|
|
184
|
-
const policy = configMap.get(key) ?? peer.policy ?? {
|
|
185
|
-
send: true,
|
|
186
|
-
recv: true
|
|
187
|
-
};
|
|
188
|
-
const extras = metadataMap.get(key);
|
|
189
|
-
summaries.push(buildNodePolicySummary(key, policy, peer, extras, "runtime"));
|
|
190
|
-
seen.add(key);
|
|
191
|
-
}
|
|
192
|
-
for (const [pubkey, policy] of configMap.entries()) {
|
|
193
|
-
if (seen.has(pubkey)) continue;
|
|
194
|
-
const extras = metadataMap.get(pubkey);
|
|
195
|
-
summaries.push(buildNodePolicySummary(pubkey, policy, void 0, extras, "config"));
|
|
196
|
-
}
|
|
197
|
-
return summaries.sort((a, b) => a.pubkey.localeCompare(b.pubkey));
|
|
198
|
-
}
|
|
199
|
-
function getNodePolicy(node, pubkey) {
|
|
200
|
-
const normalized = normalizePolicyPubkey(pubkey);
|
|
201
|
-
return getNodePolicies(node).find((policy) => policy.pubkey === normalized);
|
|
202
|
-
}
|
|
203
|
-
function canSendToPeer(node, pubkey) {
|
|
204
|
-
const normalized = normalizePolicyPubkey(pubkey);
|
|
205
|
-
const configMap = collectPolicyMapFromConfig(node);
|
|
206
|
-
if (configMap.has(normalized)) return configMap.get(normalized).send !== false;
|
|
207
|
-
return (node.peers?.find((p) => normalizePeerPubkeyLoose(p.pubkey) === normalized))?.policy?.send ?? true;
|
|
208
|
-
}
|
|
209
|
-
function canReceiveFromPeer(node, pubkey) {
|
|
210
|
-
const normalized = normalizePolicyPubkey(pubkey);
|
|
211
|
-
const configMap = collectPolicyMapFromConfig(node);
|
|
212
|
-
if (configMap.has(normalized)) return configMap.get(normalized).recv !== false;
|
|
213
|
-
return (node.peers?.find((p) => normalizePeerPubkeyLoose(p.pubkey) === normalized))?.policy?.recv ?? true;
|
|
214
|
-
}
|
|
215
|
-
function summarizeNodePolicyMatrix(node) {
|
|
216
|
-
return getNodePolicies(node).reduce((acc, summary) => {
|
|
217
|
-
acc[summary.pubkey] = {
|
|
218
|
-
send: summary.allowSend,
|
|
219
|
-
recv: summary.allowReceive,
|
|
220
|
-
status: summary.status
|
|
221
|
-
};
|
|
222
|
-
return acc;
|
|
223
|
-
}, {});
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
//#endregion
|
|
227
|
-
export { normalizeNodePolicies as a, registerNodePolicyMetadata as c, updateNodePolicy as d, getNodePolicy as i, setNodePolicies as l, canSendToPeer as n, normalizeNodePolicyInput as o, getNodePolicies as r, prepareNodePolicies as s, canReceiveFromPeer as t, summarizeNodePolicyMatrix as u };
|
|
228
|
-
//# sourceMappingURL=policy-D_nFHHjo.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"policy-D_nFHHjo.mjs","names":[],"sources":["../node_modules/@frostr/igloo-core/dist/policy.js"],"sourcesContent":["import { NodePolicyInputSchema, PolicyError } from './types.js';\nimport { npubToHex } from './nostr.js';\nconst COMPRESSED_PUBKEY_REGEX = /^(02|03)[0-9a-fA-F]{64}$/;\nconst STRIPPED_PUBKEY_REGEX = /^[0-9a-fA-F]{64}$/;\nconst policyMetadataStore = new WeakMap();\nfunction normalizePolicyPubkey(pubkey) {\n if (!pubkey) {\n throw new PolicyError('Peer pubkey is required');\n }\n let normalized = pubkey.trim();\n if (normalized.startsWith('npub')) {\n try {\n normalized = npubToHex(normalized);\n }\n catch (error) {\n throw new PolicyError('Failed to convert npub to hex', { pubkey, error });\n }\n }\n if (COMPRESSED_PUBKEY_REGEX.test(normalized)) {\n normalized = normalized.slice(2);\n }\n if (STRIPPED_PUBKEY_REGEX.test(normalized)) {\n return normalized.toLowerCase();\n }\n throw new PolicyError('Peer pubkey must be a 64-character hex string', { pubkey });\n}\nfunction normalizePeerPubkeyLoose(pubkey) {\n if (!pubkey)\n return '';\n const trimmed = pubkey.trim();\n if (STRIPPED_PUBKEY_REGEX.test(trimmed)) {\n return trimmed.toLowerCase();\n }\n if (COMPRESSED_PUBKEY_REGEX.test(trimmed)) {\n return trimmed.slice(2).toLowerCase();\n }\n return trimmed.toLowerCase();\n}\nfunction extractPolicyExtras(policy) {\n const { label, roles, metadata, note, source } = policy;\n const extras = {};\n if (label)\n extras.label = label;\n if (roles && roles.length)\n extras.roles = [...roles];\n if (metadata && Object.keys(metadata).length)\n extras.metadata = metadata;\n if (note)\n extras.note = note;\n if (source)\n extras.source = source;\n return Object.keys(extras).length ? extras : undefined;\n}\nfunction getPolicyMetadataMap(node) {\n let map = policyMetadataStore.get(node);\n if (!map) {\n map = new Map();\n policyMetadataStore.set(node, map);\n }\n return map;\n}\nfunction normalizeNodePolicyInputInternal(policy) {\n const parsed = NodePolicyInputSchema.parse(policy);\n const pubkey = normalizePolicyPubkey(parsed.pubkey);\n const allowSend = parsed.allowSend ?? parsed.send ?? parsed.policy?.send ?? true;\n const allowReceive = parsed.allowReceive ?? parsed.recv ?? parsed.policy?.recv ?? true;\n return {\n pubkey,\n allowSend,\n allowReceive,\n label: parsed.label,\n roles: parsed.roles,\n metadata: parsed.metadata,\n note: parsed.note,\n source: parsed.source ?? 'config'\n };\n}\nexport function normalizeNodePolicyInput(policy) {\n return normalizeNodePolicyInputInternal(policy);\n}\nexport function normalizeNodePolicies(policies) {\n if (!policies || policies.length === 0) {\n return [];\n }\n const dedup = new Map();\n for (const policy of policies) {\n const normalized = normalizeNodePolicyInputInternal(policy);\n dedup.set(normalized.pubkey, normalized);\n }\n return Array.from(dedup.values());\n}\nfunction toPeerConfig(policy) {\n return {\n pubkey: policy.pubkey,\n policy: {\n send: policy.allowSend,\n recv: policy.allowReceive\n }\n };\n}\nexport function prepareNodePolicies(policies) {\n const normalizedPolicies = normalizeNodePolicies(policies);\n const peerConfigs = normalizedPolicies.map(toPeerConfig);\n return { peerConfigs, normalizedPolicies };\n}\nfunction syncPolicyMetadata(node, policies, merge) {\n const map = getPolicyMetadataMap(node);\n if (!merge) {\n map.clear();\n }\n for (const policy of policies) {\n const extras = extractPolicyExtras(policy);\n if (extras) {\n if (merge && map.has(policy.pubkey)) {\n map.set(policy.pubkey, {\n ...map.get(policy.pubkey),\n ...extras\n });\n }\n else {\n map.set(policy.pubkey, extras);\n }\n }\n else if (!merge) {\n map.delete(policy.pubkey);\n }\n }\n}\nfunction syncPeersWithPolicies(node, policyMap, merge) {\n const peers = node.peers;\n if (!peers)\n return;\n for (const peer of peers) {\n const key = normalizePeerPubkeyLoose(peer.pubkey);\n const policy = policyMap.get(key);\n if (policy) {\n peer.policy = { send: policy.send, recv: policy.recv };\n }\n else if (!merge) {\n peer.policy = { send: true, recv: true };\n }\n }\n}\nfunction collectPolicyMapFromConfig(node) {\n const map = new Map();\n const configPolicies = node.config?.policies;\n if (!configPolicies)\n return map;\n for (const peerConfig of configPolicies) {\n const key = normalizePeerPubkeyLoose(peerConfig.pubkey);\n const send = peerConfig.policy?.send ?? true;\n const recv = peerConfig.policy?.recv ?? true;\n map.set(key, { send, recv });\n }\n return map;\n}\nfunction buildNodePolicySummary(pubkey, policy, peer, extras, defaultSource) {\n const status = peer?.status === 'online' || peer?.status === 'offline'\n ? peer.status\n : 'unknown';\n const lastUpdated = typeof peer?.updated === 'number' && !Number.isNaN(peer.updated)\n ? new Date(peer.updated)\n : undefined;\n return {\n pubkey,\n allowSend: policy.send,\n allowReceive: policy.recv,\n label: extras?.label,\n roles: extras?.roles,\n metadata: extras?.metadata,\n note: extras?.note,\n source: extras?.source ?? defaultSource,\n status,\n lastUpdated\n };\n}\nexport function registerNodePolicyMetadata(node, policies) {\n if (!policies.length)\n return;\n syncPolicyMetadata(node, policies, false);\n}\nexport function setNodePolicies(node, policies, options = {}) {\n const { merge = false } = options;\n const { normalizedPolicies } = prepareNodePolicies(policies);\n const policyMap = merge\n ? collectPolicyMapFromConfig(node)\n : new Map();\n for (const policy of normalizedPolicies) {\n policyMap.set(policy.pubkey, {\n send: policy.allowSend,\n recv: policy.allowReceive\n });\n }\n const config = node.config;\n if (!config) {\n throw new PolicyError('Bifrost node config is not available');\n }\n const newConfigPolicies = Array.from(policyMap.entries()).map(([pubkey, policy]) => ({\n pubkey,\n policy\n }));\n config.policies = newConfigPolicies;\n syncPeersWithPolicies(node, policyMap, merge);\n syncPolicyMetadata(node, normalizedPolicies, merge);\n return getNodePolicies(node);\n}\nexport function updateNodePolicy(node, policy) {\n const summaries = setNodePolicies(node, [policy], { merge: true });\n const targetPubkey = normalizePolicyPubkey(policy.pubkey);\n return summaries.find(summary => summary.pubkey === targetPubkey);\n}\nexport function getNodePolicies(node) {\n const peers = node.peers;\n const configMap = collectPolicyMapFromConfig(node);\n const metadataMap = getPolicyMetadataMap(node);\n const summaries = [];\n const seen = new Set();\n if (peers) {\n for (const peer of peers) {\n const key = normalizePeerPubkeyLoose(peer.pubkey);\n const policy = configMap.get(key) ?? peer.policy ?? { send: true, recv: true };\n const extras = metadataMap.get(key);\n summaries.push(buildNodePolicySummary(key, policy, peer, extras, 'runtime'));\n seen.add(key);\n }\n }\n for (const [pubkey, policy] of configMap.entries()) {\n if (seen.has(pubkey))\n continue;\n const extras = metadataMap.get(pubkey);\n summaries.push(buildNodePolicySummary(pubkey, policy, undefined, extras, 'config'));\n }\n return summaries.sort((a, b) => a.pubkey.localeCompare(b.pubkey));\n}\nexport function getNodePolicy(node, pubkey) {\n const normalized = normalizePolicyPubkey(pubkey);\n return getNodePolicies(node).find(policy => policy.pubkey === normalized);\n}\nexport function canSendToPeer(node, pubkey) {\n const normalized = normalizePolicyPubkey(pubkey);\n const configMap = collectPolicyMapFromConfig(node);\n if (configMap.has(normalized)) {\n return configMap.get(normalized).send !== false;\n }\n const peers = node.peers;\n const peer = peers?.find(p => normalizePeerPubkeyLoose(p.pubkey) === normalized);\n return peer?.policy?.send ?? true;\n}\nexport function canReceiveFromPeer(node, pubkey) {\n const normalized = normalizePolicyPubkey(pubkey);\n const configMap = collectPolicyMapFromConfig(node);\n if (configMap.has(normalized)) {\n return configMap.get(normalized).recv !== false;\n }\n const peers = node.peers;\n const peer = peers?.find(p => normalizePeerPubkeyLoose(p.pubkey) === normalized);\n return peer?.policy?.recv ?? true;\n}\nexport function summarizeNodePolicyMatrix(node) {\n const summaries = getNodePolicies(node);\n return summaries.reduce((acc, summary) => {\n acc[summary.pubkey] = {\n send: summary.allowSend,\n recv: summary.allowReceive,\n status: summary.status\n };\n return acc;\n }, {});\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
|