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.
Files changed (189) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +314 -0
  3. package/dist/chunk-774NFJLC.js +267 -0
  4. package/dist/chunk-JY5QLNZ4.js +127 -0
  5. package/dist/cli/index.js +1757 -0
  6. package/dist/client/assets/Assistant-Bold-gm-uSS1B.woff2 +0 -0
  7. package/dist/client/assets/Assistant-Medium-DrcxCXg3.woff2 +0 -0
  8. package/dist/client/assets/Assistant-Regular-DVxZuzxb.woff2 +0 -0
  9. package/dist/client/assets/Assistant-SemiBold-SCI4bEL9.woff2 +0 -0
  10. package/dist/client/assets/ar-SA-G6X2FPQ2-Dd0X68bc.js +10 -0
  11. package/dist/client/assets/arc-OeTCl9Oy.js +1 -0
  12. package/dist/client/assets/architecture-7EHR7CIX-CaxcM-P5.js +1 -0
  13. package/dist/client/assets/architectureDiagram-3BPJPVTR-BIjzr_cP.js +36 -0
  14. package/dist/client/assets/array-BifhSqXX.js +1 -0
  15. package/dist/client/assets/az-AZ-76LH7QW2-CikYmJ_f.js +1 -0
  16. package/dist/client/assets/bg-BG-XCXSNQG7-3zBzA4I3.js +5 -0
  17. package/dist/client/assets/blockDiagram-GPEHLZMM-K767VD5J.js +132 -0
  18. package/dist/client/assets/bn-BD-2XOGV67Q-F99bvhop.js +5 -0
  19. package/dist/client/assets/c4Diagram-AAUBKEIU-Su5ecvGw.js +10 -0
  20. package/dist/client/assets/ca-ES-6MX7JW3Y-tT1B4cci.js +8 -0
  21. package/dist/client/assets/channel-B5WJ2uRW.js +1 -0
  22. package/dist/client/assets/chunk-2J33WTMH-CRsWeOs1.js +1 -0
  23. package/dist/client/assets/chunk-3OPIFGDE-Ba3bqwD7.js +62 -0
  24. package/dist/client/assets/chunk-4BX2VUAB-G5rryZd4.js +1 -0
  25. package/dist/client/assets/chunk-55IACEB6-pY-b07PU.js +1 -0
  26. package/dist/client/assets/chunk-5ZQYHXKU-txrrIoic.js +2 -0
  27. package/dist/client/assets/chunk-6U3AYISY-C6-Mtja1.js +12 -0
  28. package/dist/client/assets/chunk-727SXJPM-B4WReBxI.js +206 -0
  29. package/dist/client/assets/chunk-AQP2D5EJ-C8Hs2uxD.js +231 -0
  30. package/dist/client/assets/chunk-BSJP7CBP-Dc0utuAA.js +1 -0
  31. package/dist/client/assets/chunk-CSCIHK7Q-D5y67sbU.js +124 -0
  32. package/dist/client/assets/chunk-EIO257PC-Bx5t8kU4.js +22 -0
  33. package/dist/client/assets/chunk-FMBD7UC4-RPQDsV4e.js +15 -0
  34. package/dist/client/assets/chunk-K2UTITRG-3wps4yb2.js +35 -0
  35. package/dist/client/assets/chunk-KSCS5N6A-CUZckNfe.js +10 -0
  36. package/dist/client/assets/chunk-L5ZTLDWV-CKWh4nJc.js +1 -0
  37. package/dist/client/assets/chunk-ND2GUHAM-CRxqa1cH.js +1 -0
  38. package/dist/client/assets/chunk-NNHCCRGN-DlpIbxXb.js +159 -0
  39. package/dist/client/assets/chunk-NZK2D7GU-DzyoezBz.js +1 -0
  40. package/dist/client/assets/chunk-O5CBEL6O-DW5LwnUN.js +70 -0
  41. package/dist/client/assets/chunk-QZHKN3VN-D8ZpkZ2T.js +1 -0
  42. package/dist/client/assets/chunk-SRAX5OIU-CiRgnkYo.js +1 -0
  43. package/dist/client/assets/chunk-Z3N5DIM6-D9TMVU7m.js +1 -0
  44. package/dist/client/assets/chunk-ZUYEQ4TG-BzFOpW--.js +7 -0
  45. package/dist/client/assets/chunk-aKtaBQYM.js +1 -0
  46. package/dist/client/assets/classDiagram-4FO5ZUOK-Bu-eJOPP.js +1 -0
  47. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-Bu-eJOPP.js +1 -0
  48. package/dist/client/assets/cose-bilkent-S5V4N54A-CebQ3rSv.js +1 -0
  49. package/dist/client/assets/cs-CZ-2BRQDIVT-CfiY7B0I.js +11 -0
  50. package/dist/client/assets/cytoscape.esm-h6BdjjI9.js +321 -0
  51. package/dist/client/assets/da-DK-5WZEPLOC-_se7cnqh.js +5 -0
  52. package/dist/client/assets/dagre-BM42HDAG-Dh4U_FZ3.js +4 -0
  53. package/dist/client/assets/dagre-Bx709z4p.js +1 -0
  54. package/dist/client/assets/de-DE-XR44H4JA-8OXIdaPv.js +8 -0
  55. package/dist/client/assets/defaultLocale-C8Fc0cco.js +1 -0
  56. package/dist/client/assets/diagram-2AECGRRQ-x13SPAsu.js +43 -0
  57. package/dist/client/assets/diagram-5GNKFQAL-Dd2ojJwV.js +10 -0
  58. package/dist/client/assets/diagram-KO2AKTUF-B8fPg745.js +3 -0
  59. package/dist/client/assets/diagram-LMA3HP47-BCOXIOSa.js +24 -0
  60. package/dist/client/assets/diagram-OG6HWLK6-koOG8baV.js +24 -0
  61. package/dist/client/assets/directory-open-01563666-D4xXyWb_.js +1 -0
  62. package/dist/client/assets/directory-open-4ed118d0-1i309Asm.js +1 -0
  63. package/dist/client/assets/dist-CkHWSq-9.js +19 -0
  64. package/dist/client/assets/dist-DbpddOpB.js +1 -0
  65. package/dist/client/assets/el-GR-BZB4AONW-DKyQ9Zbj.js +10 -0
  66. package/dist/client/assets/en-B4ZKOASM-C0nvDD-u.js +1 -0
  67. package/dist/client/assets/erDiagram-TEJ5UH35-BEkaZffl.js +85 -0
  68. package/dist/client/assets/es-ES-U4NZUMDT-BP9WJyyE.js +9 -0
  69. package/dist/client/assets/esm-BBZsBR2Q.js +135 -0
  70. package/dist/client/assets/eu-ES-A7QVB2H4-FF8Yo9ZO.js +11 -0
  71. package/dist/client/assets/eventmodeling-FCH6USID-BMNHUh4b.js +1 -0
  72. package/dist/client/assets/fa-IR-HGAKTJCU-9qIByi7w.js +8 -0
  73. package/dist/client/assets/fi-FI-Z5N7JZ37-PJ5NZtDN.js +6 -0
  74. package/dist/client/assets/file-open-002ab408-BHUWm0Sh.js +1 -0
  75. package/dist/client/assets/file-open-7c801643-DZtJT5zp.js +1 -0
  76. package/dist/client/assets/file-save-3189631c-CO9S4HFW.js +1 -0
  77. package/dist/client/assets/file-save-745eba88-Bwdfz6OZ.js +1 -0
  78. package/dist/client/assets/flowDiagram-I6XJVG4X-DyWXWaQw.js +162 -0
  79. package/dist/client/assets/fr-FR-RHASNOE6-jpsFHqOx.js +9 -0
  80. package/dist/client/assets/ganttDiagram-6RSMTGT7-ZyvknnRG.js +292 -0
  81. package/dist/client/assets/gitGraph-WXDBUCRP-Q6znYb8F.js +1 -0
  82. package/dist/client/assets/gitGraphDiagram-PVQCEYII-BduTvbdg.js +106 -0
  83. package/dist/client/assets/gl-ES-HMX3MZ6V-BJfquIk1.js +10 -0
  84. package/dist/client/assets/graphlib-B8gBHxth.js +1 -0
  85. package/dist/client/assets/he-IL-6SHJWFNN-BcKH2buH.js +10 -0
  86. package/dist/client/assets/hi-IN-IWLTKZ5I-CZ6xC-p-.js +4 -0
  87. package/dist/client/assets/hu-HU-A5ZG7DT2-Qdmeb1R8.js +7 -0
  88. package/dist/client/assets/id-ID-SAP4L64H-BF7hTexH.js +10 -0
  89. package/dist/client/assets/image-GAAHSSAO-614nODhe.js +1 -0
  90. package/dist/client/assets/image-blob-reduce.esm-NzmDxm1v.js +2 -0
  91. package/dist/client/assets/index-BM1wVbBu.css +1 -0
  92. package/dist/client/assets/index-CJS5C-21.js +236 -0
  93. package/dist/client/assets/info-J43DQDTF-B0NWKxg9.js +1 -0
  94. package/dist/client/assets/infoDiagram-5YYISTIA-S14LSWq2.js +2 -0
  95. package/dist/client/assets/init-D6jRqBbL.js +1 -0
  96. package/dist/client/assets/ishikawaDiagram-YF4QCWOH-mBgTlJYa.js +70 -0
  97. package/dist/client/assets/it-IT-JPQ66NNP-Cpwr4nh4.js +11 -0
  98. package/dist/client/assets/ja-JP-DBVTYXUO-aRcxqHgI.js +8 -0
  99. package/dist/client/assets/journeyDiagram-JHISSGLW-IqSYFtBk.js +139 -0
  100. package/dist/client/assets/kaa-6HZHGXH3-C3lGQNoX.js +1 -0
  101. package/dist/client/assets/kab-KAB-ZGHBKWFO-BTzCFBfa.js +8 -0
  102. package/dist/client/assets/kanban-definition-UN3LZRKU-56oDzy8w.js +89 -0
  103. package/dist/client/assets/katex-Vhh-h91d.js +257 -0
  104. package/dist/client/assets/kk-KZ-P5N5QNE5-BN2QE2qN.js +1 -0
  105. package/dist/client/assets/km-KH-HSX4SM5Z-ntycs-3y.js +11 -0
  106. package/dist/client/assets/ko-KR-MTYHY66A-z81zH0yV.js +9 -0
  107. package/dist/client/assets/ku-TR-6OUDTVRD-B3Hewbuw.js +9 -0
  108. package/dist/client/assets/line-Dw_ht09V.js +1 -0
  109. package/dist/client/assets/linear-CyOYhOcs.js +1 -0
  110. package/dist/client/assets/lt-LT-XHIRWOB4-A6GRBBpG.js +3 -0
  111. package/dist/client/assets/lv-LV-5QDEKY6T-JE4Th9NB.js +7 -0
  112. package/dist/client/assets/mermaid-parser.core-BLpZ1Xi3.js +4 -0
  113. package/dist/client/assets/mermaid.core-De7CyoQD.js +40 -0
  114. package/dist/client/assets/mindmap-definition-RKZ34NQL-uGJycOYz.js +96 -0
  115. package/dist/client/assets/mr-IN-CRQNXWMA-B9eQuk1Z.js +13 -0
  116. package/dist/client/assets/my-MM-5M5IBNSE-CHlvzYOu.js +1 -0
  117. package/dist/client/assets/nb-NO-T6EIAALU-FdyMoR8J.js +10 -0
  118. package/dist/client/assets/nl-NL-IS3SIHDZ-CcM_lR89.js +8 -0
  119. package/dist/client/assets/nn-NO-6E72VCQL-NsOr1ixK.js +8 -0
  120. package/dist/client/assets/oc-FR-POXYY2M6-ClC5X0pl.js +8 -0
  121. package/dist/client/assets/ordinal-hYBb2elL.js +1 -0
  122. package/dist/client/assets/pa-IN-N4M65BXN-LWsiX5S8.js +4 -0
  123. package/dist/client/assets/packet-YPE3B663-CJHLPqbQ.js +1 -0
  124. package/dist/client/assets/path-BWPyau1x.js +1 -0
  125. package/dist/client/assets/percentages-BXMCSKIN-V9nyH_gb.js +1 -0
  126. package/dist/client/assets/pica-DjQMjoX_.js +2 -0
  127. package/dist/client/assets/pie-LRSECV5Y-BUHMb4Eu.js +1 -0
  128. package/dist/client/assets/pieDiagram-4H26LBE5-GAPDiBah.js +30 -0
  129. package/dist/client/assets/pl-PL-T2D74RX3-Da6GvME-.js +9 -0
  130. package/dist/client/assets/prod-B3A6UDL8.js +149 -0
  131. package/dist/client/assets/prod-DtRVLazd.css +1 -0
  132. package/dist/client/assets/pt-BR-5N22H2LF-DfjURw9w.js +9 -0
  133. package/dist/client/assets/pt-PT-UZXXM6DQ-DwBqhsuh.js +9 -0
  134. package/dist/client/assets/quadrantDiagram-W4KKPZXB-BRcZqGCz.js +7 -0
  135. package/dist/client/assets/radar-GUYGQ44K-D2D556tt.js +1 -0
  136. package/dist/client/assets/requirementDiagram-4Y6WPE33-CX1Co4la.js +84 -0
  137. package/dist/client/assets/ro-RO-JPDTUUEW-CG0iQOM3.js +11 -0
  138. package/dist/client/assets/rough.esm-CSKSodPl.js +1 -0
  139. package/dist/client/assets/roundRect-D01gJrlt.js +1 -0
  140. package/dist/client/assets/ru-RU-B4JR7IUQ-Dg3BF3G-.js +9 -0
  141. package/dist/client/assets/sankeyDiagram-5OEKKPKP-D9ysMket.js +40 -0
  142. package/dist/client/assets/sequenceDiagram-3UESZ5HK-0g_Spb0h.js +162 -0
  143. package/dist/client/assets/si-LK-N5RQ5JYF-CpzQXp0R.js +1 -0
  144. package/dist/client/assets/sk-SK-C5VTKIMK-C6iDRiUH.js +6 -0
  145. package/dist/client/assets/sl-SI-NN7IZMDC-CpsmjUH1.js +6 -0
  146. package/dist/client/assets/src-BViOx7y3.js +1 -0
  147. package/dist/client/assets/stateDiagram-AJRCARHV-r4AmMQTe.js +1 -0
  148. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-Ck2vn4J9.js +1 -0
  149. package/dist/client/assets/subset-shared.chunk-CI4ywhrU.js +1 -0
  150. package/dist/client/assets/subset-worker.chunk-7sWn7Ze3.js +1 -0
  151. package/dist/client/assets/sv-SE-XGPEYMSR-B5E6Hc1s.js +10 -0
  152. package/dist/client/assets/ta-IN-2NMHFXQM-DNdbg2NX.js +9 -0
  153. package/dist/client/assets/th-TH-HPSO5L25-CwCFFmIs.js +2 -0
  154. package/dist/client/assets/timeline-definition-PNZ67QCA-BJtGyu1Y.js +120 -0
  155. package/dist/client/assets/tr-TR-DEFEU3FU-D-USnzJt.js +7 -0
  156. package/dist/client/assets/treeView-BLDUP644-CpwJjSVv.js +1 -0
  157. package/dist/client/assets/treemap-LRROVOQU-DKQuF8GY.js +1 -0
  158. package/dist/client/assets/uk-UA-QMV73CPH-BGFyYrZm.js +6 -0
  159. package/dist/client/assets/vennDiagram-CIIHVFJN-BJ7Omwmb.js +34 -0
  160. package/dist/client/assets/vi-VN-M7AON7JQ-BEVYsUmB.js +5 -0
  161. package/dist/client/assets/wardley-L42UT6IY-B6p__8sD.js +1 -0
  162. package/dist/client/assets/wardleyDiagram-YWT4CUSO-BZNv-WBl.js +78 -0
  163. package/dist/client/assets/xychartDiagram-2RQKCTM6-DL9nFgTt.js +7 -0
  164. package/dist/client/assets/zh-CN-LNUGB5OW-Ya4bFRUj.js +10 -0
  165. package/dist/client/assets/zh-HK-E62DVLB3-B_9mh-qR.js +1 -0
  166. package/dist/client/assets/zh-TW-RAJ6MFWO-EeeAfw19.js +9 -0
  167. package/dist/client/index.html +14 -0
  168. package/dist/lintCore-E4ZG4DFJ.js +8 -0
  169. package/dist/store-WLSSJHFW.js +13 -0
  170. package/examples/specs/_.mdx +51 -0
  171. package/examples/specs/_components/ColumnCount.tsx +78 -0
  172. package/examples/specs/_components/StatusBadge.tsx +42 -0
  173. package/examples/specs/_generators/typescript-interface.md +16 -0
  174. package/examples/specs/api/_.mdx +10 -0
  175. package/examples/specs/api/_schema.json +77 -0
  176. package/examples/specs/api/_template.mdx +39 -0
  177. package/examples/specs/api/users-api.mdx +76 -0
  178. package/examples/specs/architecture/_.mdx +10 -0
  179. package/examples/specs/architecture/overview.mdx +45 -0
  180. package/examples/specs/screens/_.mdx +10 -0
  181. package/examples/specs/screens/_template.mdx +29 -0
  182. package/examples/specs/screens/login.excalidraw +282 -0
  183. package/examples/specs/screens/login.mdx +37 -0
  184. package/examples/specs/tables/_.mdx +10 -0
  185. package/examples/specs/tables/_schema.json +82 -0
  186. package/examples/specs/tables/_template.mdx +19 -0
  187. package/examples/specs/tables/posts.mdx +60 -0
  188. package/examples/specs/tables/users.mdx +34 -0
  189. 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
+ };