apeframework 0.0.0-dev.20 → 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 (210) hide show
  1. package/LICENSE +1 -1
  2. package/cipher/Algorithm.js +2 -4
  3. package/cipher/Cipher.js +9 -15
  4. package/cipher/errors/DecryptError.js +3 -6
  5. package/cipher/errors/SecretLengthError.js +3 -6
  6. package/cipher/validateSecretLength.js +7 -10
  7. package/cli/Args.js +1 -2
  8. package/cli/Command.js +1 -2
  9. package/cli/getArgs.js +3 -6
  10. package/cli/parseArgs.js +3 -9
  11. package/cli/utils/exit.js +1 -4
  12. package/cli/utils/formatList.js +3 -6
  13. package/cli/utils/formatTable.js +3 -6
  14. package/cli/utils/formatText.js +3 -6
  15. package/cli/utils/print.js +1 -4
  16. package/cli/utils/printLn.js +3 -6
  17. package/config/Config.js +1 -2
  18. package/config/Properties.js +1 -2
  19. package/config/errors/FileReadError.js +3 -6
  20. package/config/errors/PropertyNameError.js +3 -6
  21. package/config/errors/PropertyParseError.js +3 -6
  22. package/config/getConfig.js +8 -11
  23. package/config/getPropertyEnvVar.js +1 -4
  24. package/config/parseProperty.js +3 -6
  25. package/config/readFile.js +8 -14
  26. package/config/validatePropertyName.js +3 -6
  27. package/env/Env.js +1 -2
  28. package/env/errors/FileReadError.js +3 -6
  29. package/env/getEnv.js +3 -6
  30. package/env/readFile.js +8 -14
  31. package/error/BaseError.js +1 -4
  32. package/jwt/Algorithm.js +2 -4
  33. package/jwt/Jwt.js +6 -9
  34. package/jwt/Payload.js +1 -2
  35. package/jwt/errors/SecretLengthError.js +3 -6
  36. package/jwt/validateSecretLength.js +7 -10
  37. package/logger/Level.js +2 -4
  38. package/logger/Logger.js +1 -4
  39. package/logger/Severity.js +2 -4
  40. package/logger/adapters/file/FileLogger.js +11 -17
  41. package/logger/adapters/file/errors/FileInitError.js +3 -6
  42. package/logger/adapters/file/initFile.js +6 -12
  43. package/logger/adapters/noop/NoopLogger.js +3 -6
  44. package/logger/adapters/stdio/StdioLogger.js +11 -17
  45. package/mailer/Address.js +1 -2
  46. package/mailer/Attachment.js +1 -2
  47. package/mailer/Event.js +1 -2
  48. package/mailer/List.js +1 -2
  49. package/mailer/Location.js +1 -2
  50. package/mailer/Mail.js +1 -2
  51. package/mailer/Mailer.js +16 -19
  52. package/mailer/Method.js +2 -4
  53. package/mailer/adapters/noop/NoopMailer.js +5 -8
  54. package/mailer/adapters/smtp/SmtpMailer.js +19 -25
  55. package/mailer/adapters/smtp/getAddress.js +1 -4
  56. package/mailer/adapters/smtp/getAddresses.js +3 -6
  57. package/mailer/adapters/smtp/getAttachments.js +1 -4
  58. package/mailer/errors/AddressEmailError.js +3 -6
  59. package/mailer/errors/EventAttachmentUrlError.js +3 -6
  60. package/mailer/errors/EventGeolocationError.js +3 -6
  61. package/mailer/errors/EventUrlError.js +3 -6
  62. package/mailer/errors/ListUrlError.js +3 -6
  63. package/mailer/getIcalendar.js +3 -6
  64. package/mailer/validateAddressEmail.js +5 -8
  65. package/mailer/validateEventAttachmentUrl.js +5 -8
  66. package/mailer/validateEventGeolocation.js +5 -8
  67. package/mailer/validateEventUrl.js +5 -8
  68. package/mailer/validateListUrl.js +5 -8
  69. package/package.json +2 -4
  70. package/parser/Parser.js +1 -2
  71. package/parser/errors/ParseError.js +3 -6
  72. package/parser/factories/enum/createEnumParser.js +3 -6
  73. package/parser/factories/unit/Unit.js +1 -2
  74. package/parser/factories/unit/createUnitParser.js +8 -11
  75. package/parser/parseBoolean.js +3 -6
  76. package/parser/parseBytes.js +3 -6
  77. package/parser/parseInteger.js +6 -9
  78. package/parser/parseMilliseconds.js +3 -6
  79. package/parser/parseNumber.js +4 -7
  80. package/parser/parseString.js +3 -6
  81. package/pwd/Pwd.js +6 -12
  82. package/pwd/errors/HashRoundsError.js +3 -6
  83. package/pwd/validateHashRounds.js +3 -6
  84. package/server/ErrorHandler.js +1 -2
  85. package/server/Format.js +1 -2
  86. package/server/Handler.js +1 -2
  87. package/server/Method.js +2 -4
  88. package/server/OpenApiFormat.js +2 -4
  89. package/server/Route.js +1 -2
  90. package/server/Schema.js +1 -2
  91. package/server/Server.js +15 -21
  92. package/server/getAjv.js +5 -11
  93. package/tls/Tls.js +1 -2
  94. package/tls/errors/FileReadError.js +3 -6
  95. package/tls/getTls.js +5 -8
  96. package/tls/readFile.js +7 -13
  97. package/utils/getRandomHexString.js +3 -6
  98. package/utils/getTimestamp.js +1 -4
  99. package/utils/isValidEmail.js +1 -4
  100. package/utils/isValidGeolocation.js +1 -4
  101. package/utils/isValidHexString.js +1 -4
  102. package/utils/isValidIsoDate.js +1 -4
  103. package/utils/isValidJwtToken.js +1 -4
  104. package/utils/isValidUrl.js +1 -4
  105. package/utils/isValidUuid.js +1 -4
  106. package/utils/wait.js +1 -4
  107. package/cipher/Algorithm.ts +0 -9
  108. package/cipher/Cipher.ts +0 -46
  109. package/cipher/errors/DecryptError.ts +0 -11
  110. package/cipher/errors/SecretLengthError.ts +0 -11
  111. package/cipher/validateSecretLength.ts +0 -18
  112. package/cli/Args.ts +0 -8
  113. package/cli/Command.ts +0 -7
  114. package/cli/getArgs.ts +0 -10
  115. package/cli/parseArgs.ts +0 -34
  116. package/cli/utils/exit.ts +0 -7
  117. package/cli/utils/formatList.ts +0 -11
  118. package/cli/utils/formatTable.ts +0 -25
  119. package/cli/utils/formatText.ts +0 -9
  120. package/cli/utils/print.ts +0 -7
  121. package/cli/utils/printLn.ts +0 -9
  122. package/config/Config.ts +0 -5
  123. package/config/Properties.ts +0 -12
  124. package/config/errors/FileReadError.ts +0 -11
  125. package/config/errors/PropertyNameError.ts +0 -11
  126. package/config/errors/PropertyParseError.ts +0 -11
  127. package/config/getConfig.ts +0 -47
  128. package/config/getPropertyEnvVar.ts +0 -15
  129. package/config/parseProperty.ts +0 -47
  130. package/config/readFile.ts +0 -34
  131. package/config/validatePropertyName.ts +0 -13
  132. package/env/Env.ts +0 -5
  133. package/env/errors/FileReadError.ts +0 -11
  134. package/env/getEnv.ts +0 -24
  135. package/env/readFile.ts +0 -24
  136. package/error/BaseError.ts +0 -12
  137. package/jwt/Algorithm.ts +0 -9
  138. package/jwt/Jwt.ts +0 -49
  139. package/jwt/Payload.ts +0 -14
  140. package/jwt/errors/SecretLengthError.ts +0 -11
  141. package/jwt/validateSecretLength.ts +0 -18
  142. package/logger/Level.ts +0 -13
  143. package/logger/Logger.ts +0 -19
  144. package/logger/Severity.ts +0 -12
  145. package/logger/adapters/file/FileLogger.ts +0 -87
  146. package/logger/adapters/file/errors/FileInitError.ts +0 -11
  147. package/logger/adapters/file/initFile.ts +0 -18
  148. package/logger/adapters/noop/NoopLogger.ts +0 -21
  149. package/logger/adapters/stdio/StdioLogger.ts +0 -89
  150. package/mailer/Address.ts +0 -8
  151. package/mailer/Attachment.ts +0 -11
  152. package/mailer/Event.ts +0 -20
  153. package/mailer/List.ts +0 -10
  154. package/mailer/Location.ts +0 -12
  155. package/mailer/Mail.ts +0 -23
  156. package/mailer/Mailer.ts +0 -69
  157. package/mailer/Method.ts +0 -8
  158. package/mailer/adapters/noop/NoopMailer.ts +0 -15
  159. package/mailer/adapters/smtp/SmtpMailer.ts +0 -74
  160. package/mailer/adapters/smtp/getAddress.ts +0 -15
  161. package/mailer/adapters/smtp/getAddresses.ts +0 -17
  162. package/mailer/adapters/smtp/getAttachments.ts +0 -20
  163. package/mailer/errors/AddressEmailError.ts +0 -11
  164. package/mailer/errors/EventAttachmentUrlError.ts +0 -11
  165. package/mailer/errors/EventGeolocationError.ts +0 -11
  166. package/mailer/errors/EventUrlError.ts +0 -11
  167. package/mailer/errors/ListUrlError.ts +0 -11
  168. package/mailer/getIcalendar.ts +0 -39
  169. package/mailer/validateAddressEmail.ts +0 -12
  170. package/mailer/validateEventAttachmentUrl.ts +0 -12
  171. package/mailer/validateEventGeolocation.ts +0 -15
  172. package/mailer/validateEventUrl.ts +0 -12
  173. package/mailer/validateListUrl.ts +0 -12
  174. package/parser/Parser.ts +0 -5
  175. package/parser/errors/ParseError.ts +0 -11
  176. package/parser/factories/enum/createEnumParser.ts +0 -21
  177. package/parser/factories/unit/Unit.ts +0 -8
  178. package/parser/factories/unit/createUnitParser.ts +0 -50
  179. package/parser/parseBoolean.ts +0 -33
  180. package/parser/parseBytes.ts +0 -55
  181. package/parser/parseInteger.ts +0 -23
  182. package/parser/parseMilliseconds.ts +0 -31
  183. package/parser/parseNumber.ts +0 -22
  184. package/parser/parseString.ts +0 -16
  185. package/pwd/Pwd.ts +0 -31
  186. package/pwd/errors/HashRoundsError.ts +0 -11
  187. package/pwd/validateHashRounds.ts +0 -11
  188. package/server/ErrorHandler.ts +0 -11
  189. package/server/Format.ts +0 -15
  190. package/server/Handler.ts +0 -10
  191. package/server/Method.ts +0 -11
  192. package/server/OpenApiFormat.ts +0 -8
  193. package/server/Route.ts +0 -16
  194. package/server/Schema.ts +0 -13
  195. package/server/Server.ts +0 -134
  196. package/server/getAjv.ts +0 -26
  197. package/tls/Tls.ts +0 -10
  198. package/tls/errors/FileReadError.ts +0 -11
  199. package/tls/getTls.ts +0 -24
  200. package/tls/readFile.ts +0 -18
  201. package/utils/getRandomHexString.ts +0 -9
  202. package/utils/getTimestamp.ts +0 -7
  203. package/utils/isValidEmail.ts +0 -9
  204. package/utils/isValidGeolocation.ts +0 -10
  205. package/utils/isValidHexString.ts +0 -9
  206. package/utils/isValidIsoDate.ts +0 -9
  207. package/utils/isValidJwtToken.ts +0 -9
  208. package/utils/isValidUrl.ts +0 -21
  209. package/utils/isValidUuid.ts +0 -10
  210. package/utils/wait.ts +0 -9
