functionalscript 0.2.6 → 0.3.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 (428) hide show
  1. package/.github/workflows/ci.yml +19 -4
  2. package/CHANGELOG.md +5 -0
  3. package/com/cpp/{module.f.mjs → module.f.ts} +65 -44
  4. package/com/cpp/{test.f.mjs → test.f.ts} +1 -1
  5. package/com/cpp/testlib.f.ts +8 -0
  6. package/com/cs/{module.f.mjs → module.f.ts} +47 -38
  7. package/com/cs/{test.f.mjs → test.f.ts} +2 -2
  8. package/com/cs/testlib.f.ts +8 -0
  9. package/com/rust/module.f.ts +287 -0
  10. package/com/rust/{test.f.mjs → test.f.ts} +1 -1
  11. package/com/rust/testlib.f.ts +8 -0
  12. package/com/test/{build.f.mjs → build.f.ts} +47 -45
  13. package/com/test/{build.mjs → build.ts} +7 -6
  14. package/com/types/module.f.ts +62 -0
  15. package/com/types/{testlib.f.mjs → testlib.f.ts} +2 -3
  16. package/commonjs/build/module.f.ts +100 -0
  17. package/commonjs/build/{test.f.mjs → test.f.ts} +21 -17
  18. package/commonjs/module/function/module.f.ts +13 -0
  19. package/commonjs/module/module.f.ts +41 -0
  20. package/commonjs/module.f.ts +7 -0
  21. package/commonjs/{module.mjs → module.ts} +12 -9
  22. package/commonjs/package/dependencies/module.f.ts +22 -0
  23. package/commonjs/package/dependencies/{test.f.mjs → test.f.ts} +1 -1
  24. package/commonjs/package/module.f.ts +31 -0
  25. package/commonjs/package/{test.f.mjs → test.f.ts} +1 -1
  26. package/commonjs/path/{module.f.mjs → module.f.ts} +72 -67
  27. package/commonjs/path/{test.f.mjs → test.f.ts} +25 -19
  28. package/commonjs/{test.mjs → test.ts} +5 -4
  29. package/crypto/prime_field/{module.f.mjs → module.f.ts} +40 -37
  30. package/crypto/prime_field/{test.f.mjs → test.f.ts} +7 -5
  31. package/crypto/secp/{module.f.mjs → module.f.ts} +44 -44
  32. package/crypto/secp/{test.f.mjs → test.f.ts} +16 -11
  33. package/crypto/sha2/{module.f.mjs → module.f.ts} +61 -46
  34. package/crypto/sha2/{test.f.mjs → test.f.ts} +12 -9
  35. package/deno.json +71 -0
  36. package/dev/README.md +8 -0
  37. package/dev/index.ts +3 -0
  38. package/dev/{module.f.mjs → module.f.ts} +0 -2
  39. package/dev/{module.mjs → module.ts} +65 -60
  40. package/dev/test/{module.f.mjs → module.f.ts} +57 -70
  41. package/dev/{test.f.mjs → test.f.ts} +7 -5
  42. package/dev/test.ts +53 -0
  43. package/djs/{module.f.mjs → module.f.ts} +31 -31
  44. package/djs/parser/{module.f.mjs → module.f.ts} +190 -182
  45. package/djs/parser/{test.f.mjs → test.f.ts} +173 -150
  46. package/djs/serializer/module.f.ts +90 -0
  47. package/djs/{test.f.mjs → test.f.ts} +4 -4
  48. package/djs/tokenizer/{module.f.mjs → module.f.ts} +35 -42
  49. package/djs/tokenizer/{test.f.mjs → test.f.ts} +9 -8
  50. package/fsc/{module.f.mjs → module.f.ts} +41 -44
  51. package/fsc/{test.f.mjs → test.f.ts} +8 -6
  52. package/fsm/module.f.ts +107 -0
  53. package/fsm/{test.f.mjs → test.f.ts} +10 -9
  54. package/html/module.f.ts +108 -0
  55. package/html/{test.f.mjs → test.f.ts} +10 -7
  56. package/issues/lang/3110-function.md +25 -1
  57. package/issues/{test.f.mjs → test.f.ts} +3 -2
  58. package/js/tokenizer/module.f.ts +882 -0
  59. package/js/tokenizer/{test.f.mjs → test.f.ts} +11 -10
  60. package/json/module.f.ts +94 -0
  61. package/json/parser/{module.f.mjs → module.f.ts} +113 -109
  62. package/json/parser/{test.f.mjs → test.f.ts} +10 -9
  63. package/json/serializer/module.f.ts +70 -0
  64. package/json/serializer/{test.f.mjs → test.f.ts} +3 -3
  65. package/json/{test.f.mjs → test.f.ts} +3 -3
  66. package/json/tokenizer/{module.f.mjs → module.f.ts} +29 -36
  67. package/json/tokenizer/{test.f.mjs → test.f.ts} +9 -8
  68. package/nanvm-lib/src/extension.rs +15 -4
  69. package/nanvm-lib/src/interface.rs +7 -10
  70. package/nanvm-lib/src/lib.rs +3 -3
  71. package/nanvm-lib/src/naive.rs +10 -3
  72. package/nanvm-lib/src/nanenum.rs +5 -1
  73. package/nanvm-lib/tests/{test.f.mjs → test.f.ts} +7 -6
  74. package/nodejs/version/{main.mjs → main.ts} +1 -1
  75. package/nodejs/version/module.f.ts +42 -0
  76. package/nodejs/version/{test.f.mjs → test.f.ts} +11 -12
  77. package/package.json +9 -9
  78. package/text/ascii/{module.f.mjs → module.f.ts} +10 -8
  79. package/text/ascii/{test.f.mjs → test.f.ts} +4 -4
  80. package/text/module.f.ts +30 -0
  81. package/text/sgr/{module.f.mjs → module.f.ts} +3 -5
  82. package/text/{test.f.mjs → test.f.ts} +5 -4
  83. package/text/utf16/module.f.ts +108 -0
  84. package/text/utf16/{test.f.mjs → test.f.ts} +7 -6
  85. package/text/utf8/{module.f.mjs → module.f.ts} +29 -23
  86. package/text/utf8/{test.f.mjs → test.f.ts} +4 -4
  87. package/tsconfig.json +4 -1
  88. package/types/array/module.f.ts +89 -0
  89. package/types/array/{test.f.mjs → test.f.ts} +3 -3
  90. package/types/bigfloat/{module.f.mjs → module.f.ts} +25 -20
  91. package/types/bigfloat/{test.f.mjs → test.f.ts} +1 -1
  92. package/types/bigint/{module.f.mjs → module.f.ts} +29 -28
  93. package/types/bigint/{test.f.mjs → test.f.ts} +2 -2
  94. package/types/bit_vec/{module.f.mjs → module.f.ts} +16 -37
  95. package/types/bit_vec/{test.f.mjs → test.f.ts} +1 -1
  96. package/types/btree/find/module.f.ts +92 -0
  97. package/types/btree/find/{test.f.mjs → test.f.ts} +20 -16
  98. package/types/btree/{module.f.mjs → module.f.ts} +9 -9
  99. package/types/btree/remove/{module.f.mjs → module.f.ts} +43 -53
  100. package/types/btree/remove/{test.f.mjs → test.f.ts} +19 -15
  101. package/types/btree/set/{module.f.mjs → module.f.ts} +17 -20
  102. package/types/btree/set/{test.f.mjs → test.f.ts} +96 -66
  103. package/types/btree/{test.f.mjs → test.f.ts} +34 -26
  104. package/types/btree/types/module.f.ts +27 -0
  105. package/types/byte_set/module.f.ts +70 -0
  106. package/types/byte_set/{test.f.mjs → test.f.ts} +8 -7
  107. package/types/function/compare/module.f.ts +26 -0
  108. package/types/function/compare/{test.f.mjs → test.f.ts} +1 -1
  109. package/types/function/module.f.ts +43 -0
  110. package/types/function/operator/module.f.ts +63 -0
  111. package/types/function/test.f.ts +20 -0
  112. package/types/list/module.f.ts +345 -0
  113. package/types/list/{test.f.mjs → test.f.ts} +30 -24
  114. package/types/map/module.f.ts +65 -0
  115. package/types/map/{test.f.mjs → test.f.ts} +6 -5
  116. package/types/nibble_set/module.f.ts +34 -0
  117. package/types/nibble_set/{test.f.mjs → test.f.ts} +3 -3
  118. package/types/nullable/module.f.ts +9 -0
  119. package/types/nullable/{test.f.mjs → test.f.ts} +2 -2
  120. package/types/number/module.f.ts +16 -0
  121. package/types/number/{test.f.mjs → test.f.ts} +7 -5
  122. package/types/object/module.f.ts +30 -0
  123. package/types/object/{test.f.mjs → test.f.ts} +2 -2
  124. package/types/range/module.f.ts +10 -0
  125. package/types/range/{test.f.mjs → test.f.ts} +1 -1
  126. package/types/range_map/module.f.ts +70 -0
  127. package/types/range_map/{test.f.mjs → test.f.ts} +82 -57
  128. package/types/result/module.f.ts +20 -0
  129. package/types/result/{module.mjs → module.ts} +4 -3
  130. package/types/sorted_list/module.f.ts +83 -0
  131. package/types/sorted_list/{test.f.mjs → test.f.ts} +14 -12
  132. package/types/sorted_set/module.f.ts +36 -0
  133. package/types/sorted_set/{test.f.mjs → test.f.ts} +14 -12
  134. package/types/string/module.f.ts +24 -0
  135. package/types/string/{test.f.mjs → test.f.ts} +2 -2
  136. package/types/string_set/module.f.ts +37 -0
  137. package/types/string_set/{test.f.mjs → test.f.ts} +2 -2
  138. package/com/cpp/testlib.f.mjs +0 -8
  139. package/com/cs/testlib.f.mjs +0 -8
  140. package/com/rust/module.f.mjs +0 -272
  141. package/com/rust/testlib.f.mjs +0 -8
  142. package/com/types/module.f.mjs +0 -67
  143. package/commonjs/build/module.f.mjs +0 -100
  144. package/commonjs/module/function/module.f.mjs +0 -21
  145. package/commonjs/module/module.f.mjs +0 -53
  146. package/commonjs/module.f.mjs +0 -11
  147. package/commonjs/package/dependencies/module.f.mjs +0 -22
  148. package/commonjs/package/module.f.mjs +0 -36
  149. package/dev/index.mjs +0 -3
  150. package/dev/test.mjs +0 -60
  151. package/fsm/module.f.mjs +0 -99
  152. package/html/module.f.mjs +0 -102
  153. package/js/tokenizer/module.f.mjs +0 -872
  154. package/json/module.f.mjs +0 -89
  155. package/json/serializer/module.f.mjs +0 -87
  156. package/jsr.json +0 -66
  157. package/nodejs/version/module.f.mjs +0 -47
  158. package/out/com/cpp/module.f.d.mts +0 -7
  159. package/out/com/cpp/module.f.mjs +0 -130
  160. package/out/com/cpp/test.f.d.mts +0 -2
  161. package/out/com/cpp/test.f.mjs +0 -40
  162. package/out/com/cpp/testlib.f.d.mts +0 -2
  163. package/out/com/cpp/testlib.f.mjs +0 -7
  164. package/out/com/cs/module.f.d.mts +0 -7
  165. package/out/com/cs/module.f.mjs +0 -104
  166. package/out/com/cs/test.f.d.mts +0 -2
  167. package/out/com/cs/test.f.mjs +0 -43
  168. package/out/com/cs/testlib.f.d.mts +0 -2
  169. package/out/com/cs/testlib.f.mjs +0 -7
  170. package/out/com/rust/module.f.d.mts +0 -23
  171. package/out/com/rust/module.f.mjs +0 -224
  172. package/out/com/rust/test.f.d.mts +0 -2
  173. package/out/com/rust/test.f.mjs +0 -123
  174. package/out/com/rust/testlib.f.d.mts +0 -2
  175. package/out/com/rust/testlib.f.mjs +0 -7
  176. package/out/com/test/build.d.mts +0 -1
  177. package/out/com/test/build.f.d.mts +0 -26
  178. package/out/com/test/build.f.mjs +0 -98
  179. package/out/com/test/build.mjs +0 -40
  180. package/out/com/types/module.f.d.mts +0 -23
  181. package/out/com/types/module.f.mjs +0 -51
  182. package/out/com/types/testlib.f.d.mts +0 -44
  183. package/out/com/types/testlib.f.mjs +0 -30
  184. package/out/commonjs/build/module.f.d.mts +0 -20
  185. package/out/commonjs/build/module.f.mjs +0 -107
  186. package/out/commonjs/build/test.f.d.mts +0 -3
  187. package/out/commonjs/build/test.f.mjs +0 -102
  188. package/out/commonjs/module/function/module.f.d.mts +0 -5
  189. package/out/commonjs/module/function/module.f.mjs +0 -15
  190. package/out/commonjs/module/module.f.d.mts +0 -52
  191. package/out/commonjs/module/module.f.mjs +0 -48
  192. package/out/commonjs/module.d.mts +0 -3
  193. package/out/commonjs/module.f.d.mts +0 -2
  194. package/out/commonjs/module.f.mjs +0 -10
  195. package/out/commonjs/module.mjs +0 -26
  196. package/out/commonjs/package/dependencies/module.f.d.mts +0 -6
  197. package/out/commonjs/package/dependencies/module.f.mjs +0 -21
  198. package/out/commonjs/package/dependencies/test.f.d.mts +0 -2
  199. package/out/commonjs/package/dependencies/test.f.mjs +0 -15
  200. package/out/commonjs/package/module.f.d.mts +0 -21
  201. package/out/commonjs/package/module.f.mjs +0 -40
  202. package/out/commonjs/package/test.f.d.mts +0 -2
  203. package/out/commonjs/package/test.f.mjs +0 -27
  204. package/out/commonjs/path/module.f.d.mts +0 -60
  205. package/out/commonjs/path/module.f.mjs +0 -171
  206. package/out/commonjs/path/test.f.d.mts +0 -25
  207. package/out/commonjs/path/test.f.mjs +0 -231
  208. package/out/commonjs/test.d.mts +0 -8
  209. package/out/commonjs/test.mjs +0 -87
  210. package/out/crypto/prime_field/module.f.d.mts +0 -67
  211. package/out/crypto/prime_field/module.f.mjs +0 -110
  212. package/out/crypto/prime_field/test.f.d.mts +0 -13
  213. package/out/crypto/prime_field/test.f.mjs +0 -152
  214. package/out/crypto/secp/module.f.d.mts +0 -110
  215. package/out/crypto/secp/module.f.mjs +0 -173
  216. package/out/crypto/secp/test.f.d.mts +0 -5
  217. package/out/crypto/secp/test.f.mjs +0 -78
  218. package/out/crypto/sha2/module.f.d.mts +0 -15
  219. package/out/crypto/sha2/module.f.mjs +0 -172
  220. package/out/crypto/sha2/test.f.d.mts +0 -10
  221. package/out/crypto/sha2/test.f.mjs +0 -86
  222. package/out/dev/index.d.mts +0 -1
  223. package/out/dev/index.mjs +0 -2
  224. package/out/dev/module.d.mts +0 -26
  225. package/out/dev/module.f.d.mts +0 -1
  226. package/out/dev/module.f.mjs +0 -2
  227. package/out/dev/module.mjs +0 -167
  228. package/out/dev/test/module.f.d.mts +0 -25
  229. package/out/dev/test/module.f.mjs +0 -134
  230. package/out/dev/test.d.mts +0 -3
  231. package/out/dev/test.f.d.mts +0 -9
  232. package/out/dev/test.f.mjs +0 -58
  233. package/out/dev/test.mjs +0 -52
  234. package/out/djs/module.f.d.mts +0 -20
  235. package/out/djs/module.f.mjs +0 -79
  236. package/out/djs/parser/module.f.d.mts +0 -56
  237. package/out/djs/parser/module.f.mjs +0 -448
  238. package/out/djs/parser/test.f.d.mts +0 -13
  239. package/out/djs/parser/test.f.mjs +0 -569
  240. package/out/djs/test.f.d.mts +0 -12
  241. package/out/djs/test.f.mjs +0 -84
  242. package/out/djs/tokenizer/module.f.d.mts +0 -13
  243. package/out/djs/tokenizer/module.f.mjs +0 -91
  244. package/out/djs/tokenizer/test.f.d.mts +0 -7
  245. package/out/djs/tokenizer/test.f.mjs +0 -530
  246. package/out/fsc/module.f.d.mts +0 -7
  247. package/out/fsc/module.f.mjs +0 -105
  248. package/out/fsc/test.f.d.mts +0 -4
  249. package/out/fsc/test.f.mjs +0 -19
  250. package/out/fsm/module.f.d.mts +0 -14
  251. package/out/fsm/module.f.mjs +0 -80
  252. package/out/fsm/test.f.d.mts +0 -5
  253. package/out/fsm/test.f.mjs +0 -138
  254. package/out/html/module.f.d.mts +0 -17
  255. package/out/html/module.f.mjs +0 -80
  256. package/out/html/test.f.d.mts +0 -10
  257. package/out/html/test.f.mjs +0 -45
  258. package/out/issues/test.f.d.mts +0 -16
  259. package/out/issues/test.f.mjs +0 -66
  260. package/out/js/tokenizer/module.f.d.mts +0 -163
  261. package/out/js/tokenizer/module.f.mjs +0 -729
  262. package/out/js/tokenizer/test.f.d.mts +0 -9
  263. package/out/js/tokenizer/test.f.mjs +0 -906
  264. package/out/json/module.f.d.mts +0 -33
  265. package/out/json/module.f.mjs +0 -89
  266. package/out/json/parser/module.f.d.mts +0 -32
  267. package/out/json/parser/module.f.mjs +0 -224
  268. package/out/json/parser/test.f.d.mts +0 -5
  269. package/out/json/parser/test.f.mjs +0 -329
  270. package/out/json/serializer/module.f.d.mts +0 -36
  271. package/out/json/serializer/module.f.mjs +0 -67
  272. package/out/json/serializer/test.f.d.mts +0 -8
  273. package/out/json/serializer/test.f.mjs +0 -87
  274. package/out/json/test.f.d.mts +0 -8
  275. package/out/json/test.f.mjs +0 -61
  276. package/out/json/tokenizer/module.f.d.mts +0 -13
  277. package/out/json/tokenizer/module.f.mjs +0 -78
  278. package/out/json/tokenizer/test.f.d.mts +0 -6
  279. package/out/json/tokenizer/test.f.mjs +0 -420
  280. package/out/nanvm-lib/tests/test.f.d.mts +0 -36
  281. package/out/nanvm-lib/tests/test.f.mjs +0 -87
  282. package/out/nodejs/version/main.d.mts +0 -1
  283. package/out/nodejs/version/main.mjs +0 -3
  284. package/out/nodejs/version/module.f.d.mts +0 -12
  285. package/out/nodejs/version/module.f.mjs +0 -34
  286. package/out/nodejs/version/test.f.d.mts +0 -2
  287. package/out/nodejs/version/test.f.mjs +0 -97
  288. package/out/text/ascii/module.f.d.mts +0 -70
  289. package/out/text/ascii/module.f.mjs +0 -154
  290. package/out/text/ascii/test.f.d.mts +0 -4
  291. package/out/text/ascii/test.f.mjs +0 -14
  292. package/out/text/module.f.d.mts +0 -13
  293. package/out/text/module.f.mjs +0 -19
  294. package/out/text/sgr/module.f.d.mts +0 -12
  295. package/out/text/sgr/module.f.mjs +0 -17
  296. package/out/text/test.f.d.mts +0 -2
  297. package/out/text/test.f.mjs +0 -19
  298. package/out/text/utf16/module.f.d.mts +0 -12
  299. package/out/text/utf16/module.f.mjs +0 -86
  300. package/out/text/utf16/test.f.d.mts +0 -6
  301. package/out/text/utf16/test.f.mjs +0 -145
  302. package/out/text/utf8/module.f.d.mts +0 -10
  303. package/out/text/utf8/module.f.mjs +0 -126
  304. package/out/text/utf8/test.f.d.mts +0 -6
  305. package/out/text/utf8/test.f.mjs +0 -175
  306. package/out/types/array/module.f.d.mts +0 -31
  307. package/out/types/array/module.f.mjs +0 -95
  308. package/out/types/array/test.f.d.mts +0 -10
  309. package/out/types/array/test.f.mjs +0 -116
  310. package/out/types/bigfloat/module.f.d.mts +0 -6
  311. package/out/types/bigfloat/module.f.mjs +0 -77
  312. package/out/types/bigfloat/test.f.d.mts +0 -6
  313. package/out/types/bigfloat/test.f.mjs +0 -349
  314. package/out/types/bigint/module.f.d.mts +0 -29
  315. package/out/types/bigint/module.f.mjs +0 -114
  316. package/out/types/bigint/test.f.d.mts +0 -16
  317. package/out/types/bigint/test.f.mjs +0 -199
  318. package/out/types/bit_vec/module.f.d.mts +0 -158
  319. package/out/types/bit_vec/module.f.mjs +0 -194
  320. package/out/types/bit_vec/test.f.d.mts +0 -23
  321. package/out/types/bit_vec/test.f.mjs +0 -210
  322. package/out/types/btree/find/module.f.d.mts +0 -36
  323. package/out/types/btree/find/module.f.mjs +0 -137
  324. package/out/types/btree/find/test.f.d.mts +0 -2
  325. package/out/types/btree/find/test.f.mjs +0 -156
  326. package/out/types/btree/module.f.d.mts +0 -5
  327. package/out/types/btree/module.f.mjs +0 -34
  328. package/out/types/btree/remove/module.f.d.mts +0 -14
  329. package/out/types/btree/remove/module.f.mjs +0 -209
  330. package/out/types/btree/remove/test.f.d.mts +0 -7
  331. package/out/types/btree/remove/test.f.mjs +0 -638
  332. package/out/types/btree/set/module.f.d.mts +0 -5
  333. package/out/types/btree/set/module.f.mjs +0 -114
  334. package/out/types/btree/set/test.f.d.mts +0 -2
  335. package/out/types/btree/set/test.f.mjs +0 -390
  336. package/out/types/btree/test.f.d.mts +0 -13
  337. package/out/types/btree/test.f.mjs +0 -83
  338. package/out/types/btree/types/module.f.d.mts +0 -14
  339. package/out/types/btree/types/module.f.mjs +0 -50
  340. package/out/types/byte_set/module.f.d.mts +0 -25
  341. package/out/types/byte_set/module.f.mjs +0 -42
  342. package/out/types/byte_set/test.f.d.mts +0 -13
  343. package/out/types/byte_set/test.f.mjs +0 -123
  344. package/out/types/function/compare/module.f.d.mts +0 -23
  345. package/out/types/function/compare/module.f.mjs +0 -22
  346. package/out/types/function/compare/test.f.d.mts +0 -2
  347. package/out/types/function/compare/test.f.mjs +0 -8
  348. package/out/types/function/module.f.d.mts +0 -51
  349. package/out/types/function/module.f.mjs +0 -44
  350. package/out/types/function/operator/module.f.d.mts +0 -60
  351. package/out/types/function/operator/module.f.mjs +0 -60
  352. package/out/types/function/test.f.d.mts +0 -2
  353. package/out/types/function/test.f.mjs +0 -15
  354. package/out/types/list/module.f.d.mts +0 -82
  355. package/out/types/list/module.f.mjs +0 -269
  356. package/out/types/list/test.f.d.mts +0 -38
  357. package/out/types/list/test.f.mjs +0 -401
  358. package/out/types/map/module.f.d.mts +0 -21
  359. package/out/types/map/module.f.mjs +0 -54
  360. package/out/types/map/test.f.d.mts +0 -5
  361. package/out/types/map/test.f.mjs +0 -115
  362. package/out/types/nibble_set/module.f.d.mts +0 -16
  363. package/out/types/nibble_set/module.f.mjs +0 -19
  364. package/out/types/nibble_set/test.f.d.mts +0 -13
  365. package/out/types/nibble_set/test.f.mjs +0 -90
  366. package/out/types/nullable/module.f.d.mts +0 -9
  367. package/out/types/nullable/module.f.mjs +0 -9
  368. package/out/types/nullable/test.f.d.mts +0 -2
  369. package/out/types/nullable/test.f.mjs +0 -12
  370. package/out/types/number/module.f.d.mts +0 -7
  371. package/out/types/number/module.f.mjs +0 -12
  372. package/out/types/number/test.f.d.mts +0 -11
  373. package/out/types/number/test.f.mjs +0 -126
  374. package/out/types/object/module.f.d.mts +0 -22
  375. package/out/types/object/module.f.mjs +0 -27
  376. package/out/types/object/test.f.d.mts +0 -5
  377. package/out/types/object/test.f.mjs +0 -17
  378. package/out/types/range/module.f.d.mts +0 -6
  379. package/out/types/range/module.f.mjs +0 -6
  380. package/out/types/range/test.f.d.mts +0 -2
  381. package/out/types/range/test.f.mjs +0 -18
  382. package/out/types/range_map/module.f.d.mts +0 -19
  383. package/out/types/range_map/module.f.mjs +0 -84
  384. package/out/types/range_map/test.f.d.mts +0 -6
  385. package/out/types/range_map/test.f.mjs +0 -201
  386. package/out/types/result/module.d.mts +0 -7
  387. package/out/types/result/module.f.d.mts +0 -22
  388. package/out/types/result/module.f.mjs +0 -25
  389. package/out/types/result/module.mjs +0 -16
  390. package/out/types/sorted_list/module.f.d.mts +0 -53
  391. package/out/types/sorted_list/module.f.mjs +0 -102
  392. package/out/types/sorted_list/test.f.d.mts +0 -5
  393. package/out/types/sorted_list/test.f.mjs +0 -66
  394. package/out/types/sorted_set/module.f.d.mts +0 -19
  395. package/out/types/sorted_set/module.f.mjs +0 -29
  396. package/out/types/sorted_set/test.f.d.mts +0 -6
  397. package/out/types/sorted_set/test.f.mjs +0 -80
  398. package/out/types/string/module.f.d.mts +0 -9
  399. package/out/types/string/module.f.mjs +0 -17
  400. package/out/types/string/test.f.d.mts +0 -15
  401. package/out/types/string/test.f.mjs +0 -58
  402. package/out/types/string_set/module.f.d.mts +0 -13
  403. package/out/types/string_set/module.f.mjs +0 -29
  404. package/out/types/string_set/test.f.d.mts +0 -5
  405. package/out/types/string_set/test.f.mjs +0 -65
  406. package/text/module.f.mjs +0 -27
  407. package/text/utf16/module.f.mjs +0 -96
  408. package/types/array/module.f.mjs +0 -119
  409. package/types/btree/find/module.f.mjs +0 -125
  410. package/types/btree/types/module.f.mjs +0 -64
  411. package/types/byte_set/module.f.mjs +0 -61
  412. package/types/function/compare/module.f.mjs +0 -29
  413. package/types/function/module.f.mjs +0 -50
  414. package/types/function/operator/module.f.mjs +0 -78
  415. package/types/function/test.f.mjs +0 -17
  416. package/types/list/module.f.mjs +0 -320
  417. package/types/map/module.f.mjs +0 -67
  418. package/types/nibble_set/module.f.mjs +0 -28
  419. package/types/nullable/module.f.mjs +0 -11
  420. package/types/number/module.f.mjs +0 -16
  421. package/types/object/module.f.mjs +0 -33
  422. package/types/range/module.f.mjs +0 -8
  423. package/types/range_map/module.f.mjs +0 -84
  424. package/types/result/module.f.mjs +0 -28
  425. package/types/sorted_list/module.f.mjs +0 -107
  426. package/types/sorted_set/module.f.mjs +0 -38
  427. package/types/string/module.f.mjs +0 -22
  428. package/types/string_set/module.f.mjs +0 -36
