nostr-components 0.2.6 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +105 -185
- package/dist/assets/{base-styles-CBypR3FR.js → base-styles-DC0ilu4S.js} +2 -2
- package/dist/assets/{base-styles-CBypR3FR.js.map → base-styles-DC0ilu4S.js.map} +1 -1
- package/dist/assets/{copy-delegation-C4uvRTVM.js → copy-delegation-CcagQMIW.js} +2 -2
- package/dist/assets/{copy-delegation-C4uvRTVM.js.map → copy-delegation-CcagQMIW.js.map} +1 -1
- package/dist/assets/{dialog-component-Da1ZIYh9.js → dialog-component-Dqg0QU9I.js} +2 -7
- package/dist/assets/dialog-component-Dqg0QU9I.js.map +1 -0
- package/dist/assets/{dialog-likers-BjiCHFan.js → dialog-likers-D3c7WIMp.js} +5 -5
- package/dist/assets/dialog-likers-D3c7WIMp.js.map +1 -0
- package/dist/assets/index.esm-ByUtE_cm.js +2159 -0
- package/dist/assets/index.esm-ByUtE_cm.js.map +1 -0
- package/dist/assets/nip05-utils-BNBHUmkr.js.map +1 -1
- package/dist/assets/nostr-login-service-D2FmscPI.js +2 -0
- package/dist/assets/nostr-login-service-D2FmscPI.js.map +1 -0
- package/dist/assets/nostr-service-m3Hgc5Xx.js +266 -0
- package/dist/assets/nostr-service-m3Hgc5Xx.js.map +1 -0
- package/dist/assets/nostr-user-component-XEnanH-d.js +2 -0
- package/dist/assets/nostr-user-component-XEnanH-d.js.map +1 -0
- package/dist/assets/{pure-jrVhRVpB.js → pure-laCRX9eG.js} +2 -2
- package/dist/assets/pure-laCRX9eG.js.map +1 -0
- package/dist/assets/theme-C1r1Zw8r.js.map +1 -1
- package/dist/assets/{user-resolver-C-E6KdwY.js → user-resolver-DqI5KGh6.js} +2 -2
- package/dist/assets/{user-resolver-C-E6KdwY.js.map → user-resolver-DqI5KGh6.js.map} +1 -1
- package/dist/assets/utils--bxLbhGF.js.map +1 -1
- package/dist/assets/zap-utils-BZcaCsT_.js +2 -0
- package/dist/assets/zap-utils-BZcaCsT_.js.map +1 -0
- package/dist/components/nostr-comment.es.js +26 -26
- package/dist/components/nostr-comment.es.js.map +1 -1
- package/dist/components/nostr-dm.es.js +2 -2
- package/dist/components/nostr-dm.es.js.map +1 -1
- package/dist/components/nostr-follow-button.es.js +6 -7
- package/dist/components/nostr-follow-button.es.js.map +1 -1
- package/dist/components/nostr-like.es.js +16 -16
- package/dist/components/nostr-like.es.js.map +1 -1
- package/dist/components/nostr-live-chat.es.js +2 -2
- package/dist/components/nostr-live-chat.es.js.map +1 -1
- package/dist/components/nostr-post.es.js +19 -19
- package/dist/components/nostr-post.es.js.map +1 -1
- package/dist/components/nostr-profile-badge.es.js +1 -1
- package/dist/components/nostr-profile-badge.es.js.map +1 -1
- package/dist/components/nostr-profile.es.js +1 -1
- package/dist/components/nostr-profile.es.js.map +1 -1
- package/dist/components/nostr-zap.es.js +24 -24
- package/dist/components/nostr-zap.es.js.map +1 -1
- package/dist/nostr-components.es.js +1 -1
- package/dist/nostr-components.umd.js +2644 -305
- package/dist/nostr-components.umd.js.map +1 -1
- package/package.json +5 -2
- package/dist/assets/dark-nostrich-running.gif +0 -0
- package/dist/assets/default_dp-NQ3TGrtT.png +0 -0
- package/dist/assets/default_dp.png +0 -0
- package/dist/assets/default_dp_32.png +0 -0
- package/dist/assets/dialog-component-Da1ZIYh9.js.map +0 -1
- package/dist/assets/dialog-likers-BjiCHFan.js.map +0 -1
- package/dist/assets/light-nostrich-running.gif +0 -0
- package/dist/assets/nostr-service-pr_crY62.js +0 -78
- package/dist/assets/nostr-service-pr_crY62.js.map +0 -1
- package/dist/assets/nostr-user-component-BOdux8_6.js +0 -2
- package/dist/assets/nostr-user-component-BOdux8_6.js.map +0 -1
- package/dist/assets/pure-jrVhRVpB.js.map +0 -1
- package/dist/assets/zap-utils-B1sz0Abx.js +0 -2
- package/dist/assets/zap-utils-B1sz0Abx.js.map +0 -1
- package/dist/index.d.ts +0 -6
- package/dist/nostr-comment.d.ts +0 -4
- package/dist/nostr-dm.d.ts +0 -4
- package/dist/nostr-follow-button.d.ts +0 -4
- package/dist/nostr-like.d.ts +0 -4
- package/dist/nostr-live-chat.d.ts +0 -4
- package/dist/nostr-post.d.ts +0 -4
- package/dist/nostr-profile-badge.d.ts +0 -4
- package/dist/nostr-profile.d.ts +0 -4
- package/dist/nostr-zap.d.ts +0 -4
- package/dist/src/base/base-component/nostr-base-component.d.ts +0 -116
- package/dist/src/base/copy-delegation.d.ts +0 -5
- package/dist/src/base/dialog-component/dialog-component.d.ts +0 -67
- package/dist/src/base/dialog-component/style.d.ts +0 -5
- package/dist/src/base/event-component/nostr-event-component.d.ts +0 -53
- package/dist/src/base/render-options.d.ts +0 -5
- package/dist/src/base/resolvers/event-resolver.d.ts +0 -20
- package/dist/src/base/resolvers/user-resolver.d.ts +0 -19
- package/dist/src/base/text-row/render-name.d.ts +0 -7
- package/dist/src/base/text-row/render-nip05.d.ts +0 -1
- package/dist/src/base/text-row/render-npub.d.ts +0 -1
- package/dist/src/base/text-row/render-text-row.d.ts +0 -9
- package/dist/src/base/user-component/nostr-user-component.d.ts +0 -43
- package/dist/src/common/base-styles.d.ts +0 -44
- package/dist/src/common/constants.d.ts +0 -4
- package/dist/src/common/date-utils.d.ts +0 -9
- package/dist/src/common/icons.d.ts +0 -7
- package/dist/src/common/nip05-utils.d.ts +0 -13
- package/dist/src/common/nostr-service.d.ts +0 -40
- package/dist/src/common/theme.d.ts +0 -4
- package/dist/src/common/types.d.ts +0 -1
- package/dist/src/common/utils.d.ts +0 -34
- package/dist/src/index.d.ts +0 -32
- package/dist/src/nostr-comment/nostr-comment.d.ts +0 -60
- package/dist/src/nostr-comment/render.d.ts +0 -15
- package/dist/src/nostr-comment/utils.d.ts +0 -81
- package/dist/src/nostr-dm/nostr-dm.d.ts +0 -34
- package/dist/src/nostr-dm/render.d.ts +0 -15
- package/dist/src/nostr-follow-button/nostr-follow-button.d.ts +0 -24
- package/dist/src/nostr-follow-button/render.d.ts +0 -11
- package/dist/src/nostr-follow-button/style.d.ts +0 -1
- package/dist/src/nostr-like/dialog-help-style.d.ts +0 -1
- package/dist/src/nostr-like/dialog-help.d.ts +0 -2
- package/dist/src/nostr-like/dialog-likers-style.d.ts +0 -1
- package/dist/src/nostr-like/dialog-likers.d.ts +0 -24
- package/dist/src/nostr-like/like-utils.d.ts +0 -52
- package/dist/src/nostr-like/nostr-like.d.ts +0 -49
- package/dist/src/nostr-like/render.d.ts +0 -10
- package/dist/src/nostr-like/style.d.ts +0 -1
- package/dist/src/nostr-live-chat/nostr-live-chat.d.ts +0 -65
- package/dist/src/nostr-live-chat/render.d.ts +0 -31
- package/dist/src/nostr-post/nostr-post.d.ts +0 -25
- package/dist/src/nostr-post/parse-text.d.ts +0 -8
- package/dist/src/nostr-post/render-content.d.ts +0 -5
- package/dist/src/nostr-post/render.d.ts +0 -19
- package/dist/src/nostr-post/style.d.ts +0 -1
- package/dist/src/nostr-profile/nostr-profile.d.ts +0 -24
- package/dist/src/nostr-profile/render-stats.d.ts +0 -1
- package/dist/src/nostr-profile/render.d.ts +0 -22
- package/dist/src/nostr-profile/style.d.ts +0 -1
- package/dist/src/nostr-profile-badge/nostr-profile-badge.d.ts +0 -34
- package/dist/src/nostr-profile-badge/render.d.ts +0 -11
- package/dist/src/nostr-profile-badge/style.d.ts +0 -1
- package/dist/src/nostr-zap/dialog-help-style.d.ts +0 -5
- package/dist/src/nostr-zap/dialog-help.d.ts +0 -2
- package/dist/src/nostr-zap/dialog-zap-style.d.ts +0 -6
- package/dist/src/nostr-zap/dialog-zap.d.ts +0 -31
- package/dist/src/nostr-zap/dialog-zappers-style.d.ts +0 -1
- package/dist/src/nostr-zap/dialog-zappers.d.ts +0 -25
- package/dist/src/nostr-zap/nostr-zap.d.ts +0 -45
- package/dist/src/nostr-zap/render.d.ts +0 -9
- package/dist/src/nostr-zap/style.d.ts +0 -1
- package/dist/src/nostr-zap/zap-utils.d.ts +0 -53
- package/dist/vite.config.d.ts +0 -2
- package/dist/vite.config.esm.d.ts +0 -2
- package/dist/vite.config.umd.d.ts +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nip05-utils-BNBHUmkr.js","sources":["../../src/common/nip05-utils.ts"],"sourcesContent":["/**\n * NIP-05 utility functions for resolving nostr identifiers\n */\n\n/**\n * Resolves a NIP-05 identifier to a nostr public key\n * Includes input validation and request timeout for security\n * \n * @param nip05 - NIP-05 identifier in format username@domain.com\n * @param timeoutMs - Timeout in milliseconds (default: 5000)\n * @returns Resolved public key\n * @throws Error if validation fails, timeout occurs, or resolution fails\n */\nexport async function resolveNip05(nip05: string, timeoutMs: number = 5000): Promise<string> {\n // Validate NIP-05 format (contains exactly one @ with valid characters)\n const nip05Regex = /^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$/;\n if (!nip05Regex.test(nip05)) {\n throw new Error(\"Invalid NIP-05 format\");\n }\n\n const [name, domain] = nip05.split(\"@\");\n if (!name || !domain) {\n throw new Error(\"Invalid NIP-05: missing name or domain\");\n }\n\n const url = `https://${domain}/.well-known/nostr.json?name=${encodeURIComponent(name)}`;\n \n // Set up AbortController for timeout\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeoutMs);\n \n try {\n const res = await fetch(url, { \n headers: { accept: \"application/json\" },\n signal: controller.signal\n });\n \n if (!res.ok) {\n throw new Error(\"Unable to resolve NIP-05\");\n }\n \n const json = await res.json();\n const pubkey = json.names?.[name];\n \n if (!pubkey) {\n throw new Error(\"NIP-05 not found\");\n }\n \n return pubkey as string;\n } catch (error: unknown) {\n if (error instanceof Error && error.name === 'AbortError') {\n throw new Error(\"NIP-05 resolution timed out\");\n }\n throw error;\n } finally {\n clearTimeout(timeoutId);\n }\n}\n"],"names":["resolveNip05","nip05","timeoutMs","_a","name","domain","url","controller","timeoutId","res","pubkey","error"],"mappings":"
|
|
1
|
+
{"version":3,"file":"nip05-utils-BNBHUmkr.js","sources":["../../src/common/nip05-utils.ts"],"sourcesContent":["/**\n * NIP-05 utility functions for resolving nostr identifiers\n */\n\n/**\n * Resolves a NIP-05 identifier to a nostr public key\n * Includes input validation and request timeout for security\n * \n * @param nip05 - NIP-05 identifier in format username@domain.com\n * @param timeoutMs - Timeout in milliseconds (default: 5000)\n * @returns Resolved public key\n * @throws Error if validation fails, timeout occurs, or resolution fails\n */\nexport async function resolveNip05(nip05: string, timeoutMs: number = 5000): Promise<string> {\n // Validate NIP-05 format (contains exactly one @ with valid characters)\n const nip05Regex = /^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$/;\n if (!nip05Regex.test(nip05)) {\n throw new Error(\"Invalid NIP-05 format\");\n }\n\n const [name, domain] = nip05.split(\"@\");\n if (!name || !domain) {\n throw new Error(\"Invalid NIP-05: missing name or domain\");\n }\n\n const url = `https://${domain}/.well-known/nostr.json?name=${encodeURIComponent(name)}`;\n \n // Set up AbortController for timeout\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeoutMs);\n \n try {\n const res = await fetch(url, { \n headers: { accept: \"application/json\" },\n signal: controller.signal\n });\n \n if (!res.ok) {\n throw new Error(\"Unable to resolve NIP-05\");\n }\n \n const json = await res.json();\n const pubkey = json.names?.[name];\n \n if (!pubkey) {\n throw new Error(\"NIP-05 not found\");\n }\n \n return pubkey as string;\n } catch (error: unknown) {\n if (error instanceof Error && error.name === 'AbortError') {\n throw new Error(\"NIP-05 resolution timed out\");\n }\n throw error;\n } finally {\n clearTimeout(timeoutId);\n }\n}\n"],"names":["resolveNip05","nip05","timeoutMs","_a","name","domain","url","controller","timeoutId","res","pubkey","error"],"mappings":"AAaA,eAAsBA,EAAaC,EAAeC,EAAoB,IAAuB,CAA7F,IAAAC,EAGE,GAAI,CADe,mDACH,KAAKF,CAAK,EACxB,MAAM,IAAI,MAAM,uBAAuB,EAGzC,KAAM,CAACG,EAAMC,CAAM,EAAIJ,EAAM,MAAM,GAAG,EACtC,GAAI,CAACG,GAAQ,CAACC,EACZ,MAAM,IAAI,MAAM,wCAAwC,EAG1D,MAAMC,EAAM,WAAWD,CAAM,gCAAgC,mBAAmBD,CAAI,CAAC,GAG/EG,EAAa,IAAI,gBACjBC,EAAY,WAAW,IAAMD,EAAW,MAAA,EAASL,CAAS,EAEhE,GAAI,CACF,MAAMO,EAAM,MAAM,MAAMH,EAAK,CAC3B,QAAS,CAAE,OAAQ,kBAAA,EACnB,OAAQC,EAAW,MAAA,CACpB,EAED,GAAI,CAACE,EAAI,GACP,MAAM,IAAI,MAAM,0BAA0B,EAI5C,MAAMC,GAASP,GADF,MAAMM,EAAI,KAAA,GACH,QAAL,YAAAN,EAAaC,GAE5B,GAAI,CAACM,EACH,MAAM,IAAI,MAAM,kBAAkB,EAGpC,OAAOA,CACT,OAASC,EAAgB,CACvB,MAAIA,aAAiB,OAASA,EAAM,OAAS,aACrC,IAAI,MAAM,6BAA6B,EAEzCA,CACR,QAAA,CACE,aAAaH,CAAS,CACxB,CACF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{_ as a}from"./preload-helper-D7HrI6pR.js";let i=!1,e=null;async function r(){if(!i)return e||(e=(async()=>{try{const{init:n}=await a(async()=>{const{init:t}=await import("./index.esm-ByUtE_cm.js");return{init:t}},[]);n({methods:["connect","extension"]}),i=!0}catch(n){throw console.error("Failed to initialize NostrLogin:",n),e=null,n}})(),e)}function o(){return typeof window<"u"&&!!window.nostr}async function l(){if(await r(),!o())return null;try{return await window.nostr.getPublicKey()||null}catch(n){return console.error("Failed to get public key from NostrLogin:",n),null}}async function c(n){if(await r(),!o())throw new Error("NostrLogin is not available");try{return await window.nostr.signEvent(n)}catch(t){throw console.error("Failed to sign event with NostrLogin:",t),t}}export{r as e,l as g,c as s};
|
|
2
|
+
//# sourceMappingURL=nostr-login-service-D2FmscPI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"mappings":"iDAcA,IAAIA,EAAgB,GAChBC,EAAoC,KASxC,eAAsBC,GAAmC,CAEvD,GAAI,CAAAF,EAKJ,OAAIC,IAKJA,GAAe,SAAY,CACzB,GAAI,CAEF,KAAM,CAAE,KAAAE,CAAA,EAAS,MAAAC,EAAA,qBAAAD,GAAA,KAAM,QAAO,yBAAa,cAAAA,CAAA,OAM3CA,EAAK,CACH,QAAW,CAAC,UAAW,WAAW,EACnC,EAEDH,EAAgB,EAClB,OAASK,EAAO,CACd,cAAQ,MAAM,mCAAoCA,CAAK,EAEvDJ,EAAc,KACRI,CACR,CACF,KAEOJ,EACT,CAMO,SAASK,GAAuB,CACrC,OAAO,OAAO,OAAW,KAAe,CAAC,CAAE,OAAe,KAC5D,CAOA,eAAsBC,GAAuC,CAG3D,GAFA,MAAML,EAAA,EAEF,CAACI,IACH,OAAO,KAGT,GAAI,CAEF,OADe,MAAO,OAAe,MAAM,gBAC1B,IACnB,OAASD,EAAO,CACd,eAAQ,MAAM,4CAA6CA,CAAK,EACzD,IACT,CACF,CAQA,eAAsBG,EAAUC,EAA0B,CAGxD,GAFA,MAAMP,EAAA,EAEF,CAACI,IACH,MAAM,IAAI,MAAM,6BAA6B,EAG/C,GAAI,CAEF,OADoB,MAAO,OAAe,MAAM,UAAUG,CAAK,CAEjE,OAASJ,EAAO,CACd,cAAQ,MAAM,wCAAyCA,CAAK,EACtDA,CACR,CACF","names":["isInitialized","initPromise","ensureInitialized","init","__vitePreload","error","isAvailable","getPublicKey","signEvent","event"],"ignoreList":[],"sources":["../../src/common/nostr-login-service.ts"],"sourcesContent":["// SPDX-License-Identifier: MIT\n\n/**\n * NostrLoginService\n * =================\n * Service for lazy-loading and initializing NostrLogin.\n * \n * This service ensures NostrLogin is initialized only when needed,\n * and provides a unified interface for components that require authentication.\n * \n * NostrLogin provides window.nostr interface which is compatible with\n * NDKNip07Signer from @nostr-dev-kit/ndk.\n */\n\nlet isInitialized = false;\nlet initPromise: Promise<void> | null = null;\n\n/**\n * Ensures NostrLogin is initialized.\n * This will lazy-load the nostr-login package and initialize it on first call.\n * Subsequent calls will return the same promise.\n * \n * @returns Promise that resolves when NostrLogin is initialized\n */\nexport async function ensureInitialized(): Promise<void> {\n // If already initialized, return immediately\n if (isInitialized) {\n return;\n }\n\n // If initialization is in progress, return the existing promise\n if (initPromise) {\n return initPromise;\n }\n\n // Start initialization\n initPromise = (async () => {\n try {\n // Dynamic import to avoid SSR issues and only load when needed\n const { init } = await import('nostr-login');\n \n // Signup description should be:\n // Nostr is a simple, open protocol that enables a global, decentralized and censorship-resistant social network.\n // Watch a 1-min video\n // Watch a long video\n init({\n \"methods\": [\"connect\", \"extension\"],\n });\n \n isInitialized = true;\n } catch (error) {\n console.error('Failed to initialize NostrLogin:', error);\n // Reset promise so we can retry\n initPromise = null;\n throw error;\n }\n })();\n\n return initPromise;\n}\n\n/**\n * Check if NostrLogin is available (window.nostr exists)\n * @returns boolean indicating if window.nostr is available\n */\nexport function isAvailable(): boolean {\n return typeof window !== 'undefined' && !!(window as any).nostr;\n}\n\n/**\n * Get the public key from window.nostr\n * This will trigger NostrLogin auth flow if user isn't authenticated\n * @returns Promise resolving to public key or null\n */\nexport async function getPublicKey(): Promise<string | null> {\n await ensureInitialized();\n \n if (!isAvailable()) {\n return null;\n }\n\n try {\n const pubkey = await (window as any).nostr.getPublicKey();\n return pubkey || null;\n } catch (error) {\n console.error('Failed to get public key from NostrLogin:', error);\n return null;\n }\n}\n\n/**\n * Sign an event using window.nostr\n * This will trigger NostrLogin auth flow if user isn't authenticated\n * @param event - The event to sign\n * @returns Promise resolving to signed event\n */\nexport async function signEvent(event: any): Promise<any> {\n await ensureInitialized();\n \n if (!isAvailable()) {\n throw new Error('NostrLogin is not available');\n }\n\n try {\n const signedEvent = await (window as any).nostr.signEvent(event);\n return signedEvent;\n } catch (error) {\n console.error('Failed to sign event with NostrLogin:', error);\n throw error;\n }\n}\n"],"file":"assets/nostr-login-service-D2FmscPI.js"}
|