@@ -1,11 +0,0 @@
1
- import { BaseError } from '../../error/BaseError'
2
-
3
- class DecryptError extends BaseError {
4
- public constructor(message: string) {
5
- super(`failed decrypting string: ${message}`)
6
- }
7
- }
8
-
9
- export {
10
- DecryptError,
11
- }
@@ -1,11 +0,0 @@
1
- import { BaseError } from '../../error/BaseError'
2
-
3
- class SecretLengthError extends BaseError {
4
- public constructor() {
5
- super('invalid secret length')
6
- }
7
- }
8
-
9
- export {
10
- SecretLengthError,
11
- }
@@ -1,18 +0,0 @@
1
- import { Algorithm } from './Algorithm'
2
- import { SecretLengthError } from './errors/SecretLengthError'
3
-
4
- const secretLength = {
5
- [Algorithm.AES128]: 16,
6
- [Algorithm.AES192]: 24,
7
- [Algorithm.AES256]: 32,
8
- }
9
-
10
- const validateSecretLength = (algorithm: Algorithm, secret: string): void => {
11
- if (Buffer.from(secret).length !== secretLength[algorithm]) {
12
- throw new SecretLengthError()
13
- }
14
- }
15
-
16
- export {
17
- validateSecretLength,
18
- }
package/cli/Args.ts DELETED
@@ -1,8 +0,0 @@
1
- interface Args {
2
- positional: string[],
3
- optional: Record<string, boolean | string | undefined>,
4
- }
5
-
6
- export {
7
- type Args,
8
- }
package/cli/Command.ts DELETED
@@ -1,7 +0,0 @@
1
- import type { Args } from './Args'
2
-
3
- type Command = (args: Args) => Promise<void>
4
-
5
- export {
6
- type Command,
7
- }
package/cli/getArgs.ts DELETED
@@ -1,10 +0,0 @@
1
- import { parseArgs } from './parseArgs'
2
- import type { Args } from './Args'
3
-
4
- const getArgs = (): Args => {
5
- return parseArgs(process.argv.slice(2))
6
- }
7
-
8
- export {
9
- getArgs,
10
- }
package/cli/parseArgs.ts DELETED
@@ -1,34 +0,0 @@
1
- import yargsParser from 'yargs-parser'
2
- import type { Args } from './Args'
3
-
4
- const parseArgs = (args: string[]): Args => {
5
- const parsed = yargsParser(args, {
6
- configuration: {
7
- 'boolean-negation': false,
8
- 'camel-case-expansion': true,
9
- 'dot-notation': false,
10
- 'duplicate-arguments-array': false,
11
- 'flatten-duplicate-arrays': false,
12
- 'greedy-arrays': false,
13
- 'parse-numbers': false,
14
- 'parse-positional-numbers': false,
15
- 'short-option-groups': true,
16
- 'strip-dashed': true,
17
- },
18
- })
19
-
20
- const positional = parsed._ as string[]
21
-
22
- const optional = parsed as Record<string, boolean | string | undefined>
23
-
24
- delete optional._
25
-
26
- return {
27
- positional,
28
- optional,
29
- }
30
- }
31
-
32
- export {
33
- parseArgs,
34
- }
package/cli/utils/exit.ts DELETED
@@ -1,7 +0,0 @@
1
- const exit = (code?: number): void => {
2
- process.exit(code)
3
- }
4
-
5
- export {
6
- exit,
7
- }
@@ -1,11 +0,0 @@
1
- import { EOL } from 'os'
2
-
3
- const formatList = (list: string[]): string => {
4
- return list
5
- .map((item) => { return ` ${item}` })
6
- .join(EOL)
7
- }
8
-
9
- export {
10
- formatList,
11
- }
@@ -1,25 +0,0 @@
1
- import { EOL } from 'os'
2
-
3
- const formatTable = (table: string[][]): string => {
4
- const colLength: number[] = []
5
-
6
- table.forEach((row) => {
7
- ['', ...row].forEach((col, i) => {
8
- colLength[i] = col.length > (colLength[i] ?? 0)
9
- ? col.length
10
- : colLength[i] ?? 0
11
- })
12
- })
13
-
14
- return table
15
- .map((row) => {
16
- return ['', ...row]
17
- .map((col, i) => { return col.padEnd(colLength[i], ' ') })
18
- .join(' ')
19
- })
20
- .join(EOL)
21
- }
22
-
23
- export {
24
- formatTable,
25
- }
@@ -1,9 +0,0 @@
1
- import { EOL } from 'os'
2
-
3
- const formatText = (text: string[]): string => {
4
- return text.join(EOL)
5
- }
6
-
7
- export {
8
- formatText,
9
- }
@@ -1,7 +0,0 @@
1
- const print = (s: string): void => {
2
- process.stdout.write(s)
3
- }
4
-
5
- export {
6
- print,
7
- }
@@ -1,9 +0,0 @@
1
- import { EOL } from 'os'
2
-
3
- const printLn = (s: string): void => {
4
- process.stdout.write(`${s}${EOL}`)
5
- }
6
-
7
- export {
8
- printLn,
9
- }
package/config/Config.ts DELETED
@@ -1,5 +0,0 @@
1
- type Config = Record<string, any>
2
-
3
- export {
4
- type Config,
5
- }
@@ -1,12 +0,0 @@
1
- import type { Parser } from '../parser/Parser'
2
-
3
- type Properties<Type> = {
4
- [Property in keyof Type]: {
5
- parser: Parser<Type[Property]>,
6
- default?: any,
7
- }
8
- }
9
-
10
- export {
11
- type Properties,
12
- }
@@ -1,11 +0,0 @@
1
- import { BaseError } from '../../error/BaseError'
2
-
3
- class FileReadError extends BaseError {
4
- public constructor(path: string, message: string) {
5
- super(`failed reading file "${path}": ${message}`)
6
- }
7
- }
8
-
9
- export {
10
- FileReadError,
11
- }
@@ -1,11 +0,0 @@
1
- import { BaseError } from '../../error/BaseError'
2
-
3
- class PropertyNameError extends BaseError {
4
- public constructor(name: string) {
5
- super(`invalid property name "${name}"`)
6
- }
7
- }
8
-
9
- export {
10
- PropertyNameError,
11
- }
@@ -1,11 +0,0 @@
1
- import { BaseError } from '../../error/BaseError'
2
-
3
- class PropertyParseError extends BaseError {
4
- public constructor(name: string, source: string, message: string) {
5
- super(`failed parsing property "${name}" from ${source}: ${message}`)
6
- }
7
- }
8
-
9
- export {
10
- PropertyParseError,
11
- }
@@ -1,47 +0,0 @@
1
- import { getPropertyEnvVar } from './getPropertyEnvVar'
2
- import { parseProperty } from './parseProperty'
3
- import { readFile } from './readFile'
4
- import { validatePropertyName } from './validatePropertyName'
5
- import type { Config } from './Config'
6
- import type { Properties } from './Properties'
7
- import type { Args } from '../cli/Args'
8
- import type { Env } from '../env/Env'
9
-
10
- const getConfig = <Type extends Config>(params: {
11
- properties: Properties<Type>,
12
- file?: {
13
- path: string,
14
- required?: boolean,
15
- },
16
- env?: Env,
17
- args?: Args,
18
- }): Type => {
19
- const file = params.file
20
- ? readFile(params.file.path, params.file.required)
21
- : {}
22
-
23
- const env: Env = params.env ?? {}
24
-
25
- const args: Args = params.args ?? { positional: [], optional: {} }
26
-
27
- const config: Config = {}
28
-
29
- for (const name in params.properties) {
30
- validatePropertyName(name)
31
-
32
- config[name] = parseProperty(
33
- name,
34
- params.properties[name].parser,
35
- params.properties[name].default,
36
- file[name],
37
- env[getPropertyEnvVar(name)],
38
- args.optional[name],
39
- )
40
- }
41
-
42
- return config as Type
43
- }
44
-
45
- export {
46
- getConfig,
47
- }
@@ -1,15 +0,0 @@
1
- const capitalLetterRegex = /[A-Z]/gu
2
-
3
- const capitalLetterReplacer = (letter: string): string => {
4
- return `_${letter}`
5
- }
6
-
7
- const getPropertyEnvVar = (name: string): string => {
8
- return name
9
- .replace(capitalLetterRegex, capitalLetterReplacer)
10
- .toUpperCase()
11
- }
12
-
13
- export {
14
- getPropertyEnvVar,
15
- }
@@ -1,47 +0,0 @@
1
- import { PropertyParseError } from './errors/PropertyParseError'
2
- import type { Parser } from '../parser/Parser'
3
-
4
- const parseProperty = <Type>(
5
- name: string,
6
- parser: Parser<Type>,
7
- defaultValue: any,
8
- fileValue: any,
9
- envValue: any,
10
- argsValue: any,
11
- ): Type => {
12
- const sources = [
13
- {
14
- name: 'command line arguments',
15
- value: argsValue,
16
- },
17
- {
18
- name: 'environment variables',
19
- value: envValue,
20
- },
21
- {
22
- name: 'configuration file',
23
- value: fileValue,
24
- },
25
- {
26
- name: 'default value',
27
- value: defaultValue,
28
- },
29
- ]
30
-
31
- const source = sources.find((s) => {
32
- return s.value !== undefined
33
- }) || {
34
- name: 'undefined value',
35
- value: undefined,
36
- }
37
-
38
- try {
39
- return parser(source.value)
40
- } catch (error) {
41
- throw new PropertyParseError(name, source.name, (error as Error).message)
42
- }
43
- }
44
-
45
- export {
46
- parseProperty,
47
- }
@@ -1,34 +0,0 @@
1
- import fs from 'fs-extra'
2
- import { FileReadError } from './errors/FileReadError'
3
-
4
- const readFile = (path: string, required = false): Record<string, any> => {
5
- let json: any = {}
6
- let fileExists: boolean
7
-
8
- try {
9
- fileExists = fs.existsSync(path)
10
- if (fileExists) {
11
- json = fs.readJsonSync(path)
12
- }
13
- } catch (error) {
14
- throw new FileReadError(path, (error as Error).message)
15
- }
16
-
17
- if (required && !fileExists) {
18
- throw new FileReadError(path, 'missing file')
19
- }
20
-
21
- if (
22
- typeof json !== 'object'
23
- || Array.isArray(json)
24
- || json === null
25
- ) {
26
- throw new FileReadError(path, 'invalid content')
27
- }
28
-
29
- return json as Record<string, any>
30
- }
31
-
32
- export {
33
- readFile,
34
- }
@@ -1,13 +0,0 @@
1
- import { PropertyNameError } from './errors/PropertyNameError'
2
-
3
- const propertyNameRegex = /^[a-z](?:[0-9A-Za-z])*$/u
4
-
5
- const validatePropertyName = (name: string): void => {
6
- if (!propertyNameRegex.test(name)) {
7
- throw new PropertyNameError(name)
8
- }
9
- }
10
-
11
- export {
12
- validatePropertyName,
13
- }
package/env/Env.ts DELETED
@@ -1,5 +0,0 @@
1
- type Env = Record<string, string>
2
-
3
- export {
4
- type Env,
5
- }
@@ -1,11 +0,0 @@
1
- import { BaseError } from '../../error/BaseError'
2
-
3
- class FileReadError extends BaseError {
4
- public constructor(path: string, message: string) {
5
- super(`failed reading file "${path}": ${message}`)
6
- }
7
- }
8
-
9
- export {
10
- FileReadError,
11
- }
package/env/getEnv.ts DELETED
@@ -1,24 +0,0 @@
1
- import { readFile } from './readFile'
2
- import type { Env } from './Env'
3
-
4
- const getEnv = (params?: {
5
- file?: {
6
- path: string,
7
- required?: boolean,
8
- },
9
- }): Env => {
10
- let file: Env = {}
11
-
12
- if (params?.file) {
13
- file = readFile(params.file.path, params.file.required)
14
- }
15
-
16
- return {
17
- ...file,
18
- ...process.env as Env,
19
- }
20
- }
21
-
22
- export {
23
- getEnv,
24
- }
package/env/readFile.ts DELETED
@@ -1,24 +0,0 @@
1
- import dotenv from 'dotenv'
2
- import fs from 'fs-extra'
3
- import { FileReadError } from './errors/FileReadError'
4
- import type { Env } from './Env'
5
-
6
- const readFile = (path: string, required = false): Env => {
7
- try {
8
- if (fs.existsSync(path)) {
9
- return dotenv.parse(fs.readFileSync(path))
10
- }
11
- } catch (error) {
12
- throw new FileReadError(path, (error as Error).message)
13
- }
14
-
15
- if (required) {
16
- throw new FileReadError(path, 'missing file')
17
- }
18
-
19
- return {}
20
- }
21
-
22
- export {
23
- readFile,
24
- }
@@ -1,12 +0,0 @@
1
- class BaseError extends Error {
2
- public constructor(message: string) {
3
- super(message)
4
- this.name = new.target.name
5
- Error.captureStackTrace(this, new.target)
6
- Object.setPrototypeOf(this, new.target.prototype)
7
- }
8
- }
9
-
10
- export {
11
- BaseError,
12
- }
package/jwt/Algorithm.ts DELETED
@@ -1,9 +0,0 @@
1
- enum Algorithm {
2
- HS256 = 'HS256',
3
- HS384 = 'HS384',
4
- HS512 = 'HS512',
5
- }
6
-
7
- export {
8
- Algorithm,
9
- }
package/jwt/Jwt.ts DELETED
@@ -1,49 +0,0 @@
1
- import { SignJWT, jwtVerify } from 'jose'
2
- import { validateSecretLength } from './validateSecretLength'
3
- import type { Algorithm } from './Algorithm'
4
- import type { Payload } from './Payload'
5
-
6
- class Jwt {
7
- private readonly algorithm: Algorithm
8
-
9
- private readonly secret: Uint8Array
10
-
11
- public constructor(params: {
12
- algorithm: Algorithm,
13
- secret: string,
14
- }) {
15
- validateSecretLength(params.algorithm, params.secret)
16
-
17
- this.algorithm = params.algorithm
18
- this.secret = new TextEncoder().encode(params.secret)
19
- }
20
-
21
- public async createToken(payload: Payload): Promise<string> {
22
- return new SignJWT(payload)
23
- .setProtectedHeader({
24
- typ: 'JWT',
25
- alg: this.algorithm,
26
- })
27
- .sign(this.secret)
28
- }
29
-
30
- public async verifyToken<Type extends Payload>(
31
- token: string,
32
- timestamp: number,
33
- ): Promise<Type | undefined> {
34
- try {
35
- const { payload } = await jwtVerify(token, this.secret, {
36
- typ: 'JWT',
37
- currentDate: new Date(timestamp * 1000),
38
- })
39
-
40
- return payload as Type
41
- } catch (error) {
42
- return undefined
43
- }
44
- }
45
- }
46
-
47
- export {
48
- Jwt,
49
- }
package/jwt/Payload.ts DELETED
@@ -1,14 +0,0 @@
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
-
12
- export {
13
- type Payload,
14
- }
@@ -1,11 +0,0 @@
1
- import { BaseError } from '../../error/BaseError'
2
-
3
- class SecretLengthError extends BaseError {
4
- public constructor() {
5
- super('invalid secret length')
6
- }
7
- }
8
-
9
- export {
10
- SecretLengthError,
11
- }
@@ -1,18 +0,0 @@
1
- import { Algorithm } from './Algorithm'
2
- import { SecretLengthError } from './errors/SecretLengthError'
3
-
4
- const minSecretLength = {
5
- [Algorithm.HS256]: 32,
6
- [Algorithm.HS384]: 48,
7
- [Algorithm.HS512]: 64,
8
- }
9
-
10
- const validateSecretLength = (algorithm: Algorithm, secret: string): void => {
11
- if (Buffer.from(secret).length < minSecretLength[algorithm]) {
12
- throw new SecretLengthError()
13
- }
14
- }
15
-
16
- export {
17
- validateSecretLength,
18
- }
package/logger/Level.ts DELETED
@@ -1,13 +0,0 @@
1
- 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
-
11
- export {
12
- Level,
13
- }
package/logger/Logger.ts DELETED
@@ -1,19 +0,0 @@
1
- abstract class Logger {
2
- public abstract trace(message: string, data?: unknown): void
3
-
4
- public abstract debug(message: string, data?: unknown): void
5
-
6
- public abstract info(message: string, data?: unknown): void
7
-
8
- public abstract warn(message: string, data?: unknown): void
9
-
10
- public abstract error(message: string, data?: unknown): void
11
-
12
- public abstract fatal(message: string, data?: unknown): void
13
-
14
- public abstract close(): Promise<void>
15
- }
16
-
17
- export {
18
- Logger,
19
- }
@@ -1,12 +0,0 @@
1
- enum Severity {
2
- TRACE = 10,
3
- DEBUG = 20,
4
- INFO = 30,
5
- WARN = 40,
6
- ERROR = 50,
7
- FATAL = 60,
8
- }
9
-
10
- export {
11
- Severity,
12
- }