tosijs-ui 1.6.14 → 1.6.15
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/CHANGELOG.md +35 -0
- package/dist/doc-system/site/docs.js +8 -3
- package/dist/doc-system/site/orchestrator.js +22 -1
- package/dist/iife.js +55 -51
- package/dist/iife.js.map +7 -7
- package/dist/live-example/code-transform.js +0 -0
- package/dist/live-example/component.js +43 -9
- package/dist/live-example/remote-sync.d.ts +4 -0
- package/dist/live-example/remote-sync.js +11 -2
- package/dist/live-example/save-to-source.d.ts +12 -1
- package/dist/live-example/save-to-source.js +43 -7
- package/dist/live-example/types.d.ts +6 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/llms.txt +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.6.15
|
|
4
|
+
|
|
5
|
+
Live-example fixes from tosijs-3d adoption. All fixes to the doc-system's
|
|
6
|
+
editing surface; no API changes.
|
|
7
|
+
|
|
8
|
+
### Fixed
|
|
9
|
+
|
|
10
|
+
- **Save to source works when the doc comment is indented.** A `/*# … */` doc
|
|
11
|
+
comment is often indented in the source; the extractor dedents its fenced blocks
|
|
12
|
+
(so examples render with correct ordinals), but the raw scan required the closing
|
|
13
|
+
` ``` ` right after a newline, so an indented file matched **zero** blocks and
|
|
14
|
+
every save failed with "no matching block". The scan is now indentation-aware,
|
|
15
|
+
and edits compare dedented / write re-indented so a block keeps its place. The
|
|
16
|
+
failure alert is also split into a precise message (page↔source ordinal mismatch
|
|
17
|
+
vs. a genuine no-op).
|
|
18
|
+
- **The pop-out editor window ("view/edit code in a new window") now has the full
|
|
19
|
+
menu.** It previously opened as a bare instance, so View changes, Save changes
|
|
20
|
+
(local), and Save to source were hidden; the source↔doc key and the pristine
|
|
21
|
+
snapshot are now passed through, so the pop-out offers — and can execute — the
|
|
22
|
+
same actions as the main window.
|
|
23
|
+
- **Opening the editor in a new window closes the inline code view** in the main
|
|
24
|
+
window if it was open (the pop-out owns editing).
|
|
25
|
+
- **The doc extractor now only treats a `/*#` block as a doc when it starts a
|
|
26
|
+
line** (whitespace-only before the slash), so a `/*#` inside a `//` comment, a
|
|
27
|
+
string, or mid-line can't be scraped as a spurious doc page.
|
|
28
|
+
|
|
3
29
|
## 1.6.14
|
|
4
30
|
|
|
5
31
|
Lighter live-example transpilation. Additive; affects only how the live-example
|
|
@@ -14,11 +40,20 @@ runner loads its (optional, lazy) transpiler.
|
|
|
14
40
|
and the transpiler's own deps are never in a consumer's dependency graph. This
|
|
15
41
|
also fixes the `ts` example path, which previously tried to load the TypeScript
|
|
16
42
|
compiler through a CDN transform that timed out on its size.
|
|
43
|
+
- **Robust transpiler loading.** The doc-site build now ships the tjs-lang browser
|
|
44
|
+
bundles **same-origin** (copied next to the iife under `/tjs/`, with a global
|
|
45
|
+
pointing the loader at them), so live examples never depend on a third-party
|
|
46
|
+
CDN's propagation timing or uptime. The loader prefers the same-origin copy,
|
|
47
|
+
then falls back through a multi-CDN chain (jsdelivr → unpkg → esm.sh). Installed
|
|
48
|
+
ESM consumers resolve the peer locally as before.
|
|
17
49
|
- `tjs-lang` optional peer bumped to `^0.8.6`.
|
|
18
50
|
|
|
19
51
|
### Fixed
|
|
20
52
|
|
|
21
53
|
- A garbled character in the first `example` doc snippet that made it throw.
|
|
54
|
+
- Live examples could all break for the propagation window after a tjs-lang
|
|
55
|
+
release, when the single pinned CDN 404'd the just-published version (now
|
|
56
|
+
served same-origin + multi-CDN).
|
|
22
57
|
|
|
23
58
|
## 1.6.13
|
|
24
59
|
|
|
@@ -99,8 +99,9 @@ import { pinnedSort } from '../nav-tree';
|
|
|
99
99
|
const TRIM_REGEX = /^#+ |`/g;
|
|
100
100
|
function metadata(content, filePath) {
|
|
101
101
|
// Ignore metadata-style comments INSIDE /*# ... */ doc blocks — those are
|
|
102
|
-
// documentation examples, not real directives.
|
|
103
|
-
|
|
102
|
+
// documentation examples, not real directives. Only line-starting blocks count
|
|
103
|
+
// as docs (see findMarkdownFiles), so strip exactly those.
|
|
104
|
+
const scannable = content.replace(/^[ \t]*\/\*#[\s\S]*?\*\//gm, '');
|
|
104
105
|
const source = scannable.match(/<!--(\{.*\})-->|\/\*(\{.*\})\*\//);
|
|
105
106
|
let data = {};
|
|
106
107
|
if (source) {
|
|
@@ -151,7 +152,11 @@ function findMarkdownFiles(paths, ignore) {
|
|
|
151
152
|
}
|
|
152
153
|
else if (['.ts', '.js', '.css'].includes(path.extname(file))) {
|
|
153
154
|
const content = fs.readFileSync(filePath, 'utf8');
|
|
154
|
-
|
|
155
|
+
// A /*# … */ block is only a doc when it STARTS a line (whitespace-only
|
|
156
|
+
// before the slash). This keeps a `/*#` that appears inside a // comment,
|
|
157
|
+
// a string, or otherwise mid-line from being scraped as a spurious doc.
|
|
158
|
+
// m[1] is the block without its leading indentation.
|
|
159
|
+
const docs = [...content.matchAll(/^[ \t]*(\/\*#[\s\S]+?\*\/)/gm)].map((m) => m[1]);
|
|
155
160
|
if (docs.length) {
|
|
156
161
|
const markdown = docs.map((s) => s.substring(3, s.length - 2).trim());
|
|
157
162
|
const text = markdown.join('\n\n');
|
|
@@ -175,6 +175,27 @@ export async function buildSite(config) {
|
|
|
175
175
|
// root copy stays for the npm package's `files`).
|
|
176
176
|
await $ `cp llms.txt ${PUBLIC}/llms.txt`.text();
|
|
177
177
|
}
|
|
178
|
+
// Serve the tjs-lang browser bundles SAME-ORIGIN so live examples never depend
|
|
179
|
+
// on a third-party CDN's propagation timing — a freshly-published tjs-lang
|
|
180
|
+
// version 404s on a CDN until it caches it (minutes–hours), which would break
|
|
181
|
+
// every example. We ship the exact bundles the build resolved, and a global
|
|
182
|
+
// tells the loader to prefer them (it falls back to the CDN chain if absent).
|
|
183
|
+
// Optional: skipped if tjs-lang isn't installed.
|
|
184
|
+
let tjsHead = '';
|
|
185
|
+
try {
|
|
186
|
+
const browser = Bun.resolveSync('tjs-lang/browser', PROJECT_ROOT);
|
|
187
|
+
const fromTs = Bun.resolveSync('tjs-lang/browser/from-ts', PROJECT_ROOT);
|
|
188
|
+
await $ `mkdir -p ${PUBLIC}/tjs`.text();
|
|
189
|
+
await $ `cp ${browser} ${PUBLIC}/tjs/tjs-browser.js`.text();
|
|
190
|
+
await $ `cp ${fromTs} ${PUBLIC}/tjs/tjs-browser-from-ts.js`.text();
|
|
191
|
+
const bp = config.basePath;
|
|
192
|
+
const base = !bp || bp === '/' ? '/tjs/' : bp.replace(/\/$/, '') + '/tjs/';
|
|
193
|
+
tjsHead = `<script>globalThis.__TJS_LOCAL_BASE=${JSON.stringify(base)}</script>`;
|
|
194
|
+
console.log(`tjs-lang bundles served same-origin at ${base}`);
|
|
195
|
+
}
|
|
196
|
+
catch {
|
|
197
|
+
// tjs-lang not installed — live examples fall back to the CDN chain
|
|
198
|
+
}
|
|
178
199
|
// Generate the static, pre-rendered doc site (one /slug/index.html per doc).
|
|
179
200
|
// Runs after the static-asset copy so the generated index.html (README) wins,
|
|
180
201
|
// and after the bundle copy so every page's <script src> resolves.
|
|
@@ -191,7 +212,7 @@ export async function buildSite(config) {
|
|
|
191
212
|
localizedStrings: config.localizedStrings,
|
|
192
213
|
favicon: config.favicon,
|
|
193
214
|
ogImage: config.ogImage,
|
|
194
|
-
headExtra: config.headExtra,
|
|
215
|
+
headExtra: [config.headExtra, tjsHead].filter(Boolean).join('') || undefined,
|
|
195
216
|
scriptUrl: config.scriptUrl,
|
|
196
217
|
basePath: config.basePath,
|
|
197
218
|
});
|