@@ -1,13 +1,14 @@
1
- import * as tokenizer from './module.f.mjs'
2
- import * as list from '../../types/list/module.f.mjs'
1
+ import * as tokenizer from './module.f.ts'
2
+ import * as list from '../../types/list/module.f.ts'
3
3
  const { toArray } = list
4
- import * as djs from '../../djs/module.f.mjs'
5
- import * as o from '../../types/object/module.f.mjs'
4
+ import * as djs from '../../djs/module.f.ts'
5
+ import * as o from '../../types/object/module.f.ts'
6
6
  const { sort } = o
7
- import * as encoding from '../../text/utf16/module.f.mjs'
7
+ import * as encoding from '../../text/utf16/module.f.ts'
8
8
 
9
- /** @type {(s: string) => readonly tokenizer.JsToken[]} */
10
- const tokenizeString = s => toArray(tokenizer.tokenize(encoding.stringToList(s)))
9
+ const tokenizeString
10
+ : (s: string) => readonly tokenizer.JsToken[]
11
+ = s => toArray(tokenizer.tokenize(encoding.stringToList(s)))
11
12
 
12
13
  const stringify = djs.stringify(sort)
13
14
 
@@ -91,11 +92,11 @@ export default {
91
92
  },
92
93
  () => {
93
94
  const result = stringify(tokenizeString('"\r"'))
94
- if (result !== '[{"kind":"error","message":"unterminated string literal"},{"kind":"nl"},{"kind":"error","message":"\\" are missing"}]') { throw result }
95
+ if (result !== '[{"kind":"error","message":"unterminated string literal"},{"kind":"nl"},{"kind":"error","message":"\\" are missing"}]') { throw result }
95
96
  },
