jamdesk 1.1.145 → 1.1.146
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/package.json +1 -1
- package/vendored/components/mdx/NativeSubscribeForm.tsx +2 -2
- package/vendored/components/mdx/Update.tsx +13 -1
- package/vendored/components/mdx/UpdateSlugContext.tsx +60 -0
- package/vendored/lib/heading-extractor.ts +14 -8
- package/vendored/lib/render-doc-page.tsx +35 -23
- package/vendored/workspace-package-lock.json +84 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jamdesk",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.146",
|
|
4
4
|
"description": "CLI for Jamdesk — build, preview, and deploy documentation sites from MDX. Dev server with hot reload, 50+ components, OpenAPI support, AI search, and Mintlify migration",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jamdesk",
|
|
@@ -16,7 +16,7 @@ export interface NativeSubscribeFormProps {
|
|
|
16
16
|
// Kept compact — the iOS 16px-min rule is for inputs, not buttons. Radius tracks
|
|
17
17
|
// the theme's button token (--radius-md) so it matches the docs' own buttons.
|
|
18
18
|
const PRIMARY_BUTTON: CSSProperties = {
|
|
19
|
-
fontSize: '0.
|
|
19
|
+
fontSize: '0.8125rem', padding: '0.35rem 0.75rem', border: 0,
|
|
20
20
|
borderRadius: 'var(--radius-md, 0.375rem)', cursor: 'pointer',
|
|
21
21
|
background: 'var(--color-primary, #2563eb)', color: '#fff',
|
|
22
22
|
};
|
|
@@ -200,7 +200,7 @@ export function NativeSubscribeForm({ provider, title, description, collapsed, c
|
|
|
200
200
|
<input type="email" name="email" required value={email}
|
|
201
201
|
onChange={(e) => { setEmail(e.target.value); if (status === 'error') setStatus('idle'); }}
|
|
202
202
|
disabled={status === 'submitting'} placeholder="you@example.com" aria-label="Email address"
|
|
203
|
-
style={{ flex: 1, minWidth: 0, fontSize: '16px', padding: '0.
|
|
203
|
+
style={{ flex: 1, minWidth: 0, fontSize: '16px', padding: '0.35rem 0.7rem', border: 'var(--border-width, 1px) solid var(--color-border, #d4d4d8)', borderRadius: 'var(--radius-md, 0.375rem)', background: 'var(--color-bg-primary, #fff)', color: 'var(--color-text-primary, #18181b)' }} />
|
|
204
204
|
<button type="submit" disabled={status === 'submitting'} style={PRIMARY_BUTTON}>
|
|
205
205
|
{status === 'submitting' ? 'Subscribing…' : 'Subscribe'}
|
|
206
206
|
</button>
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
1
3
|
import { generateSlug } from '@/lib/heading-extractor';
|
|
4
|
+
import { useUpdateSlug } from './UpdateSlugContext';
|
|
2
5
|
|
|
3
6
|
interface UpdateProps {
|
|
4
7
|
label?: string;
|
|
@@ -12,6 +15,11 @@ interface UpdateProps {
|
|
|
12
15
|
* Generates a URL-friendly slug from a label string.
|
|
13
16
|
* Used to create anchor IDs for Update components.
|
|
14
17
|
* Uses shared generateSlug to stay in sync with TOC and link validation.
|
|
18
|
+
*
|
|
19
|
+
* Stateless: two Updates with the same label produce the same slug here. The
|
|
20
|
+
* Update component itself resolves duplicate-label collisions via useUpdateSlug
|
|
21
|
+
* (page-scoped dedup); this export stays for the no-provider fallback, the RSS
|
|
22
|
+
* feed's parallel anchor algorithm, and link validation.
|
|
15
23
|
*/
|
|
16
24
|
export function generateUpdateId(label?: string): string | undefined {
|
|
17
25
|
if (!label) return undefined;
|
|
@@ -21,9 +29,13 @@ export function generateUpdateId(label?: string): string | undefined {
|
|
|
21
29
|
/**
|
|
22
30
|
* Update component - for changelog/whatsnew entries.
|
|
23
31
|
* Creates timeline-style entries with automatic anchor links and TOC integration.
|
|
32
|
+
*
|
|
33
|
+
* Anchor id comes from useUpdateSlug so duplicate labels on one page (e.g. two
|
|
34
|
+
* "June 2026" entries) get distinct, TOC-aligned ids (`june-2026`,
|
|
35
|
+
* `june-2026-1`) instead of colliding on a single `#june-2026`.
|
|
24
36
|
*/
|
|
25
37
|
export function Update({ label, description, tags, date, children }: UpdateProps) {
|
|
26
|
-
const id =
|
|
38
|
+
const id = useUpdateSlug(label);
|
|
27
39
|
|
|
28
40
|
return (
|
|
29
41
|
<div
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { createContext, useContext, useRef, ReactNode } from 'react';
|
|
4
|
+
import { generateSlug } from '@/lib/heading-extractor';
|
|
5
|
+
|
|
6
|
+
export interface UpdateSlugEntry {
|
|
7
|
+
label: string;
|
|
8
|
+
slug: string;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
interface UpdateSlugContextValue {
|
|
12
|
+
// Per-label counter — advances each time useUpdateSlug is called for that label.
|
|
13
|
+
counts: Map<string, number>;
|
|
14
|
+
entries: UpdateSlugEntry[];
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const UpdateSlugCtx = createContext<UpdateSlugContextValue | null>(null);
|
|
18
|
+
|
|
19
|
+
export function UpdateSlugProvider({
|
|
20
|
+
entries,
|
|
21
|
+
children,
|
|
22
|
+
}: {
|
|
23
|
+
entries: UpdateSlugEntry[];
|
|
24
|
+
children: ReactNode;
|
|
25
|
+
}) {
|
|
26
|
+
// useRef so the same Map persists across renders. We rely on the same
|
|
27
|
+
// contract React's own useId rests on: source-order rendering during SSR
|
|
28
|
+
// and during client hydration produces matching ids.
|
|
29
|
+
const ref = useRef<UpdateSlugContextValue | null>(null);
|
|
30
|
+
if (ref.current === null || ref.current.entries !== entries) {
|
|
31
|
+
ref.current = { counts: new Map(), entries };
|
|
32
|
+
}
|
|
33
|
+
return <UpdateSlugCtx.Provider value={ref.current}>{children}</UpdateSlugCtx.Provider>;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Resolve the unique slug for an <Update> with this label. Each call advances
|
|
38
|
+
* the per-label counter, so two Updates with the same label (e.g. two
|
|
39
|
+
* "June 2026" changelog entries) get sequential slugs from the provider's
|
|
40
|
+
* `entries` list (`june-2026`, `june-2026-1`) — matching the page-scoped
|
|
41
|
+
* github-slugger ids that extractHeadings (and the TOC) already compute. Falls
|
|
42
|
+
* back to a stateless `generateSlug(label)` if no provider is mounted
|
|
43
|
+
* (preview/storybook/etc), which preserves the pre-dedup single-Update behavior.
|
|
44
|
+
*/
|
|
45
|
+
export function useUpdateSlug(label: string | undefined): string | undefined {
|
|
46
|
+
const ctx = useContext(UpdateSlugCtx);
|
|
47
|
+
if (!label) return undefined;
|
|
48
|
+
if (!ctx) return generateSlug(label) || undefined;
|
|
49
|
+
|
|
50
|
+
const idx = ctx.counts.get(label) ?? 0;
|
|
51
|
+
ctx.counts.set(label, idx + 1);
|
|
52
|
+
|
|
53
|
+
let seen = 0;
|
|
54
|
+
for (const entry of ctx.entries) {
|
|
55
|
+
if (entry.label !== label) continue;
|
|
56
|
+
if (seen === idx) return entry.slug;
|
|
57
|
+
seen += 1;
|
|
58
|
+
}
|
|
59
|
+
return generateSlug(label) || undefined;
|
|
60
|
+
}
|
|
@@ -15,6 +15,8 @@ export interface HeadingInfo {
|
|
|
15
15
|
line: number; // 1-indexed
|
|
16
16
|
/** When the entry is a <Step> inside a <Steps> block, this is its 1-based index within the block. */
|
|
17
17
|
stepNumber?: number;
|
|
18
|
+
/** True when the entry came from an <Update label="..."> anchor (vs a markdown heading). */
|
|
19
|
+
isUpdate?: boolean;
|
|
18
20
|
}
|
|
19
21
|
|
|
20
22
|
/**
|
|
@@ -44,7 +46,13 @@ export function generateSlug(text: string): string {
|
|
|
44
46
|
|
|
45
47
|
const HEADING_REGEX = /^(#{1,6})\s+(.+)$/;
|
|
46
48
|
const FENCE_REGEX = /^(`{3,}|~{3,})/;
|
|
47
|
-
|
|
49
|
+
// Global + matchAll (like STEP_TITLE_REGEX below) so multiple inline <Update>
|
|
50
|
+
// tags on one line each get an anchor, and `[^>]*` so `label=` need not be the
|
|
51
|
+
// first attribute (e.g. `<Update date=".." label="..">`). Alternation (not a
|
|
52
|
+
// character class) keeps an apostrophe inside a double-quoted label from
|
|
53
|
+
// terminating the capture. MUST only be used with matchAll — direct test/exec
|
|
54
|
+
// would share lastIndex across calls and miscount.
|
|
55
|
+
const UPDATE_LABEL_REGEX = /<Update\s+[^>]*label=(?:"([^"]+)"|'([^']+)')/g;
|
|
48
56
|
const STEPS_OPEN_REGEX = /<Steps(\s|>)/;
|
|
49
57
|
const STEPS_CLOSE_REGEX = /<\/Steps>/;
|
|
50
58
|
// Global flag — we iterate with matchAll so authors who inline multiple
|
|
@@ -114,13 +122,11 @@ export function extractHeadings(content: string): HeadingInfo[] {
|
|
|
114
122
|
}
|
|
115
123
|
}
|
|
116
124
|
|
|
117
|
-
const
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
headings.push({ id, text, level: 2, line: i + 1 });
|
|
123
|
-
}
|
|
125
|
+
for (const match of line.matchAll(UPDATE_LABEL_REGEX)) {
|
|
126
|
+
const text = match[1] ?? match[2];
|
|
127
|
+
if (!generateSlug(text)) continue;
|
|
128
|
+
const id = slugger.slug(text);
|
|
129
|
+
headings.push({ id, text, level: 2, line: i + 1, isUpdate: true });
|
|
124
130
|
}
|
|
125
131
|
|
|
126
132
|
if (inStepsBlock) {
|
|
@@ -56,6 +56,7 @@ import { recmaGuardExpressions } from '@/lib/recma-guard-expressions';
|
|
|
56
56
|
import { extractInlineComponents } from '@/lib/process-mdx-with-exports';
|
|
57
57
|
import { extractHeadings } from '@/lib/heading-extractor';
|
|
58
58
|
import { StepSlugProvider, type StepSlugEntry } from '@/components/mdx/StepSlugContext';
|
|
59
|
+
import { UpdateSlugProvider, type UpdateSlugEntry } from '@/components/mdx/UpdateSlugContext';
|
|
59
60
|
import { buildEndpointFromMdx } from '@/lib/build-endpoint-from-mdx';
|
|
60
61
|
import { mdxSecurityOptions } from '@/lib/mdx-security-options';
|
|
61
62
|
import { getContentDir } from '@/lib/docs';
|
|
@@ -365,9 +366,16 @@ export async function renderDocPage(input: RenderInput): Promise<ReactElement> {
|
|
|
365
366
|
logger.warn(`[MDX] preprocess failed for ${pagePath}: ${preprocessError}`);
|
|
366
367
|
}
|
|
367
368
|
|
|
368
|
-
|
|
369
|
+
// Both lists are derived from the SAME page-scoped slugger pass (extractHeadings),
|
|
370
|
+
// so Step and Update ids share one dedup namespace and never collide with each
|
|
371
|
+
// other or with markdown heading ids.
|
|
372
|
+
const pageHeadings = extractHeadings(content);
|
|
373
|
+
const stepEntries: StepSlugEntry[] = pageHeadings
|
|
369
374
|
.filter(h => typeof h.stepNumber === 'number')
|
|
370
375
|
.map(h => ({ title: h.text, slug: h.id }));
|
|
376
|
+
const updateEntries: UpdateSlugEntry[] = pageHeadings
|
|
377
|
+
.filter(h => h.isUpdate)
|
|
378
|
+
.map(h => ({ label: h.text, slug: h.id }));
|
|
371
379
|
|
|
372
380
|
// [render-timing] proves the snippet/inline parallel win. With Promise.all,
|
|
373
381
|
// wall-clock should be ~max(R2_snippets, CPU_inline). Compare against the
|
|
@@ -754,17 +762,19 @@ export async function renderDocPage(input: RenderInput): Promise<ReactElement> {
|
|
|
754
762
|
) : (
|
|
755
763
|
<MdxRenderBoundary fallback={<MdxErrorBlock label="page content" />}>
|
|
756
764
|
<StepSlugProvider entries={stepEntries}>
|
|
757
|
-
<
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
765
|
+
<UpdateSlugProvider entries={updateEntries}>
|
|
766
|
+
<MDXRemote
|
|
767
|
+
source={effectiveSource}
|
|
768
|
+
components={ComponentsWithUnknownFallback}
|
|
769
|
+
options={{
|
|
770
|
+
...mdxSecurityOptions,
|
|
771
|
+
mdxOptions: {
|
|
772
|
+
...getCommonMdxOptions(config, highlighter),
|
|
773
|
+
recmaPlugins: [recmaCompoundComponents, recmaGuardExpressions],
|
|
774
|
+
},
|
|
775
|
+
}}
|
|
776
|
+
/>
|
|
777
|
+
</UpdateSlugProvider>
|
|
768
778
|
</StepSlugProvider>
|
|
769
779
|
</MdxRenderBoundary>
|
|
770
780
|
)}
|
|
@@ -784,17 +794,19 @@ export async function renderDocPage(input: RenderInput): Promise<ReactElement> {
|
|
|
784
794
|
) : (
|
|
785
795
|
<MdxRenderBoundary fallback={<MdxErrorBlock label="page content" />}>
|
|
786
796
|
<StepSlugProvider entries={stepEntries}>
|
|
787
|
-
<
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
797
|
+
<UpdateSlugProvider entries={updateEntries}>
|
|
798
|
+
<MDXRemote
|
|
799
|
+
source={content}
|
|
800
|
+
components={ComponentsWithUnknownFallback}
|
|
801
|
+
options={{
|
|
802
|
+
...mdxSecurityOptions,
|
|
803
|
+
mdxOptions: {
|
|
804
|
+
...getCommonMdxOptions(config, highlighter),
|
|
805
|
+
recmaPlugins: [recmaCompoundComponents, recmaGuardExpressions],
|
|
806
|
+
},
|
|
807
|
+
}}
|
|
808
|
+
/>
|
|
809
|
+
</UpdateSlugProvider>
|
|
798
810
|
</StepSlugProvider>
|
|
799
811
|
</MdxRenderBoundary>
|
|
800
812
|
);
|
|
@@ -373,6 +373,9 @@
|
|
|
373
373
|
"cpu": [
|
|
374
374
|
"arm"
|
|
375
375
|
],
|
|
376
|
+
"libc": [
|
|
377
|
+
"glibc"
|
|
378
|
+
],
|
|
376
379
|
"license": "LGPL-3.0-or-later",
|
|
377
380
|
"optional": true,
|
|
378
381
|
"os": [
|
|
@@ -389,6 +392,9 @@
|
|
|
389
392
|
"cpu": [
|
|
390
393
|
"arm64"
|
|
391
394
|
],
|
|
395
|
+
"libc": [
|
|
396
|
+
"glibc"
|
|
397
|
+
],
|
|
392
398
|
"license": "LGPL-3.0-or-later",
|
|
393
399
|
"optional": true,
|
|
394
400
|
"os": [
|
|
@@ -405,6 +411,9 @@
|
|
|
405
411
|
"cpu": [
|
|
406
412
|
"ppc64"
|
|
407
413
|
],
|
|
414
|
+
"libc": [
|
|
415
|
+
"glibc"
|
|
416
|
+
],
|
|
408
417
|
"license": "LGPL-3.0-or-later",
|
|
409
418
|
"optional": true,
|
|
410
419
|
"os": [
|
|
@@ -421,6 +430,9 @@
|
|
|
421
430
|
"cpu": [
|
|
422
431
|
"riscv64"
|
|
423
432
|
],
|
|
433
|
+
"libc": [
|
|
434
|
+
"glibc"
|
|
435
|
+
],
|
|
424
436
|
"license": "LGPL-3.0-or-later",
|
|
425
437
|
"optional": true,
|
|
426
438
|
"os": [
|
|
@@ -437,6 +449,9 @@
|
|
|
437
449
|
"cpu": [
|
|
438
450
|
"s390x"
|
|
439
451
|
],
|
|
452
|
+
"libc": [
|
|
453
|
+
"glibc"
|
|
454
|
+
],
|
|
440
455
|
"license": "LGPL-3.0-or-later",
|
|
441
456
|
"optional": true,
|
|
442
457
|
"os": [
|
|
@@ -453,6 +468,9 @@
|
|
|
453
468
|
"cpu": [
|
|
454
469
|
"x64"
|
|
455
470
|
],
|
|
471
|
+
"libc": [
|
|
472
|
+
"glibc"
|
|
473
|
+
],
|
|
456
474
|
"license": "LGPL-3.0-or-later",
|
|
457
475
|
"optional": true,
|
|
458
476
|
"os": [
|
|
@@ -469,6 +487,9 @@
|
|
|
469
487
|
"cpu": [
|
|
470
488
|
"arm64"
|
|
471
489
|
],
|
|
490
|
+
"libc": [
|
|
491
|
+
"musl"
|
|
492
|
+
],
|
|
472
493
|
"license": "LGPL-3.0-or-later",
|
|
473
494
|
"optional": true,
|
|
474
495
|
"os": [
|
|
@@ -485,6 +506,9 @@
|
|
|
485
506
|
"cpu": [
|
|
486
507
|
"x64"
|
|
487
508
|
],
|
|
509
|
+
"libc": [
|
|
510
|
+
"musl"
|
|
511
|
+
],
|
|
488
512
|
"license": "LGPL-3.0-or-later",
|
|
489
513
|
"optional": true,
|
|
490
514
|
"os": [
|
|
@@ -501,6 +525,9 @@
|
|
|
501
525
|
"cpu": [
|
|
502
526
|
"arm"
|
|
503
527
|
],
|
|
528
|
+
"libc": [
|
|
529
|
+
"glibc"
|
|
530
|
+
],
|
|
504
531
|
"license": "Apache-2.0",
|
|
505
532
|
"optional": true,
|
|
506
533
|
"os": [
|
|
@@ -523,6 +550,9 @@
|
|
|
523
550
|
"cpu": [
|
|
524
551
|
"arm64"
|
|
525
552
|
],
|
|
553
|
+
"libc": [
|
|
554
|
+
"glibc"
|
|
555
|
+
],
|
|
526
556
|
"license": "Apache-2.0",
|
|
527
557
|
"optional": true,
|
|
528
558
|
"os": [
|
|
@@ -545,6 +575,9 @@
|
|
|
545
575
|
"cpu": [
|
|
546
576
|
"ppc64"
|
|
547
577
|
],
|
|
578
|
+
"libc": [
|
|
579
|
+
"glibc"
|
|
580
|
+
],
|
|
548
581
|
"license": "Apache-2.0",
|
|
549
582
|
"optional": true,
|
|
550
583
|
"os": [
|
|
@@ -567,6 +600,9 @@
|
|
|
567
600
|
"cpu": [
|
|
568
601
|
"riscv64"
|
|
569
602
|
],
|
|
603
|
+
"libc": [
|
|
604
|
+
"glibc"
|
|
605
|
+
],
|
|
570
606
|
"license": "Apache-2.0",
|
|
571
607
|
"optional": true,
|
|
572
608
|
"os": [
|
|
@@ -589,6 +625,9 @@
|
|
|
589
625
|
"cpu": [
|
|
590
626
|
"s390x"
|
|
591
627
|
],
|
|
628
|
+
"libc": [
|
|
629
|
+
"glibc"
|
|
630
|
+
],
|
|
592
631
|
"license": "Apache-2.0",
|
|
593
632
|
"optional": true,
|
|
594
633
|
"os": [
|
|
@@ -611,6 +650,9 @@
|
|
|
611
650
|
"cpu": [
|
|
612
651
|
"x64"
|
|
613
652
|
],
|
|
653
|
+
"libc": [
|
|
654
|
+
"glibc"
|
|
655
|
+
],
|
|
614
656
|
"license": "Apache-2.0",
|
|
615
657
|
"optional": true,
|
|
616
658
|
"os": [
|
|
@@ -633,6 +675,9 @@
|
|
|
633
675
|
"cpu": [
|
|
634
676
|
"arm64"
|
|
635
677
|
],
|
|
678
|
+
"libc": [
|
|
679
|
+
"musl"
|
|
680
|
+
],
|
|
636
681
|
"license": "Apache-2.0",
|
|
637
682
|
"optional": true,
|
|
638
683
|
"os": [
|
|
@@ -655,6 +700,9 @@
|
|
|
655
700
|
"cpu": [
|
|
656
701
|
"x64"
|
|
657
702
|
],
|
|
703
|
+
"libc": [
|
|
704
|
+
"musl"
|
|
705
|
+
],
|
|
658
706
|
"license": "Apache-2.0",
|
|
659
707
|
"optional": true,
|
|
660
708
|
"os": [
|
|
@@ -929,6 +977,9 @@
|
|
|
929
977
|
"cpu": [
|
|
930
978
|
"arm64"
|
|
931
979
|
],
|
|
980
|
+
"libc": [
|
|
981
|
+
"glibc"
|
|
982
|
+
],
|
|
932
983
|
"license": "MIT",
|
|
933
984
|
"optional": true,
|
|
934
985
|
"os": [
|
|
@@ -945,6 +996,9 @@
|
|
|
945
996
|
"cpu": [
|
|
946
997
|
"arm64"
|
|
947
998
|
],
|
|
999
|
+
"libc": [
|
|
1000
|
+
"musl"
|
|
1001
|
+
],
|
|
948
1002
|
"license": "MIT",
|
|
949
1003
|
"optional": true,
|
|
950
1004
|
"os": [
|
|
@@ -961,6 +1015,9 @@
|
|
|
961
1015
|
"cpu": [
|
|
962
1016
|
"x64"
|
|
963
1017
|
],
|
|
1018
|
+
"libc": [
|
|
1019
|
+
"glibc"
|
|
1020
|
+
],
|
|
964
1021
|
"license": "MIT",
|
|
965
1022
|
"optional": true,
|
|
966
1023
|
"os": [
|
|
@@ -977,6 +1034,9 @@
|
|
|
977
1034
|
"cpu": [
|
|
978
1035
|
"x64"
|
|
979
1036
|
],
|
|
1037
|
+
"libc": [
|
|
1038
|
+
"musl"
|
|
1039
|
+
],
|
|
980
1040
|
"license": "MIT",
|
|
981
1041
|
"optional": true,
|
|
982
1042
|
"os": [
|
|
@@ -1316,6 +1376,9 @@
|
|
|
1316
1376
|
"cpu": [
|
|
1317
1377
|
"arm64"
|
|
1318
1378
|
],
|
|
1379
|
+
"libc": [
|
|
1380
|
+
"glibc"
|
|
1381
|
+
],
|
|
1319
1382
|
"license": "MIT",
|
|
1320
1383
|
"optional": true,
|
|
1321
1384
|
"os": [
|
|
@@ -1332,6 +1395,9 @@
|
|
|
1332
1395
|
"cpu": [
|
|
1333
1396
|
"arm64"
|
|
1334
1397
|
],
|
|
1398
|
+
"libc": [
|
|
1399
|
+
"musl"
|
|
1400
|
+
],
|
|
1335
1401
|
"license": "MIT",
|
|
1336
1402
|
"optional": true,
|
|
1337
1403
|
"os": [
|
|
@@ -1348,6 +1414,9 @@
|
|
|
1348
1414
|
"cpu": [
|
|
1349
1415
|
"x64"
|
|
1350
1416
|
],
|
|
1417
|
+
"libc": [
|
|
1418
|
+
"glibc"
|
|
1419
|
+
],
|
|
1351
1420
|
"license": "MIT",
|
|
1352
1421
|
"optional": true,
|
|
1353
1422
|
"os": [
|
|
@@ -1364,6 +1433,9 @@
|
|
|
1364
1433
|
"cpu": [
|
|
1365
1434
|
"x64"
|
|
1366
1435
|
],
|
|
1436
|
+
"libc": [
|
|
1437
|
+
"musl"
|
|
1438
|
+
],
|
|
1367
1439
|
"license": "MIT",
|
|
1368
1440
|
"optional": true,
|
|
1369
1441
|
"os": [
|
|
@@ -3865,6 +3937,9 @@
|
|
|
3865
3937
|
"cpu": [
|
|
3866
3938
|
"arm64"
|
|
3867
3939
|
],
|
|
3940
|
+
"libc": [
|
|
3941
|
+
"glibc"
|
|
3942
|
+
],
|
|
3868
3943
|
"license": "MPL-2.0",
|
|
3869
3944
|
"optional": true,
|
|
3870
3945
|
"os": [
|
|
@@ -3885,6 +3960,9 @@
|
|
|
3885
3960
|
"cpu": [
|
|
3886
3961
|
"arm64"
|
|
3887
3962
|
],
|
|
3963
|
+
"libc": [
|
|
3964
|
+
"musl"
|
|
3965
|
+
],
|
|
3888
3966
|
"license": "MPL-2.0",
|
|
3889
3967
|
"optional": true,
|
|
3890
3968
|
"os": [
|
|
@@ -3905,6 +3983,9 @@
|
|
|
3905
3983
|
"cpu": [
|
|
3906
3984
|
"x64"
|
|
3907
3985
|
],
|
|
3986
|
+
"libc": [
|
|
3987
|
+
"glibc"
|
|
3988
|
+
],
|
|
3908
3989
|
"license": "MPL-2.0",
|
|
3909
3990
|
"optional": true,
|
|
3910
3991
|
"os": [
|
|
@@ -3925,6 +4006,9 @@
|
|
|
3925
4006
|
"cpu": [
|
|
3926
4007
|
"x64"
|
|
3927
4008
|
],
|
|
4009
|
+
"libc": [
|
|
4010
|
+
"musl"
|
|
4011
|
+
],
|
|
3928
4012
|
"license": "MPL-2.0",
|
|
3929
4013
|
"optional": true,
|
|
3930
4014
|
"os": [
|