mnfst 0.5.199 → 0.5.201

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';
5
+ const MANIFEST_BUILD_VERSION = '0.5.201';
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';
5
+ const MANIFEST_BUILD_VERSION = '0.5.201';
6
6
 
7
7
  /* Manifest Data Sources - Configuration */
8
8
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "manifest.appwrite.auth.js": "sha384-HMJmRXnvdDBWyuteXL+DTxWM2llSCdjl4EDamEI7iHNAVlqeOCE4GDTm8ZHipPRj",
3
- "manifest.appwrite.data.js": "sha384-ETPZTFqMOrmrriXrTAZqJljFmwfs316c4C2GEqNs295HdyYu7oZN8BDTLG7Bmotj",
3
+ "manifest.appwrite.data.js": "sha384-/pUVR3PGGMBz680dmGqubCjjs3nx3RiRi9DqJEpO6/cKEu25YxnO4Rwf38aBdcWN",
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-DLGSqCbnGkS87AWJ8GpKoAFP4nCosgC5SFSg6C10hH/nWu/MxI+0ntHlnFEfs++u",
13
13
  "manifest.computed.js": "sha384-GYML/e81gQfN+iDbqhPUgny8bINCyL+SrbTofoGk4hlCnLLjv51mCv42JMqq+ku5",
14
- "manifest.data.js": "sha384-AApJ6UR3+3DpNbMaMmIBL7BpT/HwIEJaY3yYWLo19ToT20QnhgImWBLLMaCgd4hU",
14
+ "manifest.data.js": "sha384-mNrtyjtCTK+mcv3Nfau+ccleGFEd3qUFbYCOuMMvvJp5nGA+so9GB4XZ9MYlTjmZ",
15
15
  "manifest.datepicker.js": "sha384-8vTJYkLqqvgXgm1w1becuaRR/jUEpiLBjBJ6RsRbUr+ZkypvspD6EsssuDrX4SQq",
16
16
  "manifest.defer.js": "sha384-wXa60M2OHigi5rBurXQ7Oa8eyr5WTKs7EUn2GOru62KMdfs/LDyNegxCc9MNJFSe",
17
17
  "manifest.device.js": "sha384-g+txmrEszYtuOvRelTp/c1wSNR2AtllVI9rx5NPPD7DzhVUnMNughonZykv2xlBW",
@@ -28,14 +28,14 @@
28
28
  "manifest.slides.js": "sha384-3uRTkyK9XPLmnxI2+igZlpi4EyPlU/7IHj5j3BZJJ2KN455vXyk99fiXV3feO/XY",
29
29
  "manifest.status.js": "sha384-nwvUSbT+gpRMqhYx6MeBYswUMH72rY92mjgxv0vrSG7Ht7l83XYpEB6fCTbXjjfK",
30
30
  "manifest.svg.js": "sha384-qr/8H9+2cIhSXNbRWRtIdrDlTOxKlNJqwEefHvCYoiBNW/kKhPTFa109Orv/EBnb",
31
- "manifest.sw.js": "sha384-ogkuzlKwgmBIH08csCz37WQdUMUeTwrOJcGTVNXw0aPzubapYLMMOYT2XHlvXMAh",
31
+ "manifest.sw.js": "sha384-zwGxW9eipPdhlEs6dEjZkVttY/G78J2u47w0N0lVbcrekTdwkfBA/Y8U2KuSAfF8",
32
32
  "manifest.tabs.js": "sha384-OIIcyaQnGS0eNYk4zgAFEDboNYect7THvUd9D0V6nqCeDOxQcoiqLrBEmmWVTTet",
33
33
  "manifest.tailwind.js": "sha384-r/Jvqb+Piz21jUts10BbVAJoKkShOdJRVFpywyi4HPIi/OfOJq5CtPyWAPbdkMgt",
34
34
  "manifest.text.edit.js": "sha384-pfhc4IPKNJokj6ldlgD+KwGLN4UoM21CNeVf2sVq/34X1Un2PUhEuyTg5itmtsXS",
35
35
  "manifest.toasts.js": "sha384-/OV32LLMJl0Iw8NoNQJ+5lgntLxjIJq/YNj5JAKS/+nUhVx4MMB9h1FOqP7zuj2M",
