smbls 3.14.861 → 3.14.862

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.
Files changed (50) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/smbls.cjs +46 -46
  3. package/dist/smbls.cjs.map +2 -2
  4. package/dist/smbls.core.chunk-GLYU4H6F.esm.js +2 -0
  5. package/dist/{smbls.core.chunk-NKYGHX2D.esm.js.map → smbls.core.chunk-GLYU4H6F.esm.js.map} +2 -2
  6. package/dist/smbls.core.chunk-JV4WS3S7.esm.js +7 -0
  7. package/dist/{smbls.core.chunk-EYPFXZ4X.esm.js.map → smbls.core.chunk-JV4WS3S7.esm.js.map} +2 -2
  8. package/dist/{smbls.core.chunk-XCEZBJ7G.esm.js → smbls.core.chunk-OOHYYRXY.esm.js} +2 -2
  9. package/dist/smbls.core.chunk-OOHYYRXY.esm.js.map +6 -0
  10. package/dist/{smbls.core.chunk-JCEI7VBV.esm.js → smbls.core.chunk-OSQ57CQ7.esm.js} +2 -2
  11. package/dist/smbls.core.chunk-WPENW4QC.esm.js +27 -0
  12. package/dist/smbls.core.chunk-WPENW4QC.esm.js.map +1 -0
  13. package/dist/smbls.core.chunk-ZKB7XHLX.esm.js +36 -0
  14. package/dist/smbls.core.chunk-ZKB7XHLX.esm.js.map +1 -0
  15. package/dist/{smbls.core.dropdown-UVO6TG2P.esm.js → smbls.core.dropdown-LZXILPIB.esm.js} +2 -2
  16. package/dist/smbls.core.esm.js +1 -1
  17. package/dist/smbls.core.fetch-3Y4LB2YA.esm.js +2 -0
  18. package/dist/smbls.core.fetch-3Y4LB2YA.esm.js.map +1 -0
  19. package/dist/{smbls.core.fetchOnCreate-C37HV2DR.esm.js → smbls.core.fetchOnCreate-ITFRAS5S.esm.js} +2 -2
  20. package/dist/{smbls.core.inspect-WIXUJM56.esm.js → smbls.core.inspect-K35SKWAW.esm.js} +2 -2
  21. package/dist/{smbls.core.lazyParts-ZRE6CGZV.esm.js → smbls.core.lazyParts-MQ6LARXN.esm.js} +2 -2
  22. package/dist/{smbls.core.lazyParts-ZRE6CGZV.esm.js.map → smbls.core.lazyParts-MQ6LARXN.esm.js.map} +1 -1
  23. package/dist/{smbls.core.sync-ET3QQ6Z5.esm.js → smbls.core.sync-H754M4Y5.esm.js} +2 -2
  24. package/dist/{smbls.core.windows-DQV63PCA.esm.js → smbls.core.windows-BMNUKLBM.esm.js} +2 -2
  25. package/dist/smbls.embed.iife.js +1 -1
  26. package/dist/smbls.embed.iife.js.map +1 -1
  27. package/dist/smbls.esm.js +46 -46
  28. package/dist/smbls.esm.js.map +1 -1
  29. package/dist/smbls.iife-string.js +2 -2
  30. package/dist/smbls.iife.js +1 -1
  31. package/dist/smbls.iife.js.map +1 -1
  32. package/dist/smbls.server-utils.esm.js +8 -8
  33. package/dist/smbls.server-utils.esm.js.map +3 -3
  34. package/dist/smbls.tree-shake.json +45 -0
  35. package/package.json +6 -6
  36. package/dist/smbls.core.chunk-EYPFXZ4X.esm.js +0 -7
  37. package/dist/smbls.core.chunk-NKYGHX2D.esm.js +0 -2
  38. package/dist/smbls.core.chunk-RYOPPMCY.esm.js +0 -27
  39. package/dist/smbls.core.chunk-RYOPPMCY.esm.js.map +0 -1
  40. package/dist/smbls.core.chunk-SZ456M5Z.esm.js +0 -36
  41. package/dist/smbls.core.chunk-SZ456M5Z.esm.js.map +0 -1
  42. package/dist/smbls.core.chunk-XCEZBJ7G.esm.js.map +0 -6
  43. package/dist/smbls.core.fetch-B6OIXR7B.esm.js +0 -2
  44. package/dist/smbls.core.fetch-B6OIXR7B.esm.js.map +0 -1
  45. /package/dist/{smbls.core.chunk-JCEI7VBV.esm.js.map → smbls.core.chunk-OSQ57CQ7.esm.js.map} +0 -0
  46. /package/dist/{smbls.core.dropdown-UVO6TG2P.esm.js.map → smbls.core.dropdown-LZXILPIB.esm.js.map} +0 -0
  47. /package/dist/{smbls.core.fetchOnCreate-C37HV2DR.esm.js.map → smbls.core.fetchOnCreate-ITFRAS5S.esm.js.map} +0 -0
  48. /package/dist/{smbls.core.inspect-WIXUJM56.esm.js.map → smbls.core.inspect-K35SKWAW.esm.js.map} +0 -0
  49. /package/dist/{smbls.core.sync-ET3QQ6Z5.esm.js.map → smbls.core.sync-H754M4Y5.esm.js.map} +0 -0
  50. /package/dist/{smbls.core.windows-DQV63PCA.esm.js.map → smbls.core.windows-BMNUKLBM.esm.js.map} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
  # smbls
