@art-md/constructs 0.0.3 → 0.0.5

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 (256) hide show
  1. package/README.md +3 -3
  2. package/dist/factories/constructs/Document/factory/createDocument.d.ts +3 -0
  3. package/dist/factories/constructs/Document/factory/types.d.ts +4 -0
  4. package/dist/factories/constructs/Document/index.d.ts +2 -0
  5. package/dist/factories/constructs/FieldBlock/factory/createFieldBlock.d.ts +3 -0
  6. package/dist/factories/constructs/FieldBlock/factory/types.d.ts +7 -0
  7. package/dist/factories/constructs/FieldBlock/index.d.ts +3 -0
  8. package/dist/factories/constructs/FieldBlock/types.d.ts +9 -0
  9. package/dist/factories/constructs/FieldInline/factory/createFieldInline.d.ts +3 -0
  10. package/dist/factories/constructs/FieldInline/factory/types.d.ts +7 -0
  11. package/dist/factories/constructs/FieldInline/index.d.ts +3 -0
  12. package/dist/factories/constructs/FieldInline/types.d.ts +9 -0
  13. package/dist/factories/constructs/NaturalBlock/factory/createNaturalBlock.d.ts +3 -0
  14. package/dist/factories/constructs/NaturalBlock/factory/types.d.ts +11 -0
  15. package/dist/factories/constructs/NaturalBlock/index.d.ts +3 -0
  16. package/dist/factories/constructs/NaturalBlock/types.d.ts +12 -0
  17. package/dist/factories/constructs/NaturalExpression/factory/createNaturalExpression.d.ts +3 -0
  18. package/dist/factories/constructs/NaturalExpression/factory/types.d.ts +7 -0
  19. package/dist/factories/constructs/NaturalExpression/index.d.ts +3 -0
  20. package/dist/factories/constructs/NaturalExpression/types.d.ts +8 -0
  21. package/dist/factories/constructs/SectionBlock/factory/createSectionBlock.d.ts +3 -0
  22. package/dist/factories/constructs/SectionBlock/factory/types.d.ts +8 -0
  23. package/dist/factories/constructs/SectionBlock/index.d.ts +3 -0
  24. package/dist/factories/constructs/SectionBlock/types.d.ts +9 -0
  25. package/dist/factories/constructs/Tag/factory/createTag.d.ts +3 -0
  26. package/dist/factories/constructs/Tag/factory/types.d.ts +3 -0
  27. package/dist/factories/constructs/Tag/index.d.ts +3 -0
  28. package/dist/factories/constructs/Tag/types.d.ts +5 -0
  29. package/dist/factories/index.d.ts +8 -0
  30. package/dist/factories/public.d.ts +36 -0
  31. package/dist/factories/types.d.ts +31 -0
  32. package/dist/index.d.ts +3 -0
  33. package/dist/index.mjs +627 -0
  34. package/dist/index.mjs.map +7 -0
  35. package/dist/parser/constructs/FieldBlock/createFieldBlockParser.d.ts +2 -0
  36. package/dist/parser/constructs/FieldBlock/index.d.ts +1 -0
  37. package/dist/parser/constructs/FieldBlock/private/helpers/createFieldBlockFromNode.d.ts +4 -0
  38. package/dist/parser/constructs/FieldBlock/private/helpers/onBeforeConstruct.d.ts +2 -0
  39. package/dist/parser/constructs/FieldBlock/private/index.d.ts +2 -0
  40. package/dist/parser/constructs/FieldBlock/private/integrator/createFieldBlockIntegrator.d.ts +2 -0
  41. package/dist/parser/constructs/FieldBlock/private/processor/createFieldBlockProcessor.d.ts +2 -0
  42. package/dist/parser/constructs/FieldInline/createFieldInlineParser.d.ts +2 -0
  43. package/dist/parser/constructs/FieldInline/index.d.ts +1 -0
  44. package/dist/parser/constructs/FieldInline/private/helpers/createFieldInlineFromNode.d.ts +4 -0
  45. package/dist/parser/constructs/FieldInline/private/helpers/trimFieldEdges.d.ts +2 -0
  46. package/dist/parser/constructs/FieldInline/private/index.d.ts +1 -0
  47. package/dist/parser/constructs/FieldInline/private/processor/createFieldInlineProcessor.d.ts +2 -0
  48. package/dist/parser/constructs/NaturalBlock/createNaturalBlockParser.d.ts +2 -0
  49. package/dist/parser/constructs/NaturalBlock/index.d.ts +1 -0
  50. package/dist/parser/constructs/NaturalBlock/private/helpers/createNaturalBlockFromNode.d.ts +4 -0
  51. package/dist/parser/constructs/NaturalBlock/private/index.d.ts +1 -0
  52. package/dist/parser/constructs/NaturalBlock/private/processor/createNaturalBlockProcessor.d.ts +2 -0
  53. package/dist/parser/constructs/SectionBlock/createSectionBlockParser.d.ts +2 -0
  54. package/dist/parser/constructs/SectionBlock/index.d.ts +1 -0
  55. package/dist/parser/constructs/SectionBlock/private/helpers/createSectionBlockFromNode.d.ts +4 -0
  56. package/dist/parser/constructs/SectionBlock/private/helpers/findParentSection.d.ts +3 -0
  57. package/dist/parser/constructs/SectionBlock/private/index.d.ts +2 -0
  58. package/dist/parser/constructs/SectionBlock/private/integrator/createSectionBlockIntegrator.d.ts +2 -0
  59. package/dist/parser/constructs/SectionBlock/private/processor/createSectionBlockProcessor.d.ts +2 -0
  60. package/dist/parser/document/createArtDocumentFromNode.d.ts +3 -0
  61. package/dist/parser/document/index.d.ts +1 -0
  62. package/dist/parser/fields/constants.d.ts +1 -0
  63. package/dist/parser/fields/index.d.ts +3 -0
  64. package/dist/parser/fields/isFieldStrong.d.ts +3 -0
  65. package/dist/parser/fields/stripStrong.d.ts +3 -0
  66. package/dist/parser/index.d.ts +6 -0
  67. package/dist/parser/mdast/index.d.ts +1 -0
  68. package/dist/parser/mdast/rawSlice.d.ts +2 -0
  69. package/dist/parser/naturalExpression/createNaturalExpressionFromNode.d.ts +3 -0
  70. package/dist/parser/naturalExpression/index.d.ts +1 -0
  71. package/dist/parser/public.d.ts +5 -0
  72. package/dist/parser/tags/extractTags.d.ts +5 -0
  73. package/dist/parser/tags/index.d.ts +1 -0
  74. package/dist/parser/types.d.ts +14 -0
  75. package/dist/serializer/constructs/Document/createDocumentToMdast.d.ts +2 -0
  76. package/dist/serializer/constructs/Document/index.d.ts +1 -0
  77. package/dist/serializer/constructs/FieldBlock/createFieldBlockToMdast.d.ts +2 -0
  78. package/dist/serializer/constructs/FieldBlock/index.d.ts +1 -0
  79. package/dist/serializer/constructs/FieldInline/createFieldInlineToMdast.d.ts +2 -0
  80. package/dist/serializer/constructs/FieldInline/index.d.ts +1 -0
  81. package/dist/serializer/constructs/NaturalBlock/createNaturalBlockToMdast.d.ts +2 -0
  82. package/dist/serializer/constructs/NaturalBlock/index.d.ts +1 -0
  83. package/dist/serializer/constructs/NaturalExpression/createNaturalExpressionToMdast.d.ts +2 -0
  84. package/dist/serializer/constructs/NaturalExpression/index.d.ts +1 -0
  85. package/dist/serializer/constructs/SectionBlock/createSectionBlockToMdast.d.ts +2 -0
  86. package/dist/serializer/constructs/SectionBlock/index.d.ts +1 -0
  87. package/dist/serializer/index.d.ts +7 -0
  88. package/dist/serializer/public.d.ts +3 -0
  89. package/dist/serializer/tags/index.d.ts +2 -0
  90. package/dist/serializer/tags/tagToMdast.d.ts +3 -0
  91. package/dist/serializer/tags/tagsToMdast.d.ts +3 -0
  92. package/dist/serializer/types.d.ts +7 -0
  93. package/dist/test/helpers/constructs/FieldBlock/createFieldBlockFromNodeMock.d.ts +7 -0
  94. package/dist/test/helpers/constructs/FieldBlock/createFieldBlockMock.d.ts +7 -0
  95. package/dist/test/helpers/constructs/FieldBlock/makeFieldBlockFixture.d.ts +9 -0
  96. package/dist/test/helpers/constructs/FieldBlock/makeFieldBlockMock.d.ts +9 -0
  97. package/dist/test/helpers/constructs/FieldInline/createFieldInlineFromNodeMock.d.ts +7 -0
  98. package/dist/test/helpers/constructs/FieldInline/createFieldInlineMock.d.ts +7 -0
  99. package/dist/test/helpers/constructs/FieldInline/makeFieldInlineFixture.d.ts +9 -0
  100. package/dist/test/helpers/constructs/FieldInline/makeFieldInlineMock.d.ts +9 -0
  101. package/dist/test/helpers/constructs/NaturalBlock/createNaturalBlockFromNodeMock.d.ts +7 -0
  102. package/dist/test/helpers/constructs/NaturalBlock/createNaturalBlockMock.d.ts +7 -0
  103. package/dist/test/helpers/constructs/NaturalBlock/makeNaturalBlockFixture.d.ts +12 -0
  104. package/dist/test/helpers/constructs/NaturalBlock/makeNaturalBlockMock.d.ts +12 -0
  105. package/dist/test/helpers/constructs/NaturalExpression/makeNaturalExpressionFixture.d.ts +10 -0
  106. package/dist/test/helpers/constructs/NaturalExpression/makeNaturalExpressionMock.d.ts +10 -0
  107. package/dist/test/helpers/constructs/SectionBlock/createSectionBlockFromNodeMock.d.ts +7 -0
  108. package/dist/test/helpers/constructs/SectionBlock/createSectionBlockMock.d.ts +7 -0
  109. package/dist/test/helpers/constructs/SectionBlock/makeSectionBlockFixture.d.ts +10 -0
  110. package/dist/test/helpers/constructs/Tag/makeTagFixture.d.ts +7 -0
  111. package/dist/test/helpers/constructs/index.d.ts +14 -0
  112. package/dist/test/helpers/index.d.ts +2 -0
  113. package/dist/test/helpers/parsers/fields/stripStrongMock.d.ts +7 -0
  114. package/dist/test/helpers/parsers/index.d.ts +5 -0
  115. package/dist/test/helpers/parsers/mdast/rawSliceMock.d.ts +7 -0
  116. package/dist/test/helpers/parsers/natural-expression/createNaturalExpressionFromNodeMock.d.ts +7 -0
  117. package/dist/test/helpers/parsers/tags/extractTagsMock.d.ts +7 -0
  118. package/dist/test/helpers/parsers/tags/tagToMdastMock.d.ts +7 -0
  119. package/package.json +22 -4
  120. package/src/factories/constructs/Document/factory/createDocument.test.ts +2 -2
  121. package/src/factories/constructs/Document/factory/createDocument.ts +1 -1
  122. package/src/factories/constructs/Document/factory/types.ts +1 -1
  123. package/src/factories/constructs/Document/index.ts +2 -2
  124. package/src/factories/constructs/FieldBlock/factory/createFieldBlock.test.ts +2 -2
  125. package/src/factories/constructs/FieldBlock/factory/createFieldBlock.ts +2 -2
  126. package/src/factories/constructs/FieldBlock/factory/types.ts +2 -2
  127. package/src/factories/constructs/FieldBlock/index.ts +3 -3
  128. package/src/factories/constructs/FieldBlock/types.ts +2 -2
  129. package/src/factories/constructs/FieldInline/factory/createFieldInline.test.ts +2 -2
  130. package/src/factories/constructs/FieldInline/factory/createFieldInline.ts +2 -2
  131. package/src/factories/constructs/FieldInline/factory/types.ts +2 -2
  132. package/src/factories/constructs/FieldInline/index.ts +3 -3
  133. package/src/factories/constructs/FieldInline/types.ts +2 -2
  134. package/src/factories/constructs/NaturalBlock/factory/createNaturalBlock.test.ts +2 -2
  135. package/src/factories/constructs/NaturalBlock/factory/createNaturalBlock.ts +2 -2
  136. package/src/factories/constructs/NaturalBlock/factory/types.ts +1 -1
  137. package/src/factories/constructs/NaturalBlock/index.ts +3 -3
  138. package/src/factories/constructs/NaturalBlock/types.ts +1 -1
  139. package/src/factories/constructs/NaturalExpression/factory/createNaturalExpression.test.ts +2 -2
  140. package/src/factories/constructs/NaturalExpression/factory/createNaturalExpression.ts +2 -2
  141. package/src/factories/constructs/NaturalExpression/factory/types.ts +1 -1
  142. package/src/factories/constructs/NaturalExpression/index.ts +3 -3
  143. package/src/factories/constructs/SectionBlock/factory/createSectionBlock.test.ts +2 -4
  144. package/src/factories/constructs/SectionBlock/factory/createSectionBlock.ts +2 -3
  145. package/src/factories/constructs/SectionBlock/factory/types.ts +1 -2
  146. package/src/factories/constructs/SectionBlock/index.ts +3 -3
  147. package/src/factories/constructs/SectionBlock/types.ts +1 -2
  148. package/src/factories/constructs/Tag/factory/createTag.test.ts +1 -1
  149. package/src/factories/constructs/Tag/factory/createTag.ts +2 -2
  150. package/src/factories/constructs/Tag/index.ts +3 -3
  151. package/src/factories/index.ts +8 -8
  152. package/src/factories/public.ts +14 -14
  153. package/src/factories/types.ts +6 -6
  154. package/src/index.ts +3 -3
  155. package/src/parser/constructs/FieldBlock/createFieldBlockParser.test.ts +1 -1
  156. package/src/parser/constructs/FieldBlock/createFieldBlockParser.ts +2 -2
  157. package/src/parser/constructs/FieldBlock/index.ts +1 -1
  158. package/src/parser/constructs/FieldBlock/private/helpers/createFieldBlockFromNode.test.ts +4 -4
  159. package/src/parser/constructs/FieldBlock/private/helpers/createFieldBlockFromNode.ts +4 -4
  160. package/src/parser/constructs/FieldBlock/private/helpers/onBeforeConstruct.test.ts +1 -1
  161. package/src/parser/constructs/FieldBlock/private/index.ts +2 -2
  162. package/src/parser/constructs/FieldBlock/private/integrator/createFieldBlockIntegrator.test.ts +4 -4
  163. package/src/parser/constructs/FieldBlock/private/integrator/createFieldBlockIntegrator.ts +3 -3
  164. package/src/parser/constructs/FieldBlock/private/processor/createFieldBlockProcessor.test.ts +4 -4
  165. package/src/parser/constructs/FieldBlock/private/processor/createFieldBlockProcessor.ts +3 -3
  166. package/src/parser/constructs/FieldInline/createFieldInlineParser.test.ts +1 -1
  167. package/src/parser/constructs/FieldInline/createFieldInlineParser.ts +2 -2
  168. package/src/parser/constructs/FieldInline/index.ts +1 -1
  169. package/src/parser/constructs/FieldInline/private/helpers/createFieldInlineFromNode.test.ts +4 -4
  170. package/src/parser/constructs/FieldInline/private/helpers/createFieldInlineFromNode.ts +6 -6
  171. package/src/parser/constructs/FieldInline/private/helpers/trimFieldEdges.test.ts +2 -2
  172. package/src/parser/constructs/FieldInline/private/helpers/trimFieldEdges.ts +1 -1
  173. package/src/parser/constructs/FieldInline/private/index.ts +1 -1
  174. package/src/parser/constructs/FieldInline/private/processor/createFieldInlineProcessor.test.ts +4 -4
  175. package/src/parser/constructs/FieldInline/private/processor/createFieldInlineProcessor.ts +3 -3
  176. package/src/parser/constructs/NaturalBlock/createNaturalBlockParser.test.ts +1 -1
  177. package/src/parser/constructs/NaturalBlock/createNaturalBlockParser.ts +2 -2
  178. package/src/parser/constructs/NaturalBlock/index.ts +1 -1
  179. package/src/parser/constructs/NaturalBlock/private/helpers/createNaturalBlockFromNode.test.ts +4 -4
  180. package/src/parser/constructs/NaturalBlock/private/helpers/createNaturalBlockFromNode.ts +4 -4
  181. package/src/parser/constructs/NaturalBlock/private/index.ts +1 -1
  182. package/src/parser/constructs/NaturalBlock/private/processor/createNaturalBlockProcessor.test.ts +4 -4
  183. package/src/parser/constructs/NaturalBlock/private/processor/createNaturalBlockProcessor.ts +2 -2
  184. package/src/parser/constructs/SectionBlock/createSectionBlockParser.test.ts +1 -1
  185. package/src/parser/constructs/SectionBlock/createSectionBlockParser.ts +2 -2
  186. package/src/parser/constructs/SectionBlock/index.ts +1 -1
  187. package/src/parser/constructs/SectionBlock/private/helpers/createSectionBlockFromNode.test.ts +6 -6
  188. package/src/parser/constructs/SectionBlock/private/helpers/createSectionBlockFromNode.ts +4 -7
  189. package/src/parser/constructs/SectionBlock/private/helpers/findParentSection.test.ts +9 -3
  190. package/src/parser/constructs/SectionBlock/private/helpers/findParentSection.ts +1 -1
  191. package/src/parser/constructs/SectionBlock/private/index.ts +2 -2
  192. package/src/parser/constructs/SectionBlock/private/integrator/createSectionBlockIntegrator.test.ts +6 -3
  193. package/src/parser/constructs/SectionBlock/private/integrator/createSectionBlockIntegrator.ts +3 -3
  194. package/src/parser/constructs/SectionBlock/private/processor/createSectionBlockProcessor.test.ts +4 -4
  195. package/src/parser/constructs/SectionBlock/private/processor/createSectionBlockProcessor.ts +2 -2
  196. package/src/parser/document/createArtDocumentFromNode.test.ts +2 -2
  197. package/src/parser/document/createArtDocumentFromNode.ts +1 -1
  198. package/src/parser/document/index.ts +1 -1
  199. package/src/parser/fields/constants.test.ts +1 -1
  200. package/src/parser/fields/index.ts +3 -3
  201. package/src/parser/fields/isFieldStrong.test.ts +2 -2
  202. package/src/parser/fields/isFieldStrong.ts +2 -2
  203. package/src/parser/fields/stripStrong.test.ts +3 -3
  204. package/src/parser/fields/stripStrong.ts +1 -1
  205. package/src/parser/index.ts +6 -6
  206. package/src/parser/mdast/index.ts +1 -1
  207. package/src/parser/mdast/rawSlice.test.ts +1 -1
  208. package/src/parser/naturalExpression/createNaturalExpressionFromNode.test.ts +2 -7
  209. package/src/parser/naturalExpression/createNaturalExpressionFromNode.ts +2 -3
  210. package/src/parser/naturalExpression/index.ts +1 -1
  211. package/src/parser/public.ts +7 -7
  212. package/src/parser/tags/extractTags.test.ts +1 -1
  213. package/src/parser/tags/extractTags.ts +1 -1
  214. package/src/parser/tags/index.ts +1 -1
  215. package/src/parser/types.ts +1 -1
  216. package/src/serializer/constructs/Document/createDocumentToMdast.test.ts +1 -1
  217. package/src/serializer/constructs/Document/createDocumentToMdast.ts +1 -1
  218. package/src/serializer/constructs/Document/index.ts +1 -1
  219. package/src/serializer/constructs/FieldBlock/createFieldBlockToMdast.test.ts +2 -2
  220. package/src/serializer/constructs/FieldBlock/createFieldBlockToMdast.ts +3 -3
  221. package/src/serializer/constructs/FieldBlock/index.ts +1 -1
  222. package/src/serializer/constructs/FieldInline/createFieldInlineToMdast.test.ts +2 -2
  223. package/src/serializer/constructs/FieldInline/createFieldInlineToMdast.ts +3 -3
  224. package/src/serializer/constructs/FieldInline/index.ts +1 -1
  225. package/src/serializer/constructs/NaturalBlock/createNaturalBlockToMdast.test.ts +2 -2
  226. package/src/serializer/constructs/NaturalBlock/createNaturalBlockToMdast.ts +3 -3
  227. package/src/serializer/constructs/NaturalBlock/index.ts +1 -1
  228. package/src/serializer/constructs/NaturalExpression/createNaturalExpressionToMdast.test.ts +2 -2
  229. package/src/serializer/constructs/NaturalExpression/createNaturalExpressionToMdast.ts +2 -2
  230. package/src/serializer/constructs/NaturalExpression/index.ts +1 -1
  231. package/src/serializer/constructs/SectionBlock/createSectionBlockToMdast.test.ts +2 -2
  232. package/src/serializer/constructs/SectionBlock/createSectionBlockToMdast.ts +3 -3
  233. package/src/serializer/constructs/SectionBlock/index.ts +1 -1
  234. package/src/serializer/index.ts +7 -7
  235. package/src/serializer/public.ts +8 -8
  236. package/src/serializer/tags/index.ts +2 -2
  237. package/src/serializer/tags/tagToMdast.test.ts +1 -1
  238. package/src/serializer/tags/tagToMdast.ts +1 -1
  239. package/src/serializer/tags/tagsToMdast.test.ts +2 -2
  240. package/src/serializer/tags/tagsToMdast.ts +2 -2
  241. package/src/serializer/types.ts +1 -1
  242. package/src/test/helpers/constructs/FieldBlock/makeFieldBlockFixture.ts +1 -1
  243. package/src/test/helpers/constructs/FieldBlock/makeFieldBlockMock.ts +1 -1
  244. package/src/test/helpers/constructs/FieldInline/makeFieldInlineFixture.ts +1 -1
  245. package/src/test/helpers/constructs/FieldInline/makeFieldInlineMock.ts +1 -1
  246. package/src/test/helpers/constructs/NaturalBlock/makeNaturalBlockFixture.ts +1 -1
  247. package/src/test/helpers/constructs/NaturalBlock/makeNaturalBlockMock.ts +1 -1
  248. package/src/test/helpers/constructs/NaturalExpression/makeNaturalExpressionFixture.ts +1 -1
  249. package/src/test/helpers/constructs/NaturalExpression/makeNaturalExpressionMock.ts +1 -1
  250. package/src/test/helpers/constructs/SectionBlock/makeSectionBlockFixture.ts +1 -3
  251. package/src/test/helpers/constructs/Tag/makeTagFixture.ts +1 -1
  252. package/src/test/helpers/constructs/index.ts +14 -14
  253. package/src/test/helpers/index.ts +2 -2
  254. package/src/test/helpers/parsers/index.ts +5 -5
  255. package/src/parser/constructs/SectionBlock/private/constants.test.ts +0 -17
  256. package/src/parser/constructs/SectionBlock/private/constants.ts +0 -1