36
36
  "manifest.tooltips.js": "sha384-uXVVQADl6pY2Pj9i/UaSclZN7dzbKhLkmevv7Ad0+wXR8LgqodALNFrc5jZJjlwm",
37
37
  "manifest.url.parameters.js": "sha384-J2aSVBOPsoqsbafHndrWLHEDpKb4AKJAoQnVmKA4gZh5P/8HHjFWHO/lkusmG84l",
38
- "manifest.utilities.js": "sha384-frvYhLP8Arx+smhzQr1nCvxuVfnjRhoG+ce8pI0H0iYqJwO7km1/3QLdBYt3uKol",
38
+ "manifest.utilities.js": "sha384-mncpPiNnQWpKojYWm7oO3cepjSQlnJQtxdxxPTyyaAsi77QnXrJQgqNPGT7j4dez",
39
39
  "manifest.virtual.js": "sha384-YwwmAsZNddajnAkLhBWtrK8edHMJOhD7cJkQi3qmm5o1Thg0wbtDU0dsfrCHKTIQ",
40
- "manifest.js": "sha384-z6bjoNHfkJwD3bRcjChzuzM3y/3LrWVfc8nsApLtSXcshgJc8L4+Vz7XaV3MN6N8"
40
+ "manifest.js": "sha384-+rWocB3jT+iBErwbS1ZBwt24C/jhUavBduc5EzMSu8ZZooyO52LeGpW7UscLdLYx"
41
41
  }
package/lib/manifest.js CHANGED
@@ -388,14 +388,8 @@
388
388
  return false;
389
389
  }
390
390
 