96
97
  () => {
97
98
  const result = stringify(tokenizeString('"\n null'))
98
- if (result !== '[{"kind":"error","message":"unterminated string literal"},{"kind":"nl"},{"kind":"null"}]') { throw result }
99
+ if (result !== '[{"kind":"error","message":"unterminated string literal"},{"kind":"nl"},{"kind":"null"}]') { throw result }
99
100
  },
100
101
  () => {
101
102
  const result = stringify(tokenizeString('"\\b\\f\\n\\r\\t"'))
@@ -613,4 +614,4 @@ export default {
613
614
  if (result !== '[{"kind":"/*","value":" multiline comment *\\n * *"},{"kind":"nl"}]') { throw result }
614
615
  },
615
616
  ]
616
- }
617
+ }
@@ -0,0 +1,94 @@
1
+ import * as list from '../types/list/module.f.ts'
2
+ const { next, flat, map } = list
3
+ import * as string from '../types/string/module.f.ts'
4
+ const { concat } = string
5
+ import * as object from '../types/object/module.f.ts'
6
+ const { at } = object
7
+ import * as f from '../types/function/module.f.ts'
8
+ const { compose, fn } = f
9
+ const { entries } = Object
10
+ import * as s from './serializer/module.f.ts'
11
+ const { objectWrap, arrayWrap, stringSerialize, numberSerialize, nullSerialize, boolSerialize } = s
12
+
13
+ type Object = {
14
+ readonly [k in string]: Unknown
15
+ }
16
+
17
+ type Array = readonly Unknown[]
18
+
19
+ export type Unknown = Object|boolean|string|number|null|Array
20
+
21
+ export const setProperty
22
+ : (value: Unknown) => (path: list.List<string>) => (src: Unknown) => Unknown
23
+ = value => {
24
+ const f
25
+ : (path: list.List<string>) => (src: Unknown) => Unknown
26
+ = path => src => {
27
+ const result = next(path)
28
+ if (result === null) { return value }
29
+ const srcObject = (src === null || typeof src !== 'object' || src instanceof Array) ? {} : src
30
+ const { first, tail } = result
31
+ return { ...srcObject, [first]: f(tail)(at(first)(srcObject)) }
32
+ }
33
+ return f
34
+ }
35
+
36
+ const colon = [':']
37
+
38
+ export type Entry = object.Entry<Unknown>
39
+
40
+ type Entries = list.List<Entry>
41
+
42
+ type MapEntries = (entries: Entries) => Entries
43
+
44
+ export const serialize
45
+ : (mapEntries: MapEntries) => (value: Unknown) => list.List<string>
46
+ = sort => {
47
+ const propertySerialize
48
+ : (kv: readonly[string, Unknown]) => list.List<string>
49
+ = ([k, v]) => flat([
50
+ stringSerialize(k),
51
+ colon,
52
+ f(v)
53
+ ])
54
+ const mapPropertySerialize = map(propertySerialize)
55
+ const objectSerialize
56
+ : (object: Object) => list.List<string>
57
+ = fn(entries)
58
+ .then(sort)
59
+ .then(mapPropertySerialize)
60
+ .then(objectWrap)
61
+ .result
62
+ const f
63
+ : (value: Unknown) => list.List<string>
64
+ = value => {
65
+ switch (typeof value) {
66
+ case 'boolean': { return boolSerialize(value) }
67
+ case 'number': { return numberSerialize(value) }
68
+ case 'string': { return stringSerialize(value) }
69
+ default: {
70
+ if (value === null) { return nullSerialize }
71
+ if (value instanceof Array) { return arraySerialize(value) }
72
+ return objectSerialize(value)
73
+ }
74
+ }
75
+ }
76
+ const arraySerialize = compose(map(f))(arrayWrap)
77
+ return f
78
+ }
79
+
80
+ /**
81
+ * The standard `JSON.stringify` rules determined by
82
+ * https://262.ecma-international.org/6.0/#sec-ordinary-object-internal-methods-and-internal-slots-ownpropertykeys
83
+ */
84
+ export const stringify
85
+ : (mapEntries: MapEntries) => (value: Unknown) => string
86
+ = sort => compose(serialize(sort))(concat)
87
+
88
+ export const parse
89
+ : (value: string) => Unknown
90
+ = JSON.parse
91
+
92
+ export const isObject
93
+ = (value: Unknown): value is Object =>
94
+ typeof value === 'object' && value !== null && !(value instanceof Array)
@@ -1,122 +1,116 @@
1
- // @ts-self-types="./module.f.d.mts"
2
- import * as result from '../../types/result/module.f.mjs'
3
- import * as list from '../../types/list/module.f.mjs'
1
+ import * as result from '../../types/result/module.f.ts'
2
+ import * as list from '../../types/list/module.f.ts'
4
3
  const { fold, first, drop, toArray } = list