2
2
 
3
+ ## 3.14.862
4
+
5
+ ### Patch Changes
6
+
7
+ - bfef7bf: `el.getAdoption()`: how an element's first view came, per element (XMA #501, ask A). `'adopted'` when its node is the built page's (a hydration boot); `'replaced'` when a replace boot built it in the first view over the built page and the built page had its counterpart (the same `data-key` chain, tag and rank — the match a replace already uses for the visitor's input); `null` for everything else: a fresh client render, a part the built page did not have, and every element made after the boot's first view (a navigation, a list's next data, an `if` that opens later). The value is set when the element's node is made, so it is there in `onRender` / `onInView` — in a replace, before the swap — and stays for the element's life. A replace answers `'replaced'`, never `'adopted'`, so a gate that waits for data still reads a fresh build; `el.context.prerendered` and `window.__BRENDER_HYDRATION__` stay the page-level signals. `getAdoption` is a built-in element method (utils `METHODS`): a shared library cannot replace it.
8
+ - 0e57128: A language switch runs the create-time queries on screen again in the new language. When the root `lang` moves from one language to another (polyglot `setLang`, or a host that writes root `lang`), each element with create-time queries runs them again: a fresh entry for the new key answers from the cache, a request in flight on it is shared, otherwise one request per key. Before, nothing asked again until a window focus: the symbols.app landing switches a ka browser to Georgian in its root onRender, the switch waits for the Georgian font faces, and the home's reads went out in en and stayed English under a Georgian page (a picker switch after the load did the same). An answer for a key the declaration no longer asks for (its language, params or page moved since, and a newer run asks for the new key) is not taken, so an English reply that comes in after the switch never replaces the Georgian rows, and an old params' reply never replaces the new one.
9
+ - 9f253fc: An element takes each answer once per declaration: one state write, one `transform`, one `onFetchComplete` (the element's and the config's). A window focus that joined the element's own request in flight handed it the answer a second time, and an older reply that found a newer request's rows in the cache handed those over again. A reply or a failure that comes in after a newer answer of the same key is not taken; a failure does not hold off the rows that come after it.
10
+ - 9f253fc: A reconnect (window `online`) asks for each key once: the mounted queries refetch as a refresh, so several elements that read one key share one request. It ran forced, so the symbols.app home sent GET /core/presets once per declaration on every reconnect. A request that started before the reconnect is never joined, by the reconnect refetches or by a query that mounts after it. `refetchInterval`, `el.__ref.refetch()` and `fetchNextPage` stay forced.
11
+ - de2f734: Lazy group parts per group (XMA #557, L1 + L2).
12
+
13
+ L1 — a group that uses none of the moved parts loads only its own chunk. `smbls build` now reads each `context.lazy` group's own code on its own (the files its entry reaches that the main code does not), and records which moved parts each group uses. The groups that use one go into the bundle as a number constant, `globalThis.__SMBLS_BUILD_LAZY_PARTS_GROUPS__`: bit `lazyPartsSlot(name)` (FNV-1a of the group name, mod 31) per group. The parcel transformer writes it at the flag's length, like the boolean flags, so the dist's source map still lines up (`buildFlags.json` gains `values`; `ensureSymbolsParcelConfig({ buildValues })`, `replaceBuildFlags(code, on, values)`). smbls wraps only those groups' loaders with the parts load. Two names can share a bit: that group then loads the parts too, as every group did before. No number (an older CLI writes `false`, a dev server leaves it unset), or a moved part no single group's code names: every group loads the parts, as before. The build line names each group: `… loaded with the first load of a group that uses them: inertOutside, TooltipLayer by admin, texts (no part: its own chunk only)`.
14
+
15
+ L2 — a page built with a group's page (`brender.lazyGroups`) whose group loads the parts preloads their file too, after the group's chunk: `smbls.core.lazyParts-<id>.esm.<hash>.js` as the bundler re-emits smbls's file, else the bundle whose source map lists smbls `src/lazyParts.js`. A build without that file warns; `build.modulePreload: "strict"` fails it.
16
+
17
+ - d9194ce: Two new optional parts for `build.treeShakeFeatures` (XMA r12 results, item 3).
18
+
19
+ `routeHead` — the route entry's own head (K4, r12): utils `routeEntry.js` and `sharedLibraryBagEntry`, the router's same-page rule and the head it gives a swapped or kept page, helmet's `routeHead` hook and route-head layer. No word of the source decides it (every app spells `metadata`): the routes the build can read decide. They are the loaded pages, the app's own `routes`, every `routes` table of the app, its pages and components, and each lazy group's pages (the build loads the groups to read them). The build keeps the feature for a route entry that adds only a head to the component it names (`'/x': { extends: 'X', metadata: {…} }`), for two entries of one component (`'/a': 'X'` beside `'/b': { extends: 'X' }`), for an own head that merges with its component chain's metadata, for a head set as `helmet`, and when it cannot read the routes (a computed `routes`, a lazy group that does not load, a placeholder without `context.lazy`). String entries and pages with a head over a component without one leave it out. A project that calls an export of `routeEntry.js` keeps it. A build without it routes and shows heads as before K4 (each export of `routeEntry.js` answers as the readers did: the same page only when identical, the entry's own `metadata` or `helmet`), and an entry the feature would change that the build could not read (a stored or fetched page) logs one `console.error` naming `routeHead` and `build.treeShakeFeatures.keep`.
20
+
21
+ `themeColorList` — the `theme-color` list (`'theme-color': [{ content, media }, …]`, one meta per entry) in helmet and in the head builders (helmet `generateHeadHtml`, utils `generateMetaTags`). A build whose source sets `'theme-color'` only to a plain literal leaves it out; a list, a name or a call keeps it. The CLI's scan now reads a quoted key with a hyphen by its whole name (`'theme-color': …` and `meta['theme-color'] = …`). A list met at runtime (a fetched head) writes no tag and logs one `console.error`; served list tags stay as served. Node never sets the member, so a server render is unchanged. An older CLI keeps it for any `'theme-color'` string.
22
+
23
+ Bytes in an app bundle (a parcel production build of a small project, every other optional feature left out): both drops take out 2,974 B raw, 920 B gzip, 743 B Brotli. Each package bundled alone, minified and mangled (raw / Brotli): `routeHead` takes 1,192 / 423 out of `routeEntry.js` and 827 / 235 out of helmet; the router gains 159 / 83 (the check that reports an entry the build could not read). `themeColorList` takes 484 / 89 out of helmet.
24
+
25
+ The feature manifest gains `match.config` (the build's configuration rule decides the feature, on every build) and `broadStrings` (strings that keep the feature only for a CLI that does not know the exact rule). The build log's reason for a kept `routeHead` names the route (`config: route pages['/x'] adds only a head to X (the router keeps one page across such entries)`).
26
+
3
27
  ## 3.14.861
4
28
 
5
29
  ### Patch Changes