@gent-js/gent 0.1.4

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 (336) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +136 -0
  3. package/dist/generated/packageEnv.d.ts +5 -0
  4. package/dist/generated/packageEnv.js +7 -0
  5. package/dist/generated/packageEnv.js.map +1 -0
  6. package/dist/src/buildDocumentFromJsonTemplate.d.ts +3 -0
  7. package/dist/src/buildDocumentFromJsonTemplate.js +27 -0
  8. package/dist/src/buildDocumentFromJsonTemplate.js.map +1 -0
  9. package/dist/src/buildDocumentFromTextTemplate.d.ts +3 -0
  10. package/dist/src/buildDocumentFromTextTemplate.js +27 -0
  11. package/dist/src/buildDocumentFromTextTemplate.js.map +1 -0
  12. package/dist/src/cli.d.ts +2 -0
  13. package/dist/src/cli.js +103 -0
  14. package/dist/src/cli.js.map +1 -0
  15. package/dist/src/cliConsts.d.ts +3 -0
  16. package/dist/src/cliConsts.js +3 -0
  17. package/dist/src/cliConsts.js.map +1 -0
  18. package/dist/src/cliTypes.d.ts +7 -0
  19. package/dist/src/cliTypes.js +2 -0
  20. package/dist/src/cliTypes.js.map +1 -0
  21. package/dist/src/command/commandManager/commandManager.d.ts +7 -0
  22. package/dist/src/command/commandManager/commandManager.js +83 -0
  23. package/dist/src/command/commandManager/commandManager.js.map +1 -0
  24. package/dist/src/command/commandParser/commandParser.d.ts +11 -0
  25. package/dist/src/command/commandParser/commandParser.js +90 -0
  26. package/dist/src/command/commandParser/commandParser.js.map +1 -0
  27. package/dist/src/command/commandParser/parseCommand.d.ts +2 -0
  28. package/dist/src/command/commandParser/parseCommand.js +19 -0
  29. package/dist/src/command/commandParser/parseCommand.js.map +1 -0
  30. package/dist/src/command/commandParser/types.d.ts +33 -0
  31. package/dist/src/command/commandParser/types.js +2 -0
  32. package/dist/src/command/commandParser/types.js.map +1 -0
  33. package/dist/src/command/commandParser/visitor.d.ts +2 -0
  34. package/dist/src/command/commandParser/visitor.js +160 -0
  35. package/dist/src/command/commandParser/visitor.js.map +1 -0
  36. package/dist/src/command/commands/date/anytime.d.ts +2 -0
  37. package/dist/src/command/commands/date/anytime.js +8 -0
  38. package/dist/src/command/commands/date/anytime.js.map +1 -0
  39. package/dist/src/command/commands/date/timestamp.d.ts +2 -0
  40. package/dist/src/command/commands/date/timestamp.js +71 -0
  41. package/dist/src/command/commands/date/timestamp.js.map +1 -0
  42. package/dist/src/command/commands/finance/creditCardCVV.d.ts +2 -0
  43. package/dist/src/command/commands/finance/creditCardCVV.js +8 -0
  44. package/dist/src/command/commands/finance/creditCardCVV.js.map +1 -0
  45. package/dist/src/command/commands/finance/creditCardIssuer.d.ts +2 -0
  46. package/dist/src/command/commands/finance/creditCardIssuer.js +8 -0
  47. package/dist/src/command/commands/finance/creditCardIssuer.js.map +1 -0
  48. package/dist/src/command/commands/finance/creditCardNumber.d.ts +6 -0
  49. package/dist/src/command/commands/finance/creditCardNumber.js +12 -0
  50. package/dist/src/command/commands/finance/creditCardNumber.js.map +1 -0
  51. package/dist/src/command/commands/hacker/hacker.noun.d.ts +2 -0
  52. package/dist/src/command/commands/hacker/hacker.noun.js +8 -0
  53. package/dist/src/command/commands/hacker/hacker.noun.js.map +1 -0
  54. package/dist/src/command/commands/index.d.ts +1 -0
  55. package/dist/src/command/commands/index.js +95 -0
  56. package/dist/src/command/commands/index.js.map +1 -0
  57. package/dist/src/command/commands/internet/domainName.d.ts +2 -0
  58. package/dist/src/command/commands/internet/domainName.js +8 -0
  59. package/dist/src/command/commands/internet/domainName.js.map +1 -0
  60. package/dist/src/command/commands/internet/email.d.ts +2 -0
  61. package/dist/src/command/commands/internet/email.js +8 -0
  62. package/dist/src/command/commands/internet/email.js.map +1 -0
  63. package/dist/src/command/commands/internet/httpMethod.d.ts +2 -0
  64. package/dist/src/command/commands/internet/httpMethod.js +8 -0
  65. package/dist/src/command/commands/internet/httpMethod.js.map +1 -0
  66. package/dist/src/command/commands/internet/httpStatusCode.d.ts +2 -0
  67. package/dist/src/command/commands/internet/httpStatusCode.js +8 -0
  68. package/dist/src/command/commands/internet/httpStatusCode.js.map +1 -0
  69. package/dist/src/command/commands/internet/ip.d.ts +2 -0
  70. package/dist/src/command/commands/internet/ip.js +8 -0
  71. package/dist/src/command/commands/internet/ip.js.map +1 -0
  72. package/dist/src/command/commands/internet/ipv4.d.ts +2 -0
  73. package/dist/src/command/commands/internet/ipv4.js +8 -0
  74. package/dist/src/command/commands/internet/ipv4.js.map +1 -0
  75. package/dist/src/command/commands/internet/ipv6.d.ts +2 -0
  76. package/dist/src/command/commands/internet/ipv6.js +8 -0
  77. package/dist/src/command/commands/internet/ipv6.js.map +1 -0
  78. package/dist/src/command/commands/internet/mac.d.ts +2 -0
  79. package/dist/src/command/commands/internet/mac.js +8 -0
  80. package/dist/src/command/commands/internet/mac.js.map +1 -0
  81. package/dist/src/command/commands/internet/password.d.ts +6 -0
  82. package/dist/src/command/commands/internet/password.js +12 -0
  83. package/dist/src/command/commands/internet/password.js.map +1 -0
  84. package/dist/src/command/commands/internet/pri.d.ts +2 -0
  85. package/dist/src/command/commands/internet/pri.js +13 -0
  86. package/dist/src/command/commands/internet/pri.js.map +1 -0
  87. package/dist/src/command/commands/internet/url.d.ts +2 -0
  88. package/dist/src/command/commands/internet/url.js +8 -0
  89. package/dist/src/command/commands/internet/url.js.map +1 -0
  90. package/dist/src/command/commands/internet/userAgent.d.ts +2 -0
  91. package/dist/src/command/commands/internet/userAgent.js +8 -0
  92. package/dist/src/command/commands/internet/userAgent.js.map +1 -0
  93. package/dist/src/command/commands/internet/username.d.ts +2 -0
  94. package/dist/src/command/commands/internet/username.js +8 -0
  95. package/dist/src/command/commands/internet/username.js.map +1 -0
  96. package/dist/src/command/commands/location/country.d.ts +2 -0
  97. package/dist/src/command/commands/location/country.js +8 -0
  98. package/dist/src/command/commands/location/country.js.map +1 -0
  99. package/dist/src/command/commands/location/countryCode.d.ts +7 -0
  100. package/dist/src/command/commands/location/countryCode.js +13 -0
  101. package/dist/src/command/commands/location/countryCode.js.map +1 -0
  102. package/dist/src/command/commands/location/timeZone.d.ts +2 -0
  103. package/dist/src/command/commands/location/timeZone.js +8 -0
  104. package/dist/src/command/commands/location/timeZone.js.map +1 -0
  105. package/dist/src/command/commands/lorem/lorem.sentences.d.ts +7 -0
  106. package/dist/src/command/commands/lorem/lorem.sentences.js +14 -0
  107. package/dist/src/command/commands/lorem/lorem.sentences.js.map +1 -0
  108. package/dist/src/command/commands/number/int.d.ts +7 -0
  109. package/dist/src/command/commands/number/int.js +13 -0
  110. package/dist/src/command/commands/number/int.js.map +1 -0
  111. package/dist/src/command/commands/number/pid.d.ts +2 -0
  112. package/dist/src/command/commands/number/pid.js +14 -0
  113. package/dist/src/command/commands/number/pid.js.map +1 -0
  114. package/dist/src/command/commands/others/length.d.ts +7 -0
  115. package/dist/src/command/commands/others/length.js +13 -0
  116. package/dist/src/command/commands/others/length.js.map +1 -0
  117. package/dist/src/command/commands/phone/imei.d.ts +2 -0
  118. package/dist/src/command/commands/phone/imei.js +8 -0
  119. package/dist/src/command/commands/phone/imei.js.map +1 -0
  120. package/dist/src/command/commands/phone/phone.number.d.ts +6 -0
  121. package/dist/src/command/commands/phone/phone.number.js +12 -0
  122. package/dist/src/command/commands/phone/phone.number.js.map +1 -0
  123. package/dist/src/command/commands/string/alpha.d.ts +7 -0
  124. package/dist/src/command/commands/string/alpha.js +13 -0
  125. package/dist/src/command/commands/string/alpha.js.map +1 -0
  126. package/dist/src/command/commands/string/alphanumeric.d.ts +7 -0
  127. package/dist/src/command/commands/string/alphanumeric.js +13 -0
  128. package/dist/src/command/commands/string/alphanumeric.js.map +1 -0
  129. package/dist/src/command/commands/string/binary.d.ts +7 -0
  130. package/dist/src/command/commands/string/binary.js +13 -0
  131. package/dist/src/command/commands/string/binary.js.map +1 -0
  132. package/dist/src/command/commands/string/hexadecimal.d.ts +7 -0
  133. package/dist/src/command/commands/string/hexadecimal.js +13 -0
  134. package/dist/src/command/commands/string/hexadecimal.js.map +1 -0
  135. package/dist/src/command/commands/string/numeric.d.ts +6 -0
  136. package/dist/src/command/commands/string/numeric.js +12 -0
  137. package/dist/src/command/commands/string/numeric.js.map +1 -0
  138. package/dist/src/command/commands/string/octal.d.ts +7 -0
  139. package/dist/src/command/commands/string/octal.js +13 -0
  140. package/dist/src/command/commands/string/octal.js.map +1 -0
  141. package/dist/src/command/commands/string/ulid.d.ts +2 -0
  142. package/dist/src/command/commands/string/ulid.js +8 -0
  143. package/dist/src/command/commands/string/ulid.js.map +1 -0
  144. package/dist/src/command/commands/string/uuid.d.ts +2 -0
  145. package/dist/src/command/commands/string/uuid.js +8 -0
  146. package/dist/src/command/commands/string/uuid.js.map +1 -0
  147. package/dist/src/command/commands/system/directoryPath.d.ts +2 -0
  148. package/dist/src/command/commands/system/directoryPath.js +8 -0
  149. package/dist/src/command/commands/system/directoryPath.js.map +1 -0
  150. package/dist/src/command/commands/system/filePath.d.ts +2 -0
  151. package/dist/src/command/commands/system/filePath.js +8 -0
  152. package/dist/src/command/commands/system/filePath.js.map +1 -0
  153. package/dist/src/command/commands/system/mimeType.d.ts +2 -0
  154. package/dist/src/command/commands/system/mimeType.js +8 -0
  155. package/dist/src/command/commands/system/mimeType.js.map +1 -0
  156. package/dist/src/command/commands/system/networkInterface.d.ts +2 -0
  157. package/dist/src/command/commands/system/networkInterface.js +8 -0
  158. package/dist/src/command/commands/system/networkInterface.js.map +1 -0
  159. package/dist/src/command/commands/system/semver.d.ts +2 -0
  160. package/dist/src/command/commands/system/semver.js +8 -0
  161. package/dist/src/command/commands/system/semver.js.map +1 -0
  162. package/dist/src/command/consts.d.ts +3 -0
  163. package/dist/src/command/consts.js +4 -0
  164. package/dist/src/command/consts.js.map +1 -0
  165. package/dist/src/command/index.d.ts +4 -0
  166. package/dist/src/command/index.js +3 -0
  167. package/dist/src/command/index.js.map +1 -0
  168. package/dist/src/command/type.d.ts +22 -0
  169. package/dist/src/command/type.js +2 -0
  170. package/dist/src/command/type.js.map +1 -0
  171. package/dist/src/command/utils.d.ts +2 -0
  172. package/dist/src/command/utils.js +9 -0
  173. package/dist/src/command/utils.js.map +1 -0
  174. package/dist/src/commandDocument/buildCommandDocumentFragments.d.ts +4 -0
  175. package/dist/src/commandDocument/buildCommandDocumentFragments.js +12 -0
  176. package/dist/src/commandDocument/buildCommandDocumentFragments.js.map +1 -0
  177. package/dist/src/commandDocument/createCommandDocumentFragment.d.ts +3 -0
  178. package/dist/src/commandDocument/createCommandDocumentFragment.js +14 -0
  179. package/dist/src/commandDocument/createCommandDocumentFragment.js.map +1 -0
  180. package/dist/src/commandDocument/index.d.ts +1 -0
  181. package/dist/src/commandDocument/index.js +2 -0
  182. package/dist/src/commandDocument/index.js.map +1 -0
  183. package/dist/src/commandTemplate/index.d.ts +2 -0
  184. package/dist/src/commandTemplate/index.js +3 -0
  185. package/dist/src/commandTemplate/index.js.map +1 -0
  186. package/dist/src/commandTemplate/parseAndEmbedCommandExpression.d.ts +3 -0
  187. package/dist/src/commandTemplate/parseAndEmbedCommandExpression.js +12 -0
  188. package/dist/src/commandTemplate/parseAndEmbedCommandExpression.js.map +1 -0
  189. package/dist/src/commandTemplate/types.d.ts +3 -0
  190. package/dist/src/commandTemplate/types.js +2 -0
  191. package/dist/src/commandTemplate/types.js.map +1 -0
  192. package/dist/src/common/weightedItemFeeder.d.ts +15 -0
  193. package/dist/src/common/weightedItemFeeder.js +67 -0
  194. package/dist/src/common/weightedItemFeeder.js.map +1 -0
  195. package/dist/src/consts.d.ts +14 -0
  196. package/dist/src/consts.js +17 -0
  197. package/dist/src/consts.js.map +1 -0
  198. package/dist/src/createDocumentFeeder.d.ts +5 -0
  199. package/dist/src/createDocumentFeeder.js +64 -0
  200. package/dist/src/createDocumentFeeder.js.map +1 -0
  201. package/dist/src/createGeneratingDocumentStream.d.ts +4 -0
  202. package/dist/src/createGeneratingDocumentStream.js +33 -0
  203. package/dist/src/createGeneratingDocumentStream.js.map +1 -0
  204. package/dist/src/createGeneratingLogStream.d.ts +4 -0
  205. package/dist/src/createGeneratingLogStream.js +21 -0
  206. package/dist/src/createGeneratingLogStream.js.map +1 -0
  207. package/dist/src/debugFileWriter.d.ts +5 -0
  208. package/dist/src/debugFileWriter.js +33 -0
  209. package/dist/src/debugFileWriter.js.map +1 -0
  210. package/dist/src/document/createDocumentContextIterator.d.ts +2 -0
  211. package/dist/src/document/createDocumentContextIterator.js +15 -0
  212. package/dist/src/document/createDocumentContextIterator.js.map +1 -0
  213. package/dist/src/document/generatingDocument.d.ts +7 -0
  214. package/dist/src/document/generatingDocument.js +13 -0
  215. package/dist/src/document/generatingDocument.js.map +1 -0
  216. package/dist/src/document/index.d.ts +4 -0
  217. package/dist/src/document/index.js +4 -0
  218. package/dist/src/document/index.js.map +1 -0
  219. package/dist/src/document/types.d.ts +20 -0
  220. package/dist/src/document/types.js +2 -0
  221. package/dist/src/document/types.js.map +1 -0
  222. package/dist/src/document/utils.d.ts +2 -0
  223. package/dist/src/document/utils.js +9 -0
  224. package/dist/src/document/utils.js.map +1 -0
  225. package/dist/src/index.d.ts +1 -0
  226. package/dist/src/index.js +2 -0
  227. package/dist/src/index.js.map +1 -0
  228. package/dist/src/json/abstractJsonable.d.ts +12 -0
  229. package/dist/src/json/abstractJsonable.js +33 -0
  230. package/dist/src/json/abstractJsonable.js.map +1 -0
  231. package/dist/src/json/createJsonable.d.ts +3 -0
  232. package/dist/src/json/createJsonable.js +31 -0
  233. package/dist/src/json/createJsonable.js.map +1 -0
  234. package/dist/src/json/createJsonableTransformer.d.ts +4 -0
  235. package/dist/src/json/createJsonableTransformer.js +251 -0
  236. package/dist/src/json/createJsonableTransformer.js.map +1 -0
  237. package/dist/src/json/index.d.ts +6 -0
  238. package/dist/src/json/index.js +4 -0
  239. package/dist/src/json/index.js.map +1 -0
  240. package/dist/src/json/jsonConsts.d.ts +1 -0
  241. package/dist/src/json/jsonConsts.js +9 -0
  242. package/dist/src/json/jsonConsts.js.map +1 -0
  243. package/dist/src/json/jsonTypes.d.ts +8 -0
  244. package/dist/src/json/jsonTypes.js +2 -0
  245. package/dist/src/json/jsonTypes.js.map +1 -0
  246. package/dist/src/json/jsonableClasses/arrayJsonable.d.ts +11 -0
  247. package/dist/src/json/jsonableClasses/arrayJsonable.js +40 -0
  248. package/dist/src/json/jsonableClasses/arrayJsonable.js.map +1 -0
  249. package/dist/src/json/jsonableClasses/booleanJsonable.d.ts +8 -0
  250. package/dist/src/json/jsonableClasses/booleanJsonable.js +15 -0
  251. package/dist/src/json/jsonableClasses/booleanJsonable.js.map +1 -0
  252. package/dist/src/json/jsonableClasses/nullJsonable.d.ts +8 -0
  253. package/dist/src/json/jsonableClasses/nullJsonable.js +11 -0
  254. package/dist/src/json/jsonableClasses/nullJsonable.js.map +1 -0
  255. package/dist/src/json/jsonableClasses/numberJsonable.d.ts +9 -0
  256. package/dist/src/json/jsonableClasses/numberJsonable.js +18 -0
  257. package/dist/src/json/jsonableClasses/numberJsonable.js.map +1 -0
  258. package/dist/src/json/jsonableClasses/objectJsonable.d.ts +10 -0
  259. package/dist/src/json/jsonableClasses/objectJsonable.js +14 -0
  260. package/dist/src/json/jsonableClasses/objectJsonable.js.map +1 -0
  261. package/dist/src/json/jsonableClasses/stringJsonable.d.ts +9 -0
  262. package/dist/src/json/jsonableClasses/stringJsonable.js +15 -0
  263. package/dist/src/json/jsonableClasses/stringJsonable.js.map +1 -0
  264. package/dist/src/json/jsonableParametersConsts.d.ts +7 -0
  265. package/dist/src/json/jsonableParametersConsts.js +8 -0
  266. package/dist/src/json/jsonableParametersConsts.js.map +1 -0
  267. package/dist/src/json/jsonableParametersTypes.d.ts +32 -0
  268. package/dist/src/json/jsonableParametersTypes.js +2 -0
  269. package/dist/src/json/jsonableParametersTypes.js.map +1 -0
  270. package/dist/src/json/jsonableTypes.d.ts +11 -0
  271. package/dist/src/json/jsonableTypes.js +2 -0
  272. package/dist/src/json/jsonableTypes.js.map +1 -0
  273. package/dist/src/json/parseJsonable.d.ts +2 -0
  274. package/dist/src/json/parseJsonable.js +19 -0
  275. package/dist/src/json/parseJsonable.js.map +1 -0
  276. package/dist/src/json/stringifyJsonable.d.ts +6 -0
  277. package/dist/src/json/stringifyJsonable.js +43 -0
  278. package/dist/src/json/stringifyJsonable.js.map +1 -0
  279. package/dist/src/json/utils.d.ts +2 -0
  280. package/dist/src/json/utils.js +9 -0
  281. package/dist/src/json/utils.js.map +1 -0
  282. package/dist/src/output/createFileOutput.d.ts +2 -0
  283. package/dist/src/output/createFileOutput.js +28 -0
  284. package/dist/src/output/createFileOutput.js.map +1 -0
  285. package/dist/src/output/createTcpOutput.d.ts +3 -0
  286. package/dist/src/output/createTcpOutput.js +15 -0
  287. package/dist/src/output/createTcpOutput.js.map +1 -0
  288. package/dist/src/output/createUdpOutput.d.ts +3 -0
  289. package/dist/src/output/createUdpOutput.js +5 -0
  290. package/dist/src/output/createUdpOutput.js.map +1 -0
  291. package/dist/src/output/initializeOutput.d.ts +3 -0
  292. package/dist/src/output/initializeOutput.js +38 -0
  293. package/dist/src/output/initializeOutput.js.map +1 -0
  294. package/dist/src/output/tcpDocumentStream.d.ts +16 -0
  295. package/dist/src/output/tcpDocumentStream.js +107 -0
  296. package/dist/src/output/tcpDocumentStream.js.map +1 -0
  297. package/dist/src/output/throttlingDocumentStream.d.ts +21 -0
  298. package/dist/src/output/throttlingDocumentStream.js +69 -0
  299. package/dist/src/output/throttlingDocumentStream.js.map +1 -0
  300. package/dist/src/output/udpDocumentStream.d.ts +13 -0
  301. package/dist/src/output/udpDocumentStream.js +47 -0
  302. package/dist/src/output/udpDocumentStream.js.map +1 -0
  303. package/dist/src/output/updStream.d.ts +17 -0
  304. package/dist/src/output/updStream.js +78 -0
  305. package/dist/src/output/updStream.js.map +1 -0
  306. package/dist/src/run.d.ts +4 -0
  307. package/dist/src/run.js +55 -0
  308. package/dist/src/run.js.map +1 -0
  309. package/dist/src/template/consts.d.ts +2 -0
  310. package/dist/src/template/consts.js +3 -0
  311. package/dist/src/template/consts.js.map +1 -0
  312. package/dist/src/template/index.d.ts +4 -0
  313. package/dist/src/template/index.js +4 -0
  314. package/dist/src/template/index.js.map +1 -0
  315. package/dist/src/template/templateParser/parseTemplate.d.ts +2 -0
  316. package/dist/src/template/templateParser/parseTemplate.js +11 -0
  317. package/dist/src/template/templateParser/parseTemplate.js.map +1 -0
  318. package/dist/src/template/templateParser/templateParser.d.ts +11 -0
  319. package/dist/src/template/templateParser/templateParser.js +87 -0
  320. package/dist/src/template/templateParser/templateParser.js.map +1 -0
  321. package/dist/src/template/templateParser/visitor.d.ts +4 -0
  322. package/dist/src/template/templateParser/visitor.js +60 -0
  323. package/dist/src/template/templateParser/visitor.js.map +1 -0
  324. package/dist/src/template/types.d.ts +5 -0
  325. package/dist/src/template/types.js +2 -0
  326. package/dist/src/template/types.js.map +1 -0
  327. package/dist/src/template/utils.d.ts +2 -0
  328. package/dist/src/template/utils.js +4 -0
  329. package/dist/src/template/utils.js.map +1 -0
  330. package/dist/src/types.d.ts +68 -0
  331. package/dist/src/types.js +3 -0
  332. package/dist/src/types.js.map +1 -0
  333. package/dist/src/utils.d.ts +18 -0
  334. package/dist/src/utils.js +321 -0
  335. package/dist/src/utils.js.map +1 -0
  336. package/package.json +47 -0