5
- import * as Operator from '../../types/function/operator/module.f.mjs'
6
- import * as Tokenizer from '../tokenizer/module.f.mjs'
7
- import * as map from '../../types/map/module.f.mjs'
4
+ import * as Operator from '../../types/function/operator/module.f.ts'
5
+ import * as Tokenizer from '../tokenizer/module.f.ts'
6
+ import * as map from '../../types/map/module.f.ts'
8
7
  const { setReplace } = map
9
- import * as Json from '../module.f.mjs'
10
- import * as o from '../../types/object/module.f.mjs'
8
+ import * as Json from '../module.f.ts'
9
+ import * as o from '../../types/object/module.f.ts'
11
10
  const { fromMap } = o
12
11
 
12
+ type JsonObject = {
13
+ readonly kind: 'object'
14
+ readonly values: map.Map<Json.Unknown>
15
+ readonly key: string
16
+ }
17
+
18
+ type JsonArray = {
19
+ readonly kind: 'array'
20
+ readonly values: list.List<Json.Unknown>
21
+ }
22
+
23
+ type JsonStackElement = |
24
+ JsonObject |
25
+ JsonArray
26
+
27
+ type JsonStack = list.List<JsonStackElement>
28
+
29
+ type StateParse = {
30
+ readonly status: '' | '[' | '[v' | '[,' | '{' | '{k' | '{:' | '{v' | '{,'
31
+ readonly top: JsonStackElement | null
32
+ readonly stack: JsonStack
33
+ }
34
+
35
+ type StateResult = {
36
+ readonly status: 'result'
37
+ readonly value: Json.Unknown
38
+ }
39
+
40
+ type StateError = {
41
+ readonly status: 'error'
42
+ readonly message: string
43
+ }
44
+
45
+ type JsonState = |
46
+ StateParse |
47
+ StateResult |
48
+ StateError
49
+
50
+ const addKeyToObject
51
+ : (obj: JsonObject) => (key: string) => JsonObject
52
+ = obj => key => ({ kind: 'object', values: obj.values, key: key })
53
+
54
+ const addValueToObject
55
+ : (obj: JsonObject) => (value: Json.Unknown) => JsonObject
56
+ = obj => value => ({ kind: 'object', values: setReplace(obj.key)(value)(obj.values), key: '' })
57
+
58
+ const addToArray
59
+ : (array: JsonArray) => (value: Json.Unknown) => JsonArray
60
+ = array => value => ({ kind: 'array', values: list.concat(array.values)([value]) })
13
61
 