package/dist/index.mjs ADDED
@@ -0,0 +1,627 @@
1
+ // ../primitives/dist/index.mjs
2
+ function createArtDocument(data) {
3
+ return {
4
+ construct: "Document",
5
+ children: data?.children ?? []
6
+ };
7
+ }
8
+ function nodePosition(node) {
9
+ if (!node.position) {
10
+ throw new Error(`Expected source position for ${node.type}`);
11
+ }
12
+ const raw = node.position;
13
+ if (!raw?.start || !raw.end) {
14
+ throw new Error(`Expected source position for ${node.type}`);
15
+ }
16
+ return {
17
+ start: {
18
+ line: raw.start.line,
19
+ column: raw.start.column,
20
+ offset: raw.start.offset ?? 0
21
+ },
22
+ end: {
23
+ line: raw.end.line,
24
+ column: raw.end.column,
25
+ offset: raw.end.offset ?? 0
26
+ }
27
+ };
28
+ }
29
+ function sectionDepth(section) {
30
+ return section.depth ?? 1;
31
+ }
32
+
33
+ // src/factories/constructs/Document/factory/createDocument.ts
34
+ function createDocument(data) {
35
+ const docData = {
36
+ ...data,
37
+ children: data.children || []
38
+ };
39
+ return createArtDocument(docData);
40
+ }
41
+
42
+ // src/factories/constructs/FieldBlock/factory/createFieldBlock.ts
43
+ function createFieldBlock(data) {
44
+ const field = {
45
+ construct: "FieldBlock",
46
+ name: data.name,
47
+ children: data.children ?? []
48
+ };
49
+ if (data.tags?.length) {
50
+ field.tags = data.tags;
51
+ }
52
+ return field;
53
+ }
54
+
55
+ // src/factories/constructs/FieldInline/factory/createFieldInline.ts
56
+ function createFieldInline(data) {
57
+ const field = {
58
+ construct: "FieldInline",
59
+ name: data.name,
60
+ children: data.children ?? []
61
+ };
62
+ if (data.tags?.length) {
63
+ field.tags = data.tags;
64
+ }
65
+ return field;
66
+ }
67
+
68
+ // src/factories/constructs/NaturalBlock/factory/createNaturalBlock.ts
69
+ function createNaturalBlock(data) {
70
+ const block = {
71
+ ...data.attributes,
72
+ construct: "NaturalBlock",
73
+ value: data.value,
74
+ children: data.children
75
+ };
76
+ if (data.type) {
77
+ block.type = data.type;
78
+ }
79
+ if (data.lang !== void 0) {
80
+ block.lang = data.lang;
81
+ }
82
+ if (data.meta !== void 0) {
83
+ block.meta = data.meta;
84
+ }
85
+ if (data.tags?.length) {
86
+ block.tags = data.tags;
87
+ }
88
+ return block;
89
+ }
90
+
91
+ // src/factories/constructs/NaturalExpression/factory/createNaturalExpression.ts
92
+ function createNaturalExpression(data) {
93
+ return {
94
+ construct: "NaturalExpression",
95
+ type: data.type,
96
+ value: data.value,
97
+ attributes: data.attributes,
98
+ children: data.children ?? []
99
+ };
100
+ }
101
+
102
+ // src/factories/constructs/SectionBlock/factory/createSectionBlock.ts
103
+ function createSectionBlock(data) {
104
+ const section = {
105
+ construct: "SectionBlock",
106
+ name: data.name,
107
+ children: data.children ?? []
108
+ };
109
+ if (data.depth !== void 0) section.depth = data.depth;
110
+ if (data.tags?.length) section.tags = data.tags;
111
+ return section;
112
+ }
113
+
114
+ // src/factories/constructs/Tag/factory/createTag.ts
115
+ function createTag(tagData) {
116
+ return { construct: "Tag", name: tagData.name };
117
+ }
118
+
119
+ // src/factories/public.ts
120
+ var FACTORIES = [
121
+ {
122
+ name: "Document",
123
+ factory: createDocument
124
+ },
125
+ {
126
+ name: "FieldBlock",
127
+ factory: createFieldBlock
128
+ },
129
+ {
130
+ name: "FieldInline",
131
+ factory: createFieldInline
132
+ },
133
+ {
134
+ name: "NaturalBlock",
135
+ factory: createNaturalBlock
136
+ },
137
+ {
138
+ name: "NaturalExpression",
139
+ factory: createNaturalExpression
140
+ },
141
+ {
142
+ name: "SectionBlock",
143
+ factory: createSectionBlock
144
+ },
145
+ {
146
+ name: "Tag",
147
+ factory: createTag
148
+ }
149
+ ];
150
+
151
+ // src/parser/constructs/FieldBlock/private/helpers/onBeforeConstruct.ts
152
+ var FIELD_BLOCK_BOUNDARIES = /* @__PURE__ */ new Set(["FieldBlock", "FieldInline", "SectionBlock"]);
153
+ function onBeforeConstruct(construct, context) {
154
+ if (!FIELD_BLOCK_BOUNDARIES.has(construct.construct)) {
155
+ return context;
156
+ }
157
+ const parent = context.parent();
158
+ if (!parent) {
159
+ return context;
160
+ }
161
+ return parent;
162
+ }
163
+
164
+ // src/parser/constructs/FieldBlock/private/integrator/createFieldBlockIntegrator.ts
165
+ function createFieldBlockIntegrator() {
166
+ return {
167
+ integrate(context, _node, construct) {
168
+ const field = construct;
169
+ context.captureChildConstruct(field);
170
+ return context.childContext(field, onBeforeConstruct);
171
+ }
172
+ };
173
+ }
174
+
175
+ // src/parser/fields/constants.ts
176
+ var FIELD_TEXT_PATTERN = /^[A-Za-z][A-Za-z ]*:(?:\s|$)/;
177
+
178
+ // src/parser/mdast/rawSlice.ts
179
+ function rawSlice(node, context) {
180
+ if (!node.position?.start || !node.position?.end) {
181
+ return "";
182
+ }
183
+ return context.source.markdown.slice(node.position.start.offset, node.position.end.offset);
184
+ }
185
+
186
+ // src/parser/fields/stripStrong.ts
187
+ function stripStrong(node, context) {
188
+ const raw = rawSlice(node, context);
189
+ return raw.length >= 4 && (raw.startsWith("**") && raw.endsWith("**") || raw.startsWith("__") && raw.endsWith("__")) ? raw.slice(2, -2) : raw;
190
+ }
191
+
192
+ // src/parser/fields/isFieldStrong.ts
193
+ function isFieldStrong(node, context) {
194
+ return node.type === "strong" && FIELD_TEXT_PATTERN.test(stripStrong(node, context));
195
+ }
196
+
197
+ // src/parser/tags/extractTags.ts
198
+ var TRAILING_TAGS = /^(.*?)((?:\(#[\w-]+\)\s*)+)$/;
199
+ var TAG = /\(#([\w-]+)\)/g;
200
+ function extractTags(text) {
201
+ const trimmed = text.trimEnd();
202
+ const match = trimmed.match(TRAILING_TAGS);
203
+ if (!match || !match[1] || !match[2]) {
204
+ return {
205
+ tags: [],
206
+ stripped: text
207
+ };
208
+ }
209
+ const tags = [...match[2].matchAll(TAG)].map(
210
+ (matchResult) => createTag({ name: matchResult[1] ?? "" })
211
+ );
212
+ return {
213
+ tags,
214
+ stripped: match[1].trimEnd()
215
+ };
216
+ }
217
+
218
+ // src/parser/constructs/FieldBlock/private/helpers/createFieldBlockFromNode.ts
219
+ function createFieldBlockFromNode(paragraph, context) {
220
+ const strong = paragraph.children[0];
221
+ const paragraphRaw = rawSlice(paragraph, context);
222
+ const strongRaw = rawSlice(strong, context);
223
+ const afterStrong = paragraphRaw.slice(strongRaw.length);
224
+ const { tags, stripped } = extractTags(afterStrong);
225
+ if (stripped.trim().length > 0) {
226
+ return null;
227
+ }
228
+ const inner = stripStrong(strong, context);
229
+ const colonIndex = inner.indexOf(":");
230
+ const field = createFieldBlock({
231
+ name: inner.slice(0, colonIndex).trim(),
232
+ tags
233
+ });
234
+ field.position = nodePosition(paragraph);
235
+ return field;
236
+ }
237
+
238
+ // src/parser/constructs/FieldBlock/private/processor/createFieldBlockProcessor.ts
239
+ function createFieldBlockProcessor() {
240
+ return {
241
+ captureNode(context, node) {
242
+ if (node.type !== "paragraph") {
243
+ return null;
244
+ }
245
+ const paragraph = node;
246
+ const first = paragraph.children[0];
247
+ if (first === void 0 || !isFieldStrong(first, context)) {
248
+ return null;
249
+ }
250
+ return createFieldBlockFromNode(paragraph, context);
251
+ }
252
+ };
253
+ }
254
+
255
+ // src/parser/constructs/FieldBlock/createFieldBlockParser.ts
256
+ var createFieldBlockParser = () => ({
257
+ name: "FieldBlock",
258
+ processor: createFieldBlockProcessor(),
259
+ integrator: createFieldBlockIntegrator()
260
+ });
261
+
262
+ // src/parser/naturalExpression/createNaturalExpressionFromNode.ts
263
+ function createNaturalExpressionFromNode(node) {
264
+ const { position: _, children: mdastChildren, type, value, ...attributes } = node;
265
+ let children = [];
266
+ if (Array.isArray(mdastChildren)) {
267
+ children = mdastChildren.map((child) => createNaturalExpressionFromNode(child));
268
+ }
269
+ const expression = {
270
+ construct: "NaturalExpression",
271
+ type,
272
+ attributes,
273
+ value,
274
+ position: nodePosition(node),
275
+ children
276
+ };
277
+ return expression;
278
+ }
279
+
280
+ // src/parser/constructs/FieldInline/private/helpers/trimFieldEdges.ts
281
+ function trimFieldEdges(value) {
282
+ const trimmed = [...value];
283
+ const first = trimmed[0];
284
+ const last = trimmed[trimmed.length - 1];
285
+ if (first?.type === "text" && typeof first?.value === "string")
286
+ first.value = first.value.replace(/^\s+/, "");
287
+ if (last?.type === "text" && typeof last?.value === "string")
288
+ last.value = last.value.replace(/\s+$/, "");
289
+ return trimmed.filter(
290
+ (expression) => expression.type !== "text" || typeof expression.value === "string" && expression.value.length > 0
291
+ );
292
+ }
293
+
294
+ // src/parser/constructs/FieldInline/private/helpers/createFieldInlineFromNode.ts
295
+ function createFieldInlineFromNode(paragraph, context) {
296
+ const strong = paragraph.children[0];
297
+ const paragraphRaw = rawSlice(paragraph, context);
298
+ const strongRaw = rawSlice(strong, context);
299
+ const afterStrong = paragraphRaw.slice(strongRaw.length);
300
+ const { stripped } = extractTags(afterStrong);
301
+ if (stripped.trim().length === 0) {
302
+ return null;
303
+ }
304
+ const inner = stripStrong(strong, context);
305
+ const colonIndex = inner.indexOf(":");
306
+ const expressions = paragraph.children.slice(1).map((child) => createNaturalExpressionFromNode(child));
307
+ const children = trimFieldEdges(expressions);
308
+ const last = children[children.length - 1];
309
+ let tags = [];
310
+ if (last?.type === "text" && typeof last.value === "string") {
311
+ const extracted = extractTags(last.value);
312
+ if (extracted.tags.length) {
313
+ tags = extracted.tags;
314
+ last.value = extracted.stripped;
315
+ }
316
+ }
317
+ const field = createFieldInline({
318
+ name: inner.slice(0, colonIndex).trim(),
319
+ children,
320
+ tags
321
+ });
322
+ field.position = nodePosition(paragraph);
323
+ return field;
324
+ }
325
+
326
+ // src/parser/constructs/FieldInline/private/processor/createFieldInlineProcessor.ts
327
+ function createFieldInlineProcessor() {
328
+ return {
329
+ captureNode(context, node) {
330
+ if (node.type !== "paragraph") {
331
+ return null;
332
+ }
333
+ const paragraph = node;
334
+ const first = paragraph.children[0];
335
+ if (first === void 0 || !isFieldStrong(first, context)) {
336
+ return null;
337
+ }
338
+ return createFieldInlineFromNode(paragraph, context);
339
+ }
340
+ };
341
+ }
342
+
343
+ // src/parser/constructs/FieldInline/createFieldInlineParser.ts
344
+ var createFieldInlineParser = () => ({
345
+ name: "FieldInline",
346
+ processor: createFieldInlineProcessor()
347
+ });
348
+
349
+ // src/parser/constructs/NaturalBlock/private/helpers/createNaturalBlockFromNode.ts
350
+ import { phrasing } from "mdast-util-phrasing";
351
+ function createNaturalBlockFromNode(node, context) {
352
+ let children = [];
353
+ if (Array.isArray(node.children)) {
354
+ const nodeChildren = node.children ?? [];
355
+ const phrasingContainer = node.type === "paragraph" || node.type === "heading" || node.type === "tableCell";
356
+ children = nodeChildren.map(
357
+ (child) => phrasingContainer || phrasing(child) ? createNaturalExpressionFromNode(child) : createNaturalBlockFromNode(child, context)
358
+ );
359
+ }
360
+ let tags = [];
361
+ if (node.type === "paragraph") {
362
+ const last = children[children.length - 1];
363
+ if (last?.type === "text" && typeof last.value === "string") {
364
+ const { tags: extractedTags, stripped } = extractTags(last.value);
365
+ if (extractedTags.length) {
366
+ tags = extractedTags;
367
+ last.value = stripped;
368
+ }
369
+ }
370
+ }
371
+ const { type, ...attributes } = node;
372
+ const block = createNaturalBlock({
373
+ value: rawSlice(node, context),
374
+ children,
375
+ type,
376
+ attributes,
377
+ tags
378
+ });
379
+ block.position = nodePosition(node);
380
+ return block;
381
+ }
382
+
383
+ // src/parser/constructs/NaturalBlock/private/processor/createNaturalBlockProcessor.ts
384
+ function createNaturalBlockProcessor() {
385
+ return {
386
+ captureNode(context, node) {
387
+ return createNaturalBlockFromNode(node, context);
388
+ }
389
+ };
390
+ }
391
+
392
+ // src/parser/constructs/NaturalBlock/createNaturalBlockParser.ts
393
+ var createNaturalBlockParser = () => ({
394
+ name: "NaturalBlock",
395
+ processor: createNaturalBlockProcessor()
396
+ });
397
+
398
+ // src/parser/constructs/SectionBlock/private/helpers/findParentSection.ts
399
+ function findParentSection(context) {
400
+ let current = context;
401
+ while (current) {
402
+ if (current.construct?.construct === "SectionBlock") {
403
+ return current.construct;
404
+ }
405
+ current = current.parent();
406
+ }
407
+ return void 0;
408
+ }
409
+
410
+ // src/parser/constructs/SectionBlock/private/integrator/createSectionBlockIntegrator.ts
411
+ function createSectionBlockIntegrator() {
412
+ return {
413
+ integrate(context, node, construct) {
414
+ const section = construct;
415
+ let currentContext = context;
416
+ const heading = node;
417
+ while (currentContext.construct.construct === "SectionBlock") {
418
+ const parentSection = findParentSection(currentContext);
419
+ if (parentSection && sectionDepth(parentSection) >= heading.depth) {
420
+ const parentContext = currentContext.parent();
421
+ if (parentContext) {
422
+ currentContext = parentContext;
423
+ }
424
+ } else {
425
+ break;
426
+ }
427
+ }
428
+ currentContext.captureChildConstruct(section);
429
+ return currentContext.childContext(section);
430
+ }
431
+ };
432
+ }
433
+
434
+ // src/parser/constructs/SectionBlock/private/helpers/createSectionBlockFromNode.ts
435
+ function createSectionBlockFromNode(node, context) {
436
+ const text = rawSlice(node, context).replace(/^[ \t]*#+[ \t]*/, "").trim();
437
+ const { tags, stripped } = extractTags(text);
438
+ const section = createSectionBlock({
439
+ name: stripped,
440
+ depth: node.depth,
441
+ children: [],
442
+ tags
443
+ });
444
+ section.position = nodePosition(node);
445
+ return section;
446
+ }
447
+
448
+ // src/parser/constructs/SectionBlock/private/processor/createSectionBlockProcessor.ts
449
+ function createSectionBlockProcessor() {
450
+ return {
451
+ captureNode(context, node) {
452
+ if (node.type !== "heading") {
453
+ return null;
454
+ }
455
+ return createSectionBlockFromNode(node, context);
456
+ }
457
+ };
458
+ }
459
+
460
+ // src/parser/constructs/SectionBlock/createSectionBlockParser.ts
461
+ var createSectionBlockParser = () => ({
462
+ name: "SectionBlock",
463
+ processor: createSectionBlockProcessor(),
464
+ integrator: createSectionBlockIntegrator()
465
+ });
466
+
467
+ // src/parser/document/createArtDocumentFromNode.ts
468
+ function createArtDocumentFromNode(root) {
469
+ const document = createDocument({});
470
+ document.position = nodePosition(root);
471
+ return document;
472
+ }
473
+
474
+ // src/parser/public.ts
475
+ var CONSTRUCT_PARSERS = [
476
+ createFieldBlockParser,
477
+ createFieldInlineParser,
478
+ createSectionBlockParser
479
+ ];
480
+ var DEFAULT_CONSTRUCT_PARSER = createNaturalBlockParser;
481
+
482
+ // src/serializer/constructs/Document/createDocumentToMdast.ts
483
+ function createDocumentToMdast() {
484
+ return {
485
+ name: "Document",
486
+ toMdast(_node, children) {
487
+ return {
488
+ type: "root",
489
+ children
490
+ };
491
+ }
492
+ };
493
+ }
494
+
495
+ // src/serializer/tags/tagToMdast.ts
496
+ function tagToMdast(tag) {
497
+ return { type: "text", value: `(#${tag.name})` };
498
+ }
499
+
500
+ // src/serializer/tags/tagsToMdast.ts
501
+ function tagsToMdast(tags) {
502
+ const value = tags.map((tag) => tagToMdast(tag).value).join(" ");
503
+ return { type: "text", value: ` ${value}` };
504
+ }
505
+
506
+ // src/serializer/constructs/FieldBlock/createFieldBlockToMdast.ts
507
+ function createFieldBlockToMdast() {
508
+ return {
509
+ name: "FieldBlock",
510
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
511
+ toMdast(node, _children) {
512
+ const field = node;
513
+ const tagNode = field.tags?.length ? tagsToMdast(field.tags) : null;
514
+ return {
515
+ type: "paragraph",
516
+ children: [
517
+ {
518
+ type: "strong",
519
+ children: [{ type: "text", value: `${field.name}:` }]
520
+ },
521
+ ...tagNode ? [tagNode] : []
522
+ ]
523
+ };
524
+ }
525
+ };
526
+ }
527
+
528
+ // src/serializer/constructs/FieldInline/createFieldInlineToMdast.ts
529
+ function createFieldInlineToMdast() {
530
+ return {
531
+ name: "FieldInline",
532
+ toMdast(node, children) {
533
+ const field = node;
534
+ const tagNode = field.tags?.length ? tagsToMdast(field.tags) : null;
535
+ return {
536
+ type: "paragraph",
537
+ children: [
538
+ {
539
+ type: "strong",
540
+ children: [{ type: "text", value: `${field.name}:` }]
541
+ },
542
+ { type: "text", value: " " },
543
+ ...children,
544
+ ...tagNode ? [tagNode] : []
545
+ ]
546
+ };
547
+ }
548
+ };
549
+ }
550
+
551
+ // src/serializer/constructs/NaturalBlock/createNaturalBlockToMdast.ts
552
+ import { fromMarkdown } from "mdast-util-from-markdown";
553
+ function createNaturalBlockToMdast() {
554
+ return {
555
+ name: "NaturalBlock",
556
+ toMdast(node, children) {
557
+ const block = node;
558
+ const parsed = fromMarkdown(block.value);
559
+ if (block.type === "paragraph" && children.length > 0) {
560
+ const paragraph = parsed.children.find((child) => child.type === "paragraph");
561
+ if (paragraph && "children" in paragraph) {
562
+ const tagNode = block.tags?.length ? tagsToMdast(block.tags) : null;
563
+ paragraph.children = [
564
+ ...children,
565
+ ...tagNode ? [tagNode] : []
566
+ ];
567
+ }
568
+ }
569
+ return {
570
+ type: "root",
571
+ children: parsed.children
572
+ };
573
+ }
574
+ };
575
+ }
576
+
577
+ // src/serializer/constructs/NaturalExpression/createNaturalExpressionToMdast.ts
578
+ function createNaturalExpressionToMdast() {
579
+ return {
580
+ name: "NaturalExpression",
581
+ toMdast(node, children) {
582
+ const expression = node;
583
+ const attributes = { ...expression.attributes };
584
+ return { type: expression.type, value: expression.value, children, ...attributes };
585
+ }
586
+ };
587
+ }
588
+
589
+ // src/serializer/constructs/SectionBlock/createSectionBlockToMdast.ts
590
+ import { fromMarkdown as fromMarkdown2 } from "mdast-util-from-markdown";
591
+ function createSectionBlockToMdast() {
592
+ return {
593
+ name: "SectionBlock",
594
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
595
+ toMdast(node, _children) {
596
+ const section = node;
597
+ const depth = section.depth ?? 1;
598
+ const parsed = fromMarkdown2(`# ${section.name}`);
599
+ const heading = parsed.children.find((child) => child.type === "heading");
600
+ const tagNode = section.tags?.length ? tagsToMdast(section.tags) : null;
601
+ const children = heading && "children" in heading ? [...heading.children, ...tagNode ? [tagNode] : []] : [{ type: "text", value: section.name }, ...tagNode ? [tagNode] : []];
602
+ return {
603
+ type: "heading",
604
+ depth,
605
+ children
606
+ };
607
+ }
608
+ };
609
+ }
610
+
611
+ // src/serializer/public.ts
612
+ var CONSTRUCT_SERIALIZERS = [
613
+ createDocumentToMdast,
614
+ createFieldBlockToMdast,
615
+ createFieldInlineToMdast,
616
+ createNaturalBlockToMdast,
617
+ createNaturalExpressionToMdast,
618
+ createSectionBlockToMdast
619
+ ];
620
+ export {
621
+ CONSTRUCT_PARSERS,
622
+ CONSTRUCT_SERIALIZERS,
623
+ DEFAULT_CONSTRUCT_PARSER,
624
+ FACTORIES,
625
+ createArtDocumentFromNode
626
+ };
627
+ //# sourceMappingURL=index.mjs.map