apeframework 0.0.0-dev.2 → 0.0.0-dev.21

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 (462) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +4 -46
  3. package/cipher/Algorithm.d.ts +6 -0
  4. package/cipher/Algorithm.js +7 -0
  5. package/cipher/Cipher.d.ts +12 -0
  6. package/cipher/Cipher.js +32 -0
  7. package/cipher/errors/DecryptError.d.ts +5 -0
  8. package/cipher/errors/DecryptError.js +7 -0
  9. package/cipher/errors/SecretLengthError.d.ts +5 -0
  10. package/cipher/errors/SecretLengthError.js +7 -0
  11. package/cipher/validateSecretLength.d.ts +3 -0
  12. package/cipher/validateSecretLength.js +13 -0
  13. package/cli/Args.d.ts +5 -0
  14. package/cli/Args.js +1 -0
  15. package/cli/Command.d.ts +3 -0
  16. package/cli/Command.js +1 -0
  17. package/cli/getArgs.d.ts +3 -0
  18. package/cli/getArgs.js +5 -0
  19. package/cli/parseArgs.d.ts +3 -0
  20. package/cli/parseArgs.js +25 -0
  21. package/cli/utils/exit.d.ts +2 -0
  22. package/cli/utils/exit.js +4 -0
  23. package/cli/utils/formatList.d.ts +2 -0
  24. package/cli/utils/formatList.js +7 -0
  25. package/cli/utils/formatTable.d.ts +2 -0
  26. package/cli/utils/formatTable.js +19 -0
  27. package/cli/utils/formatText.d.ts +2 -0
  28. package/cli/utils/formatText.js +5 -0
  29. package/cli/utils/print.d.ts +2 -0
  30. package/cli/utils/print.js +4 -0
  31. package/cli/utils/printLn.d.ts +2 -0
  32. package/cli/utils/printLn.js +5 -0
  33. package/config/Config.d.ts +2 -0
  34. package/config/Config.js +1 -0
  35. package/config/Properties.d.ts +8 -0
  36. package/config/Properties.js +1 -0
  37. package/config/errors/FileReadError.d.ts +5 -0
  38. package/config/errors/FileReadError.js +7 -0
  39. package/config/errors/PropertyNameError.d.ts +5 -0
  40. package/config/errors/PropertyNameError.js +7 -0
  41. package/config/errors/PropertyParseError.d.ts +5 -0
  42. package/config/errors/PropertyParseError.js +7 -0
  43. package/config/getConfig.d.ts +14 -0
  44. package/config/getConfig.js +18 -0
  45. package/config/getPropertyEnvVar.d.ts +2 -0
  46. package/config/getPropertyEnvVar.js +10 -0
  47. package/config/parseProperty.d.ts +3 -0
  48. package/config/parseProperty.js +34 -0
  49. package/config/readFile.d.ts +2 -0
  50. package/config/readFile.js +25 -0
  51. package/config/validatePropertyName.d.ts +2 -0
  52. package/config/validatePropertyName.js +8 -0
  53. package/env/Env.d.ts +2 -0
  54. package/env/Env.js +1 -0
  55. package/env/errors/FileReadError.d.ts +5 -0
  56. package/env/errors/FileReadError.js +7 -0
  57. package/env/getEnv.d.ts +8 -0
  58. package/env/getEnv.js +12 -0
  59. package/env/readFile.d.ts +3 -0
  60. package/env/readFile.js +18 -0
  61. package/error/BaseError.d.ts +4 -0
  62. package/error/BaseError.js +9 -0
  63. package/jwt/Algorithm.d.ts +6 -0
  64. package/jwt/Algorithm.js +7 -0
  65. package/jwt/Jwt.d.ts +13 -0
  66. package/jwt/Jwt.js +32 -0
  67. package/jwt/Payload.d.ts +11 -0
  68. package/jwt/Payload.js +1 -0
  69. package/jwt/errors/SecretLengthError.d.ts +5 -0
  70. package/jwt/errors/SecretLengthError.js +7 -0
  71. package/jwt/validateSecretLength.d.ts +3 -0
  72. package/jwt/validateSecretLength.js +13 -0
  73. package/logger/Level.d.ts +10 -0
  74. package/logger/Level.js +11 -0
  75. package/logger/Logger.d.ts +10 -0
  76. package/logger/Logger.js +3 -0
  77. package/logger/Severity.d.ts +9 -0
  78. package/logger/Severity.js +10 -0
  79. package/logger/adapters/file/FileLogger.d.ts +20 -0
  80. package/logger/adapters/file/FileLogger.js +64 -0
  81. package/logger/adapters/file/errors/FileInitError.d.ts +5 -0
  82. package/logger/adapters/file/errors/FileInitError.js +7 -0
  83. package/logger/adapters/file/initFile.d.ts +2 -0
  84. package/logger/adapters/file/initFile.js +14 -0
  85. package/logger/adapters/noop/NoopLogger.d.ts +11 -0
  86. package/logger/adapters/noop/NoopLogger.js +11 -0
  87. package/logger/adapters/stdio/StdioLogger.d.ts +20 -0
  88. package/logger/adapters/stdio/StdioLogger.js +67 -0
  89. package/mailer/Address.d.ts +5 -0
  90. package/mailer/Address.js +1 -0
  91. package/mailer/Attachment.d.ts +7 -0
  92. package/mailer/Attachment.js +1 -0
  93. package/mailer/Event.d.ts +16 -0
  94. package/mailer/Event.js +1 -0
  95. package/mailer/List.d.ts +7 -0
  96. package/mailer/List.js +1 -0
  97. package/mailer/Location.d.ts +9 -0
  98. package/mailer/Location.js +1 -0
  99. package/mailer/Mail.d.ts +19 -0
  100. package/mailer/Mail.js +1 -0
  101. package/mailer/Mailer.d.ts +7 -0
  102. package/mailer/Mailer.js +47 -0
  103. package/mailer/Method.d.ts +5 -0
  104. package/mailer/Method.js +6 -0
  105. package/mailer/adapters/noop/NoopMailer.d.ts +7 -0
  106. package/mailer/adapters/noop/NoopMailer.js +9 -0
  107. package/mailer/adapters/smtp/SmtpMailer.d.ts +18 -0
  108. package/mailer/adapters/smtp/SmtpMailer.js +54 -0
  109. package/mailer/adapters/smtp/getAddress.d.ts +4 -0
  110. package/mailer/adapters/smtp/getAddress.js +9 -0
  111. package/mailer/adapters/smtp/getAddresses.d.ts +4 -0
  112. package/mailer/adapters/smtp/getAddresses.js +11 -0
  113. package/mailer/adapters/smtp/getAttachments.d.ts +4 -0
  114. package/mailer/adapters/smtp/getAttachments.js +14 -0
  115. package/mailer/errors/AddressEmailError.d.ts +5 -0
  116. package/mailer/errors/AddressEmailError.js +7 -0
  117. package/mailer/errors/EventAttachmentUrlError.d.ts +5 -0
  118. package/mailer/errors/EventAttachmentUrlError.js +7 -0
  119. package/mailer/errors/EventGeolocationError.d.ts +5 -0
  120. package/mailer/errors/EventGeolocationError.js +7 -0
  121. package/mailer/errors/EventUrlError.d.ts +5 -0
  122. package/mailer/errors/EventUrlError.js +7 -0
  123. package/mailer/errors/ListUrlError.d.ts +5 -0
  124. package/mailer/errors/ListUrlError.js +7 -0
  125. package/mailer/getIcalendar.d.ts +3 -0
  126. package/mailer/getIcalendar.js +32 -0
  127. package/mailer/validateAddressEmail.d.ts +2 -0
  128. package/mailer/validateAddressEmail.js +8 -0
  129. package/mailer/validateEventAttachmentUrl.d.ts +2 -0
  130. package/mailer/validateEventAttachmentUrl.js +8 -0
  131. package/mailer/validateEventGeolocation.d.ts +2 -0
  132. package/mailer/validateEventGeolocation.js +8 -0
  133. package/mailer/validateEventUrl.d.ts +2 -0
  134. package/mailer/validateEventUrl.js +8 -0
  135. package/mailer/validateListUrl.d.ts +2 -0
  136. package/mailer/validateListUrl.js +8 -0
  137. package/package.json +31 -32
  138. package/parser/Parser.d.ts +2 -0
  139. package/parser/Parser.js +1 -0
  140. package/parser/errors/ParseError.d.ts +5 -0
  141. package/parser/errors/ParseError.js +7 -0
  142. package/parser/factories/enum/createEnumParser.d.ts +6 -0
  143. package/parser/factories/enum/createEnumParser.js +10 -0
  144. package/parser/factories/unit/Unit.d.ts +5 -0
  145. package/parser/factories/unit/Unit.js +1 -0
  146. package/parser/factories/unit/createUnitParser.d.ts +7 -0
  147. package/parser/factories/unit/createUnitParser.js +33 -0
  148. package/parser/parseBoolean.d.ts +3 -0
  149. package/parser/parseBoolean.js +28 -0
  150. package/parser/parseBytes.d.ts +2 -0
  151. package/parser/parseBytes.js +51 -0
  152. package/parser/parseInteger.d.ts +3 -0
  153. package/parser/parseInteger.js +16 -0
  154. package/parser/parseMilliseconds.d.ts +2 -0
  155. package/parser/parseMilliseconds.js +27 -0
  156. package/parser/parseNumber.d.ts +3 -0
  157. package/parser/parseNumber.js +15 -0
  158. package/parser/parseString.d.ts +3 -0
  159. package/parser/parseString.js +11 -0
  160. package/pwd/Pwd.d.ts +9 -0
  161. package/pwd/Pwd.js +16 -0
  162. package/pwd/errors/HashRoundsError.d.ts +5 -0
  163. package/pwd/errors/HashRoundsError.js +7 -0
  164. package/pwd/validateHashRounds.d.ts +2 -0
  165. package/pwd/validateHashRounds.js +7 -0
  166. package/server/ErrorHandler.d.ts +3 -0
  167. package/server/ErrorHandler.js +1 -0
  168. package/server/Format.d.ts +9 -0
  169. package/server/Format.js +1 -0
  170. package/server/Handler.d.ts +3 -0
  171. package/server/Handler.js +1 -0
  172. package/server/Method.d.ts +8 -0
  173. package/server/Method.js +9 -0
  174. package/server/OpenApiFormat.d.ts +5 -0
  175. package/server/OpenApiFormat.js +6 -0
  176. package/server/Route.d.ts +12 -0
  177. package/server/Route.js +1 -0
  178. package/server/Schema.d.ts +9 -0
  179. package/server/Schema.js +1 -0
  180. package/server/Server.d.ts +37 -0
  181. package/server/Server.js +86 -0
  182. package/server/getAjv.d.ts +4 -0
  183. package/server/getAjv.js +19 -0
  184. package/tls/Tls.d.ts +7 -0
  185. package/tls/Tls.js +1 -0
  186. package/tls/errors/FileReadError.d.ts +5 -0
  187. package/tls/errors/FileReadError.js +7 -0
  188. package/tls/getTls.d.ts +8 -0
  189. package/tls/getTls.js +14 -0
  190. package/tls/readFile.d.ts +2 -0
  191. package/tls/readFile.js +14 -0
  192. package/utils/getRandomHexString.d.ts +2 -0
  193. package/utils/getRandomHexString.js +5 -0
  194. package/utils/getTimestamp.d.ts +2 -0
  195. package/utils/getTimestamp.js +4 -0
  196. package/utils/isValidEmail.d.ts +2 -0
  197. package/utils/isValidEmail.js +5 -0
  198. package/utils/isValidGeolocation.d.ts +2 -0
  199. package/utils/isValidGeolocation.js +7 -0
  200. package/utils/isValidHexString.d.ts +2 -0
  201. package/utils/isValidHexString.js +5 -0
  202. package/utils/isValidIsoDate.d.ts +2 -0
  203. package/utils/isValidIsoDate.js +5 -0
  204. package/utils/isValidJwtToken.d.ts +2 -0
  205. package/utils/isValidJwtToken.js +5 -0
  206. package/utils/isValidUrl.d.ts +2 -0
  207. package/utils/isValidUrl.js +16 -0
  208. package/utils/isValidUuid.d.ts +2 -0
  209. package/utils/isValidUuid.js +5 -0
  210. package/utils/wait.d.ts +2 -0
  211. package/utils/wait.js +6 -0
  212. package/api/api.d.ts +0 -7
  213. package/api/api.js +0 -2
  214. package/api/api.ts +0 -8
  215. package/api/auth.d.ts +0 -9
  216. package/api/auth.js +0 -11
  217. package/api/auth.ts +0 -9
  218. package/api/config.d.ts +0 -13
  219. package/api/config.js +0 -59
  220. package/api/config.ts +0 -69
  221. package/api/endpoint.d.ts +0 -20
  222. package/api/endpoint.js +0 -5
  223. package/api/endpoint.ts +0 -23
  224. package/api/handler.d.ts +0 -8
  225. package/api/handler.js +0 -13
  226. package/api/handler.ts +0 -23
  227. package/api/index.d.ts +0 -7
  228. package/api/index.js +0 -187
  229. package/api/index.ts +0 -97
  230. package/api/route.d.ts +0 -6
  231. package/api/route.js +0 -2
  232. package/api/route.ts +0 -4
  233. package/api/router.d.ts +0 -4
  234. package/api/router.js +0 -111
  235. package/api/router.ts +0 -36
  236. package/api/schema.d.ts +0 -29
  237. package/api/schema.js +0 -69
  238. package/api/schema.ts +0 -98
  239. package/app/app.d.ts +0 -6
  240. package/app/app.js +0 -2
  241. package/app/app.ts +0 -7
  242. package/app/boot.d.ts +0 -4
  243. package/app/boot.js +0 -2
  244. package/app/boot.ts +0 -5
  245. package/app/bundle.d.ts +0 -14
  246. package/app/bundle.js +0 -2
  247. package/app/bundle.ts +0 -15
  248. package/app/config.d.ts +0 -4
  249. package/app/config.js +0 -9
  250. package/app/config.ts +0 -9
  251. package/app/index.d.ts +0 -9
  252. package/app/index.js +0 -103
  253. package/app/index.ts +0 -32
  254. package/bin/ape-cli-ts.js +0 -4
  255. package/bin/ape-cli.js +0 -2
  256. package/cli/command.d.ts +0 -4
  257. package/cli/command.js +0 -2
  258. package/cli/command.ts +0 -7
  259. package/cli/index.d.ts +0 -2
  260. package/cli/index.js +0 -103
  261. package/cli/index.ts +0 -41
  262. package/cli/internal/api.d.ts +0 -3
  263. package/cli/internal/api.js +0 -110
  264. package/cli/internal/api.ts +0 -38
  265. package/cli/internal/index.d.ts +0 -2
  266. package/cli/internal/index.js +0 -13
  267. package/cli/internal/index.ts +0 -9
  268. package/cli/internal/migration.d.ts +0 -3
  269. package/cli/internal/migration.js +0 -214
  270. package/cli/internal/migration.ts +0 -110
  271. package/cli/internal/queue.d.ts +0 -3
  272. package/cli/internal/queue.js +0 -147
  273. package/cli/internal/queue.ts +0 -60
  274. package/cli/utils.d.ts +0 -18
  275. package/cli/utils.js +0 -52
  276. package/cli/utils.ts +0 -48
  277. package/config/config.d.ts +0 -5
  278. package/config/config.js +0 -2
  279. package/config/config.ts +0 -6
  280. package/config/configuration.d.ts +0 -63
  281. package/config/configuration.js +0 -2
  282. package/config/configuration.ts +0 -72
  283. package/config/default.d.ts +0 -33
  284. package/config/default.js +0 -34
  285. package/config/default.ts +0 -40
  286. package/config/env.d.ts +0 -66
  287. package/config/env.js +0 -72
  288. package/config/env.ts +0 -79
  289. package/config/index.d.ts +0 -8
  290. package/config/index.js +0 -91
  291. package/config/index.ts +0 -101
  292. package/config/loadFile.d.ts +0 -2
  293. package/config/loadFile.js +0 -13
  294. package/config/loadFile.ts +0 -9
  295. package/config/node.d.ts +0 -5
  296. package/config/node.js +0 -11
  297. package/config/node.ts +0 -7
  298. package/config/store.d.ts +0 -6
  299. package/config/store.js +0 -20
  300. package/config/store.ts +0 -15
  301. package/db/config/index.d.ts +0 -10
  302. package/db/config/index.js +0 -43
  303. package/db/config/index.ts +0 -35
  304. package/db/config/memory.d.ts +0 -3
  305. package/db/config/memory.js +0 -15
  306. package/db/config/memory.ts +0 -13
  307. package/db/config/mysql.d.ts +0 -3
  308. package/db/config/mysql.js +0 -56
  309. package/db/config/mysql.ts +0 -58
  310. package/db/config/postgres.d.ts +0 -3
  311. package/db/config/postgres.js +0 -59
  312. package/db/config/postgres.ts +0 -61
  313. package/db/config/sqlite.d.ts +0 -3
  314. package/db/config/sqlite.js +0 -21
  315. package/db/config/sqlite.ts +0 -20
  316. package/db/database.d.ts +0 -3
  317. package/db/database.js +0 -3
  318. package/db/database.ts +0 -5
  319. package/db/index.d.ts +0 -10
  320. package/db/index.js +0 -32
  321. package/db/index.ts +0 -26
  322. package/db/postProcess.d.ts +0 -3
  323. package/db/postProcess.js +0 -25
  324. package/db/postProcess.ts +0 -27
  325. package/db/schema/builder/_.d.ts +0 -30
  326. package/db/schema/builder/_.js +0 -87
  327. package/db/schema/builder/_.ts +0 -101
  328. package/db/schema/builder/columnBuilder.d.ts +0 -7
  329. package/db/schema/builder/columnBuilder.js +0 -14
  330. package/db/schema/builder/columnBuilder.ts +0 -15
  331. package/db/schema/builder/dataType.d.ts +0 -28
  332. package/db/schema/builder/dataType.js +0 -170
  333. package/db/schema/builder/dataType.ts +0 -184
  334. package/db/schema/builder/index.d.ts +0 -15
  335. package/db/schema/builder/index.js +0 -42
  336. package/db/schema/builder/index.ts +0 -50
  337. package/db/schema/builder/tableBuilder.d.ts +0 -45
  338. package/db/schema/builder/tableBuilder.js +0 -307
  339. package/db/schema/builder/tableBuilder.ts +0 -409
  340. package/db/schema/config.d.ts +0 -4
  341. package/db/schema/config.js +0 -5
  342. package/db/schema/config.ts +0 -3
  343. package/db/schema/index.d.ts +0 -7
  344. package/db/schema/index.js +0 -252
  345. package/db/schema/index.ts +0 -88
  346. package/db/schema/migration.d.ts +0 -6
  347. package/db/schema/migration.js +0 -2
  348. package/db/schema/migration.ts +0 -7
  349. package/db/schema/migrationList.d.ts +0 -5
  350. package/db/schema/migrationList.js +0 -2
  351. package/db/schema/migrationList.ts +0 -5
  352. package/db/schema/migrationSource.d.ts +0 -10
  353. package/db/schema/migrationSource.js +0 -60
  354. package/db/schema/migrationSource.ts +0 -24
  355. package/db/schema/schema.d.ts +0 -6
  356. package/db/schema/schema.js +0 -2
  357. package/db/schema/schema.ts +0 -7
  358. package/db/utils/index.d.ts +0 -7
  359. package/db/utils/index.js +0 -10
  360. package/db/utils/index.ts +0 -8
  361. package/db/utils/insertGetKey.d.ts +0 -8
  362. package/db/utils/insertGetKey.js +0 -109
  363. package/db/utils/insertGetKey.ts +0 -80
  364. package/i18n/config.d.ts +0 -4
  365. package/i18n/config.js +0 -9
  366. package/i18n/config.ts +0 -9
  367. package/i18n/i18n.d.ts +0 -5
  368. package/i18n/i18n.js +0 -2
  369. package/i18n/i18n.ts +0 -6
  370. package/i18n/index.d.ts +0 -8
  371. package/i18n/index.js +0 -155
  372. package/i18n/index.ts +0 -42
  373. package/i18n/internationalization.d.ts +0 -3
  374. package/i18n/internationalization.js +0 -2
  375. package/i18n/internationalization.ts +0 -5
  376. package/i18n/translation.d.ts +0 -4
  377. package/i18n/translation.js +0 -2
  378. package/i18n/translation.ts +0 -4
  379. package/jwt/config.d.ts +0 -5
  380. package/jwt/config.js +0 -12
  381. package/jwt/config.ts +0 -11
  382. package/jwt/index.d.ts +0 -8
  383. package/jwt/index.js +0 -90
  384. package/jwt/index.ts +0 -60
  385. package/jwt/jwt.d.ts +0 -6
  386. package/jwt/jwt.js +0 -2
  387. package/jwt/jwt.ts +0 -19
  388. package/jwt/user.d.ts +0 -4
  389. package/jwt/user.js +0 -2
  390. package/jwt/user.ts +0 -4
  391. package/log/config.d.ts +0 -23
  392. package/log/config.js +0 -47
  393. package/log/config.ts +0 -43
  394. package/log/index.d.ts +0 -4
  395. package/log/index.js +0 -9
  396. package/log/index.ts +0 -9
  397. package/log/logger.d.ts +0 -3
  398. package/log/logger.js +0 -2
  399. package/log/logger.ts +0 -5
  400. package/mail/config.d.ts +0 -4
  401. package/mail/config.js +0 -5
  402. package/mail/config.ts +0 -3
  403. package/mail/email.d.ts +0 -20
  404. package/mail/email.js +0 -2
  405. package/mail/email.ts +0 -21
  406. package/mail/index.d.ts +0 -2
  407. package/mail/index.js +0 -4
  408. package/mail/index.ts +0 -3
  409. package/mail/mail.d.ts +0 -12
  410. package/mail/mail.js +0 -2
  411. package/mail/mail.ts +0 -13
  412. package/mail/module/bypass/index.d.ts +0 -6
  413. package/mail/module/bypass/index.js +0 -74
  414. package/mail/module/bypass/index.ts +0 -9
  415. package/mail/module/config.d.ts +0 -11
  416. package/mail/module/config.js +0 -24
  417. package/mail/module/config.ts +0 -25
  418. package/mail/module/index.d.ts +0 -8
  419. package/mail/module/index.js +0 -107
  420. package/mail/module/index.ts +0 -61
  421. package/mail/module/smtp/config.d.ts +0 -6
  422. package/mail/module/smtp/config.js +0 -25
  423. package/mail/module/smtp/config.ts +0 -25
  424. package/mail/module/smtp/index.d.ts +0 -9
  425. package/mail/module/smtp/index.js +0 -104
  426. package/mail/module/smtp/index.ts +0 -36
  427. package/mq/index.d.ts +0 -3
  428. package/mq/index.js +0 -27
  429. package/mq/index.ts +0 -4
  430. package/mq/module/bypass/index.d.ts +0 -13
  431. package/mq/module/bypass/index.js +0 -86
  432. package/mq/module/bypass/index.ts +0 -20
  433. package/mq/module/config.d.ts +0 -6
  434. package/mq/module/config.js +0 -15
  435. package/mq/module/config.ts +0 -14
  436. package/mq/module/index.d.ts +0 -9
  437. package/mq/module/index.js +0 -93
  438. package/mq/module/index.ts +0 -24
  439. package/mq/module/redis/config.d.ts +0 -27
  440. package/mq/module/redis/config.js +0 -37
  441. package/mq/module/redis/config.ts +0 -34
  442. package/mq/module/redis/index.d.ts +0 -15
  443. package/mq/module/redis/index.js +0 -132
  444. package/mq/module/redis/index.ts +0 -60
  445. package/mq/mq.d.ts +0 -15
  446. package/mq/mq.js +0 -2
  447. package/mq/mq.ts +0 -18
  448. package/mq/queue.d.ts +0 -9
  449. package/mq/queue.js +0 -2
  450. package/mq/queue.ts +0 -11
  451. package/pwd/config.d.ts +0 -4
  452. package/pwd/config.js +0 -9
  453. package/pwd/config.ts +0 -9
  454. package/pwd/index.d.ts +0 -6
  455. package/pwd/index.js +0 -21
  456. package/pwd/index.ts +0 -20
  457. package/pwd/pwd.d.ts +0 -4
  458. package/pwd/pwd.js +0 -2
  459. package/pwd/pwd.ts +0 -4
  460. package/utils/index.d.ts +0 -25
  461. package/utils/index.js +0 -72
  462. package/utils/index.ts +0 -56