391
- // One fetch per URL: concurrent callers share the first call's promise
392
- const inflightScripts = new Map();
393
-
394
391
  function injectScript(url) {
395
- const shared = inflightScripts.get(url);
396
- if (shared) return shared;
397
-
398
- const promise = new Promise((resolve, reject) => {
392
+ return new Promise((resolve, reject) => {
399
393
  // Same src already in the DOM (author tag, prerendered HTML, second loader run)
400
394
  const existing = document.querySelector(`script[src="${url}"]`);
401
395
  if (existing) {
@@ -418,10 +412,6 @@
418
412
  script.onerror = () => { script.removeAttribute('data-mnfst-loading'); script.remove(); reject(new Error(`Failed to load ${url}`)); };
419
413
  document.head.appendChild(script);
420
414
  });
421
-
422
- inflightScripts.set(url, promise);
423
- promise.then(() => inflightScripts.delete(url), () => inflightScripts.delete(url)); // dedupe only while in flight
424
- return promise;
425
415
  }
426
416
 
427
417
  // Load a plugin, falling through the CDN chain on error. A fallback insert
@@ -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';
19
+ const BUILD_VERSION = '0.5.201';
20
20
  const CACHE_PREFIX = 'mnfst-sw:';
21
21
  const META_CACHE = CACHE_PREFIX + 'meta';
22
22
  const SWR_CAP = 200;
@@ -1488,9 +1488,8 @@ TailwindCompiler.prototype.scanStaticClasses = async function () {
1488
1488
 
1489
1489
  // Extract classes from HTML content
1490
1490
  TailwindCompiler.prototype.extractClassesFromHTML = function (html, classSet) {
1491
- // Plain class attributes only — the leading boundary excludes Alpine's
1492
- // :class / x-bind:class bindings (JS expressions, not token lists)
1493
- const classRegex = /(?:^|[\s"'`>/])(?:[a-zA-Z][\w.-]*-)?class=["']([^"']+)["']/g;
1491
+ // Match class attributes: class="..." or class='...'
1492
+ const classRegex = /class=["']([^"']+)["']/g;
1494
1493
  let match;
1495
1494
 
1496
1495
  while ((match = classRegex.exec(html)) !== null) {
@@ -1701,8 +1700,11 @@ TailwindCompiler.prototype.fetchThemeContent = async function () {
1701
1700
  TailwindCompiler.prototype.extractThemeVariables = function (cssText) {
1702
1701
  const variables = new Map();
1703
1702
 
1704
- // Extract ALL CSS custom properties from ANY declaration block
1705
- const varRegex = /--([\w-]+):\s*([^;]+);/g;
1703
+ // Extract ALL CSS custom properties from ANY declaration block. Terminator
1704
+ // is a lookahead (`;` or `}`) rather than a consumed `;` so the last
1705
+ // declaration in a block still matches when the author omits the
1706
+ // trailing semicolon (valid CSS, e.g. `:root{--x:1rem}`).
1707
+ const varRegex = /--([\w-]+):\s*([^;}]+)(?=[;}])/g;
1706
1708
 
1707
1709
  let varMatch;
1708
1710
  while ((varMatch = varRegex.exec(cssText)) !== null) {
@@ -1,5 +1,25 @@
1
1
  /* manifest.utilities.node.mjs — built from scripts/utilities/ (DOM-free) */
2
2
 
3
+ if (typeof globalThis.window === 'undefined') globalThis.window = globalThis;
4
+ if (typeof globalThis.document === 'undefined') {
5
+ const inertElement = () => ({ style: {}, textContent: '', classList: { add(){}, remove(){}, contains: () => false }, setAttribute(){}, appendChild(){}, insertBefore(){} });
6
+ globalThis.document = {
7
+ documentElement: { outerHTML: '' },
8
+ head: { firstChild: null, lastElementChild: null, innerHTML: '', appendChild(){}, insertBefore(){} },
9
+ querySelectorAll: () => [],
10
+ querySelector: () => null,
11
+ getElementById: () => null,
12
+ getElementsByTagName: () => [],
13
+ createElement: inertElement,
14
+ addEventListener(){},
15
+ styleSheets: []
16
+ };
17
+ }
18
+ if (typeof globalThis.getComputedStyle === 'undefined') globalThis.getComputedStyle = () => ({ getPropertyValue: () => '' });
19
+ if (typeof globalThis.localStorage === 'undefined') globalThis.localStorage = { getItem: () => null, setItem(){}, removeItem(){} };
20
+ if (typeof globalThis.performance === 'undefined') globalThis.performance = { now: () => Date.now() };
21
+ if (typeof globalThis.requestAnimationFrame === 'undefined') globalThis.requestAnimationFrame = (cb) => setTimeout(cb, 0);
22
+
3
23
  // Utility generators
4
24
  // Functions that generate CSS utilities from CSS variable suffixes
5
25
 
@@ -902,9 +922,8 @@ TailwindCompiler.prototype.scanStaticClasses = async function () {
902
922
 
903
923
  // Extract classes from HTML content
904
924
  TailwindCompiler.prototype.extractClassesFromHTML = function (html, classSet) {
905
- // Plain class attributes only — the leading boundary excludes Alpine's
906
- // :class / x-bind:class bindings (JS expressions, not token lists)
907
- const classRegex = /(?:^|[\s"'`>/])(?:[a-zA-Z][\w.-]*-)?class=["']([^"']+)["']/g;
925
+ // Match class attributes: class="..." or class='...'
926
+ const classRegex = /class=["']([^"']+)["']/g;
908
927
  let match;
909
928
 
910
929
  while ((match = classRegex.exec(html)) !== null) {
@@ -1115,8 +1134,11 @@ TailwindCompiler.prototype.fetchThemeContent = async function () {
1115
1134
  TailwindCompiler.prototype.extractThemeVariables = function (cssText) {
1116
1135
  const variables = new Map();
1117
1136
 
1118
- // Extract ALL CSS custom properties from ANY declaration block
1119
- const varRegex = /--([\w-]+):\s*([^;]+);/g;
1137
+ // Extract ALL CSS custom properties from ANY declaration block. Terminator
1138
+ // is a lookahead (`;` or `}`) rather than a consumed `;` so the last
1139
+ // declaration in a block still matches when the author omits the
1140
+ // trailing semicolon (valid CSS, e.g. `:root{--x:1rem}`).
1141
+ const varRegex = /--([\w-]+):\s*([^;}]+)(?=[;}])/g;
1120
1142
 
1121
1143
  let varMatch;
1122
1144
  while ((varMatch = varRegex.exec(cssText)) !== null) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mnfst",
3
- "version": "0.5.199",
3
+ "version": "0.5.201",
4
4
  "private": false,
5
5
  "workspaces": [
6
6
  "templates/starter",