14
- /**
15
- * @typedef {{
16
- * readonly kind: 'object'
17
- * readonly values: map.Map<Json.Unknown>
18
- * readonly key: string
19
- * }} JsonObject
20
- * */
21
-
22
- /**
23
- * @typedef {{
24
- * readonly kind: 'array'
25
- * readonly values: list.List<Json.Unknown>
26
- * }} JsonArray
27
- * */
28
-
29
- /**
30
- * @typedef {|
31
- * JsonObject |
32
- * JsonArray
33
- * } JsonStackElement
34
- */
35
-
36
- /** @typedef {list.List<JsonStackElement>} JsonStack */
37
-
38
- /**
39
- * @typedef {{
40
- * readonly status: '' | '[' | '[v' | '[,' | '{' | '{k' | '{:' | '{v' | '{,'
41
- * readonly top: JsonStackElement | null
42
- * readonly stack: JsonStack
43
- * }} StateParse
44
- */
45
-
46
- /**
47
- * @typedef {{
48
- * readonly status: 'result'
49
- * readonly value: Json.Unknown
50
- * }} StateResult
51
- */
52
-
53
- /**
54
- * @typedef {{
55
- * readonly status: 'error'
56
- * readonly message: string
57
- * }} StateError
58
- */
59
-
60
- /**
61
- * @typedef {|
62
- * StateParse |
63
- * StateResult |
64
- * StateError
65
- * } JsonState
66
- */
67
-
68
- /** @type {(obj: JsonObject) => (key: string) => JsonObject} */
69
- const addKeyToObject = obj => key => ({ kind: 'object', values: obj.values, key: key })
70
-
71
- /** @type {(obj: JsonObject) => (value: Json.Unknown) => JsonObject} */
72
- const addValueToObject = obj => value => ({ kind: 'object', values: setReplace(obj.key)(value)(obj.values), key: '' })
73
-
74
- /** @type {(array: JsonArray) => (value: Json.Unknown) => JsonArray} */
75
- const addToArray = array => value => ({ kind: 'array', values: list.concat(array.values)([value]) })
76
-
77
- /** @type {(state: StateParse) => (key: string) => JsonState} */
78
- const pushKey = state => value => {
62
+ const pushKey
63
+ : (state: StateParse) => (key: string) => JsonState
64
+ = state => value => {
79
65
  if (state.top?.kind === 'object') { return { status: '{k', top: addKeyToObject(state.top)(value), stack: state.stack } }
80
66
  return { status: 'error', message: 'error' }
81
67
  }
82
68
 
83
- /** @type {(state: StateParse) => (value: Json.Unknown) => JsonState} */
84
- const pushValue = state => value => {
69
+ const pushValue
70
+ : (state: StateParse) => (value: Json.Unknown) => JsonState
71
+ = state => value => {
85
72
  if (state.top === null) { return { status: 'result', value: value } }
86
73
  if (state.top.kind === 'array') { return { status: '[v', top: addToArray(state.top)(value), stack: state.stack } }
87
74
  return { status: '{v', top: addValueToObject(state.top)(value), stack: state.stack }
88
75
  }
89
76
 
90
- /** @type {(state: StateParse) => JsonState} */
91
- const startArray = state => {
77
+ const startArray
78
+ : (state: StateParse) => JsonState
79
+ = state => {
92
80
  const newStack = state.top === null ? null : { first: state.top, tail: state.stack }
93
81
  return { status: '[', top: { kind: 'array', values: null }, stack: newStack }
94
82
  }
95
83
 
96
- /** @type {(state: StateParse) => JsonState} */
97
- const endArray = state => {
84
+ const endArray
85
+ : (state: StateParse) => JsonState
86
+ = state => {
98
87
  const array = state.top !== null ? toArray(state.top.values) : null
99
- /** @type {StateParse} */
100
- const newState = { status: '', top: first(null)(state.stack), stack: drop(1)(state.stack) }
88
+ const newState
89
+ : StateParse
90
+ = { status: '', top: first(null)(state.stack), stack: drop(1)(state.stack) }
101
91
  return pushValue(newState)(array)
102
92
  }
103
93
 
104
- /** @type {(state: StateParse) => JsonState} */
105
- const startObject = state => {
94
+ const startObject
95
+ : (state: StateParse) => JsonState
96
+ = state => {
106
97
  const newStack = state.top === null ? null : { first: state.top, tail: state.stack }
107
98
  return { status: '{', top: { kind: 'object', values: null, key: '' }, stack: newStack }
108
99
  }
109
100
 
110
- /** @type {(state: StateParse) => JsonState} */
111
- const endObject = state => {
101
+ const endObject
102
+ : (state: StateParse) => JsonState
103
+ = state => {
112
104
  const obj = state.top?.kind === 'object' ? fromMap(state.top.values) : null
113
- /** @type {StateParse} */
114
- const newState = { status: '', top: first(null)(state.stack), stack: drop(1)(state.stack) }
105
+ const newState
106
+ : StateParse
107
+ = { status: '', top: first(null)(state.stack), stack: drop(1)(state.stack) }
115
108
  return pushValue(newState)(obj)
116
109
  }
117
110
 
118
- /** @type {(token: Tokenizer.JsonToken) => Json.Unknown} */
119
- const tokenToValue = token => {
111
+ const tokenToValue
112
+ : (token: Tokenizer.JsonToken) => Json.Unknown
113
+ = token => {
120
114
  switch (token.kind) {
121
115
  case 'null': return null
122
116
  case 'false': return false
@@ -127,8 +121,9 @@ const tokenToValue = token => {
127
121
  }
128
122
  }
129
123
 
130
- /** @type {(token: Tokenizer.JsonToken) => boolean} */
131
- const isValueToken = token => {
124
+ const isValueToken
125
+ : (token: Tokenizer.JsonToken) => boolean
126
+ = token => {
132
127
  switch (token.kind) {
133
128
  case 'null':
134
129
  case 'false':
@@ -139,16 +134,18 @@ const isValueToken = token => {
139
134
  }
140
135
  }
141
136
 
142
- /** @type {(token: Tokenizer.JsonToken) => (state: StateParse) => JsonState}} */
143
- const parseValueOp = token => state => {
137
+ const parseValueOp
138
+ : (token: Tokenizer.JsonToken) => (state: StateParse) => JsonState
139
+ = token => state => {
144
140
  if (isValueToken(token)) { return pushValue(state)(tokenToValue(token)) }
145
141
  if (token.kind === '[') { return startArray(state) }
146
142
  if (token.kind === '{') { return startObject(state) }
147
143
  return { status: 'error', message: 'unexpected token' }
148
144
  }
149
145
 
150
- /** @type {(token: Tokenizer.JsonToken) => (state: StateParse) => JsonState}} */
151
- const parseArrayStartOp = token => state => {
146
+ const parseArrayStartOp
147
+ : (token: Tokenizer.JsonToken) => (state: StateParse) => JsonState
148
+ = token => state => {
152
149
  if (isValueToken(token)) { return pushValue(state)(tokenToValue(token)) }
153
150
  if (token.kind === '[') { return startArray(state) }
154
151
  if (token.kind === ']') { return endArray(state) }
@@ -156,41 +153,47 @@ const parseArrayStartOp = token => state => {
156
153
  return { status: 'error', message: 'unexpected token' }
157
154
  }
158
155
 
159
- /** @type {(token: Tokenizer.JsonToken) => (state: StateParse) => JsonState}} */
160
- const parseArrayValueOp = token => state => {
156
+ const parseArrayValueOp
157
+ : (token: Tokenizer.JsonToken) => (state: StateParse) => JsonState
158
+ = token => state => {
161
159
  if (token.kind === ']') { return endArray(state) }
162
160
  if (token.kind === ',') { return { status: '[,', top: state.top, stack: state.stack } }
163
161
  return { status: 'error', message: 'unexpected token' }
164
162
  }
165
163
 
166
- /** @type {(token: Tokenizer.JsonToken) => (state: StateParse) => JsonState}} */
167
- const parseObjectStartOp = token => state => {
164
+ const parseObjectStartOp
165
+ : (token: Tokenizer.JsonToken) => (state: StateParse) => JsonState
166
+ = token => state => {
168
167
  if (token.kind === 'string') { return pushKey(state)(token.value) }
169
168
  if (token.kind === '}') { return endObject(state) }
170
169
  return { status: 'error', message: 'unexpected token' }
171
170
  }
172
171
 
173
- /** @type {(token: Tokenizer.JsonToken) => (state: StateParse) => JsonState}} */
174
- const parseObjectKeyOp = token => state => {
172
+ const parseObjectKeyOp
173
+ : (token: Tokenizer.JsonToken) => (state: StateParse) => JsonState
174
+ = token => state => {
175
175
  if (token.kind === ':') { return { status: '{:', top: state.top, stack: state.stack } }
176
176
  return { status: 'error', message: 'unexpected token' }
177
177
  }
178
178
 
179
- /** @type {(token: Tokenizer.JsonToken) => (state: StateParse) => JsonState}} */
180
- const parseObjectNextOp = token => state => {
179
+ const parseObjectNextOp
180
+ : (token: Tokenizer.JsonToken) => (state: StateParse) => JsonState
181
+ = token => state => {
181
182
  if (token.kind === '}') { return endObject(state) }
182
183
  if (token.kind === ',') { return { status: '{,', top: state.top, stack: state.stack } }
183
184
  return { status: 'error', message: 'unexpected token' }
184
185
  }
185
186
 
186
- /** @type {(token: Tokenizer.JsonToken) => (state: StateParse) => JsonState}} */
187
- const parseObjectCommaOp = token => state => {
187
+ const parseObjectCommaOp
188
+ : (token: Tokenizer.JsonToken) => (state: StateParse) => JsonState
189
+ = token => state => {
188
190
  if (token.kind === 'string') { return pushKey(state)(token.value) }
189
191
  return { status: 'error', message: 'unexpected token' }
190
192
  }
191
193
 
192
- /** @type {Operator.Fold<Tokenizer.JsonToken, JsonState>} */
193
- const foldOp = token => state => {
194
+ const foldOp
195
+ : Operator.Fold<Tokenizer.JsonToken, JsonState>
196
+ = token => state => {
194
197
  switch (state.status) {
195
198
  case 'result': return { status: 'error', message: 'unexpected token' }
196
199
  case 'error': return { status: 'error', message: state.message }
@@ -206,8 +209,9 @@ const foldOp = token => state => {
206
209
  }
207
210
  }
208
211
 
209
- /** @type {(tokenList: list.List<Tokenizer.JsonToken>) => result.Result<Json.Unknown, string>} */
210
- export const parse = tokenList => {
212
+ export const parse
213
+ : (tokenList: list.List<Tokenizer.JsonToken>) => result.Result<Json.Unknown, string>
214
+ = tokenList => {
211
215
  const state = fold(foldOp)({ status: '', top: null, stack: null })(tokenList)
212
216
  switch (state.status) {
213
217
  case 'result': return result.ok(state.value)
@@ -1,14 +1,15 @@
1
- import * as parser from './module.f.mjs'
2
- import * as tokenizer from '../tokenizer/module.f.mjs'
3
- import * as list from '../../types/list/module.f.mjs'
1
+ import * as parser from './module.f.ts'
2
+ import * as tokenizer from '../tokenizer/module.f.ts'
3
+ import * as list from '../../types/list/module.f.ts'
4
4
  const { toArray } = list
5
- import * as json from '../module.f.mjs'
6
- import * as o from '../../types/object/module.f.mjs'
5
+ import * as json from '../module.f.ts'
6
+ import * as o from '../../types/object/module.f.ts'
7
7
  const { sort } = o
8
- import * as encoding from '../../text/utf16/module.f.mjs'
8
+ import * as encoding from '../../text/utf16/module.f.ts'
9
9
 
10
- /** @type {(s: string) => readonly tokenizer.JsonToken[]} */
11
- const tokenizeString = s => toArray(tokenizer.tokenize(encoding.stringToList(s)))
10
+ const tokenizeString
11
+ : (s: string) => readonly tokenizer.JsonToken[]
12
+ = s => toArray(tokenizer.tokenize(encoding.stringToList(s)))
12
13
 
13
14
  const stringify = json.stringify(sort)
14
15
 
@@ -251,4 +252,4 @@ export default {
251
252
  if (result !== '["error","unexpected token"]') { throw result }
252
253
  },
253
254
  ]
254
- }
255
+ }
@@ -0,0 +1,70 @@
1
+ import * as list from '../../types/list/module.f.ts'
2
+ const { flat, reduce, empty } = list
3
+ import * as O from '../../types/object/module.f.ts'
4
+ import * as Operator from '../../types/function/operator/module.f.ts'
5
+
6
+ type Obj<T> = {
7
+ readonly [k in string]: Unknown<T>
8
+ }
9
+
10
+ type Arr<T> = readonly Unknown<T>[]
11
+
12
+ type Primitive = |
13
+ boolean |
14
+ string |
15
+ number |
16
+ null
17
+
18
+ type Unknown<T> = |
19
+ Arr<T>|
20
+ Obj<T>|
21
+ null|
22
+ T
23
+
24
+ const jsonStringify = JSON.stringify
25
+
26
+ export const stringSerialize
27
+ : (_: string) => list.List<string>
28
+ = input => [jsonStringify(input)]
29
+
30
+ export const numberSerialize
31
+ : (_: number) => list.List<string>
32
+ = input => [jsonStringify(input)]
33
+
34
+ export const nullSerialize = ['null']
35
+
36
+ const trueSerialize = ['true']
37
+
38
+ const falseSerialize = ['false']
39
+
40
+ export const boolSerialize
41
+ : (_: boolean) => list.List<string>
42
+ = value => value ? trueSerialize : falseSerialize
43
+
44
+ const comma = [',']
45
+
46
+ const joinOp
47
+ : Operator.Reduce<list.List<string>>
48
+ = b => prior => flat([prior, comma, b])
49
+
50
+ const join
51
+ : (input: list.List<list.List<string>>) => list.List<string>
52
+ = reduce(joinOp)(empty)
53
+
54
+ const wrap
55
+ : (open: string) => (close: string) => (input: list.List<list.List<string>>) => list.List<string>
56
+ = open => close => {
57
+ const seqOpen = [open]
58
+ const seqClose = [close]
59
+ return input => flat([seqOpen, join(input), seqClose])
60
+ }
61
+
62
+ export const objectWrap = wrap('{')('}')
63
+
64
+ export const arrayWrap = wrap('[')(']')
65
+
66
+ type Entry<T> = O.Entry<Unknown<T>>
67
+
68
+ type Entries<T> = list.List<Entry<T>>
69
+
70
+ type MapEntries<T> = (entries: Entries<T>) => Entries<T>
@@ -1,5 +1,5 @@
1
- import * as _ from './module.f.mjs'
2
- import * as list from '../../types/list/module.f.mjs'
1
+ import * as _ from './module.f.ts'
2
+ import * as list from '../../types/list/module.f.ts'
3
3
  const { toArray } = list
4
4
 
5
5
  export default {
@@ -61,4 +61,4 @@ export default {
61
61
  if (result !== '["true"]') { throw result }
62
62
  }
63
63
  ]
64
- }
64
+ }
@@ -1,7 +1,7 @@
1
- import * as json from './module.f.mjs'
2
- import * as o from '../types/object/module.f.mjs'
1
+ import * as json from './module.f.ts'
2
+ import * as o from '../types/object/module.f.ts'
3
3
  const { sort } = o
4
- import * as f from '../types/function/module.f.mjs'
4
+ import * as f from '../types/function/module.f.ts'
5
5
  const { identity } = f
6
6
 
7
7
  export default {