mnfst 0.5.199-next.0 → 0.5.199-next.1

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.
@@ -2,7 +2,7 @@
2
2
 
3
3
  (function () {
4
4
 
5
- const MANIFEST_BUILD_VERSION = '0.5.199-next.0';
5
+ const MANIFEST_BUILD_VERSION = '0.5.199-next.1';
6
6
 
7
7
  /* Manifest Data Sources - Appwrite Integration */
8
8
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  (function () {
4
4
 
5
- const MANIFEST_BUILD_VERSION = '0.5.199-next.0';
5
+ const MANIFEST_BUILD_VERSION = '0.5.199-next.1';
6
6
 
7
7
  /* Manifest Data Sources - Configuration */
8
8
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "manifest.appwrite.auth.js": "sha384-lWvffK6C2Zs9dOiMh/0OQTnU2ycZq1USOeJDlPUgJsbtrdA9+3zq4VHcIdS40qR0",
3
- "manifest.appwrite.data.js": "sha384-5iOVsAwYeVx/v/gj54qeG8BgQVYItXrpd5HVd3rmTOb4mwMVrbdIKTem68hl9Hih",
3
+ "manifest.appwrite.data.js": "sha384-C2EDm2EsuWW9PTtvXtU1nTBrDAUaIjWc3fY5YuuHsRV0MjRlZ0u9J0UYuQW4g41o",
4
4
  "manifest.appwrite.presences.js": "sha384-JyVDWFT69b7Svq8J8p9tNWe2v9PZNQBY5UyhtOl1vnuHFAX0CRQ3MA9SiKq5wzNh",
5
5
  "manifest.bindings.js": "sha384-lPtMf8Ykaic9gNVZKq8Scia1881ZeMAyxer3WCIkUNwwrgzGBWto1OXADUwjvORF",
6
6
  "manifest.charts.js": "sha384-qQrjhWkIDi4oU5uQrpy8DdlMjY+gfiivBuX6mssNiFdkawgkVBvKneGgp+nd3PYJ",
@@ -11,7 +11,7 @@
11
11
  "manifest.combobox.js": "sha384-SN3XHumoebxcduFQqx5zt65/Cd10y8nuf9Gkco6UnsZ42sadRd+gvVLfWPdkkuPH",
12
12
  "manifest.components.js": "sha384-HEyeJtV20k7po8WH0LEj800MlsqgDH0vE5GTAl62SgdEhn1aJ7VfryQcA6yIi18U",
13
13
  "manifest.computed.js": "sha384-GYML/e81gQfN+iDbqhPUgny8bINCyL+SrbTofoGk4hlCnLLjv51mCv42JMqq+ku5",
14
- "manifest.data.js": "sha384-HYvx2+NVshWVigXcvTZZvKXOCBkW0NMmtP/LH4xcXj4IIf1vbpiJPxjnepZHm0O2",
14
+ "manifest.data.js": "sha384-5hH1ym307YXcSqTGfUKoRPnj1lZI6bjnkRr/okJhWLy+QyUN7pcrOe6TbNxKOPCU",
15
15
  "manifest.datepicker.js": "sha384-8vTJYkLqqvgXgm1w1becuaRR/jUEpiLBjBJ6RsRbUr+ZkypvspD6EsssuDrX4SQq",
16
16
  "manifest.defer.js": "sha384-t/g++osVS3qDXeY8+gfxUtLF9o0SCQQJKNxHGpb8NkIciDvxOAvA6sFIVcM0AKeA",
17
17
  "manifest.dropdowns.js": "sha384-4HuHkBt4i8sTPUDLB9rNLli2/lWLY1tjtCLzey37gRwueG+FRLCnVH1q7ljiVvJR",
@@ -27,7 +27,7 @@
27
27
  "manifest.slides.js": "sha384-3uRTkyK9XPLmnxI2+igZlpi4EyPlU/7IHj5j3BZJJ2KN455vXyk99fiXV3feO/XY",
28
28
  "manifest.status.js": "sha384-fXqDnKwldB7XRxcfEQYTm/WqLl2oP24xY2Znq8FqnFM9LQo0zrQkXszqAOksArUX",
29
29
  "manifest.svg.js": "sha384-qr/8H9+2cIhSXNbRWRtIdrDlTOxKlNJqwEefHvCYoiBNW/kKhPTFa109Orv/EBnb",
30
- "manifest.sw.js": "sha384-h6n2zNM8khHpqYdwtgvj+50+u7MalNTA0QXemgSSTlLQjmcfeuUL+51Fw+F5HVTP",
30
+ "manifest.sw.js": "sha384-99glzEjzhOxUy6yUID+Exx7mHVs78XKdoPRL7nWvdXpdX9uMgFHWSIWBinuRYfml",
31
31
  "manifest.tabs.js": "sha384-OIIcyaQnGS0eNYk4zgAFEDboNYect7THvUd9D0V6nqCeDOxQcoiqLrBEmmWVTTet",
32
32
  "manifest.tailwind.js": "sha384-r/Jvqb+Piz21jUts10BbVAJoKkShOdJRVFpywyi4HPIi/OfOJq5CtPyWAPbdkMgt",
33
33
  "manifest.text.edit.js": "sha384-1LsuOJyMCgab7W9w6DJEu5URzbadYxtq/cHtB8sN3hBFa/BHPnjdnTRbiKyM0FcC",
@@ -36,5 +36,5 @@
36
36
  "manifest.url.parameters.js": "sha384-J2aSVBOPsoqsbafHndrWLHEDpKb4AKJAoQnVmKA4gZh5P/8HHjFWHO/lkusmG84l",
37
37
  "manifest.utilities.js": "sha384-RvUXxxMLv5q6Psng6jjfK5O1xw05mV6BdLjV92zQW7Zuy3XWctl3QnF5XYNuPyYq",
38
38
  "manifest.virtual.js": "sha384-YwwmAsZNddajnAkLhBWtrK8edHMJOhD7cJkQi3qmm5o1Thg0wbtDU0dsfrCHKTIQ",
39
- "manifest.js": "sha384-XonwIAby6cssmoUjgue8ve29WjWTNreaEKLJ3be+cDBoUsLqZRTdqE9k15SnqX0U"
39
+ "manifest.js": "sha384-jicPS2+j2BtRtkdXC8YqGOQFi/V/E9MMjJFQ8mbDult9IG2cyzwq191W+zIl137b"
40
40
  }
package/lib/manifest.js CHANGED
@@ -9,6 +9,8 @@
9
9
  (function () {
10
10
  'use strict';
11
11
 
12
+ const loaderScript = document.currentScript;
13
+
12
14
  /*
13
15
  * Hydration contract runtime: prerendered MPA pages carry a `#__manifest_hydrate__`
14
16
  * diff of source-authored attributes (and data-hydrate innerHTML). Applied once
@@ -374,21 +376,37 @@
374
376
  }
375
377
 
376
378
  // Inject one script URL and wait for it to load and execute
379
+ // Has an existing script tag already executed? Loader-injected tags are marked on load;
380
+ // a parser-inserted classic tag ahead of the loader ran before it; a resource-timing
381
+ // entry means the fetch finished; a complete document has run every parser tag.
382
+ function scriptSettled(el) {
383
+ if (el.hasAttribute('data-mnfst-loaded')) return true;
384
+ if (document.readyState === 'complete') return true;
385
+ if (!el.async && !el.defer && loaderScript && (loaderScript.compareDocumentPosition(el) & Node.DOCUMENT_POSITION_PRECEDING)) return true;
386
+ try { if (el.src && performance.getEntriesByName(el.src).length) return true; } catch (_) { /* no resource timing */ }
387
+ return false;
388
+ }
389
+
377
390
  function injectScript(url) {
378
391
  return new Promise((resolve, reject) => {
379
- // Skip if script with same src already in DOM (e.g. prerendered HTML or second loader run)
392
+ // Same src already in the DOM (author tag, prerendered HTML, second loader run)
380
393
  const existing = document.querySelector(`script[src="${url}"]`);
381
394
  if (existing) {
382
- if (existing.complete) return resolve();
383
- existing.addEventListener('load', () => resolve());
384
- existing.addEventListener('error', () => reject(new Error(`Failed to load ${url}`)));
395
+ if (scriptSettled(existing)) return resolve();
396
+ let done = false;
397
+ const finish = () => { if (!done) { done = true; resolve(); } };
398
+ existing.addEventListener('load', finish);
399
+ existing.addEventListener('error', () => { if (!done) { done = true; reject(new Error(`Failed to load ${url}`)); } });
400
+ // A tag that already fired never fires again — never let boot hang on it
401
+ const poll = setInterval(() => { if (scriptSettled(existing)) { clearInterval(poll); finish(); } }, 50);
402
+ setTimeout(() => { clearInterval(poll); finish(); }, 4000);
385
403
  return;
386
404
  }
387
405
 
388
406
  const script = document.createElement('script');
389
407
  script.src = url;
390
408
  script.async = false; // Ensure scripts execute in order
391
- script.onload = () => resolve();
409
+ script.onload = () => { script.setAttribute('data-mnfst-loaded', ''); resolve(); };
392
410
  script.onerror = () => { script.remove(); reject(new Error(`Failed to load ${url}`)); };
393
411
  document.head.appendChild(script);
394
412
  });
@@ -16,7 +16,7 @@
16
16
 
17
17
  // Build stamps the published version here; unstamped (dev) falls back to the
18
18
  // registration URL's `v`, then 'dev'.
19
- const BUILD_VERSION = '0.5.199-next.0';
19
+ const BUILD_VERSION = '0.5.199-next.1';
20
20
  const CACHE_PREFIX = 'mnfst-sw:';
21
21
  const META_CACHE = CACHE_PREFIX + 'meta';
22
22
  const SWR_CAP = 200;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mnfst",
3
- "version": "0.5.199-next.0",
3
+ "version": "0.5.199-next.1",
4
4
  "private": false,
5
5
  "workspaces": [
6
6
  "templates/starter",