@@ -0,0 +1,47 @@
1
+ import * as dgram from "node:dgram";
2
+ import * as dnsPromises from "node:dns/promises";
3
+ import { ThrottlingDocumentStream } from "./throttlingDocumentStream.js";
4
+ export class UdpDocumentStream extends ThrottlingDocumentStream {
5
+ address;
6
+ port;
7
+ socketType;
8
+ constructor(options) {
9
+ super(options.eps);
10
+ this.address = options.address;
11
+ this.port = options.port;
12
+ }
13
+ _construct(callback) {
14
+ dnsPromises
15
+ .lookup(this.address, {
16
+ verbatim: true,
17
+ })
18
+ .then((lookupAddress) => {
19
+ this.socketType = lookupAddress.family === 4 ? "udp4" : "udp6";
20
+ callback();
21
+ })
22
+ .catch((reason) => callback(reason));
23
+ }
24
+ _throttledWrite(chunk, encoding, callback) {
25
+ const socketType = this.socketType;
26
+ if (socketType === undefined) {
27
+ callback(new Error("called write before socketType has not been determined."));
28
+ return;
29
+ }
30
+ const client = dgram.createSocket(socketType);
31
+ client.send(chunk.stamp(), this.port, this.address, (error) => {
32
+ client.close();
33
+ if (error !== null) {
34
+ callback(error);
35
+ return;
36
+ }
37
+ callback();
38
+ });
39
+ }
40
+ _throttledFinal(callback) {
41
+ callback();
42
+ }
43
+ _throttledDestroy(error, callback) {
44
+ callback(error);
45
+ }
46
+ }
47
+ //# sourceMappingURL=udpDocumentStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"udpDocumentStream.js","sourceRoot":"","sources":["../../../src/output/udpDocumentStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AAGjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,MAAM,OAAO,iBAAkB,SAAQ,wBAAwB;IAC5C,OAAO,CAAS;IAChB,IAAI,CAAS;IAEtB,UAAU,CAA+B;IAEjD,YAAY,OAAyB;QACnC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAEnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAEe,UAAU,CAAC,QAAwC;QACjE,WAAW;aACR,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;YACpB,QAAQ,EAAE,IAAI;SACf,CAAC;aACD,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE;YACtB,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;YAC/D,QAAQ,EAAE,CAAC;QACb,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACzC,CAAC;IAEe,eAAe,CAC7B,KAAyB,EACzB,QAAwB,EACxB,QAAwC;QAExC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,QAAQ,CACN,IAAI,KAAK,CAAC,yDAAyD,CAAC,CACrE,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC5D,MAAM,CAAC,KAAK,EAAE,CAAC;YAEf,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACnB,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAChB,OAAO;YACT,CAAC;YACD,QAAQ,EAAE,CAAC;QACb,CAAC,CAAC,CAAC;IACL,CAAC;IAES,eAAe,CAAC,QAAwC;QAChE,QAAQ,EAAE,CAAC;IACb,CAAC;IAES,iBAAiB,CACzB,KAAmB,EACnB,QAAwC;QAExC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ import * as stream from "node:stream";
2
+ export interface UdpStreamOptions extends stream.WritableOptions {
3
+ readonly address: string;
4
+ readonly port: number;
5
+ }
6
+ export declare class UpdStream extends stream.Writable {
7
+ private readonly address;
8
+ private readonly port;
9
+ private chunks;
10
+ private chunkSize;
11
+ private client;
12
+ constructor(options: UdpStreamOptions);
13
+ _construct(callback: (error?: Error | null) => void): void;
14
+ _write(chunk: any, encoding: BufferEncoding, callback: (error?: Error | null) => void): void;
15
+ _final(callback: (error?: Error | null) => void): void;
16
+ _destroy(error: Error | null, callback: (error?: Error | null) => void): void;
17
+ }
@@ -0,0 +1,78 @@
1
+ import * as dgram from "node:dgram";
2
+ import * as dnsPromises from "node:dns/promises";
3
+ import * as stream from "node:stream";
4
+ export class UpdStream extends stream.Writable {
5
+ address;
6
+ port;
7
+ chunks;
8
+ chunkSize;
9
+ client;
10
+ constructor(options) {
11
+ super(options);
12
+ this.address = options.address;
13
+ this.port = options.port;
14
+ this.chunks = [];
15
+ this.chunkSize = 0;
16
+ }
17
+ _construct(callback) {
18
+ dnsPromises
19
+ .lookup(this.address, {
20
+ verbatim: true,
21
+ })
22
+ .then((lookupAddress) => {
23
+ const socketType = lookupAddress.family === 4 ? "udp4" : "udp6";
24
+ this.client = dgram.createSocket(socketType);
25
+ callback();
26
+ })
27
+ .catch((reason) => callback(reason));
28
+ }
29
+ _write(chunk, encoding, callback) {
30
+ const client = this.client;
31
+ if (client === undefined) {
32
+ callback(new Error("called write while client has not been initialized."));
33
+ return;
34
+ }
35
+ this.chunks.push(chunk);
36
+ this.chunkSize = this.chunkSize + chunk.length;
37
+ if (this.chunkSize > this.writableHighWaterMark) {
38
+ client.send(Buffer.concat(this.chunks), this.port, this.address, (error) => {
39
+ if (error !== null) {
40
+ callback(error);
41
+ return;
42
+ }
43
+ this.chunks = [];
44
+ this.chunkSize = 0;
45
+ callback();
46
+ });
47
+ }
48
+ else {
49
+ callback();
50
+ }
51
+ }
52
+ _final(callback) {
53
+ const client = this.client;
54
+ if (client === undefined) {
55
+ callback(new Error("called write while client has not been initialized."));
56
+ return;
57
+ }
58
+ client.send(Buffer.concat(this.chunks), this.port, this.address, (error) => {
59
+ if (error !== null) {
60
+ callback(error);
61
+ return;
62
+ }
63
+ this.chunks = [];
64
+ this.chunkSize = 0;
65
+ callback();
66
+ });
67
+ }
68
+ _destroy(error, callback) {
69
+ console.log("closing udp stream.");
70
+ if (this.client !== undefined) {
71
+ this.client.close(callback);
72
+ }
73
+ else {
74
+ callback(error);
75
+ }
76
+ }
77
+ }
78
+ //# sourceMappingURL=updStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updStream.js","sourceRoot":"","sources":["../../../src/output/updStream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { ResultCode } from "./cliTypes.js";
2
+ import type { ProgramOptions } from "./types.js";
3
+ import "./command/commands/index.js";
4
+ export declare function run(programOptions: ProgramOptions): Promise<ResultCode>;
@@ -0,0 +1,55 @@
1
+ import * as fs from "node:fs";
2
+ import * as fsPromises from "node:fs/promises";
3
+ import * as nodePath from "node:path";
4
+ import { FAILED, SUCCEEDED } from "./cliConsts.js";
5
+ import { commandManager } from "./command/index.js";
6
+ import { createDocumentFeeder } from "./createDocumentFeeder.js";
7
+ import { createGeneratingDocumentStream } from "./createGeneratingDocumentStream.js";
8
+ import { debugFileWriter } from "./debugFileWriter.js";
9
+ import { initializeOutput } from "./output/initializeOutput.js";
10
+ import "./command/commands/index.js";
11
+ export async function run(programOptions) {
12
+ const { debug, count, out, templates } = programOptions;
13
+ // region out path
14
+ const outPath = out.path;
15
+ const outDirPath = nodePath.dirname(outPath);
16
+ let existsOutDir = false;
17
+ try {
18
+ const stats = await fsPromises.stat(outDirPath);
19
+ if (stats.isDirectory()) {
20
+ existsOutDir = true;
21
+ }
22
+ await fsPromises.access(outDirPath, fs.constants.W_OK);
23
+ }
24
+ catch (error) {
25
+ existsOutDir = false;
26
+ }
27
+ if (!existsOutDir) {
28
+ try {
29
+ await fsPromises.mkdir(outDirPath, { recursive: true });
30
+ }
31
+ catch (error) {
32
+ console.error(`failed to create out path directory. ${outDirPath}`);
33
+ console.log(error);
34
+ return FAILED;
35
+ }
36
+ }
37
+ try {
38
+ await fsPromises.access(outDirPath, fs.constants.W_OK);
39
+ }
40
+ catch (error) {
41
+ console.error(`cannot access out directory. ${outDirPath}`);
42
+ console.log(error);
43
+ return FAILED;
44
+ }
45
+ if (debug) {
46
+ debugFileWriter.setBaseDirectory(outDirPath);
47
+ }
48
+ // endregion
49
+ const documentFeeder = await createDocumentFeeder(templates, programOptions, commandManager);
50
+ const documentStream = createGeneratingDocumentStream(documentFeeder, count, out.type !== "file");
51
+ const writeStream = await initializeOutput(out);
52
+ documentStream.pipe(writeStream);
53
+ return SUCCEEDED;
54
+ }
55
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,QAAQ,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,6BAA6B,CAAC;AAErC,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,cAA8B;IACtD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,cAAc,CAAC;IAExD,kBAAkB;IAElB,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC;IACzB,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,YAAY,GAAY,KAAK,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,MAAM,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,YAAY,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,wCAAwC,UAAU,EAAE,CAAC,CAAC;YACpE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,UAAU,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,eAAe,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC;IAED,YAAY;IAEZ,MAAM,cAAc,GAAG,MAAM,oBAAoB,CAC/C,SAAS,EACT,cAAc,EACd,cAAc,CACf,CAAC;IAEF,MAAM,cAAc,GAAG,8BAA8B,CACnD,cAAc,EACd,KAAK,EACL,GAAG,CAAC,IAAI,KAAK,MAAM,CACpB,CAAC;IACF,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAChD,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAEjC,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const EXPRESSION_BLOCK_START: "{{";
2
+ export declare const EXPRESSION_BLOCK_END: "}}";
@@ -0,0 +1,3 @@
1
+ export const EXPRESSION_BLOCK_START = "{{";
2
+ export const EXPRESSION_BLOCK_END = "}}";
3
+ //# sourceMappingURL=consts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consts.js","sourceRoot":"","sources":["../../../src/template/consts.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAa,CAAC;AACpD,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAa,CAAC"}
@@ -0,0 +1,4 @@
1
+ export type { ExpressionTemplateFragment, StringTemplateFragment, TemplateFragment, } from "./types.js";
2
+ export { parseTemplate } from "./templateParser/parseTemplate.js";
3
+ export { isStringOnlyTemplateFragments } from "./utils.js";
4
+ export { EXPRESSION_BLOCK_START, EXPRESSION_BLOCK_END } from "./consts.js";
@@ -0,0 +1,4 @@
1
+ export { parseTemplate } from "./templateParser/parseTemplate.js";
2
+ export { isStringOnlyTemplateFragments } from "./utils.js";
3
+ export { EXPRESSION_BLOCK_START, EXPRESSION_BLOCK_END } from "./consts.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/template/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { TemplateFragment } from "../types.js";
2
+ export declare function parseTemplate(input: string): TemplateFragment[];
@@ -0,0 +1,11 @@
1
+ import { toAstVisitor } from "./visitor.js";
2
+ export function parseTemplate(input) {
3
+ const parsedTemplate = toAstVisitor(input);
4
+ if (Array.isArray(parsedTemplate)) {
5
+ return parsedTemplate;
6
+ }
7
+ else {
8
+ return [parsedTemplate];
9
+ }
10
+ }
11
+ //# sourceMappingURL=parseTemplate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseTemplate.js","sourceRoot":"","sources":["../../../../src/template/templateParser/parseTemplate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,MAAM,cAAc,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QAClC,OAAO,cAAc,CAAC;IACxB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,cAAc,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { CstParser } from "chevrotain";
2
+ export declare function lex(input: string): import("chevrotain").ILexingResult;
3
+ declare class TemplateParser extends CstParser {
4
+ constructor();
5
+ template: import("chevrotain").ParserMethod<[], import("chevrotain").CstNode>;
6
+ private templateFragment;
7
+ private literalBlock;
8
+ private expressionBlock;
9
+ }
10
+ export declare const templateParser: TemplateParser;
11
+ export {};
@@ -0,0 +1,87 @@
1
+ import { createToken, CstParser, Lexer } from "chevrotain";
2
+ import { EXPRESSION_BLOCK_END, EXPRESSION_BLOCK_START } from "../consts.js";
3
+ // region token
4
+ const LiteralBlock = createToken({
5
+ name: "LiteralBlock",
6
+ pattern: matchLiteralBlock,
7
+ line_breaks: true,
8
+ });
9
+ const ExpressionBlock = createToken({
10
+ name: "ExpressionBlock",
11
+ pattern: matchExpressionBlock,
12
+ line_breaks: false,
13
+ });
14
+ const allTokens = [ExpressionBlock, LiteralBlock];
15
+ // endregion
16
+ // region matcher
17
+ function matchLiteralBlock(text, startOffset) {
18
+ const endOffset = text.indexOf(EXPRESSION_BLOCK_START, startOffset);
19
+ if (endOffset === -1) {
20
+ return [text.substring(startOffset)];
21
+ }
22
+ else if (endOffset === startOffset) {
23
+ return null;
24
+ }
25
+ else {
26
+ let matchedString = text.substring(startOffset, endOffset);
27
+ return [matchedString];
28
+ }
29
+ }
30
+ function matchExpressionBlock(text, startOffset) {
31
+ for (let i = 0; i < EXPRESSION_BLOCK_START.length; i++) {
32
+ if (text.at(i + startOffset) !== EXPRESSION_BLOCK_START.at(i)) {
33
+ return null;
34
+ }
35
+ }
36
+ const startOfBlockEnd = text.indexOf(EXPRESSION_BLOCK_END, startOffset);
37
+ if (startOfBlockEnd === -1) {
38
+ return null;
39
+ }
40
+ const endOffset = startOfBlockEnd + EXPRESSION_BLOCK_END.length;
41
+ if (endOffset === startOffset) {
42
+ return null;
43
+ }
44
+ else {
45
+ let matchedString = text.substring(startOffset, endOffset);
46
+ return [matchedString];
47
+ }
48
+ }
49
+ // endregion
50
+ // region lexer
51
+ const lexer = new Lexer(allTokens);
52
+ export function lex(input) {
53
+ const lexingResult = lexer.tokenize(input);
54
+ if (lexingResult.errors.length > 0) {
55
+ throw Error(`lexing errors detected
56
+ ${lexingResult.errors[0]?.message}`);
57
+ }
58
+ return lexingResult;
59
+ }
60
+ // endregion
61
+ // region parser
62
+ class TemplateParser extends CstParser {
63
+ constructor() {
64
+ super(allTokens);
65
+ this.performSelfAnalysis();
66
+ }
67
+ template = this.RULE("template", () => {
68
+ this.MANY(() => {
69
+ this.SUBRULE(this.templateFragment);
70
+ });
71
+ });
72
+ templateFragment = this.RULE("templateFragment", () => {
73
+ this.OR([
74
+ { ALT: () => this.SUBRULE(this.literalBlock) },
75
+ { ALT: () => this.SUBRULE(this.expressionBlock) },
76
+ ]);
77
+ });
78
+ literalBlock = this.RULE("literalBlock", () => {
79
+ this.CONSUME(LiteralBlock);
80
+ });
81
+ expressionBlock = this.RULE("expressionBlock", () => {
82
+ this.CONSUME(ExpressionBlock);
83
+ });
84
+ }
85
+ export const templateParser = new TemplateParser();
86
+ // endregion
87
+ //# sourceMappingURL=templateParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templateParser.js","sourceRoot":"","sources":["../../../../src/template/templateParser/templateParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { TemplateFragment } from "../types.js";
2
+ type Out = TemplateFragment | TemplateFragment[];
3
+ export declare function toAstVisitor(input: string): Out;
4
+ export {};
@@ -0,0 +1,60 @@
1
+ import { pickFirst } from "../../utils.js";
2
+ import { EXPRESSION_BLOCK_END, EXPRESSION_BLOCK_START } from "../consts.js";
3
+ import { lex, templateParser } from "./templateParser.js";
4
+ const emptyLiteralFragment = "";
5
+ const BaseVisitor = templateParser.getBaseCstVisitorConstructor();
6
+ class TemplateVisitor extends BaseVisitor {
7
+ constructor() {
8
+ super();
9
+ this.validateVisitor();
10
+ }
11
+ template(children, param) {
12
+ const templateFragmentNodes = children.templateFragment;
13
+ if (templateFragmentNodes === undefined) {
14
+ return [emptyLiteralFragment];
15
+ }
16
+ return templateFragmentNodes.flatMap((templateFragmentNode) => this.visit(templateFragmentNode));
17
+ }
18
+ templateFragment(children, param) {
19
+ const literalBlockCstNode = pickFirst(children.literalBlock);
20
+ const expressionBlockCstNode = pickFirst(children.expressionBlock);
21
+ if (literalBlockCstNode !== undefined) {
22
+ return this.visit(literalBlockCstNode);
23
+ }
24
+ else if (expressionBlockCstNode !== undefined) {
25
+ return this.visit(expressionBlockCstNode);
26
+ }
27
+ else {
28
+ return [];
29
+ }
30
+ }
31
+ literalBlock(children, param) {
32
+ const literalBlockToken = pickFirst(children.LiteralBlock);
33
+ if (literalBlockToken === undefined) {
34
+ return [];
35
+ }
36
+ return literalBlockToken.image;
37
+ }
38
+ expressionBlock(children, param) {
39
+ const expressionBlockToken = pickFirst(children.ExpressionBlock);
40
+ if (expressionBlockToken === undefined) {
41
+ return [];
42
+ }
43
+ const expressionBlock = expressionBlockToken.image;
44
+ const expression = expressionBlock.substring(EXPRESSION_BLOCK_START.length, expressionBlock.length - EXPRESSION_BLOCK_END.length);
45
+ return {
46
+ expression: expression,
47
+ };
48
+ }
49
+ }
50
+ const visitor = new TemplateVisitor();
51
+ export function toAstVisitor(input) {
52
+ const lexResult = lex(input);
53
+ templateParser.input = lexResult.tokens;
54
+ const cst = templateParser.template();
55
+ if (templateParser.errors.length > 0) {
56
+ throw Error("parsing errors detected!\n" + templateParser.errors[0]?.message);
57
+ }
58
+ return visitor.visit(cst);
59
+ }
60
+ //# sourceMappingURL=visitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visitor.js","sourceRoot":"","sources":["../../../../src/template/templateParser/visitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAE5E,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAW1D,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEhC,MAAM,WAAW,GAAG,cAAc,CAAC,4BAA4B,EAAgB,CAAC;AAEhF,MAAM,eACJ,SAAQ,WAAW;IAGnB;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAEM,QAAQ,CAAC,QAA6B,EAAE,KAAe;QAC5D,MAAM,qBAAqB,GAAG,QAAQ,CAAC,gBAAgB,CAAC;QACxD,IAAI,qBAAqB,KAAK,SAAS,EAAE,CAAC;YACxC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAChC,CAAC;QACD,OAAO,qBAAqB,CAAC,OAAO,CAClC,CAAC,oBAAoB,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAC3D,CAAC;IACJ,CAAC;IAEM,gBAAgB,CACrB,QAAqC,EACrC,KAAe;QAEf,MAAM,mBAAmB,GAAG,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC7D,MAAM,sBAAsB,GAAG,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAEnE,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACzC,CAAC;aAAM,IAAI,sBAAsB,KAAK,SAAS,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEM,YAAY,CAAC,QAAiC,EAAE,KAAe;QACpE,MAAM,iBAAiB,GAAG,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC3D,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,iBAAiB,CAAC,KAAK,CAAC;IACjC,CAAC;IAEM,eAAe,CACpB,QAAoC,EACpC,KAAe;QAEf,MAAM,oBAAoB,GAAG,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QACjE,IAAI,oBAAoB,KAAK,SAAS,EAAE,CAAC;YACvC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,eAAe,GAAG,oBAAoB,CAAC,KAAK,CAAC;QACnD,MAAM,UAAU,GAAG,eAAe,CAAC,SAAS,CAC1C,sBAAsB,CAAC,MAAM,EAC7B,eAAe,CAAC,MAAM,GAAG,oBAAoB,CAAC,MAAM,CACrD,CAAC;QACF,OAAO;YACL,UAAU,EAAE,UAAU;SACvB,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,GAAG,IAAI,eAAe,EAAE,CAAC;AAEtC,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;IAC7B,cAAc,CAAC,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;IACxC,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC;IACtC,IAAI,cAAc,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,KAAK,CACT,4BAA4B,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CACjE,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,5 @@
1
+ export interface ExpressionTemplateFragment {
2
+ readonly expression: string;
3
+ }
4
+ export type StringTemplateFragment = string;
5
+ export type TemplateFragment = StringTemplateFragment | ExpressionTemplateFragment;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/template/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import type { TemplateFragment } from "./types.js";
2
+ export declare function isStringOnlyTemplateFragments(templateFragments: readonly TemplateFragment[]): boolean;
@@ -0,0 +1,4 @@
1
+ export function isStringOnlyTemplateFragments(templateFragments) {
2
+ return templateFragments.every((documentFragment) => typeof documentFragment === "string");
3
+ }
4
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/template/utils.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,6BAA6B,CAC3C,iBAA8C;IAE9C,OAAO,iBAAiB,CAAC,KAAK,CAC5B,CAAC,gBAAgB,EAAE,EAAE,CAAC,OAAO,gBAAgB,KAAK,QAAQ,CAC3D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,68 @@
1
+ import type { NetworkOutputTypes, NonTransparentFramingTypes, OutputTypes, TcpFramingTypes, TemplateModes } from "./consts.js";
2
+ export interface TypeTaggedStructure {
3
+ readonly type: string;
4
+ }
5
+ export type MetaTemplateJson = {
6
+ readonly debug?: boolean;
7
+ readonly from?: string;
8
+ readonly to?: string;
9
+ readonly count?: number;
10
+ readonly out: OutputOptions | ShorthandOutputOptions;
11
+ readonly templates: readonly {
12
+ readonly mode?: TemplateMode;
13
+ readonly path: string;
14
+ readonly weight?: number;
15
+ }[];
16
+ };
17
+ export type TemplateMode = (typeof TemplateModes)[number];
18
+ export interface ProgramOptions {
19
+ readonly debug: boolean;
20
+ readonly from: Date;
21
+ readonly to: Date;
22
+ readonly count: number;
23
+ readonly out: OutputOptions;
24
+ readonly templates: readonly TemplateOptions[];
25
+ }
26
+ export interface TemplateOptions {
27
+ readonly mode: TemplateMode;
28
+ readonly path: string;
29
+ readonly weight: number;
30
+ }
31
+ export type ShorthandOutputOptions = string;
32
+ export type OutputOptions = FileOutputOptions | UdpOutputOptions | TcpOutputOptions;
33
+ export type OutputType = (typeof OutputTypes)[number];
34
+ export type NetworkOutputType = (typeof NetworkOutputTypes)[number];
35
+ interface PrimitiveOutputOptions {
36
+ readonly type: OutputType;
37
+ readonly path: string;
38
+ }
39
+ export interface FileOutputOptions extends PrimitiveOutputOptions {
40
+ readonly type: "file";
41
+ readonly size?: string;
42
+ }
43
+ interface NetworkOutputOptions extends PrimitiveOutputOptions {
44
+ readonly type: NetworkOutputType;
45
+ readonly address: string;
46
+ readonly port: number;
47
+ readonly eps: number;
48
+ }
49
+ export interface UdpOutputOptions extends NetworkOutputOptions {
50
+ readonly type: "udp";
51
+ }
52
+ export type NonTransparentFramingType = (typeof NonTransparentFramingTypes)[number];
53
+ export type TcpFramingType = (typeof TcpFramingTypes)[number];
54
+ interface PrimitiveTcpOutputOptions extends NetworkOutputOptions {
55
+ readonly type: "tcp";
56
+ readonly framing: TcpFramingType;
57
+ }
58
+ interface TcpOctetCountingOutputOptions extends PrimitiveTcpOutputOptions {
59
+ readonly type: "tcp";
60
+ readonly framing: "octet-counting";
61
+ }
62
+ interface TcpNonFramingOutputOptions extends PrimitiveTcpOutputOptions {
63
+ readonly type: "tcp";
64
+ readonly framing: NonTransparentFramingType;
65
+ readonly trailerReplacer: string;
66
+ }
67
+ export type TcpOutputOptions = TcpOctetCountingOutputOptions | TcpNonFramingOutputOptions;
68
+ export {};
@@ -0,0 +1,3 @@
1
+ export {};
2
+ // endregion
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";AAwGA,YAAY"}
@@ -0,0 +1,18 @@
1
+ import type { NetworkOutputType, OutputType, ProgramOptions, TcpFramingType, TemplateMode } from "./types.js";
2
+ export declare function isString(value: unknown): value is string;
3
+ export declare function isNonNullObject(value: unknown): value is Record<string, unknown>;
4
+ export declare function isTemplateMode(value: unknown): value is TemplateMode;
5
+ export declare function isOutputType(value: unknown): value is OutputType;
6
+ export declare function isNetworkOutputType(value: unknown): value is NetworkOutputType;
7
+ export declare function isTcpFramingType(value: unknown): value is TcpFramingType;
8
+ export declare function parseString(value: unknown): string | undefined;
9
+ export declare function parseNonNaNInteger(value: unknown): number | undefined;
10
+ export declare function parseNonNaNFloat(value: unknown): number | undefined;
11
+ export declare function parseDate(value: unknown): Date | undefined;
12
+ export declare function parseAndResolveFilePath(value: unknown, basePath: string): string | undefined;
13
+ export declare function tryReadFile(path: string): Promise<string>;
14
+ export declare function normalizeProgramOptions(possibleProgramOptions: unknown, basePath: string): ProgramOptions | undefined;
15
+ export declare function determineTemplateModeByFile(filePath: string): TemplateMode;
16
+ export declare function pickFirst<T>(input: T | T[] | undefined): T | undefined;
17
+ export declare function pickMany<T>(input: T | T[] | undefined): T[];
18
+ export declare function assertNever(x: never): never;