starlight-cannoli-plugins 2.0.1 → 2.1.3

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 CHANGED
@@ -30,7 +30,7 @@ Automatically generates a nested Starlight sidebar by recursively scanning direc
30
30
  // astro.config.mjs
31
31
  import { defineConfig } from "astro/config";
32
32
  import starlight from "@astrojs/starlight";
33
- import { starlightIndexOnlySidebar } from "cannoli-starlight-plugins";
33
+ import { starlightIndexOnlySidebar } from "starlight-cannoli-plugins";
34
34
 
35
35
  export default defineConfig({
36
36
  integrations: [
@@ -86,7 +86,7 @@ dvisvgm --version
86
86
  // astro.config.mjs
87
87
  import { defineConfig } from "astro/config";
88
88
  import starlight from "@astrojs/starlight";
89
- import { astroLatexCompile } from "cannoli-starlight-plugins";
89
+ import { astroLatexCompile } from "starlight-cannoli-plugins";
90
90
 
91
91
  export default defineConfig({
92
92
  integrations: [
@@ -185,7 +185,7 @@ The underlying remark plugin used by `astroLatexCompile`. Use this directly if y
185
185
  ```ts
186
186
  // astro.config.mjs
187
187
  import { defineConfig } from "astro/config";
188
- import { remarkLatexCompile } from "cannoli-starlight-plugins/astro-latex-compile";
188
+ import { remarkLatexCompile } from "starlight-cannoli-plugins/astro-latex-compile";
189
189
 
190
190
  export default defineConfig({
191
191
  markdown: {
@@ -216,7 +216,7 @@ A rehype plugin that validates all internal links in your Markdown/MDX files at
216
216
  ```ts
217
217
  // astro.config.mjs
218
218
  import { defineConfig } from "astro/config";
219
- import { rehypeValidateLinks } from "cannoli-starlight-plugins";
219
+ import { rehypeValidateLinks } from "starlight-cannoli-plugins";
220
220
 
221
221
  export default defineConfig({
222
222
  markdown: {
@@ -228,7 +228,7 @@ export default defineConfig({
228
228
  Or import directly:
229
229
 
230
230
  ```ts
231
- import { rehypeValidateLinks } from "cannoli-starlight-plugins/rehype-validate-links";
231
+ import { rehypeValidateLinks } from "starlight-cannoli-plugins/rehype-validate-links";
232
232
  ```
233
233
 
234
234
  **Skipping Link Validation:**
@@ -295,7 +295,7 @@ Syncs `src/content/docs/` to `public/` so local files (e.g., PDFs, images) refer
295
295
  // astro.config.mjs
296
296
  import { defineConfig } from "astro/config";
297
297
  import starlight from "@astrojs/starlight";
298
- import { syncDocsToPublic } from "cannoli-starlight-plugins";
298
+ import { syncDocsToPublic } from "starlight-cannoli-plugins";
299
299
 
300
300
  export default defineConfig({
301
301
  integrations: [
@@ -355,19 +355,19 @@ npx cannoli-latex-cleanup --svg-dir public/static/tex-svgs --docs-dir ./src/cont
355
355
  ## Installation
356
356
 
357
357
  ```bash
358
- npm install cannoli-starlight-plugins
358
+ npm install starlight-cannoli-plugins
359
359
  ```
360
360
 
361
361
  With pnpm:
362
362
 
363
363
  ```bash
364
- pnpm add cannoli-starlight-plugins
364
+ pnpm add starlight-cannoli-plugins
365
365
  ```
366
366
 
367
367
  With yarn:
368
368
 
369
369
  ```bash
370
- yarn add cannoli-starlight-plugins
370
+ yarn add starlight-cannoli-plugins
371
371
  ```
372
372
 
373
373
  ## Peer Dependencies
@@ -0,0 +1,214 @@
1
+ import {
2
+ parseFrontmatter
3
+ } from "./chunk-3ATSZG6H.js";
4
+
5
+ // src/plugins/astro-sync-docs-to-public/index.ts
6
+ import { fileURLToPath } from "url";
7
+ import {
8
+ mkdir,
9
+ readdir,
10
+ readFile,
11
+ writeFile,
12
+ rm,
13
+ stat
14
+ } from "fs/promises";
15
+ import { resolve, relative, basename, dirname, extname } from "path";
16
+ import { minimatch } from "minimatch";
17
+ var DEFAULT_SRC_DIR = "src/content/docs";
18
+ var DEFAULT_PUBLIC_DIR = "public";
19
+ function validateOptions(options) {
20
+ const mdProbePaths = ["test.md", "test.mdx", "foo/test.md", "foo/test.mdx"];
21
+ if (!options.exposePageSrcButton) return;
22
+ const offendingMdPatterns = (options.ignorePatterns ?? []).filter(
23
+ (pattern) => mdProbePaths.some((probe) => minimatch(probe, pattern, { dot: true }))
24
+ );
25
+ const offendingMtPatternsStr = offendingMdPatterns.map((p) => ` - "${p}"`).join("\n");
26
+ if (offendingMdPatterns.length > 0) {
27
+ throw new Error(
28
+ `The 'exposePageSrcButton' option is enabled but the following 'ignorePatterns' values conflict with it:
29
+ ${offendingMtPatternsStr}
30
+
31
+ Since these ignore patterns match md/mdx files, the page source button would break. Either disable 'exposePageSrcButton' or remove these patterns.`
32
+ );
33
+ }
34
+ }
35
+ async function fullSync(srcDir, publicDir, preserveDirs, ignorePatterns) {
36
+ await mkdir(publicDir, { recursive: true });
37
+ const items = await readdir(publicDir, { withFileTypes: true });
38
+ await Promise.all(
39
+ items.filter((item) => item.isDirectory() && !preserveDirs.includes(item.name)).map(
40
+ (item) => rm(resolve(publicDir, item.name), { recursive: true, force: true })
41
+ )
42
+ );
43
+ await copyAll(srcDir, srcDir, publicDir, ignorePatterns);
44
+ console.log(
45
+ `[starlight-sync-docs-to-public] Synced ${DEFAULT_SRC_DIR}/ \u2192 ${DEFAULT_PUBLIC_DIR}/ (full sync)`
46
+ );
47
+ }
48
+ function isMdFile(filePath) {
49
+ return filePath.endsWith(".md") || filePath.endsWith(".mdx");
50
+ }
51
+ function isIndexMd(filePath) {
52
+ const base = basename(filePath);
53
+ return base === "index.md" || base === "index.mdx";
54
+ }
55
+ function getDestPath(srcFilePath, srcDir, publicDir) {
56
+ const rel = relative(srcDir, srcFilePath);
57
+ if (!isMdFile(srcFilePath) || isIndexMd(srcFilePath)) {
58
+ return resolve(publicDir, rel);
59
+ }
60
+ const ext = extname(srcFilePath);
61
+ const stem = basename(srcFilePath, ext);
62
+ return resolve(publicDir, dirname(rel), stem, `index${ext}`);
63
+ }
64
+ async function copyMdFile(srcFilePath, srcDir, publicDir) {
65
+ const destPath = getDestPath(srcFilePath, srcDir, publicDir);
66
+ await mkdir(dirname(destPath), { recursive: true });
67
+ const content = await readFile(srcFilePath);
68
+ await writeFile(destPath, content);
69
+ }
70
+ async function incrementalSync(changedFilePath, srcDir, publicDir, ignorePatterns) {
71
+ const rel = relative(srcDir, changedFilePath);
72
+ if (ignorePatterns.some((pattern) => minimatch(rel, pattern, { dot: true }))) {
73
+ return;
74
+ }
75
+ let srcStat;
76
+ try {
77
+ srcStat = await stat(changedFilePath);
78
+ } catch (err) {
79
+ if (err?.code === "ENOENT") {
80
+ const deletePath = getDestPath(changedFilePath, srcDir, publicDir);
81
+ await rm(deletePath, { recursive: true, force: true });
82
+ return;
83
+ }
84
+ throw err;
85
+ }
86
+ if (srcStat.isDirectory()) {
87
+ await mkdir(resolve(publicDir, rel), { recursive: true });
88
+ const files = await readdir(changedFilePath);
89
+ await Promise.all(
90
+ files.map(
91
+ (file) => incrementalSync(
92
+ resolve(changedFilePath, file),
93
+ srcDir,
94
+ publicDir,
95
+ ignorePatterns
96
+ )
97
+ )
98
+ );
99
+ } else if (isMdFile(changedFilePath)) {
100
+ try {
101
+ const frontmatter = parseFrontmatter(changedFilePath);
102
+ if (frontmatter.draft === true) return;
103
+ } catch {
104
+ return;
105
+ }
106
+ await copyMdFile(changedFilePath, srcDir, publicDir);
107
+ } else {
108
+ const destPath = resolve(publicDir, rel);
109
+ await mkdir(dirname(destPath), { recursive: true });
110
+ const content = await readFile(changedFilePath);
111
+ await writeFile(destPath, content);
112
+ }
113
+ console.log(`[starlight-sync-docs-to-public] Synced ${rel}`);
114
+ }
115
+ async function copyAll(currentSrc, srcDir, publicDir, ignorePatterns) {
116
+ const entries = await readdir(currentSrc, { withFileTypes: true });
117
+ await Promise.all(
118
+ entries.map(async (entry) => {
119
+ const srcPath = resolve(currentSrc, entry.name);
120
+ const rel = relative(srcDir, srcPath);
121
+ if (ignorePatterns.some((pattern) => minimatch(rel, pattern, { dot: true }))) {
122
+ return;
123
+ }
124
+ if (entry.isDirectory()) {
125
+ await copyAll(srcPath, srcDir, publicDir, ignorePatterns);
126
+ } else if (isMdFile(srcPath)) {
127
+ try {
128
+ const frontmatter = parseFrontmatter(srcPath);
129
+ if (frontmatter.draft === true) return;
130
+ } catch {
131
+ return;
132
+ }
133
+ await copyMdFile(srcPath, srcDir, publicDir);
134
+ } else {
135
+ const destPath = resolve(publicDir, rel);
136
+ await mkdir(dirname(destPath), { recursive: true });
137
+ const content = await readFile(srcPath);
138
+ await writeFile(destPath, content);
139
+ }
140
+ })
141
+ );
142
+ }
143
+ function syncDocsToPublic(options) {
144
+ const srcDir = resolve(DEFAULT_SRC_DIR);
145
+ const publicDir = resolve(DEFAULT_PUBLIC_DIR);
146
+ const {
147
+ preserveDirs,
148
+ ignorePatterns = [],
149
+ exposePageSrcButton = false
150
+ } = options;
151
+ return {
152
+ name: "astro-sync-docs-to-public",
153
+ hooks: {
154
+ "astro:config:setup": ({ injectScript }) => {
155
+ validateOptions(options);
156
+ if (exposePageSrcButton) {
157
+ const scriptPath = fileURLToPath(
158
+ new URL("./page-script.js", import.meta.url)
159
+ );
160
+ injectScript("page", `import ${JSON.stringify(scriptPath)};`);
161
+ }
162
+ },
163
+ "astro:build:start": async () => {
164
+ await fullSync(srcDir, publicDir, preserveDirs, ignorePatterns);
165
+ },
166
+ "astro:server:setup": ({ server }) => {
167
+ const pendingPaths = /* @__PURE__ */ new Set();
168
+ let isSyncing = false;
169
+ let debounceTimer = null;
170
+ const performSync = async () => {
171
+ if (isSyncing) return;
172
+ isSyncing = true;
173
+ try {
174
+ while (pendingPaths.size > 0) {
175
+ const paths = [...pendingPaths];
176
+ pendingPaths.clear();
177
+ await Promise.all(
178
+ paths.map(
179
+ (p) => incrementalSync(p, srcDir, publicDir, ignorePatterns).catch(
180
+ (err) => {
181
+ console.error(
182
+ `[starlight-sync-docs-to-public] Error syncing ${p}:`,
183
+ err
184
+ );
185
+ }
186
+ )
187
+ )
188
+ );
189
+ }
190
+ } finally {
191
+ isSyncing = false;
192
+ if (pendingPaths.size > 0) void performSync();
193
+ }
194
+ };
195
+ fullSync(srcDir, publicDir, preserveDirs, ignorePatterns).catch(
196
+ console.error
197
+ );
198
+ server.watcher.add(srcDir);
199
+ server.watcher.on("all", (_event, filePath) => {
200
+ if (!filePath.startsWith(srcDir)) return;
201
+ pendingPaths.add(filePath);
202
+ if (debounceTimer) clearTimeout(debounceTimer);
203
+ debounceTimer = setTimeout(performSync, 100);
204
+ });
205
+ }
206
+ }
207
+ };
208
+ }
209
+ var starlightSyncDocsToPublic = syncDocsToPublic;
210
+
211
+ export {
212
+ syncDocsToPublic,
213
+ starlightSyncDocsToPublic
214
+ };
@@ -3,8 +3,8 @@ import {
3
3
  } from "./chunk-ICUS267J.js";
4
4
  import "./chunk-MT4FGOLU.js";
5
5
  import "./chunk-YJV35WLF.js";
6
- import "./chunk-XOMTOLBK.js";
7
6
  import "./chunk-IWM27JZF.js";
7
+ import "./chunk-XOMTOLBK.js";
8
8
  import "./chunk-QGM4M3NI.js";
9
9
  export {
10
10
  cpp_default as default
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  ruby_default
3
- } from "./chunk-7DJE5LRN.js";
3
+ } from "./chunk-26NQJBXH.js";
4
4
  import "./chunk-ZSX4GOHC.js";
5
+ import "./chunk-NE25QJUZ.js";
5
6
  import "./chunk-OII47WE4.js";
6
7
  import "./chunk-76C5RMV7.js";
7
8
  import "./chunk-S3SFQXYS.js";
8
- import "./chunk-NE25QJUZ.js";
9
9
  import "./chunk-ICUS267J.js";
10
10
  import "./chunk-MT4FGOLU.js";
11
11
  import "./chunk-YJV35WLF.js";
12
12
  import "./chunk-5TDK5Y5S.js";
13
- import "./chunk-XOMTOLBK.js";
14
13
  import "./chunk-IWM27JZF.js";
14
+ import "./chunk-XOMTOLBK.js";
15
15
  import "./chunk-VB3O6QM4.js";
16
16
  import "./chunk-QFOAKHDY.js";
17
17
  import "./chunk-AZIN3OHL.js";
package/dist/index.js CHANGED
@@ -13,7 +13,7 @@ import {
13
13
  } from "./chunk-AZPHBHBE.js";
14
14
  import {
15
15
  syncDocsToPublic
16
- } from "./chunk-JOXQGMUL.js";
16
+ } from "./chunk-LCY2GMN3.js";
17
17
  import "./chunk-3ATSZG6H.js";
18
18
  import "./chunk-TTQY54Q6.js";
19
19
  import "./chunk-QGM4M3NI.js";
@@ -3,23 +3,23 @@ import {
3
3
  } from "./chunk-Z2VUFOSG.js";
4
4
  import {
5
5
  ruby_default
6
- } from "./chunk-7DJE5LRN.js";
6
+ } from "./chunk-26NQJBXH.js";
7
7
  import "./chunk-ZSX4GOHC.js";
8
+ import "./chunk-NE25QJUZ.js";
8
9
  import "./chunk-OII47WE4.js";
9
10
  import "./chunk-76C5RMV7.js";
10
11
  import "./chunk-S3SFQXYS.js";
11
- import "./chunk-NE25QJUZ.js";
12
12
  import "./chunk-ICUS267J.js";
13
13
  import "./chunk-MT4FGOLU.js";
14
14
  import "./chunk-YJV35WLF.js";
15
15
  import {
16
16
  shellscript_default
17
17
  } from "./chunk-5TDK5Y5S.js";
18
+ import "./chunk-IWM27JZF.js";
18
19
  import "./chunk-XOMTOLBK.js";
19
20
  import {
20
21
  python_default
21
22
  } from "./chunk-QH2T6GYZ.js";
22
- import "./chunk-IWM27JZF.js";
23
23
  import {
24
24
  typescript_default
25
25
  } from "./chunk-VB3O6QM4.js";
@@ -0,0 +1,86 @@
1
+ // src/plugins/astro-sync-docs-to-public/page-script.ts
2
+ function showSuccessBanner(message) {
3
+ const banner = document.createElement("div");
4
+ banner.className = "page-src-banner page-src-banner--success";
5
+ banner.textContent = message;
6
+ document.body.appendChild(banner);
7
+ requestAnimationFrame(() => {
8
+ banner.classList.add("page-src-banner--visible");
9
+ });
10
+ setTimeout(() => {
11
+ banner.classList.remove("page-src-banner--visible");
12
+ banner.addEventListener("transitionend", () => banner.remove(), {
13
+ once: true
14
+ });
15
+ }, 2500);
16
+ }
17
+ async function getRawMdUrl() {
18
+ const base = window.location.href.replace(/\/?$/, "/");
19
+ const mdUrl = new URL("index.md", base).toString();
20
+ const resp = await fetch(mdUrl, { method: "HEAD" });
21
+ if (resp.ok) return mdUrl;
22
+ return new URL("index.mdx", base).toString();
23
+ }
24
+ function createActionBar() {
25
+ const bar = document.createElement("div");
26
+ bar.className = "page-src-action-bar";
27
+ const menuBtn = document.createElement("button");
28
+ menuBtn.className = "page-src-action-bar__btn";
29
+ menuBtn.textContent = "\u22EE";
30
+ const menu = document.createElement("div");
31
+ menu.className = "page-src-action-bar__menu";
32
+ const menuItems = [
33
+ {
34
+ label: "Copy Page",
35
+ action: () => {
36
+ getRawMdUrl().then((url) => fetch(url)).then((resp) => resp.text()).then((text) => navigator.clipboard.writeText(text)).then(() => showSuccessBanner("Page source copied to clipboard!"));
37
+ }
38
+ },
39
+ {
40
+ label: "View raw",
41
+ action: () => {
42
+ getRawMdUrl().then((url) => window.open(url, "_blank"));
43
+ }
44
+ }
45
+ ];
46
+ for (const item of menuItems) {
47
+ const btn = document.createElement("button");
48
+ btn.className = "page-src-action-bar__menu-item";
49
+ btn.textContent = item.label;
50
+ btn.addEventListener("click", () => {
51
+ item.action();
52
+ closeMenu();
53
+ });
54
+ menu.appendChild(btn);
55
+ }
56
+ function openMenu() {
57
+ menu.classList.add("page-src-action-bar__menu--open");
58
+ }
59
+ function closeMenu() {
60
+ menu.classList.remove("page-src-action-bar__menu--open");
61
+ }
62
+ function isOpen() {
63
+ return menu.classList.contains("page-src-action-bar__menu--open");
64
+ }
65
+ menuBtn.addEventListener("click", (e) => {
66
+ e.stopPropagation();
67
+ if (isOpen()) closeMenu();
68
+ else openMenu();
69
+ });
70
+ document.addEventListener("click", () => {
71
+ if (isOpen()) closeMenu();
72
+ });
73
+ bar.appendChild(menuBtn);
74
+ bar.appendChild(menu);
75
+ return bar;
76
+ }
77
+ function main() {
78
+ const h1 = document.querySelector(".sl-container > h1");
79
+ if (h1 === null) return;
80
+ const wrapper = document.createElement("div");
81
+ wrapper.className = "page-src-h1-wrapper";
82
+ h1.replaceWith(wrapper);
83
+ wrapper.appendChild(h1);
84
+ wrapper.appendChild(createActionBar());
85
+ }
86
+ main();
@@ -1,12 +1,5 @@
1
1
  import { AstroIntegration } from 'astro';
2
2
 
3
- /**
4
- * Astro integration that syncs a source docs directory to the public directory.
5
- *
6
- * Runs once at build start, and in dev mode watches the source directory for
7
- * changes and incrementally syncs files — no full directory deletion/recreation.
8
- */
9
-
10
3
  interface SyncDocsToPublicOptions {
11
4
  /**
12
5
  * Names of child directories inside public/ to preserve during sync.
@@ -19,6 +12,11 @@ interface SyncDocsToPublicOptions {
19
12
  * Example: ["*.txt", "drafts/"]
20
13
  */
21
14
  ignorePatterns?: string[];
15
+ /**
16
+ * When true, injects a client-side script that runs on every page in both
17
+ * dev and build modes.
18
+ */
19
+ exposePageSrcButton?: boolean;
22
20
  }
23
21
  declare function syncDocsToPublic(options: SyncDocsToPublicOptions): AstroIntegration;
24
22
  /** @deprecated Use {@link syncDocsToPublic} instead. */
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  starlightSyncDocsToPublic,
3
3
  syncDocsToPublic
4
- } from "../chunk-JOXQGMUL.js";
4
+ } from "../chunk-LCY2GMN3.js";
5
5
  import "../chunk-3ATSZG6H.js";
6
6
  import "../chunk-QGM4M3NI.js";
7
7
  export {
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  ruby_default
3
- } from "./chunk-7DJE5LRN.js";
3
+ } from "./chunk-26NQJBXH.js";
4
4
  import "./chunk-ZSX4GOHC.js";
5
+ import "./chunk-NE25QJUZ.js";
5
6
  import "./chunk-OII47WE4.js";
6
7
  import {
7
8
  yaml_default
8
9
  } from "./chunk-76C5RMV7.js";
9
10
  import "./chunk-S3SFQXYS.js";
10
- import "./chunk-NE25QJUZ.js";
11
11
  import {
12
12
  cpp_default
13
13
  } from "./chunk-ICUS267J.js";
@@ -19,6 +19,7 @@ import {
19
19
  import {
20
20
  cmake_default
21
21
  } from "./chunk-CYKSS2Y7.js";
22
+ import "./chunk-IWM27JZF.js";
22
23
  import "./chunk-XOMTOLBK.js";
23
24
  import {
24
25
  python_default
@@ -26,7 +27,6 @@ import {
26
27
  import {
27
28
  html_derivative_default
28
29
  } from "./chunk-HO32H4C2.js";
29
- import "./chunk-IWM27JZF.js";
30
30
  import "./chunk-VB3O6QM4.js";
31
31
  import "./chunk-QFOAKHDY.js";
32
32
  import "./chunk-AZIN3OHL.js";
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  ruby_default
3
- } from "./chunk-7DJE5LRN.js";
3
+ } from "./chunk-26NQJBXH.js";
4
4
  import "./chunk-ZSX4GOHC.js";
5
+ import "./chunk-NE25QJUZ.js";
5
6
  import "./chunk-OII47WE4.js";
6
7
  import "./chunk-76C5RMV7.js";
7
8
  import "./chunk-S3SFQXYS.js";
8
- import "./chunk-NE25QJUZ.js";
9
9
  import "./chunk-ICUS267J.js";
10
10
  import "./chunk-MT4FGOLU.js";
11
11
  import "./chunk-YJV35WLF.js";
12
12
  import "./chunk-5TDK5Y5S.js";
13
- import "./chunk-XOMTOLBK.js";
14
13
  import "./chunk-IWM27JZF.js";
14
+ import "./chunk-XOMTOLBK.js";
15
15
  import "./chunk-VB3O6QM4.js";
16
16
  import "./chunk-QFOAKHDY.js";
17
17
  import "./chunk-AZIN3OHL.js";
@@ -1,3 +1,4 @@
1
1
  @use "variables";
2
2
  @use "starlight";
3
3
  @use "utilities";
4
+ @use "page-src-context-menu";
@@ -0,0 +1,88 @@
1
+ .page-src-banner {
2
+ position: fixed;
3
+ top: 0;
4
+ left: 0;
5
+ right: 0;
6
+ z-index: 9999;
7
+ padding: 12px 24px;
8
+ text-align: center;
9
+ font-size: 14px;
10
+ font-family: inherit;
11
+ transform: translateY(-100%);
12
+ transition: transform 0.25s ease;
13
+
14
+ &--success {
15
+ background: #2da44e;
16
+ color: #fff;
17
+ }
18
+
19
+ &--visible {
20
+ transform: translateY(0);
21
+ }
22
+ }
23
+
24
+ .page-src-h1-wrapper {
25
+ position: relative;
26
+ }
27
+
28
+ .page-src-action-bar {
29
+ position: absolute;
30
+ top: -30px;
31
+ right: -5px;
32
+
33
+ &__btn {
34
+ width: 2rem;
35
+ height: 2rem;
36
+ padding: 0;
37
+ border: 1px solid var(--sl-color-hairline);
38
+ border-radius: 6px;
39
+ background: transparent;
40
+ color: var(--sl-color-text);
41
+ cursor: pointer;
42
+ font-size: 16px;
43
+ font-family: inherit;
44
+ display: flex;
45
+ align-items: center;
46
+ justify-content: center;
47
+
48
+ &:hover {
49
+ background: var(--sl-color-bg-nav);
50
+ }
51
+ }
52
+
53
+ &__menu {
54
+ display: none;
55
+ position: absolute;
56
+ top: calc(100% + 4px);
57
+ right: 0;
58
+ min-width: 160px;
59
+ border: 1px solid var(--sl-color-hairline);
60
+ border-radius: 6px;
61
+ background: var(--sl-color-bg);
62
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
63
+ z-index: 1000;
64
+ overflow: hidden;
65
+
66
+ &--open {
67
+ display: block;
68
+ }
69
+ }
70
+
71
+ &__menu-item {
72
+ display: block;
73
+ width: 100%;
74
+ padding: 6px 16px;
75
+ border: none;
76
+ background: transparent;
77
+ color: var(--sl-color-text);
78
+ text-align: left;
79
+ cursor: pointer;
80
+ font-size: inherit;
81
+ font-family: inherit;
82
+ line-height: 1.5;
83
+
84
+ &:hover {
85
+ background: var(--sl-color-bg-nav);
86
+ }
87
+ }
88
+ }
@@ -3,21 +3,21 @@ import {
3
3
  } from "./chunk-LU63TSZZ.js";
4
4
  import {
5
5
  ruby_default
6
- } from "./chunk-7DJE5LRN.js";
6
+ } from "./chunk-26NQJBXH.js";
7
7
  import "./chunk-ZSX4GOHC.js";
8
+ import "./chunk-NE25QJUZ.js";
8
9
  import "./chunk-OII47WE4.js";
9
10
  import "./chunk-76C5RMV7.js";
10
11
  import "./chunk-S3SFQXYS.js";
11
- import "./chunk-NE25QJUZ.js";
12
12
  import "./chunk-ICUS267J.js";
13
13
  import "./chunk-MT4FGOLU.js";
14
14
  import "./chunk-YJV35WLF.js";
15
15
  import "./chunk-5TDK5Y5S.js";
16
+ import "./chunk-IWM27JZF.js";
16
17
  import "./chunk-XOMTOLBK.js";
17
18
  import {
18
19
  python_default
19
20
  } from "./chunk-QH2T6GYZ.js";
20
- import "./chunk-IWM27JZF.js";
21
21
  import "./chunk-VB3O6QM4.js";
22
22
  import "./chunk-QFOAKHDY.js";
23
23
  import "./chunk-AZIN3OHL.js";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "starlight-cannoli-plugins",
3
3
  "type": "module",
4
- "version": "2.0.1",
4
+ "version": "2.1.3",
5
5
  "description": "Starlight plugins for automatic sidebar generation and link validation",
6
6
  "license": "ISC",
7
7
  "main": "./dist/index.js",
@@ -84,6 +84,9 @@
84
84
  "optional": true
85
85
  }
86
86
  },
87
+ "overrides": {
88
+ "@types/hast": "^3.0.0"
89
+ },
87
90
  "devDependencies": {
88
91
  "@astrojs/check": "^0.9.6",
89
92
  "@astrojs/starlight": "^0.37.6",
@@ -92,7 +95,7 @@
92
95
  "@expressive-code/plugin-line-numbers": "^0.41.7",
93
96
  "@hpcc-js/wasm": "^2.33.1",
94
97
  "@trivago/prettier-plugin-sort-imports": "^6.0.2",
95
- "@types/hast": "^2.3.10",
98
+ "@types/hast": "^3.0.0",
96
99
  "@typescript-eslint/eslint-plugin": "^8.56.1",
97
100
  "@typescript-eslint/parser": "^8.56.1",
98
101
  "astro": "^5.6.1",
@@ -1,143 +0,0 @@
1
- import {
2
- parseFrontmatter
3
- } from "./chunk-3ATSZG6H.js";
4
-
5
- // src/plugins/astro-sync-docs-to-public.ts
6
- import { cp, mkdir, readdir, readFile, writeFile, rm, stat } from "fs/promises";
7
- import { resolve, relative } from "path";
8
- import { minimatch } from "minimatch";
9
- var DEFAULT_SRC_DIR = "src/content/docs";
10
- var DEFAULT_PUBLIC_DIR = "public";
11
- async function fullSync(srcDir, publicDir, preserveDirs, ignorePatterns) {
12
- await mkdir(publicDir, { recursive: true });
13
- const items = await readdir(publicDir, { withFileTypes: true });
14
- await Promise.all(
15
- items.filter((item) => item.isDirectory() && !preserveDirs.includes(item.name)).map((item) => rm(resolve(publicDir, item.name), { recursive: true, force: true }))
16
- );
17
- await copyWithRetry(srcDir, publicDir, ignorePatterns);
18
- console.log(
19
- `[starlight-sync-docs-to-public] Synced ${DEFAULT_SRC_DIR}/ \u2192 ${DEFAULT_PUBLIC_DIR}/ (full sync)`
20
- );
21
- }
22
- async function incrementalSync(changedFilePath, srcDir, publicDir, ignorePatterns) {
23
- const rel = relative(srcDir, changedFilePath);
24
- if (ignorePatterns.some((pattern) => minimatch(rel, pattern, { dot: true }))) {
25
- return;
26
- }
27
- if (changedFilePath.endsWith(".md") || changedFilePath.endsWith(".mdx")) {
28
- try {
29
- const frontmatter = parseFrontmatter(changedFilePath);
30
- if (frontmatter.draft === true) return;
31
- } catch {
32
- return;
33
- }
34
- }
35
- const destPath = resolve(publicDir, rel);
36
- let srcStat;
37
- try {
38
- srcStat = await stat(changedFilePath);
39
- } catch (err) {
40
- if (err?.code === "ENOENT") {
41
- await rm(destPath, { recursive: true, force: true });
42
- return;
43
- }
44
- throw err;
45
- }
46
- if (srcStat.isDirectory()) {
47
- await mkdir(destPath, { recursive: true });
48
- const files = await readdir(changedFilePath);
49
- await Promise.all(
50
- files.map(
51
- (file) => incrementalSync(resolve(changedFilePath, file), srcDir, publicDir, ignorePatterns)
52
- )
53
- );
54
- } else {
55
- await mkdir(resolve(destPath, ".."), { recursive: true });
56
- const content = await readFile(changedFilePath);
57
- await writeFile(destPath, content);
58
- }
59
- console.log(`[starlight-sync-docs-to-public] Synced ${rel}`);
60
- }
61
- async function copyWithRetry(srcDir, publicDir, ignorePatterns) {
62
- for (let attempt = 0; attempt < 3; attempt++) {
63
- try {
64
- await cp(srcDir, publicDir, {
65
- recursive: true,
66
- force: true,
67
- filter: (src) => {
68
- const rel = relative(srcDir, src);
69
- if (rel === "") return true;
70
- if (ignorePatterns.some((pattern) => minimatch(rel, pattern, { dot: true }))) {
71
- return false;
72
- }
73
- if (src.endsWith(".md") || src.endsWith(".mdx")) {
74
- try {
75
- const frontmatter = parseFrontmatter(src);
76
- if (frontmatter.draft === true) return false;
77
- } catch {
78
- return false;
79
- }
80
- }
81
- return true;
82
- }
83
- });
84
- return;
85
- } catch (err) {
86
- const code = err?.code;
87
- if (code !== "EEXIST" && code !== "ENOENT") throw err;
88
- if (attempt < 2) await new Promise((r) => setTimeout(r, 10 * (attempt + 1)));
89
- }
90
- }
91
- }
92
- function syncDocsToPublic(options) {
93
- const srcDir = resolve(DEFAULT_SRC_DIR);
94
- const publicDir = resolve(DEFAULT_PUBLIC_DIR);
95
- const { preserveDirs, ignorePatterns = [] } = options;
96
- return {
97
- name: "astro-sync-docs-to-public",
98
- hooks: {
99
- "astro:build:start": async () => {
100
- await fullSync(srcDir, publicDir, preserveDirs, ignorePatterns);
101
- },
102
- "astro:server:setup": ({ server }) => {
103
- const pendingPaths = /* @__PURE__ */ new Set();
104
- let isSyncing = false;
105
- let debounceTimer = null;
106
- const performSync = async () => {
107
- if (isSyncing) return;
108
- isSyncing = true;
109
- try {
110
- while (pendingPaths.size > 0) {
111
- const paths = [...pendingPaths];
112
- pendingPaths.clear();
113
- await Promise.all(
114
- paths.map(
115
- (p) => incrementalSync(p, srcDir, publicDir, ignorePatterns).catch((err) => {
116
- console.error(`[starlight-sync-docs-to-public] Error syncing ${p}:`, err);
117
- })
118
- )
119
- );
120
- }
121
- } finally {
122
- isSyncing = false;
123
- if (pendingPaths.size > 0) void performSync();
124
- }
125
- };
126
- fullSync(srcDir, publicDir, preserveDirs, ignorePatterns).catch(console.error);
127
- server.watcher.add(srcDir);
128
- server.watcher.on("all", (_event, filePath) => {
129
- if (!filePath.startsWith(srcDir)) return;
130
- pendingPaths.add(filePath);
131
- if (debounceTimer) clearTimeout(debounceTimer);
132
- debounceTimer = setTimeout(performSync, 100);
133
- });
134
- }
135
- }
136
- };
137
- }
138
- var starlightSyncDocsToPublic = syncDocsToPublic;
139
-
140
- export {
141
- syncDocsToPublic,
142
- starlightSyncDocsToPublic
143
- };
@@ -1 +0,0 @@
1
- {"version":3,"sourceRoot":"","sources":["../../node_modules/bootstrap/scss/mixins/_utilities.scss","../../node_modules/bootstrap/scss/mixins/_breakpoints.scss","../../node_modules/bootstrap/scss/utilities/_api.scss"],"names":[],"mappings":"AAkEQ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAjBJ;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AASF;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAjBJ;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AASF;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI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I;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;ACVR;EDGI;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;;ACVR;EDGI;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;;ACVR;EDGI;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;;ACVR;EDGI;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;;ACVR;EDGI;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;;AEtDZ;EF+CQ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;;AEnCZ;EF4BQ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI","file":"_bootstrap-utilities.scss"}
@@ -1,9 +1,9 @@
1
- import {
2
- html_derivative_default
3
- } from "./chunk-HO32H4C2.js";
4
1
  import {
5
2
  sql_default
6
3
  } from "./chunk-IWM27JZF.js";
4
+ import {
5
+ html_derivative_default
6
+ } from "./chunk-HO32H4C2.js";
7
7
  import {
8
8
  xml_default
9
9
  } from "./chunk-AZIN3OHL.js";
@@ -16,12 +16,12 @@ import {
16
16
  import {
17
17
  shellscript_default
18
18
  } from "./chunk-5TDK5Y5S.js";
19
- import {
20
- c_default
21
- } from "./chunk-XOMTOLBK.js";
22
19
  import {
23
20
  sql_default
24
21
  } from "./chunk-IWM27JZF.js";
22
+ import {
23
+ c_default
24
+ } from "./chunk-XOMTOLBK.js";
25
25
  import {
26
26
  xml_default
27
27
  } from "./chunk-AZIN3OHL.js";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  shellscript_default
3
3
  } from "./chunk-5TDK5Y5S.js";
4
- import {
5
- c_default
6
- } from "./chunk-XOMTOLBK.js";
7
4
  import {
8
5
  sql_default
9
6
  } from "./chunk-IWM27JZF.js";
7
+ import {
8
+ c_default
9
+ } from "./chunk-XOMTOLBK.js";
10
10
  import {
11
11
  html_default
12
12
  } from "./chunk-L4TNW36O.js";
@@ -6,13 +6,13 @@ import {
6
6
  } from "./chunk-ICUS267J.js";
7
7
  import "./chunk-MT4FGOLU.js";
8
8
  import "./chunk-YJV35WLF.js";
9
+ import {
10
+ sql_default
11
+ } from "./chunk-IWM27JZF.js";
9
12
  import "./chunk-XOMTOLBK.js";
10
13
  import {
11
14
  python_default
12
15
  } from "./chunk-QH2T6GYZ.js";
13
- import {
14
- sql_default
15
- } from "./chunk-IWM27JZF.js";
16
16
  import {
17
17
  javascript_default
18
18
  } from "./chunk-2QHMH6QB.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  glsl_default
3
3
  } from "./chunk-YJV35WLF.js";
4
- import "./chunk-XOMTOLBK.js";
5
4
  import {
6
5
  sql_default
7
6
  } from "./chunk-IWM27JZF.js";
7
+ import "./chunk-XOMTOLBK.js";
8
8
  import {
9
9
  typescript_default
10
10
  } from "./chunk-VB3O6QM4.js";