specifian 0.1.0-beta.0
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/LICENSE +21 -0
- package/README.md +314 -0
- package/dist/chunk-774NFJLC.js +267 -0
- package/dist/chunk-JY5QLNZ4.js +127 -0
- package/dist/cli/index.js +1757 -0
- package/dist/client/assets/Assistant-Bold-gm-uSS1B.woff2 +0 -0
- package/dist/client/assets/Assistant-Medium-DrcxCXg3.woff2 +0 -0
- package/dist/client/assets/Assistant-Regular-DVxZuzxb.woff2 +0 -0
- package/dist/client/assets/Assistant-SemiBold-SCI4bEL9.woff2 +0 -0
- package/dist/client/assets/ar-SA-G6X2FPQ2-Dd0X68bc.js +10 -0
- package/dist/client/assets/arc-OeTCl9Oy.js +1 -0
- package/dist/client/assets/architecture-7EHR7CIX-CaxcM-P5.js +1 -0
- package/dist/client/assets/architectureDiagram-3BPJPVTR-BIjzr_cP.js +36 -0
- package/dist/client/assets/array-BifhSqXX.js +1 -0
- package/dist/client/assets/az-AZ-76LH7QW2-CikYmJ_f.js +1 -0
- package/dist/client/assets/bg-BG-XCXSNQG7-3zBzA4I3.js +5 -0
- package/dist/client/assets/blockDiagram-GPEHLZMM-K767VD5J.js +132 -0
- package/dist/client/assets/bn-BD-2XOGV67Q-F99bvhop.js +5 -0
- package/dist/client/assets/c4Diagram-AAUBKEIU-Su5ecvGw.js +10 -0
- package/dist/client/assets/ca-ES-6MX7JW3Y-tT1B4cci.js +8 -0
- package/dist/client/assets/channel-B5WJ2uRW.js +1 -0
- package/dist/client/assets/chunk-2J33WTMH-CRsWeOs1.js +1 -0
- package/dist/client/assets/chunk-3OPIFGDE-Ba3bqwD7.js +62 -0
- package/dist/client/assets/chunk-4BX2VUAB-G5rryZd4.js +1 -0
- package/dist/client/assets/chunk-55IACEB6-pY-b07PU.js +1 -0
- package/dist/client/assets/chunk-5ZQYHXKU-txrrIoic.js +2 -0
- package/dist/client/assets/chunk-6U3AYISY-C6-Mtja1.js +12 -0
- package/dist/client/assets/chunk-727SXJPM-B4WReBxI.js +206 -0
- package/dist/client/assets/chunk-AQP2D5EJ-C8Hs2uxD.js +231 -0
- package/dist/client/assets/chunk-BSJP7CBP-Dc0utuAA.js +1 -0
- package/dist/client/assets/chunk-CSCIHK7Q-D5y67sbU.js +124 -0
- package/dist/client/assets/chunk-EIO257PC-Bx5t8kU4.js +22 -0
- package/dist/client/assets/chunk-FMBD7UC4-RPQDsV4e.js +15 -0
- package/dist/client/assets/chunk-K2UTITRG-3wps4yb2.js +35 -0
- package/dist/client/assets/chunk-KSCS5N6A-CUZckNfe.js +10 -0
- package/dist/client/assets/chunk-L5ZTLDWV-CKWh4nJc.js +1 -0
- package/dist/client/assets/chunk-ND2GUHAM-CRxqa1cH.js +1 -0
- package/dist/client/assets/chunk-NNHCCRGN-DlpIbxXb.js +159 -0
- package/dist/client/assets/chunk-NZK2D7GU-DzyoezBz.js +1 -0
- package/dist/client/assets/chunk-O5CBEL6O-DW5LwnUN.js +70 -0
- package/dist/client/assets/chunk-QZHKN3VN-D8ZpkZ2T.js +1 -0
- package/dist/client/assets/chunk-SRAX5OIU-CiRgnkYo.js +1 -0
- package/dist/client/assets/chunk-Z3N5DIM6-D9TMVU7m.js +1 -0
- package/dist/client/assets/chunk-ZUYEQ4TG-BzFOpW--.js +7 -0
- package/dist/client/assets/chunk-aKtaBQYM.js +1 -0
- package/dist/client/assets/classDiagram-4FO5ZUOK-Bu-eJOPP.js +1 -0
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-Bu-eJOPP.js +1 -0
- package/dist/client/assets/cose-bilkent-S5V4N54A-CebQ3rSv.js +1 -0
- package/dist/client/assets/cs-CZ-2BRQDIVT-CfiY7B0I.js +11 -0
- package/dist/client/assets/cytoscape.esm-h6BdjjI9.js +321 -0
- package/dist/client/assets/da-DK-5WZEPLOC-_se7cnqh.js +5 -0
- package/dist/client/assets/dagre-BM42HDAG-Dh4U_FZ3.js +4 -0
- package/dist/client/assets/dagre-Bx709z4p.js +1 -0
- package/dist/client/assets/de-DE-XR44H4JA-8OXIdaPv.js +8 -0
- package/dist/client/assets/defaultLocale-C8Fc0cco.js +1 -0
- package/dist/client/assets/diagram-2AECGRRQ-x13SPAsu.js +43 -0
- package/dist/client/assets/diagram-5GNKFQAL-Dd2ojJwV.js +10 -0
- package/dist/client/assets/diagram-KO2AKTUF-B8fPg745.js +3 -0
- package/dist/client/assets/diagram-LMA3HP47-BCOXIOSa.js +24 -0
- package/dist/client/assets/diagram-OG6HWLK6-koOG8baV.js +24 -0
- package/dist/client/assets/directory-open-01563666-D4xXyWb_.js +1 -0
- package/dist/client/assets/directory-open-4ed118d0-1i309Asm.js +1 -0
- package/dist/client/assets/dist-CkHWSq-9.js +19 -0
- package/dist/client/assets/dist-DbpddOpB.js +1 -0
- package/dist/client/assets/el-GR-BZB4AONW-DKyQ9Zbj.js +10 -0
- package/dist/client/assets/en-B4ZKOASM-C0nvDD-u.js +1 -0
- package/dist/client/assets/erDiagram-TEJ5UH35-BEkaZffl.js +85 -0
- package/dist/client/assets/es-ES-U4NZUMDT-BP9WJyyE.js +9 -0
- package/dist/client/assets/esm-BBZsBR2Q.js +135 -0
- package/dist/client/assets/eu-ES-A7QVB2H4-FF8Yo9ZO.js +11 -0
- package/dist/client/assets/eventmodeling-FCH6USID-BMNHUh4b.js +1 -0
- package/dist/client/assets/fa-IR-HGAKTJCU-9qIByi7w.js +8 -0
- package/dist/client/assets/fi-FI-Z5N7JZ37-PJ5NZtDN.js +6 -0
- package/dist/client/assets/file-open-002ab408-BHUWm0Sh.js +1 -0
- package/dist/client/assets/file-open-7c801643-DZtJT5zp.js +1 -0
- package/dist/client/assets/file-save-3189631c-CO9S4HFW.js +1 -0
- package/dist/client/assets/file-save-745eba88-Bwdfz6OZ.js +1 -0
- package/dist/client/assets/flowDiagram-I6XJVG4X-DyWXWaQw.js +162 -0
- package/dist/client/assets/fr-FR-RHASNOE6-jpsFHqOx.js +9 -0
- package/dist/client/assets/ganttDiagram-6RSMTGT7-ZyvknnRG.js +292 -0
- package/dist/client/assets/gitGraph-WXDBUCRP-Q6znYb8F.js +1 -0
- package/dist/client/assets/gitGraphDiagram-PVQCEYII-BduTvbdg.js +106 -0
- package/dist/client/assets/gl-ES-HMX3MZ6V-BJfquIk1.js +10 -0
- package/dist/client/assets/graphlib-B8gBHxth.js +1 -0
- package/dist/client/assets/he-IL-6SHJWFNN-BcKH2buH.js +10 -0
- package/dist/client/assets/hi-IN-IWLTKZ5I-CZ6xC-p-.js +4 -0
- package/dist/client/assets/hu-HU-A5ZG7DT2-Qdmeb1R8.js +7 -0
- package/dist/client/assets/id-ID-SAP4L64H-BF7hTexH.js +10 -0
- package/dist/client/assets/image-GAAHSSAO-614nODhe.js +1 -0
- package/dist/client/assets/image-blob-reduce.esm-NzmDxm1v.js +2 -0
- package/dist/client/assets/index-BM1wVbBu.css +1 -0
- package/dist/client/assets/index-CJS5C-21.js +236 -0
- package/dist/client/assets/info-J43DQDTF-B0NWKxg9.js +1 -0
- package/dist/client/assets/infoDiagram-5YYISTIA-S14LSWq2.js +2 -0
- package/dist/client/assets/init-D6jRqBbL.js +1 -0
- package/dist/client/assets/ishikawaDiagram-YF4QCWOH-mBgTlJYa.js +70 -0
- package/dist/client/assets/it-IT-JPQ66NNP-Cpwr4nh4.js +11 -0
- package/dist/client/assets/ja-JP-DBVTYXUO-aRcxqHgI.js +8 -0
- package/dist/client/assets/journeyDiagram-JHISSGLW-IqSYFtBk.js +139 -0
- package/dist/client/assets/kaa-6HZHGXH3-C3lGQNoX.js +1 -0
- package/dist/client/assets/kab-KAB-ZGHBKWFO-BTzCFBfa.js +8 -0
- package/dist/client/assets/kanban-definition-UN3LZRKU-56oDzy8w.js +89 -0
- package/dist/client/assets/katex-Vhh-h91d.js +257 -0
- package/dist/client/assets/kk-KZ-P5N5QNE5-BN2QE2qN.js +1 -0
- package/dist/client/assets/km-KH-HSX4SM5Z-ntycs-3y.js +11 -0
- package/dist/client/assets/ko-KR-MTYHY66A-z81zH0yV.js +9 -0
- package/dist/client/assets/ku-TR-6OUDTVRD-B3Hewbuw.js +9 -0
- package/dist/client/assets/line-Dw_ht09V.js +1 -0
- package/dist/client/assets/linear-CyOYhOcs.js +1 -0
- package/dist/client/assets/lt-LT-XHIRWOB4-A6GRBBpG.js +3 -0
- package/dist/client/assets/lv-LV-5QDEKY6T-JE4Th9NB.js +7 -0
- package/dist/client/assets/mermaid-parser.core-BLpZ1Xi3.js +4 -0
- package/dist/client/assets/mermaid.core-De7CyoQD.js +40 -0
- package/dist/client/assets/mindmap-definition-RKZ34NQL-uGJycOYz.js +96 -0
- package/dist/client/assets/mr-IN-CRQNXWMA-B9eQuk1Z.js +13 -0
- package/dist/client/assets/my-MM-5M5IBNSE-CHlvzYOu.js +1 -0
- package/dist/client/assets/nb-NO-T6EIAALU-FdyMoR8J.js +10 -0
- package/dist/client/assets/nl-NL-IS3SIHDZ-CcM_lR89.js +8 -0
- package/dist/client/assets/nn-NO-6E72VCQL-NsOr1ixK.js +8 -0
- package/dist/client/assets/oc-FR-POXYY2M6-ClC5X0pl.js +8 -0
- package/dist/client/assets/ordinal-hYBb2elL.js +1 -0
- package/dist/client/assets/pa-IN-N4M65BXN-LWsiX5S8.js +4 -0
- package/dist/client/assets/packet-YPE3B663-CJHLPqbQ.js +1 -0
- package/dist/client/assets/path-BWPyau1x.js +1 -0
- package/dist/client/assets/percentages-BXMCSKIN-V9nyH_gb.js +1 -0
- package/dist/client/assets/pica-DjQMjoX_.js +2 -0
- package/dist/client/assets/pie-LRSECV5Y-BUHMb4Eu.js +1 -0
- package/dist/client/assets/pieDiagram-4H26LBE5-GAPDiBah.js +30 -0
- package/dist/client/assets/pl-PL-T2D74RX3-Da6GvME-.js +9 -0
- package/dist/client/assets/prod-B3A6UDL8.js +149 -0
- package/dist/client/assets/prod-DtRVLazd.css +1 -0
- package/dist/client/assets/pt-BR-5N22H2LF-DfjURw9w.js +9 -0
- package/dist/client/assets/pt-PT-UZXXM6DQ-DwBqhsuh.js +9 -0
- package/dist/client/assets/quadrantDiagram-W4KKPZXB-BRcZqGCz.js +7 -0
- package/dist/client/assets/radar-GUYGQ44K-D2D556tt.js +1 -0
- package/dist/client/assets/requirementDiagram-4Y6WPE33-CX1Co4la.js +84 -0
- package/dist/client/assets/ro-RO-JPDTUUEW-CG0iQOM3.js +11 -0
- package/dist/client/assets/rough.esm-CSKSodPl.js +1 -0
- package/dist/client/assets/roundRect-D01gJrlt.js +1 -0
- package/dist/client/assets/ru-RU-B4JR7IUQ-Dg3BF3G-.js +9 -0
- package/dist/client/assets/sankeyDiagram-5OEKKPKP-D9ysMket.js +40 -0
- package/dist/client/assets/sequenceDiagram-3UESZ5HK-0g_Spb0h.js +162 -0
- package/dist/client/assets/si-LK-N5RQ5JYF-CpzQXp0R.js +1 -0
- package/dist/client/assets/sk-SK-C5VTKIMK-C6iDRiUH.js +6 -0
- package/dist/client/assets/sl-SI-NN7IZMDC-CpsmjUH1.js +6 -0
- package/dist/client/assets/src-BViOx7y3.js +1 -0
- package/dist/client/assets/stateDiagram-AJRCARHV-r4AmMQTe.js +1 -0
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-Ck2vn4J9.js +1 -0
- package/dist/client/assets/subset-shared.chunk-CI4ywhrU.js +1 -0
- package/dist/client/assets/subset-worker.chunk-7sWn7Ze3.js +1 -0
- package/dist/client/assets/sv-SE-XGPEYMSR-B5E6Hc1s.js +10 -0
- package/dist/client/assets/ta-IN-2NMHFXQM-DNdbg2NX.js +9 -0
- package/dist/client/assets/th-TH-HPSO5L25-CwCFFmIs.js +2 -0
- package/dist/client/assets/timeline-definition-PNZ67QCA-BJtGyu1Y.js +120 -0
- package/dist/client/assets/tr-TR-DEFEU3FU-D-USnzJt.js +7 -0
- package/dist/client/assets/treeView-BLDUP644-CpwJjSVv.js +1 -0
- package/dist/client/assets/treemap-LRROVOQU-DKQuF8GY.js +1 -0
- package/dist/client/assets/uk-UA-QMV73CPH-BGFyYrZm.js +6 -0
- package/dist/client/assets/vennDiagram-CIIHVFJN-BJ7Omwmb.js +34 -0
- package/dist/client/assets/vi-VN-M7AON7JQ-BEVYsUmB.js +5 -0
- package/dist/client/assets/wardley-L42UT6IY-B6p__8sD.js +1 -0
- package/dist/client/assets/wardleyDiagram-YWT4CUSO-BZNv-WBl.js +78 -0
- package/dist/client/assets/xychartDiagram-2RQKCTM6-DL9nFgTt.js +7 -0
- package/dist/client/assets/zh-CN-LNUGB5OW-Ya4bFRUj.js +10 -0
- package/dist/client/assets/zh-HK-E62DVLB3-B_9mh-qR.js +1 -0
- package/dist/client/assets/zh-TW-RAJ6MFWO-EeeAfw19.js +9 -0
- package/dist/client/index.html +14 -0
- package/dist/lintCore-E4ZG4DFJ.js +8 -0
- package/dist/store-WLSSJHFW.js +13 -0
- package/examples/specs/_.mdx +51 -0
- package/examples/specs/_components/ColumnCount.tsx +78 -0
- package/examples/specs/_components/StatusBadge.tsx +42 -0
- package/examples/specs/_generators/typescript-interface.md +16 -0
- package/examples/specs/api/_.mdx +10 -0
- package/examples/specs/api/_schema.json +77 -0
- package/examples/specs/api/_template.mdx +39 -0
- package/examples/specs/api/users-api.mdx +76 -0
- package/examples/specs/architecture/_.mdx +10 -0
- package/examples/specs/architecture/overview.mdx +45 -0
- package/examples/specs/screens/_.mdx +10 -0
- package/examples/specs/screens/_template.mdx +29 -0
- package/examples/specs/screens/login.excalidraw +282 -0
- package/examples/specs/screens/login.mdx +37 -0
- package/examples/specs/tables/_.mdx +10 -0
- package/examples/specs/tables/_schema.json +82 -0
- package/examples/specs/tables/_template.mdx +19 -0
- package/examples/specs/tables/posts.mdx +60 -0
- package/examples/specs/tables/users.mdx +34 -0
- package/package.json +88 -0
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// src/server/store.ts
|
|
4
|
+
import fs from "fs/promises";
|
|
5
|
+
import path from "path";
|
|
6
|
+
import matter from "gray-matter";
|
|
7
|
+
|
|
8
|
+
// src/shared/types.ts
|
|
9
|
+
var WIKILINK_PATTERN = /\[\[([^\]|]+?)(?:\|([^\]]+?))?\]\]/g;
|
|
10
|
+
function parseSpecId(id) {
|
|
11
|
+
const idx = id.lastIndexOf(":");
|
|
12
|
+
if (idx <= 0 || idx === id.length - 1) return null;
|
|
13
|
+
return { category: id.slice(0, idx), slug: id.slice(idx + 1) };
|
|
14
|
+
}
|
|
15
|
+
function toSpecId(category, slug) {
|
|
16
|
+
return `${category}:${slug}`;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// src/server/store.ts
|
|
20
|
+
function normalizePath(p) {
|
|
21
|
+
return p.split(path.sep).join("/");
|
|
22
|
+
}
|
|
23
|
+
function stripCodeBlocks(src) {
|
|
24
|
+
let result = src.replace(/```[\s\S]*?```/g, "");
|
|
25
|
+
result = result.replace(/`[^`]*`/g, "");
|
|
26
|
+
return result;
|
|
27
|
+
}
|
|
28
|
+
function extractLinks(body) {
|
|
29
|
+
const stripped = stripCodeBlocks(body);
|
|
30
|
+
const seen = /* @__PURE__ */ new Set();
|
|
31
|
+
const links = [];
|
|
32
|
+
const re = new RegExp(WIKILINK_PATTERN.source, WIKILINK_PATTERN.flags);
|
|
33
|
+
let m;
|
|
34
|
+
while ((m = re.exec(stripped)) !== null) {
|
|
35
|
+
const target = m[1].trim();
|
|
36
|
+
if (!target.includes(":")) continue;
|
|
37
|
+
if (!seen.has(target)) {
|
|
38
|
+
seen.add(target);
|
|
39
|
+
links.push(target);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return links;
|
|
43
|
+
}
|
|
44
|
+
function buildSpecMeta(specsDir, absolutePath, rawContent) {
|
|
45
|
+
const parsed = matter(rawContent);
|
|
46
|
+
const relPath = normalizePath(path.relative(specsDir, absolutePath));
|
|
47
|
+
const parts = relPath.split("/");
|
|
48
|
+
const filename = parts[parts.length - 1];
|
|
49
|
+
const slug = filename.replace(/\.mdx?$/, "");
|
|
50
|
+
const category = parts.length > 1 ? parts.slice(0, -1).join("/") : "";
|
|
51
|
+
const id = category === "" ? slug : `${category}:${slug}`;
|
|
52
|
+
const title = parsed.data["title"] ?? slug;
|
|
53
|
+
const description = parsed.data["description"];
|
|
54
|
+
const links = extractLinks(parsed.content);
|
|
55
|
+
return {
|
|
56
|
+
id,
|
|
57
|
+
category,
|
|
58
|
+
slug,
|
|
59
|
+
path: relPath,
|
|
60
|
+
title,
|
|
61
|
+
description,
|
|
62
|
+
data: parsed.data,
|
|
63
|
+
links,
|
|
64
|
+
isIndex: slug === "_"
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
async function scanDir(specsDir, dir, results) {
|
|
68
|
+
let entries;
|
|
69
|
+
try {
|
|
70
|
+
entries = await fs.readdir(dir, { withFileTypes: true });
|
|
71
|
+
} catch {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
for (const entry of entries) {
|
|
75
|
+
if (entry.name.startsWith(".")) continue;
|
|
76
|
+
if (entry.name === "node_modules") continue;
|
|
77
|
+
const fullPath = path.join(dir, entry.name);
|
|
78
|
+
if (entry.isDirectory()) {
|
|
79
|
+
if (dir === specsDir && (entry.name === "_generators" || entry.name === "_components")) {
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
await scanDir(specsDir, fullPath, results);
|
|
83
|
+
} else if (entry.isFile() && /\.mdx?$/.test(entry.name)) {
|
|
84
|
+
try {
|
|
85
|
+
const content = await fs.readFile(fullPath, "utf-8");
|
|
86
|
+
results.push(buildSpecMeta(specsDir, fullPath, content));
|
|
87
|
+
} catch {
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
async function loadSpecs(specsDir) {
|
|
93
|
+
const results = [];
|
|
94
|
+
await scanDir(specsDir, specsDir, results);
|
|
95
|
+
return results;
|
|
96
|
+
}
|
|
97
|
+
async function loadSpec(specsDir, absolutePath) {
|
|
98
|
+
try {
|
|
99
|
+
const content = await fs.readFile(absolutePath, "utf-8");
|
|
100
|
+
const meta = buildSpecMeta(specsDir, absolutePath, content);
|
|
101
|
+
return { meta, content };
|
|
102
|
+
} catch {
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
function resolveSpecPathAny(specsDir, category, slug) {
|
|
107
|
+
const parts = category === "" ? [] : category.split("/");
|
|
108
|
+
return [
|
|
109
|
+
path.join(specsDir, ...parts, `${slug}.mdx`),
|
|
110
|
+
path.join(specsDir, ...parts, `${slug}.md`)
|
|
111
|
+
];
|
|
112
|
+
}
|
|
113
|
+
function guardPath(specsDir, target) {
|
|
114
|
+
const resolved = path.resolve(target);
|
|
115
|
+
const base = path.resolve(specsDir);
|
|
116
|
+
return resolved.startsWith(base + path.sep) || resolved === base;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
export {
|
|
120
|
+
WIKILINK_PATTERN,
|
|
121
|
+
parseSpecId,
|
|
122
|
+
toSpecId,
|
|
123
|
+
loadSpecs,
|
|
124
|
+
loadSpec,
|
|
125
|
+
resolveSpecPathAny,
|
|
126
|
+
guardPath
|
|
127
|
+
};
|