package/jwt/Jwt.d.ts ADDED
@@ -0,0 +1,13 @@
1
+ import type { Algorithm } from './Algorithm';
2
+ import type { Payload } from './Payload';
3
+ declare class Jwt {
4
+ private readonly algorithm;
5
+ private readonly secret;
6
+ constructor(params: {
7
+ algorithm: Algorithm;
8
+ secret: string;
9
+ });
10
+ createToken(payload: Payload): Promise<string>;
11
+ verifyToken<Type extends Payload>(token: string, timestamp: number): Promise<Type | undefined>;
12
+ }
13
+ export { Jwt, };
package/jwt/Jwt.js ADDED
@@ -0,0 +1,32 @@
1
+ import { SignJWT, jwtVerify } from 'jose';
2
+ import { validateSecretLength } from './validateSecretLength';
3
+ class Jwt {
4
+ algorithm;
5
+ secret;
6
+ constructor(params) {
7
+ validateSecretLength(params.algorithm, params.secret);
8
+ this.algorithm = params.algorithm;
9
+ this.secret = new TextEncoder().encode(params.secret);
10
+ }
11
+ async createToken(payload) {
12
+ return new SignJWT(payload)
13
+ .setProtectedHeader({
14
+ typ: 'JWT',
15
+ alg: this.algorithm,
16
+ })
17
+ .sign(this.secret);
18
+ }
19
+ async verifyToken(token, timestamp) {
20
+ try {
21
+ const { payload } = await jwtVerify(token, this.secret, {
22
+ typ: 'JWT',
23
+ currentDate: new Date(timestamp * 1000),
24
+ });
25
+ return payload;
26
+ }
27
+ catch (error) {
28
+ return undefined;
29
+ }
30
+ }
31
+ }
32
+ export { Jwt, };
@@ -0,0 +1,11 @@
1
+ interface Payload {
2
+ [key: string]: unknown;
3
+ iss?: string;
4
+ aud?: string[];
5
+ sub?: string;
6
+ jti?: string;
7
+ iat?: number;
8
+ exp?: number;
9
+ nbf?: number;
10
+ }
11
+ export { type Payload, };
package/jwt/Payload.js ADDED
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ import { BaseError } from '../../error/BaseError';
2
+ declare class SecretLengthError extends BaseError {
3
+ constructor();
4
+ }
5
+ export { SecretLengthError, };
@@ -0,0 +1,7 @@
1
+ import { BaseError } from '../../error/BaseError';
2
+ class SecretLengthError extends BaseError {
3
+ constructor() {
4
+ super('invalid secret length');
5
+ }
6
+ }
7
+ export { SecretLengthError, };
@@ -0,0 +1,3 @@
1
+ import { Algorithm } from './Algorithm';
2
+ declare const validateSecretLength: (algorithm: Algorithm, secret: string) => void;
3
+ export { validateSecretLength, };
@@ -0,0 +1,13 @@
1
+ import { Algorithm } from './Algorithm';
2
+ import { SecretLengthError } from './errors/SecretLengthError';
3
+ const minSecretLength = {
4
+ [Algorithm.HS256]: 32,
5
+ [Algorithm.HS384]: 48,
6
+ [Algorithm.HS512]: 64,
7
+ };
8
+ const validateSecretLength = (algorithm, secret) => {
9
+ if (Buffer.from(secret).length < minSecretLength[algorithm]) {
10
+ throw new SecretLengthError();
11
+ }
12
+ };
13
+ export { validateSecretLength, };
@@ -0,0 +1,10 @@
1
+ declare enum Level {
2
+ TRACE = "trace",
3
+ DEBUG = "debug",
4
+ INFO = "info",
5
+ WARN = "warn",
6
+ ERROR = "error",
7
+ FATAL = "fatal",
8
+ OFF = "off"
9
+ }
10
+ export { Level, };
@@ -0,0 +1,11 @@
1
+ var Level;
2
+ (function (Level) {
3
+ Level["TRACE"] = "trace";
4
+ Level["DEBUG"] = "debug";
5
+ Level["INFO"] = "info";
6
+ Level["WARN"] = "warn";
7
+ Level["ERROR"] = "error";
8
+ Level["FATAL"] = "fatal";
9
+ Level["OFF"] = "off";
10
+ })(Level || (Level = {}));
11
+ export { Level, };
@@ -0,0 +1,10 @@
1
+ declare abstract class Logger {
2
+ abstract trace(message: string, data?: unknown): void;
3
+ abstract debug(message: string, data?: unknown): void;
4
+ abstract info(message: string, data?: unknown): void;
5
+ abstract warn(message: string, data?: unknown): void;
6
+ abstract error(message: string, data?: unknown): void;
7
+ abstract fatal(message: string, data?: unknown): void;
8
+ abstract close(): Promise<void>;
9
+ }
10
+ export { Logger, };
@@ -0,0 +1,3 @@
1
+ class Logger {
2
+ }
3
+ export { Logger, };
@@ -0,0 +1,9 @@
1
+ declare enum Severity {
2
+ TRACE = 10,
3
+ DEBUG = 20,
4
+ INFO = 30,
5
+ WARN = 40,
6
+ ERROR = 50,
7
+ FATAL = 60
8
+ }
9
+ export { Severity, };
@@ -0,0 +1,10 @@
1
+ var Severity;
2
+ (function (Severity) {
3
+ Severity[Severity["TRACE"] = 10] = "TRACE";
4
+ Severity[Severity["DEBUG"] = 20] = "DEBUG";
5
+ Severity[Severity["INFO"] = 30] = "INFO";
6
+ Severity[Severity["WARN"] = 40] = "WARN";
7
+ Severity[Severity["ERROR"] = 50] = "ERROR";
8
+ Severity[Severity["FATAL"] = 60] = "FATAL";
9
+ })(Severity || (Severity = {}));
10
+ export { Severity, };
@@ -0,0 +1,20 @@
1
+ import { Level } from '../../Level';
2
+ import { Logger } from '../../Logger';
3
+ declare class FileLogger extends Logger {
4
+ private readonly logger;
5
+ private readonly context;
6
+ constructor(params: {
7
+ path: string;
8
+ level?: Level;
9
+ context?: object;
10
+ });
11
+ trace(message: string, data?: unknown): void;
12
+ debug(message: string, data?: unknown): void;
13
+ info(message: string, data?: unknown): void;
14
+ warn(message: string, data?: unknown): void;
15
+ error(message: string, data?: unknown): void;
16
+ fatal(message: string, data?: unknown): void;
17
+ close(): Promise<void>;
18
+ private getPayload;
19
+ }
20
+ export { FileLogger, };
@@ -0,0 +1,64 @@
1
+ import pino from 'pino';
2
+ import { Level } from '../../Level';
3
+ import { Logger } from '../../Logger';
4
+ import { initFile } from './initFile';
5
+ class FileLogger extends Logger {
6
+ logger;
7
+ context;
8
+ constructor(params) {
9
+ super();
10
+ initFile(params.path);
11
+ const stream = pino.destination(params.path);
12
+ this.logger = pino({
13
+ enabled: params.level !== Level.OFF,
14
+ level: params.level ?? Level.INFO,
15
+ messageKey: 'message',
16
+ formatters: {
17
+ level(label, number) {
18
+ return {
19
+ level: label,
20
+ severity: number,
21
+ };
22
+ },
23
+ bindings: () => { return {}; },
24
+ },
25
+ }, stream);
26
+ this.context = params.context;
27
+ }
28
+ trace(message, data) {
29
+ this.logger.trace(this.getPayload(message, data));
30
+ }
31
+ debug(message, data) {
32
+ this.logger.debug(this.getPayload(message, data));
33
+ }
34
+ info(message, data) {
35
+ this.logger.info(this.getPayload(message, data));
36
+ }
37
+ warn(message, data) {
38
+ this.logger.warn(this.getPayload(message, data));
39
+ }
40
+ error(message, data) {
41
+ this.logger.error(this.getPayload(message, data));
42
+ }
43
+ fatal(message, data) {
44
+ this.logger.fatal(this.getPayload(message, data));
45
+ }
46
+ async close() {
47
+ return new Promise((resolve, reject) => {
48
+ this.logger.flush((error) => {
49
+ if (error) {
50
+ reject(error);
51
+ }
52
+ resolve();
53
+ });
54
+ });
55
+ }
56
+ getPayload(message, data) {
57
+ return {
58
+ ...this.context,
59
+ message,
60
+ data,
61
+ };
62
+ }
63
+ }
64
+ export { FileLogger, };
@@ -0,0 +1,5 @@
1
+ import { BaseError } from '../../../../error/BaseError';
2
+ declare class FileInitError extends BaseError {
3
+ constructor(path: string, message: string);
4
+ }
5
+ export { FileInitError, };
@@ -0,0 +1,7 @@
1
+ import { BaseError } from '../../../../error/BaseError';
2
+ class FileInitError extends BaseError {
3
+ constructor(path, message) {
4
+ super(`failed initializing file "${path}": ${message}`);
5
+ }
6
+ }
7
+ export { FileInitError, };
@@ -0,0 +1,2 @@
1
+ declare const initFile: (path: string) => void;
2
+ export { initFile, };
@@ -0,0 +1,14 @@
1
+ import fs from 'fs-extra';
2
+ import { FileInitError } from './errors/FileInitError';
3
+ const initFile = (path) => {
4
+ if (path === '') {
5
+ throw new FileInitError('', 'empty path');
6
+ }
7
+ try {
8
+ fs.ensureFileSync(path);
9
+ }
10
+ catch (error) {
11
+ throw new FileInitError(path, error.message);
12
+ }
13
+ };
14
+ export { initFile, };
@@ -0,0 +1,11 @@
1
+ import { Logger } from '../../Logger';
2
+ declare class NoopLogger extends Logger {
3
+ trace(): void;
4
+ debug(): void;
5
+ info(): void;
6
+ warn(): void;
7
+ error(): void;
8
+ fatal(): void;
9
+ close(): Promise<void>;
10
+ }
11
+ export { NoopLogger, };
@@ -0,0 +1,11 @@
1
+ import { Logger } from '../../Logger';
2
+ class NoopLogger extends Logger {
3
+ trace() { }
4
+ debug() { }
5
+ info() { }
6
+ warn() { }
7
+ error() { }
8
+ fatal() { }
9
+ async close() { }
10
+ }
11
+ export { NoopLogger, };
@@ -0,0 +1,20 @@
1
+ import { Level } from '../../Level';
2
+ import { Logger } from '../../Logger';
3
+ declare class StdioLogger extends Logger {
4
+ private readonly logger;
5
+ private readonly context;
6
+ constructor(params?: {
7
+ pretty?: boolean;
8
+ level?: Level;
9
+ context?: object;
10
+ });
11
+ trace(message: string, data?: unknown): void;
12
+ debug(message: string, data?: unknown): void;
13
+ info(message: string, data?: unknown): void;
14
+ warn(message: string, data?: unknown): void;
15
+ error(message: string, data?: unknown): void;
16
+ fatal(message: string, data?: unknown): void;
17
+ close(): Promise<void>;
18
+ private getPayload;
19
+ }
20
+ export { StdioLogger, };
@@ -0,0 +1,67 @@
1
+ import pino from 'pino';
2
+ import pretty from 'pino-pretty';
3
+ import { Level } from '../../Level';
4
+ import { Logger } from '../../Logger';
5
+ class StdioLogger extends Logger {
6
+ logger;
7
+ context;
8
+ constructor(params) {
9
+ super();
10
+ const stream = params?.pretty
11
+ ? pretty()
12
+ : pino.destination(process.stdout.fd);
13
+ this.logger = pino({
14
+ enabled: params?.level !== Level.OFF,
15
+ level: params?.level ?? Level.INFO,
16
+ messageKey: 'message',
17
+ formatters: {
18
+ level(label, number) {
19
+ return {
20
+ level: label,
21
+ ...params?.pretty
22
+ ? {}
23
+ : { severity: number },
24
+ };
25
+ },
26
+ bindings: () => { return {}; },
27
+ },
28
+ }, stream);
29
+ this.context = params?.context;
30
+ }
31
+ trace(message, data) {
32
+ this.logger.trace(this.getPayload(message, data));
33
+ }
34
+ debug(message, data) {
35
+ this.logger.debug(this.getPayload(message, data));
36
+ }
37
+ info(message, data) {
38
+ this.logger.info(this.getPayload(message, data));
39
+ }
40
+ warn(message, data) {
41
+ this.logger.warn(this.getPayload(message, data));
42
+ }
43
+ error(message, data) {
44
+ this.logger.error(this.getPayload(message, data));
45
+ }
46
+ fatal(message, data) {
47
+ this.logger.fatal(this.getPayload(message, data));
48
+ }
49
+ async close() {
50
+ return new Promise((resolve, reject) => {
51
+ this.logger.flush((error) => {
52
+ if (error) {
53
+ reject(error);
54
+ }
55
+ resolve();
56
+ });
57
+ });
58
+ }
59
+ getPayload(message, data) {
60
+ return {
61
+ ...this.context,
62
+ message,
63
+ data,
64
+ };
65
+ }
66
+ }
67
+ export { StdioLogger, };
@@ -0,0 +1,5 @@
1
+ interface Address {
2
+ email: string;
3
+ name?: string;
4
+ }
5
+ export { type Address, };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ import type { Readable } from 'stream';
2
+ interface Attachment {
3
+ fileName: string;
4
+ contentType?: string;
5
+ content: Buffer | Readable | string;
6
+ }
7
+ export { type Attachment, };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,16 @@
1
+ import type { Location } from './Location';
2
+ import type { Method } from './Method';
3
+ interface Event {
4
+ fileName?: string;
5
+ method: Method;
6
+ id?: string;
7
+ start: Date;
8
+ end: Date;
9
+ allDay?: boolean;
10
+ name: string;
11
+ description?: string;
12
+ url?: string;
13
+ location?: Location;
14
+ attachments?: string[];
15
+ }
16
+ export { type Event, };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ interface List {
2
+ id?: string;
3
+ help?: string;
4
+ subscribe?: string;
5
+ unsubscribe?: string;
6
+ }
7
+ export { type List, };
package/mailer/List.js ADDED
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,9 @@
1
+ interface Location {
2
+ name: string;
3
+ address?: string;
4
+ geo?: {
5
+ latitude: number;
6
+ longitude: number;
7
+ };
8
+ }
9
+ export { type Location, };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,19 @@
1
+ import type { Address } from './Address';
2
+ import type { Attachment } from './Attachment';
3
+ import type { Event } from './Event';
4
+ import type { List } from './List';
5
+ interface Mail {
6
+ from: Address;
7
+ sender?: Address;
8
+ replyTo?: Address;
9
+ to: Address[];
10
+ cc?: Address[];
11
+ bcc?: Address[];
12
+ subject: string;
13
+ text: string;
14
+ html?: string;
15
+ attachments?: Attachment[];
16
+ event?: Event;
17
+ list?: List;
18
+ }
19
+ export { type Mail, };
package/mailer/Mail.js ADDED
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ import type { Mail } from './Mail';
2
+ declare abstract class Mailer {
3
+ send(mail: Mail): Promise<string>;
4
+ abstract sendMail(mail: Mail): Promise<string>;
5
+ abstract close(): Promise<void>;
6
+ }
7
+ export { Mailer, };
@@ -0,0 +1,47 @@
1
+ import { validateAddressEmail } from './validateAddressEmail';
2
+ import { validateEventAttachmentUrl } from './validateEventAttachmentUrl';
3
+ import { validateEventGeolocation } from './validateEventGeolocation';
4
+ import { validateEventUrl } from './validateEventUrl';
5
+ import { validateListUrl } from './validateListUrl';
6
+ class Mailer {
7
+ async send(mail) {
8
+ validateAddressEmail(mail.from.email);
9
+ if (mail.sender) {
10
+ validateAddressEmail(mail.sender.email);
11
+ }
12
+ if (mail.replyTo) {
13
+ validateAddressEmail(mail.replyTo.email);
14
+ }
15
+ mail.to.forEach((address) => {
16
+ validateAddressEmail(address.email);
17
+ });
18
+ if (mail.cc) {
19
+ mail.cc.forEach((address) => {
20
+ validateAddressEmail(address.email);
21
+ });
22
+ }
23
+ if (mail.bcc) {
24
+ mail.bcc.forEach((address) => {
25
+ validateAddressEmail(address.email);
26
+ });
27
+ }
28
+ if (mail.event?.url) {
29
+ validateEventUrl(mail.event.url);
30
+ }
31
+ if (mail.event?.location?.geo) {
32
+ validateEventGeolocation(mail.event.location.geo.latitude, mail.event.location.geo.longitude);
33
+ }
34
+ if (mail.event?.attachments) {
35
+ mail.event.attachments.forEach((attachment) => {
36
+ validateEventAttachmentUrl(attachment);
37
+ });
38
+ }
39
+ if (mail.list) {
40
+ Object.entries(mail.list).forEach(([property, url]) => {
41
+ validateListUrl(property, url);
42
+ });
43
+ }
44
+ return this.sendMail(mail);
45
+ }
46
+ }
47
+ export { Mailer, };
@@ -0,0 +1,5 @@
1
+ declare enum Method {
2
+ PUBLISH = "PUBLISH",
3
+ CANCEL = "CANCEL"
4
+ }
5
+ export { Method, };
@@ -0,0 +1,6 @@
1
+ var Method;
2
+ (function (Method) {
3
+ Method["PUBLISH"] = "PUBLISH";
4
+ Method["CANCEL"] = "CANCEL";
5
+ })(Method || (Method = {}));
6
+ export { Method, };
@@ -0,0 +1,7 @@
1
+ import { Mailer } from '../../Mailer';
2
+ import type { Mail } from '../../Mail';
3
+ declare class NoopMailer extends Mailer {
4
+ sendMail(mail: Mail): Promise<string>;
5
+ close(): Promise<void>;
6
+ }
7
+ export { NoopMailer, };
@@ -0,0 +1,9 @@
1
+ import { randomUUID } from 'crypto';
2
+ import { Mailer } from '../../Mailer';
3
+ class NoopMailer extends Mailer {
4
+ async sendMail(mail) {
5
+ return `${randomUUID()}@${mail.from.email.split('@')[1]}`;
6
+ }
7
+ async close() { }
8
+ }
9
+ export { NoopMailer, };
@@ -0,0 +1,18 @@
1
+ import { Mailer } from '../../Mailer';
2
+ import type { Tls } from '../../../tls/Tls';
3
+ import type { Mail } from '../../Mail';
4
+ declare class SmtpMailer extends Mailer {
5
+ private readonly transporter;
6
+ constructor(params: {
7
+ host: string;
8
+ port: number;
9
+ secure?: boolean;
10
+ tls?: Tls;
11
+ user?: string;
12
+ password?: string;
13
+ maxConnections?: number;
14
+ });
15
+ sendMail(mail: Mail): Promise<string>;
16
+ close(): Promise<void>;
17
+ }
18
+ export { SmtpMailer, };
@@ -0,0 +1,54 @@
1
+ import nodemailer from 'nodemailer';
2
+ import { getTls } from '../../../tls/getTls';
3
+ import { Mailer } from '../../Mailer';
4
+ import { getIcalendar } from '../../getIcalendar';
5
+ import { getAddress } from './getAddress';
6
+ import { getAddresses } from './getAddresses';
7
+ import { getAttachments } from './getAttachments';
8
+ class SmtpMailer extends Mailer {
9
+ transporter;
10
+ constructor(params) {
11
+ super();
12
+ this.transporter = nodemailer.createTransport({
13
+ host: params.host,
14
+ port: params.port,
15
+ secure: params.secure ?? false,
16
+ tls: getTls(params.tls),
17
+ auth: params.user || params.password
18
+ ? {
19
+ user: params.user,
20
+ pass: params.password,
21
+ }
22
+ : undefined,
23
+ pool: true,
24
+ maxConnections: params.maxConnections ?? 5,
25
+ });
26
+ }
27
+ async sendMail(mail) {
28
+ const result = await this.transporter.sendMail({
29
+ from: getAddress(mail.from),
30
+ sender: getAddress(mail.sender),
31
+ replyTo: getAddress(mail.replyTo),
32
+ to: getAddresses(mail.to),
33
+ cc: getAddresses(mail.cc),
34
+ bcc: getAddresses(mail.bcc),
35
+ subject: mail.subject,
36
+ text: mail.text,
37
+ html: mail.html,
38
+ attachments: getAttachments(mail.attachments),
39
+ icalEvent: mail.event
40
+ ? {
41
+ filename: mail.event.fileName ?? 'event.ics',
42
+ method: mail.event.method,
43
+ content: getIcalendar(mail.event),
44
+ }
45
+ : undefined,
46
+ list: { ...mail.list },
47
+ });
48
+ return result.messageId.slice(1, -1);
49
+ }
50
+ async close() {
51
+ this.transporter.close();
52
+ }
53
+ }
54
+ export { SmtpMailer, };
@@ -0,0 +1,4 @@
1
+ import type { Address } from '../../Address';
2
+ import type { Address as NodemailerAddress } from 'nodemailer/lib/mailer';
3
+ declare const getAddress: (address?: Address) => NodemailerAddress | undefined;
4
+ export { getAddress, };