@hashtree/worker 0.1.18 → 0.1.20
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 +68 -6
- package/dist/app-runtime.d.ts +60 -0
- package/dist/app-runtime.d.ts.map +1 -0
- package/dist/app-runtime.js +271 -0
- package/dist/app-runtime.js.map +1 -0
- package/dist/capabilities/blossomTransport.d.ts.map +1 -1
- package/dist/capabilities/blossomTransport.js +53 -26
- package/dist/capabilities/blossomTransport.js.map +1 -1
- package/dist/capabilities/rootResolver.d.ts.map +1 -1
- package/dist/capabilities/rootResolver.js +0 -1
- package/dist/capabilities/rootResolver.js.map +1 -1
- package/dist/client-id.d.ts +18 -0
- package/dist/client-id.d.ts.map +1 -0
- package/dist/client-id.js +98 -0
- package/dist/client-id.js.map +1 -0
- package/dist/htree-url.d.ts +22 -0
- package/dist/htree-url.d.ts.map +1 -0
- package/dist/htree-url.js +118 -0
- package/dist/htree-url.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/iris/treeRootSubscription.d.ts.map +1 -1
- package/dist/iris/treeRootSubscription.js +0 -1
- package/dist/iris/treeRootSubscription.js.map +1 -1
- package/dist/runtime-network.d.ts +23 -0
- package/dist/runtime-network.d.ts.map +1 -0
- package/dist/runtime-network.js +105 -0
- package/dist/runtime-network.js.map +1 -0
- package/dist/runtime.d.ts +23 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +122 -0
- package/dist/runtime.js.map +1 -0
- package/package.json +12 -4
package/dist/runtime.js
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
function getWindowLike(windowLike) {
|
|
2
|
+
if (windowLike)
|
|
3
|
+
return windowLike;
|
|
4
|
+
if (typeof window === 'undefined')
|
|
5
|
+
return null;
|
|
6
|
+
return window;
|
|
7
|
+
}
|
|
8
|
+
function normalizeBaseUrl(url) {
|
|
9
|
+
return (url ?? '').trim().replace(/\/$/, '');
|
|
10
|
+
}
|
|
11
|
+
function getQueryParam(name, windowLike) {
|
|
12
|
+
const runtimeWindow = getWindowLike(windowLike);
|
|
13
|
+
if (!runtimeWindow)
|
|
14
|
+
return null;
|
|
15
|
+
try {
|
|
16
|
+
const value = new URLSearchParams(runtimeWindow.location?.search ?? '').get(name);
|
|
17
|
+
return typeof value === 'string' ? value.trim() || null : null;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function getPageProtocol(windowLike) {
|
|
24
|
+
const runtimeWindow = getWindowLike(windowLike);
|
|
25
|
+
const protocol = runtimeWindow?.location?.protocol;
|
|
26
|
+
return typeof protocol === 'string' ? protocol.toLowerCase() : null;
|
|
27
|
+
}
|
|
28
|
+
function getPageHostname(windowLike) {
|
|
29
|
+
const runtimeWindow = getWindowLike(windowLike);
|
|
30
|
+
const hostname = runtimeWindow?.location?.hostname;
|
|
31
|
+
return typeof hostname === 'string' ? hostname.toLowerCase() : null;
|
|
32
|
+
}
|
|
33
|
+
function hasCanonicalHtreeIdentity(windowLike) {
|
|
34
|
+
const canonical = getQueryParam('iris_htree_canonical', windowLike);
|
|
35
|
+
return typeof canonical === 'string' && canonical.toLowerCase().startsWith('htree://');
|
|
36
|
+
}
|
|
37
|
+
function isLoopbackChildRuntime(windowLike) {
|
|
38
|
+
if (getPageProtocol(windowLike) !== 'http:')
|
|
39
|
+
return false;
|
|
40
|
+
const hostname = getPageHostname(windowLike);
|
|
41
|
+
if (!hostname)
|
|
42
|
+
return false;
|
|
43
|
+
return hostname === '127.0.0.1'
|
|
44
|
+
|| hostname === 'localhost'
|
|
45
|
+
|| hostname.endsWith('.htree.localhost');
|
|
46
|
+
}
|
|
47
|
+
function getServerProtocol(serverUrl) {
|
|
48
|
+
try {
|
|
49
|
+
return new URL(serverUrl).protocol.toLowerCase();
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function isLocalHttpServerUrl(serverUrl) {
|
|
56
|
+
try {
|
|
57
|
+
const parsed = new URL(serverUrl);
|
|
58
|
+
const hostname = parsed.hostname.toLowerCase();
|
|
59
|
+
return (parsed.protocol === 'http:' || parsed.protocol === 'https:')
|
|
60
|
+
&& (hostname === '127.0.0.1' || hostname === 'localhost' || hostname.endsWith('.htree.localhost'));
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
function getWindowHtreeBaseUrl(windowLike) {
|
|
67
|
+
const runtimeWindow = getWindowLike(windowLike);
|
|
68
|
+
return normalizeBaseUrl(runtimeWindow?.htree?.htreeBaseUrl);
|
|
69
|
+
}
|
|
70
|
+
export function getInjectedHtreeServerUrl(windowLike) {
|
|
71
|
+
const runtimeWindow = getWindowLike(windowLike);
|
|
72
|
+
if (!runtimeWindow)
|
|
73
|
+
return null;
|
|
74
|
+
const override = runtimeWindow.__HTREE_SERVER_URL__;
|
|
75
|
+
const fallback = getQueryParam('iris_htree_server', runtimeWindow);
|
|
76
|
+
const candidate = typeof override === 'string' && override.trim() ? override : fallback;
|
|
77
|
+
const normalized = normalizeBaseUrl(candidate);
|
|
78
|
+
return normalized || null;
|
|
79
|
+
}
|
|
80
|
+
export function shouldEagerLoadMediaInNativeChildRuntime(windowLike) {
|
|
81
|
+
return isLoopbackChildRuntime(windowLike) && hasCanonicalHtreeIdentity(windowLike);
|
|
82
|
+
}
|
|
83
|
+
export function shouldPreferSameOriginHtreeRoutes(windowLike) {
|
|
84
|
+
const serverUrl = getInjectedHtreeServerUrl(windowLike);
|
|
85
|
+
if (!serverUrl)
|
|
86
|
+
return false;
|
|
87
|
+
const serverProtocol = getServerProtocol(serverUrl);
|
|
88
|
+
if (serverProtocol !== 'http:')
|
|
89
|
+
return false;
|
|
90
|
+
const pageProtocol = getPageProtocol(windowLike);
|
|
91
|
+
if (pageProtocol === 'https:')
|
|
92
|
+
return true;
|
|
93
|
+
if (pageProtocol === 'htree:') {
|
|
94
|
+
const hostname = getPageHostname(windowLike);
|
|
95
|
+
return hostname?.startsWith('npub1') === true || hostname === 'self';
|
|
96
|
+
}
|
|
97
|
+
if (hasCanonicalHtreeIdentity(windowLike) && !isLoopbackChildRuntime(windowLike))
|
|
98
|
+
return true;
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
export function canUseInjectedHtreeServerUrl(windowLike) {
|
|
102
|
+
const serverUrl = getInjectedHtreeServerUrl(windowLike);
|
|
103
|
+
return !!serverUrl && !shouldPreferSameOriginHtreeRoutes(windowLike);
|
|
104
|
+
}
|
|
105
|
+
export function canUseSameOriginHtreeProtocolStreaming(windowLike) {
|
|
106
|
+
return getPageProtocol(windowLike) === 'htree:';
|
|
107
|
+
}
|
|
108
|
+
export function resolveRuntimeHtreeBaseUrl(options = {}) {
|
|
109
|
+
const { windowLike, fallbackBaseUrl } = options;
|
|
110
|
+
const injectedServerUrl = getInjectedHtreeServerUrl(windowLike);
|
|
111
|
+
if (injectedServerUrl && canUseInjectedHtreeServerUrl(windowLike)) {
|
|
112
|
+
return injectedServerUrl;
|
|
113
|
+
}
|
|
114
|
+
const windowBaseUrl = getWindowHtreeBaseUrl(windowLike);
|
|
115
|
+
if (windowBaseUrl) {
|
|
116
|
+
if (!isLocalHttpServerUrl(windowBaseUrl) || canUseInjectedHtreeServerUrl(windowLike)) {
|
|
117
|
+
return windowBaseUrl;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return normalizeBaseUrl(fallbackBaseUrl);
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hashtree/worker",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.20",
|
|
4
4
|
"description": "Modular browser worker for hashtree blob caching, tree-root state, and Blossom connectivity",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -30,6 +30,14 @@
|
|
|
30
30
|
"types": "./dist/protocol.d.ts",
|
|
31
31
|
"import": "./dist/protocol.js"
|
|
32
32
|
},
|
|
33
|
+
"./runtime": {
|
|
34
|
+
"types": "./dist/runtime.d.ts",
|
|
35
|
+
"import": "./dist/runtime.js"
|
|
36
|
+
},
|
|
37
|
+
"./htree-url": {
|
|
38
|
+
"types": "./dist/htree-url.d.ts",
|
|
39
|
+
"import": "./dist/htree-url.js"
|
|
40
|
+
},
|
|
33
41
|
"./htree-path": {
|
|
34
42
|
"types": "./dist/htree-path.d.ts",
|
|
35
43
|
"import": "./dist/htree-path.js"
|
|
@@ -63,8 +71,8 @@
|
|
|
63
71
|
"dexie": "^4.2.1",
|
|
64
72
|
"nostr-tools": "^2.18.2",
|
|
65
73
|
"@hashtree/core": "0.1.3",
|
|
66
|
-
"@hashtree/
|
|
67
|
-
"@hashtree/
|
|
74
|
+
"@hashtree/nostr": "0.1.6",
|
|
75
|
+
"@hashtree/dexie": "0.1.3"
|
|
68
76
|
},
|
|
69
77
|
"peerDependencies": {
|
|
70
78
|
"ndk": "*",
|
|
@@ -85,8 +93,8 @@
|
|
|
85
93
|
"devDependencies": {
|
|
86
94
|
"typescript": "^5.3.0",
|
|
87
95
|
"vitest": "^2.1.9",
|
|
88
|
-
"ndk-cache": "0.1.1",
|
|
89
96
|
"nostr-social-graph": "1.0.36",
|
|
97
|
+
"ndk-cache": "0.1.1",
|
|
90
98
|
"ndk": "0.1.1"
|
|
91
99
|
},
|
|
92
100
|
"scripts": {
|