@enbox/browser 0.0.2 → 0.0.4
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 +21 -19
- package/dist/esm/web-features.js +32 -21
- package/dist/esm/web-features.js.map +1 -1
- package/dist/types/web-features.d.ts +4 -2
- package/dist/types/web-features.d.ts.map +1 -1
- package/package.json +20 -33
- package/src/web-features.ts +36 -34
- package/LICENSE +0 -21
package/README.md
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Enbox Browser
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
> **Research Preview** — Enbox is under active development. APIs may change without notice.
|
|
4
|
+
|
|
5
|
+
| Browser-specific tools and features for building decentralized web applications |
|
|
6
|
+
| ------------------------------------------------------------------------------ |
|
|
5
7
|
|
|
6
8
|
[![NPM Package][browser-npm-badge]][browser-npm-link]
|
|
7
9
|
[![NPM Downloads][browser-downloads-badge]][browser-npm-link]
|
|
@@ -12,7 +14,7 @@
|
|
|
12
14
|
|
|
13
15
|
---
|
|
14
16
|
|
|
15
|
-
- [
|
|
17
|
+
- [Enbox Browser](#enbox-browser)
|
|
16
18
|
- [Activate Polyfills](#activate-polyfills)
|
|
17
19
|
- [Project Resources](#project-resources)
|
|
18
20
|
|
|
@@ -20,11 +22,11 @@
|
|
|
20
22
|
|
|
21
23
|
<a id="introduction"></a>
|
|
22
24
|
|
|
23
|
-
This package contains browser-specific helpers for building DWAs (Decentralized Web Apps).
|
|
25
|
+
This package contains browser-specific helpers for building DWAs (Decentralized Web Apps) with the Enbox toolkit.
|
|
24
26
|
|
|
25
27
|
### Activate Polyfills
|
|
26
28
|
|
|
27
|
-
This enables a service worker that can handle
|
|
29
|
+
This enables a service worker that can handle Enbox features in the browser such as resolving DRLs that look like: `http://dweb/did:dht:abc123/protocols/read/aHR0cHM6Ly9hcmV3ZXdlYjV5ZXQuY29tL3NjaGVtYXMvcHJvdG9jb2xz/avatar`
|
|
28
30
|
|
|
29
31
|
To enable this functionality import and run `activatePolyfills()` at the entrypoint of your project, or within an existing service worker.
|
|
30
32
|
|
|
@@ -41,21 +43,21 @@ To enable this functionality import and run `activatePolyfills()` at the entrypo
|
|
|
41
43
|
[browser-npm-badge]: https://img.shields.io/npm/v/@enbox/browser.svg?style=flat&color=blue&santize=true
|
|
42
44
|
[browser-npm-link]: https://www.npmjs.com/package/@enbox/browser
|
|
43
45
|
[browser-downloads-badge]: https://img.shields.io/npm/dt/@enbox/browser?&color=blue
|
|
44
|
-
[browser-build-badge]: https://img.shields.io/github/actions/workflow/status/enboxorg/enbox/
|
|
45
|
-
[browser-build-link]: https://github.com/enboxorg/enbox/
|
|
46
|
-
[browser-coverage-badge]: https://img.shields.io/
|
|
47
|
-
[browser-coverage-link]: https://
|
|
48
|
-
[browser-issues-badge]: https://img.shields.io/github/issues/enboxorg/enbox/
|
|
49
|
-
[browser-issues-link]: https://github.com/enboxorg/enbox/
|
|
50
|
-
[browser-repo-link]: https://github.com/enboxorg/enbox/
|
|
46
|
+
[browser-build-badge]: https://img.shields.io/github/actions/workflow/status/enboxorg/enbox/tests-ci.yml?branch=main&label=build
|
|
47
|
+
[browser-build-link]: https://github.com/enboxorg/enbox/actions/workflows/tests-ci.yml
|
|
48
|
+
[browser-coverage-badge]: https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/LiranCohen/02d15f39a46173a612a8862ec6d7cfcf/raw/crypto.json
|
|
49
|
+
[browser-coverage-link]: https://github.com/enboxorg/enbox/actions/workflows/ci.yml
|
|
50
|
+
[browser-issues-badge]: https://img.shields.io/github/issues/enboxorg/enbox/package:%20browser?label=issues
|
|
51
|
+
[browser-issues-link]: https://github.com/enboxorg/enbox/issues?q=is%3Aopen+is%3Aissue+label%3A"package%3A+browser"
|
|
52
|
+
[browser-repo-link]: https://github.com/enboxorg/enbox/tree/main/packages/browser
|
|
51
53
|
[browser-jsdelivr-link]: https://www.jsdelivr.com/package/npm/@enbox/browser
|
|
52
54
|
[browser-jsdelivr-browser]: https://cdn.jsdelivr.net/npm/@enbox/browser/dist/browser.mjs
|
|
53
55
|
[browser-unpkg-link]: https://unpkg.com/@enbox/browser
|
|
54
56
|
[browser-unpkg-browser]: https://unpkg.com/@enbox/browser/dist/browser.mjs
|
|
55
|
-
[codeowners-link]: https://github.com/enboxorg/enbox/
|
|
56
|
-
[code-of-conduct-link]: https://github.com/enboxorg/enbox/
|
|
57
|
-
[contributing-link]: https://github.com/enboxorg/enbox/
|
|
58
|
-
[governance-link]: https://github.com/enboxorg/enbox/
|
|
59
|
-
[license-link]: https://github.com/enboxorg/enbox/
|
|
57
|
+
[codeowners-link]: https://github.com/enboxorg/enbox/blob/main/CODEOWNERS
|
|
58
|
+
[code-of-conduct-link]: https://github.com/enboxorg/enbox/blob/main/CODE_OF_CONDUCT.md
|
|
59
|
+
[contributing-link]: https://github.com/enboxorg/enbox/blob/main/CONTRIBUTING.md
|
|
60
|
+
[governance-link]: https://github.com/enboxorg/enbox/blob/main/GOVERNANCE.md
|
|
61
|
+
[license-link]: https://github.com/enboxorg/enbox/blob/main/LICENSE
|
|
60
62
|
[discord-badge]: https://img.shields.io/discord/937858703112155166?color=5865F2&logo=discord&logoColor=white
|
|
61
|
-
[discord-link]: https://discord.com/channels/937858703112155166/969272658501976117
|
|
63
|
+
[discord-link]: https://discord.com/channels/937858703112155166/969272658501976117
|
package/dist/esm/web-features.js
CHANGED
|
@@ -13,15 +13,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
13
13
|
Be mindful that code placed in any open excution space may be evaluated multiple times in different contexts,
|
|
14
14
|
so take care to gate additions to only activate code in the right env, such as a Service Worker scope or page window.
|
|
15
15
|
*/
|
|
16
|
-
import {
|
|
16
|
+
import { DidDht, DidWeb, UniversalResolver } from '@enbox/dids';
|
|
17
17
|
// This is in place to prevent our `bundler-bonanza` repo from failing for Node CJS builds
|
|
18
18
|
// Not sure if this is working as expected in all environments, crated an issue
|
|
19
|
-
// TODO: https://github.com/
|
|
19
|
+
// TODO: https://github.com/enboxorg/enbox/issues/767
|
|
20
20
|
function importMetaIfSupported() {
|
|
21
21
|
try {
|
|
22
22
|
return new Function('return import.meta')();
|
|
23
23
|
}
|
|
24
|
-
catch (
|
|
24
|
+
catch (_a) {
|
|
25
25
|
return undefined;
|
|
26
26
|
}
|
|
27
27
|
}
|
|
@@ -30,8 +30,8 @@ const didUrlRegex = /^https?:\/\/dweb\/([^/]+)\/?(.*)?$/;
|
|
|
30
30
|
const httpToHttpsRegex = /^http:/;
|
|
31
31
|
const trailingSlashRegex = /\/$/;
|
|
32
32
|
function getDwnEndpoints(did) {
|
|
33
|
-
var _a, _b;
|
|
34
33
|
return __awaiter(this, void 0, void 0, function* () {
|
|
34
|
+
var _a, _b;
|
|
35
35
|
const { didDocument } = yield DidResolver.resolve(did);
|
|
36
36
|
const endpoints = (_b = (_a = didDocument === null || didDocument === void 0 ? void 0 : didDocument.service) === null || _a === void 0 ? void 0 : _a.find((service) => service.type === 'DecentralizedWebNode')) === null || _b === void 0 ? void 0 : _b.serviceEndpoint;
|
|
37
37
|
return (Array.isArray(endpoints) ? endpoints : [endpoints]).filter((url) => url.startsWith('http'));
|
|
@@ -45,8 +45,9 @@ function handleEvent(event, did, path, options) {
|
|
|
45
45
|
const responseCache = yield caches.open('drl');
|
|
46
46
|
const cachedResponse = yield responseCache.match(drl);
|
|
47
47
|
if (cachedResponse) {
|
|
48
|
-
if (!navigator.onLine)
|
|
48
|
+
if (!navigator.onLine) {
|
|
49
49
|
return cachedResponse;
|
|
50
|
+
}
|
|
50
51
|
const match = yield (options === null || options === void 0 ? void 0 : options.onCacheCheck(event, drl));
|
|
51
52
|
if (match) {
|
|
52
53
|
const cacheTime = cachedResponse.headers.get('dwn-cache-time');
|
|
@@ -66,8 +67,9 @@ function handleEvent(event, did, path, options) {
|
|
|
66
67
|
},
|
|
67
68
|
});
|
|
68
69
|
}
|
|
69
|
-
else
|
|
70
|
+
else {
|
|
70
71
|
return yield fetchResource(event, did, drl, path, responseCache, options);
|
|
72
|
+
}
|
|
71
73
|
}
|
|
72
74
|
catch (error) {
|
|
73
75
|
if (error instanceof Response) {
|
|
@@ -120,15 +122,15 @@ function cacheResponse(drl, url, response, cache) {
|
|
|
120
122
|
});
|
|
121
123
|
}
|
|
122
124
|
/* Service Worker-based features */
|
|
123
|
-
function installWorker(
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
const workerSelf = self;
|
|
125
|
+
function installWorker() {
|
|
126
|
+
return __awaiter(this, arguments, void 0, function* (options = {}) {
|
|
127
|
+
var _a, _b, _c;
|
|
127
128
|
try {
|
|
128
129
|
// Check to see if we are in a Service Worker already, if so, proceed
|
|
129
130
|
// You can call the activatePolyfills() function in your own worker, or standalone as a root worker
|
|
130
131
|
if (typeof ServiceWorkerGlobalScope !== 'undefined' &&
|
|
131
|
-
|
|
132
|
+
self instanceof ServiceWorkerGlobalScope) {
|
|
133
|
+
const workerSelf = self;
|
|
132
134
|
workerSelf.skipWaiting();
|
|
133
135
|
workerSelf.addEventListener('activate', (event) => {
|
|
134
136
|
// Claim clients to make the service worker take control immediately
|
|
@@ -151,12 +153,13 @@ function installWorker(options = {}) {
|
|
|
151
153
|
(globalThis.document
|
|
152
154
|
? (_b = document === null || document === void 0 ? void 0 : document.currentScript) === null || _b === void 0 ? void 0 : _b.src
|
|
153
155
|
: (_c = importMetaIfSupported()) === null || _c === void 0 ? void 0 : _c.url);
|
|
154
|
-
if (installUrl)
|
|
156
|
+
if (installUrl) {
|
|
155
157
|
navigator.serviceWorker
|
|
156
158
|
.register(installUrl, { type: 'module' })
|
|
157
159
|
.catch((error) => {
|
|
158
160
|
console.error('DWeb networking feature installation failed: ', error);
|
|
159
161
|
});
|
|
162
|
+
}
|
|
160
163
|
}
|
|
161
164
|
}
|
|
162
165
|
else {
|
|
@@ -307,8 +310,9 @@ const tabContent = `
|
|
|
307
310
|
`;
|
|
308
311
|
let elementsInjected = false;
|
|
309
312
|
function injectElements() {
|
|
310
|
-
if (elementsInjected)
|
|
313
|
+
if (elementsInjected) {
|
|
311
314
|
return;
|
|
315
|
+
}
|
|
312
316
|
const style = document.createElement('style');
|
|
313
317
|
style.innerHTML = `
|
|
314
318
|
${loaderStyles}
|
|
@@ -368,18 +372,20 @@ function addLinkFeatures() {
|
|
|
368
372
|
setTimeout(() => document.documentElement.setAttribute('drl-link-loading', ''), 50);
|
|
369
373
|
}
|
|
370
374
|
const endpoints = yield getDwnEndpoints(did);
|
|
371
|
-
if (!endpoints.length)
|
|
375
|
+
if (!endpoints.length) {
|
|
372
376
|
throw null;
|
|
377
|
+
}
|
|
373
378
|
const url = `${endpoints[0].replace(trailingSlashRegex, '')}/${did}/${path}`;
|
|
374
379
|
if (openAsTab) {
|
|
375
|
-
if (!tab.closed)
|
|
380
|
+
if (!tab.closed) {
|
|
376
381
|
tab.location.href = url;
|
|
382
|
+
}
|
|
377
383
|
}
|
|
378
384
|
else if (activeNavigation === path) {
|
|
379
385
|
window.location.href = url;
|
|
380
386
|
}
|
|
381
387
|
}
|
|
382
|
-
catch (
|
|
388
|
+
catch (_a) {
|
|
383
389
|
if (activeNavigation === path) {
|
|
384
390
|
cancelNavigation();
|
|
385
391
|
}
|
|
@@ -404,8 +410,9 @@ function addLinkFeatures() {
|
|
|
404
410
|
const responseCache = yield caches.open('drl');
|
|
405
411
|
const response = yield responseCache.match(drl);
|
|
406
412
|
const url = response.headers.get('dwn-composed-url');
|
|
407
|
-
if (url)
|
|
413
|
+
if (url) {
|
|
408
414
|
target.src = url;
|
|
415
|
+
}
|
|
409
416
|
target.addEventListener('pointerup', resetContextMenuTarget, {
|
|
410
417
|
once: true,
|
|
411
418
|
});
|
|
@@ -435,10 +442,12 @@ function resetContextMenuTarget(e) {
|
|
|
435
442
|
* Activates various polyfills to enable Web5 features in Web environments.
|
|
436
443
|
*
|
|
437
444
|
* @param {object} [options={}] - Configuration options to control the activation of polyfills.
|
|
438
|
-
* @param {boolean} [options.serviceWorker=true] - Option to avoid installation of the Service Worker.
|
|
445
|
+
* @param {boolean} [options.serviceWorker=true] - Option to avoid installation of the Service Worker.
|
|
446
|
+
* Defaults to true, installing the Service Worker.
|
|
439
447
|
* @param {boolean} [options.injectStyles=true] - Option to skip injection of styles for UI related UX polyfills. Defaults to true, injecting styles.
|
|
440
448
|
* @param {boolean} [options.links=true] - Option to skip activation of DRL link features. Defaults to true, activating link features.
|
|
441
|
-
* @param {function} [options.onCacheCheck] - Callback function to handle cache check events,
|
|
449
|
+
* @param {function} [options.onCacheCheck] - Callback function to handle cache check events,
|
|
450
|
+
* allowing fine-grained control over what DRL request to cache, and for how long.
|
|
442
451
|
* @param {object} [options.onCacheCheck.event] - The event object passed to the callback.
|
|
443
452
|
* @param {object} [options.onCacheCheck.route] - The route object passed to the callback.
|
|
444
453
|
* @returns {object} [options.onCacheCheck.return] - The return object from the callback.
|
|
@@ -466,16 +475,18 @@ export function activatePolyfills(options = {}) {
|
|
|
466
475
|
}
|
|
467
476
|
if (typeof window !== 'undefined' && typeof window.document !== 'undefined') {
|
|
468
477
|
if (options.injectStyles !== false) {
|
|
469
|
-
if (document.readyState !== 'loading')
|
|
478
|
+
if (document.readyState !== 'loading') {
|
|
470
479
|
injectElements();
|
|
480
|
+
}
|
|
471
481
|
else {
|
|
472
482
|
document.addEventListener('DOMContentLoaded', injectElements, {
|
|
473
483
|
once: true,
|
|
474
484
|
});
|
|
475
485
|
}
|
|
476
486
|
}
|
|
477
|
-
if (options.links !== false)
|
|
487
|
+
if (options.links !== false) {
|
|
478
488
|
addLinkFeatures();
|
|
489
|
+
}
|
|
479
490
|
}
|
|
480
491
|
}
|
|
481
492
|
//# sourceMappingURL=web-features.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-features.js","sourceRoot":"","sources":["../../src/web-features.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"web-features.js","sourceRoot":"","sources":["../../src/web-features.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
* Activates various polyfills to enable Web5 features in Web environments.
|
|
3
3
|
*
|
|
4
4
|
* @param {object} [options={}] - Configuration options to control the activation of polyfills.
|
|
5
|
-
* @param {boolean} [options.serviceWorker=true] - Option to avoid installation of the Service Worker.
|
|
5
|
+
* @param {boolean} [options.serviceWorker=true] - Option to avoid installation of the Service Worker.
|
|
6
|
+
* Defaults to true, installing the Service Worker.
|
|
6
7
|
* @param {boolean} [options.injectStyles=true] - Option to skip injection of styles for UI related UX polyfills. Defaults to true, injecting styles.
|
|
7
8
|
* @param {boolean} [options.links=true] - Option to skip activation of DRL link features. Defaults to true, activating link features.
|
|
8
|
-
* @param {function} [options.onCacheCheck] - Callback function to handle cache check events,
|
|
9
|
+
* @param {function} [options.onCacheCheck] - Callback function to handle cache check events,
|
|
10
|
+
* allowing fine-grained control over what DRL request to cache, and for how long.
|
|
9
11
|
* @param {object} [options.onCacheCheck.event] - The event object passed to the callback.
|
|
10
12
|
* @param {object} [options.onCacheCheck.route] - The route object passed to the callback.
|
|
11
13
|
* @returns {object} [options.onCacheCheck.return] - The return object from the callback.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-features.d.ts","sourceRoot":"","sources":["../../src/web-features.ts"],"names":[],"mappings":"AA4bA
|
|
1
|
+
{"version":3,"file":"web-features.d.ts","sourceRoot":"","sources":["../../src/web-features.ts"],"names":[],"mappings":"AA4bA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,GAAQ,GAAG,IAAI,CAezD"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@enbox/browser",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.4",
|
|
4
4
|
"description": "Web5 tools and features to use in the browser",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/esm/index.js",
|
|
7
7
|
"module": "./dist/esm/index.js",
|
|
8
8
|
"types": "./dist/types/index.d.ts",
|
|
9
|
+
"scripts": {
|
|
10
|
+
"clean": "rimraf dist",
|
|
11
|
+
"build:esm": "rimraf dist/esm dist/types && bun tsc -p tsconfig.json",
|
|
12
|
+
"build:browser": "bun run build:esm",
|
|
13
|
+
"build": "bun run clean && bun run build:esm",
|
|
14
|
+
"lint": "eslint . --max-warnings 0",
|
|
15
|
+
"lint:fix": "eslint . --fix",
|
|
16
|
+
"test:browser": "bunx --bun vitest --config vitest.browser.config.ts --run",
|
|
17
|
+
"test:browser:coverage": "bunx --bun vitest --config vitest.browser.config.ts --run --coverage --coverage.provider=istanbul --coverage.reportsDirectory=./coverage-browser"
|
|
18
|
+
},
|
|
9
19
|
"homepage": "https://github.com/enboxorg/enbox/tree/main/packages/browser#readme",
|
|
10
20
|
"bugs": "https://github.com/enboxorg/enbox/issues",
|
|
11
21
|
"repository": {
|
|
@@ -45,39 +55,16 @@
|
|
|
45
55
|
"access": "public"
|
|
46
56
|
},
|
|
47
57
|
"dependencies": {
|
|
48
|
-
"@enbox/dids": "0.0.
|
|
58
|
+
"@enbox/dids": "0.0.4"
|
|
49
59
|
},
|
|
50
60
|
"devDependencies": {
|
|
51
|
-
"@
|
|
52
|
-
"@
|
|
53
|
-
"@
|
|
54
|
-
"@
|
|
55
|
-
"
|
|
56
|
-
"@typescript-eslint/eslint-plugin": "7.9.0",
|
|
57
|
-
"@typescript-eslint/parser": "7.14.1",
|
|
58
|
-
"@web/test-runner": "0.18.2",
|
|
59
|
-
"@web/test-runner-playwright": "0.11.0",
|
|
60
|
-
"c8": "9.1.0",
|
|
61
|
-
"chai": "4.3.10",
|
|
62
|
-
"esbuild": "0.19.8",
|
|
63
|
-
"eslint": "9.3.0",
|
|
64
|
-
"eslint-plugin-mocha": "10.4.3",
|
|
65
|
-
"mocha": "10.2.0",
|
|
66
|
-
"mocha-junit-reporter": "2.2.1",
|
|
67
|
-
"playwright": "1.45.3",
|
|
61
|
+
"@typescript-eslint/eslint-plugin": "8.32.1",
|
|
62
|
+
"@typescript-eslint/parser": "8.32.1",
|
|
63
|
+
"@vitest/browser-playwright": "4.0.18",
|
|
64
|
+
"@vitest/coverage-istanbul": "4.0.18",
|
|
65
|
+
"eslint": "9.7.0",
|
|
68
66
|
"rimraf": "4.4.0",
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
"typescript": "5.1.6"
|
|
72
|
-
},
|
|
73
|
-
"scripts": {
|
|
74
|
-
"clean": "rimraf dist coverage tests/compiled",
|
|
75
|
-
"build:tests": "rimraf tests/compiled && node build/esbuild-tests.cjs",
|
|
76
|
-
"build:esm": "rimraf dist/esm dist/types && pnpm tsc -p tsconfig.json",
|
|
77
|
-
"build:browser": "pnpm build:esm",
|
|
78
|
-
"build": "pnpm clean && pnpm build:esm",
|
|
79
|
-
"lint": "eslint . --max-warnings 0",
|
|
80
|
-
"lint:fix": "eslint . --fix",
|
|
81
|
-
"test:browser": "pnpm build:tests && web-test-runner"
|
|
67
|
+
"typescript": "5.5.4",
|
|
68
|
+
"vitest": "4.0.18"
|
|
82
69
|
}
|
|
83
|
-
}
|
|
70
|
+
}
|
package/src/web-features.ts
CHANGED
|
@@ -6,15 +6,15 @@
|
|
|
6
6
|
so take care to gate additions to only activate code in the right env, such as a Service Worker scope or page window.
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import {
|
|
9
|
+
import { DidDht, DidWeb, UniversalResolver } from '@enbox/dids';
|
|
10
10
|
|
|
11
11
|
// This is in place to prevent our `bundler-bonanza` repo from failing for Node CJS builds
|
|
12
12
|
// Not sure if this is working as expected in all environments, crated an issue
|
|
13
|
-
// TODO: https://github.com/
|
|
14
|
-
function importMetaIfSupported() {
|
|
13
|
+
// TODO: https://github.com/enboxorg/enbox/issues/767
|
|
14
|
+
function importMetaIfSupported(): any {
|
|
15
15
|
try {
|
|
16
16
|
return new Function('return import.meta')();
|
|
17
|
-
} catch
|
|
17
|
+
} catch {
|
|
18
18
|
return undefined;
|
|
19
19
|
}
|
|
20
20
|
}
|
|
@@ -26,7 +26,7 @@ const didUrlRegex = /^https?:\/\/dweb\/([^/]+)\/?(.*)?$/;
|
|
|
26
26
|
const httpToHttpsRegex = /^http:/;
|
|
27
27
|
const trailingSlashRegex = /\/$/;
|
|
28
28
|
|
|
29
|
-
async function getDwnEndpoints(did) {
|
|
29
|
+
async function getDwnEndpoints(did: any): Promise<string[]> {
|
|
30
30
|
const { didDocument } = await DidResolver.resolve(did);
|
|
31
31
|
const endpoints = didDocument?.service?.find(
|
|
32
32
|
(service) => service.type === 'DecentralizedWebNode'
|
|
@@ -36,14 +36,14 @@ async function getDwnEndpoints(did) {
|
|
|
36
36
|
);
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
async function handleEvent(event, did, path, options) {
|
|
39
|
+
async function handleEvent(event: any, did: any, path: any, options: any): Promise<Response> {
|
|
40
40
|
const drl = event.request.url
|
|
41
41
|
.replace(httpToHttpsRegex, 'https:')
|
|
42
42
|
.replace(trailingSlashRegex, '');
|
|
43
43
|
const responseCache = await caches.open('drl');
|
|
44
44
|
const cachedResponse = await responseCache.match(drl);
|
|
45
45
|
if (cachedResponse) {
|
|
46
|
-
if (!navigator.onLine) return cachedResponse;
|
|
46
|
+
if (!navigator.onLine) {return cachedResponse;}
|
|
47
47
|
const match = await options?.onCacheCheck(event, drl);
|
|
48
48
|
if (match) {
|
|
49
49
|
const cacheTime = cachedResponse.headers.get('dwn-cache-time');
|
|
@@ -65,7 +65,7 @@ async function handleEvent(event, did, path, options) {
|
|
|
65
65
|
},
|
|
66
66
|
});
|
|
67
67
|
} else
|
|
68
|
-
|
|
68
|
+
{return await fetchResource(event, did, drl, path, responseCache, options);}
|
|
69
69
|
} catch (error) {
|
|
70
70
|
if (error instanceof Response) {
|
|
71
71
|
return error;
|
|
@@ -75,7 +75,7 @@ async function handleEvent(event, did, path, options) {
|
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
-
async function fetchResource(event, did, drl, path, responseCache, options) {
|
|
78
|
+
async function fetchResource(event: any, did: any, drl: any, path: any, responseCache: any, options: any): Promise<Response | undefined> {
|
|
79
79
|
const endpoints = await getDwnEndpoints(did);
|
|
80
80
|
if (!endpoints?.length) {
|
|
81
81
|
throw new Response(
|
|
@@ -107,7 +107,7 @@ async function fetchResource(event, did, drl, path, responseCache, options) {
|
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
-
async function cacheResponse(drl, url, response, cache) {
|
|
110
|
+
async function cacheResponse(drl: any, url: any, response: any, cache: any): Promise<void> {
|
|
111
111
|
const clonedResponse = response.clone();
|
|
112
112
|
const headers = new Headers(clonedResponse.headers);
|
|
113
113
|
headers.append('dwn-cache-time', Date.now().toString());
|
|
@@ -119,14 +119,14 @@ async function cacheResponse(drl, url, response, cache) {
|
|
|
119
119
|
/* Service Worker-based features */
|
|
120
120
|
|
|
121
121
|
async function installWorker(options: any = {}): Promise<void> {
|
|
122
|
-
const workerSelf = self as any;
|
|
123
122
|
try {
|
|
124
123
|
// Check to see if we are in a Service Worker already, if so, proceed
|
|
125
124
|
// You can call the activatePolyfills() function in your own worker, or standalone as a root worker
|
|
126
125
|
if (
|
|
127
126
|
typeof ServiceWorkerGlobalScope !== 'undefined' &&
|
|
128
|
-
|
|
127
|
+
self instanceof ServiceWorkerGlobalScope
|
|
129
128
|
) {
|
|
129
|
+
const workerSelf = self as ServiceWorkerGlobalScope;
|
|
130
130
|
workerSelf.skipWaiting();
|
|
131
131
|
workerSelf.addEventListener('activate', (event) => {
|
|
132
132
|
// Claim clients to make the service worker take control immediately
|
|
@@ -151,14 +151,14 @@ async function installWorker(options: any = {}): Promise<void> {
|
|
|
151
151
|
? document?.currentScript?.src
|
|
152
152
|
: importMetaIfSupported()?.url);
|
|
153
153
|
if (installUrl)
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
154
|
+
{navigator.serviceWorker
|
|
155
|
+
.register(installUrl, { type: 'module' })
|
|
156
|
+
.catch((error) => {
|
|
157
|
+
console.error(
|
|
158
|
+
'DWeb networking feature installation failed: ',
|
|
159
|
+
error
|
|
160
|
+
);
|
|
161
|
+
});}
|
|
162
162
|
}
|
|
163
163
|
} else {
|
|
164
164
|
throw new Error(
|
|
@@ -310,8 +310,8 @@ const tabContent = `
|
|
|
310
310
|
`;
|
|
311
311
|
|
|
312
312
|
let elementsInjected = false;
|
|
313
|
-
function injectElements() {
|
|
314
|
-
if (elementsInjected) return;
|
|
313
|
+
function injectElements(): void {
|
|
314
|
+
if (elementsInjected) {return;}
|
|
315
315
|
const style = document.createElement('style');
|
|
316
316
|
style.innerHTML = `
|
|
317
317
|
${loaderStyles}
|
|
@@ -343,14 +343,14 @@ function injectElements() {
|
|
|
343
343
|
elementsInjected = true;
|
|
344
344
|
}
|
|
345
345
|
|
|
346
|
-
function cancelNavigation() {
|
|
346
|
+
function cancelNavigation(): void {
|
|
347
347
|
document.documentElement.removeAttribute('drl-link-loading');
|
|
348
348
|
activeNavigation = null;
|
|
349
349
|
}
|
|
350
350
|
|
|
351
351
|
let activeNavigation;
|
|
352
352
|
let linkFeaturesActive = false;
|
|
353
|
-
function addLinkFeatures() {
|
|
353
|
+
function addLinkFeatures(): void {
|
|
354
354
|
if (!linkFeaturesActive) {
|
|
355
355
|
document.addEventListener('click', async (event: any) => {
|
|
356
356
|
const anchor = event.target.closest('a');
|
|
@@ -377,17 +377,17 @@ function addLinkFeatures() {
|
|
|
377
377
|
);
|
|
378
378
|
}
|
|
379
379
|
const endpoints = await getDwnEndpoints(did);
|
|
380
|
-
if (!endpoints.length) throw null;
|
|
380
|
+
if (!endpoints.length) {throw null;}
|
|
381
381
|
const url = `${endpoints[0].replace(
|
|
382
382
|
trailingSlashRegex,
|
|
383
383
|
''
|
|
384
384
|
)}/${did}/${path}`;
|
|
385
385
|
if (openAsTab) {
|
|
386
|
-
if (!tab.closed) tab.location.href = url;
|
|
386
|
+
if (!tab.closed) {tab.location.href = url;}
|
|
387
387
|
} else if (activeNavigation === path) {
|
|
388
388
|
window.location.href = url;
|
|
389
389
|
}
|
|
390
|
-
} catch
|
|
390
|
+
} catch {
|
|
391
391
|
if (activeNavigation === path) {
|
|
392
392
|
cancelNavigation();
|
|
393
393
|
}
|
|
@@ -416,7 +416,7 @@ function addLinkFeatures() {
|
|
|
416
416
|
const responseCache = await caches.open('drl');
|
|
417
417
|
const response = await responseCache.match(drl);
|
|
418
418
|
const url = response.headers.get('dwn-composed-url');
|
|
419
|
-
if (url) target.src = url;
|
|
419
|
+
if (url) {target.src = url;}
|
|
420
420
|
target.addEventListener('pointerup', resetContextMenuTarget, {
|
|
421
421
|
once: true,
|
|
422
422
|
});
|
|
@@ -431,7 +431,7 @@ function addLinkFeatures() {
|
|
|
431
431
|
}
|
|
432
432
|
|
|
433
433
|
let contextMenuTarget;
|
|
434
|
-
async function resetContextMenuTarget(e?: any) {
|
|
434
|
+
async function resetContextMenuTarget(e?: any): Promise<void> {
|
|
435
435
|
if (e?.type === 'pointerup') {
|
|
436
436
|
await new Promise((r) => requestAnimationFrame(r));
|
|
437
437
|
}
|
|
@@ -446,10 +446,12 @@ async function resetContextMenuTarget(e?: any) {
|
|
|
446
446
|
* Activates various polyfills to enable Web5 features in Web environments.
|
|
447
447
|
*
|
|
448
448
|
* @param {object} [options={}] - Configuration options to control the activation of polyfills.
|
|
449
|
-
* @param {boolean} [options.serviceWorker=true] - Option to avoid installation of the Service Worker.
|
|
449
|
+
* @param {boolean} [options.serviceWorker=true] - Option to avoid installation of the Service Worker.
|
|
450
|
+
* Defaults to true, installing the Service Worker.
|
|
450
451
|
* @param {boolean} [options.injectStyles=true] - Option to skip injection of styles for UI related UX polyfills. Defaults to true, injecting styles.
|
|
451
452
|
* @param {boolean} [options.links=true] - Option to skip activation of DRL link features. Defaults to true, activating link features.
|
|
452
|
-
* @param {function} [options.onCacheCheck] - Callback function to handle cache check events,
|
|
453
|
+
* @param {function} [options.onCacheCheck] - Callback function to handle cache check events,
|
|
454
|
+
* allowing fine-grained control over what DRL request to cache, and for how long.
|
|
453
455
|
* @param {object} [options.onCacheCheck.event] - The event object passed to the callback.
|
|
454
456
|
* @param {object} [options.onCacheCheck.route] - The route object passed to the callback.
|
|
455
457
|
* @returns {object} [options.onCacheCheck.return] - The return object from the callback.
|
|
@@ -471,19 +473,19 @@ async function resetContextMenuTarget(e?: any) {
|
|
|
471
473
|
* // Activate polyfills, but without Service Worker activation
|
|
472
474
|
* activatePolyfills({ serviceWorker: false });
|
|
473
475
|
*/
|
|
474
|
-
export function activatePolyfills(options: any = {}) {
|
|
476
|
+
export function activatePolyfills(options: any = {}): void {
|
|
475
477
|
if (options.serviceWorker !== false) {
|
|
476
478
|
installWorker(options);
|
|
477
479
|
}
|
|
478
480
|
if (typeof window !== 'undefined' && typeof window.document !== 'undefined') {
|
|
479
481
|
if (options.injectStyles !== false) {
|
|
480
|
-
if (document.readyState !== 'loading') injectElements();
|
|
482
|
+
if (document.readyState !== 'loading') {injectElements();}
|
|
481
483
|
else {
|
|
482
484
|
document.addEventListener('DOMContentLoaded', injectElements, {
|
|
483
485
|
once: true,
|
|
484
486
|
});
|
|
485
487
|
}
|
|
486
488
|
}
|
|
487
|
-
if (options.links !== false) addLinkFeatures();
|
|
489
|
+
if (options.links !== false) {addLinkFeatures();}
|
|
488
490
|
}
|
|
489
491
|
}
|
package/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2025 Enbox
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|