@20syldev/api 5.6.0 → 5.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/.prettierignore +5 -0
  2. package/README.md +204 -80
  3. package/dist/app.d.ts +2 -0
  4. package/dist/config/env.d.ts +21 -0
  5. package/dist/config/env.js +10 -2
  6. package/dist/config/env.js.map +1 -1
  7. package/dist/config/plans.d.ts +26 -0
  8. package/dist/config/versions.d.ts +18 -0
  9. package/dist/config/versions.js +5 -0
  10. package/dist/config/versions.js.map +1 -1
  11. package/dist/constants.d.ts +45 -0
  12. package/dist/constants.js +6 -1
  13. package/dist/constants.js.map +1 -1
  14. package/dist/middleware/cors.d.ts +2 -0
  15. package/dist/middleware/cors.js +2 -1
  16. package/dist/middleware/cors.js.map +1 -1
  17. package/dist/middleware/error.d.ts +4 -0
  18. package/dist/middleware/json.d.ts +2 -0
  19. package/dist/middleware/logger.d.ts +26 -0
  20. package/dist/middleware/logger.js +34 -1
  21. package/dist/middleware/logger.js.map +1 -1
  22. package/dist/middleware/ratelimit.d.ts +2 -0
  23. package/dist/middleware/version.d.ts +3 -0
  24. package/dist/middleware/version.js +2 -2
  25. package/dist/middleware/version.js.map +1 -1
  26. package/dist/modules/v3/algorithms.d.ts +82 -0
  27. package/dist/modules/v3/captcha.d.ts +8 -0
  28. package/dist/modules/v3/chat.d.ts +9 -0
  29. package/dist/modules/v3/chat.js +3 -3
  30. package/dist/modules/v3/chat.js.map +1 -1
  31. package/dist/modules/v3/color.d.ts +6 -0
  32. package/dist/modules/v3/convert.d.ts +10 -0
  33. package/dist/modules/v3/domain.d.ts +6 -0
  34. package/dist/modules/v3/hash.d.ts +8 -0
  35. package/dist/modules/v3/hyperplanning.d.ts +9 -0
  36. package/dist/modules/v3/levenshtein.d.ts +9 -0
  37. package/dist/modules/v3/personal.d.ts +6 -0
  38. package/dist/modules/v3/qrcode.d.ts +8 -0
  39. package/dist/modules/v3/tic_tac_toe.d.ts +9 -0
  40. package/dist/modules/v3/tic_tac_toe.js +3 -3
  41. package/dist/modules/v3/tic_tac_toe.js.map +1 -1
  42. package/dist/modules/v3/time.d.ts +12 -0
  43. package/dist/modules/v3/token.d.ts +9 -0
  44. package/dist/modules/v3/username.d.ts +6 -0
  45. package/dist/modules/v3/utils.d.ts +50 -0
  46. package/dist/modules/v3.d.ts +15 -0
  47. package/dist/modules/v4/address.d.ts +20 -0
  48. package/dist/modules/v4/agent.d.ts +30 -0
  49. package/dist/modules/v4/algorithms.d.ts +90 -0
  50. package/dist/modules/v4/avatar.d.ts +23 -0
  51. package/dist/modules/v4/barcode.d.ts +27 -0
  52. package/dist/modules/v4/captcha.d.ts +22 -0
  53. package/dist/modules/v4/chat.d.ts +21 -0
  54. package/dist/modules/v4/chat.js +3 -3
  55. package/dist/modules/v4/chat.js.map +1 -1
  56. package/dist/modules/v4/color.d.ts +16 -0
  57. package/dist/modules/v4/convert.d.ts +15 -0
  58. package/dist/modules/v4/credit.d.ts +22 -0
  59. package/dist/modules/v4/cron.d.ts +17 -0
  60. package/dist/modules/v4/dice.d.ts +16 -0
  61. package/dist/modules/v4/domain.d.ts +6 -0
  62. package/dist/modules/v4/encode.d.ts +81 -0
  63. package/dist/modules/v4/geo.d.ts +30 -0
  64. package/dist/modules/v4/hash.d.ts +15 -0
  65. package/dist/modules/v4/hyperplanning.d.ts +19 -0
  66. package/dist/modules/v4/ip.d.ts +19 -0
  67. package/dist/modules/v4/levenshtein.d.ts +13 -0
  68. package/dist/modules/v4/palette.d.ts +19 -0
  69. package/dist/modules/v4/password.d.ts +25 -0
  70. package/dist/modules/v4/personal.d.ts +6 -0
  71. package/dist/modules/v4/placeholder.d.ts +30 -0
  72. package/dist/modules/v4/qrcode.d.ts +25 -0
  73. package/dist/modules/v4/regex.d.ts +23 -0
  74. package/dist/modules/v4/statistics.d.ts +20 -0
  75. package/dist/modules/v4/text.d.ts +43 -0
  76. package/dist/modules/v4/tic_tac_toe.d.ts +19 -0
  77. package/dist/modules/v4/tic_tac_toe.js +3 -3
  78. package/dist/modules/v4/tic_tac_toe.js.map +1 -1
  79. package/dist/modules/v4/time.d.ts +15 -0
  80. package/dist/modules/v4/token.d.ts +9 -0
  81. package/dist/modules/v4/username.d.ts +6 -0
  82. package/dist/modules/v4/validate.d.ts +34 -0
  83. package/dist/modules/v4.d.ts +32 -0
  84. package/dist/modules/v5/address.d.ts +5 -0
  85. package/dist/modules/v5/algorithms.d.ts +9 -0
  86. package/dist/modules/v5/asymmetric.d.ts +26 -0
  87. package/dist/modules/v5/barcode.d.ts +27 -0
  88. package/dist/modules/v5/base.d.ts +16 -0
  89. package/dist/modules/v5/base.js +41 -0
  90. package/dist/modules/v5/base.js.map +1 -0
  91. package/dist/modules/v5/case.d.ts +10 -0
  92. package/dist/modules/v5/chart.d.ts +53 -0
  93. package/dist/modules/v5/chat.d.ts +21 -0
  94. package/dist/modules/v5/chat.js +3 -3
  95. package/dist/modules/v5/chat.js.map +1 -1
  96. package/dist/modules/v5/csv.d.ts +29 -0
  97. package/dist/modules/v5/diff.d.ts +20 -0
  98. package/dist/modules/v5/diff.js +81 -0
  99. package/dist/modules/v5/diff.js.map +1 -0
  100. package/dist/modules/v5/evaluate.d.ts +14 -0
  101. package/dist/modules/v5/jwt.d.ts +11 -0
  102. package/dist/modules/v5/matrix.d.ts +77 -0
  103. package/dist/modules/v5/otp.d.ts +30 -0
  104. package/dist/modules/v5/read.d.ts +20 -0
  105. package/dist/modules/v5/read.js +59 -0
  106. package/dist/modules/v5/read.js.map +1 -0
  107. package/dist/modules/v5/semver.d.ts +33 -0
  108. package/dist/modules/v5/semver.js +99 -0
  109. package/dist/modules/v5/semver.js.map +1 -0
  110. package/dist/modules/v5/symmetric.d.ts +15 -0
  111. package/dist/modules/v5/text.d.ts +5 -0
  112. package/dist/modules/v5/tic_tac_toe.d.ts +19 -0
  113. package/dist/modules/v5/tic_tac_toe.js +3 -3
  114. package/dist/modules/v5/tic_tac_toe.js.map +1 -1
  115. package/dist/modules/v5/url.d.ts +18 -0
  116. package/dist/modules/v5/url.js +12 -3
  117. package/dist/modules/v5/url.js.map +1 -1
  118. package/dist/modules/v5/uuid.d.ts +25 -0
  119. package/dist/modules/v5/uuid.js +40 -0
  120. package/dist/modules/v5/uuid.js.map +1 -0
  121. package/dist/modules/v5.d.ts +22 -0
  122. package/dist/modules/v5.js +5 -0
  123. package/dist/modules/v5.js.map +1 -1
  124. package/dist/routes/delete.d.ts +2 -0
  125. package/dist/routes/delete.js +2 -2
  126. package/dist/routes/delete.js.map +1 -1
  127. package/dist/routes/get.d.ts +2 -0
  128. package/dist/routes/get.js +152 -85
  129. package/dist/routes/get.js.map +1 -1
  130. package/dist/routes/index.d.ts +2 -0
  131. package/dist/routes/index.js +25 -5
  132. package/dist/routes/index.js.map +1 -1
  133. package/dist/routes/patch.d.ts +2 -0
  134. package/dist/routes/patch.js +1 -1
  135. package/dist/routes/patch.js.map +1 -1
  136. package/dist/routes/post.d.ts +2 -0
  137. package/dist/routes/post.js +80 -32
  138. package/dist/routes/post.js.map +1 -1
  139. package/dist/storage/index.d.ts +4 -0
  140. package/dist/types/storage.d.ts +49 -0
  141. package/dist/utils/colors.d.ts +44 -0
  142. package/dist/utils/helpers.d.ts +55 -0
  143. package/dist/utils/response.d.ts +9 -0
  144. package/dist/utils/response.js +2 -4
  145. package/dist/utils/response.js.map +1 -1
  146. package/package.json +17 -16
  147. package/robots.txt +74 -0
  148. package/src/favicon.ico +0 -0
@@ -0,0 +1,81 @@
1
+ import { MAX_DIFF_LENGTH, MAX_DIFF_PARTS } from '../../constants.js';
2
+ const VALID_MODES = ['line', 'word'];
3
+ function split(text, mode) {
4
+ if (mode === 'line')
5
+ return text.split('\n');
6
+ return text.split(/\s+/).filter((w) => w.length > 0);
7
+ }
8
+ function lcs(a, b) {
9
+ const m = a.length;
10
+ const n = b.length;
11
+ const dp = Array.from({ length: m + 1 }, () => new Array(n + 1).fill(0));
12
+ for (let i = 1; i <= m; i++) {
13
+ for (let j = 1; j <= n; j++) {
14
+ if (a[i - 1] === b[j - 1]) {
15
+ dp[i][j] = dp[i - 1][j - 1] + 1;
16
+ }
17
+ else {
18
+ dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
19
+ }
20
+ }
21
+ }
22
+ return dp;
23
+ }
24
+ function buildChanges(a, b, dp) {
25
+ const changes = [];
26
+ let i = a.length;
27
+ let j = b.length;
28
+ while (i > 0 || j > 0) {
29
+ if (i > 0 && j > 0 && a[i - 1] === b[j - 1]) {
30
+ changes.push({ type: 'equal', value: a[i - 1] });
31
+ i--;
32
+ j--;
33
+ }
34
+ else if (j > 0 && (i === 0 || dp[i][j - 1] >= dp[i - 1][j])) {
35
+ changes.push({ type: 'add', value: b[j - 1] });
36
+ j--;
37
+ }
38
+ else {
39
+ changes.push({ type: 'del', value: a[i - 1] });
40
+ i--;
41
+ }
42
+ }
43
+ return changes.reverse();
44
+ }
45
+ /**
46
+ * Compares two texts and returns a structured diff using the LCS algorithm.
47
+ *
48
+ * @param a - Original text
49
+ * @param b - Modified text
50
+ * @param mode - Granularity: line (default) or word
51
+ * @returns Diff result with the change list and added/removed counts
52
+ * @throws Error if a text is missing or too long, or if the mode is invalid
53
+ */
54
+ export default function diff(a, b, mode = 'line') {
55
+ if (typeof a !== 'string')
56
+ throw new Error('Please provide a first text (a={text})');
57
+ if (typeof b !== 'string')
58
+ throw new Error('Please provide a second text (b={text})');
59
+ if (a.length > MAX_DIFF_LENGTH)
60
+ throw new Error(`Texts must be ${MAX_DIFF_LENGTH} characters or fewer`);
61
+ if (b.length > MAX_DIFF_LENGTH)
62
+ throw new Error(`Texts must be ${MAX_DIFF_LENGTH} characters or fewer`);
63
+ if (!VALID_MODES.includes(mode))
64
+ throw new Error(`Mode must be one of: ${VALID_MODES.join(', ')}`);
65
+ const left = split(a, mode);
66
+ const right = split(b, mode);
67
+ if (left.length > MAX_DIFF_PARTS || right.length > MAX_DIFF_PARTS) {
68
+ throw new Error(`Texts must contain ${MAX_DIFF_PARTS} ${mode}s or fewer`);
69
+ }
70
+ const changes = buildChanges(left, right, lcs(left, right));
71
+ let added = 0;
72
+ let removed = 0;
73
+ for (const change of changes) {
74
+ if (change.type === 'add')
75
+ added++;
76
+ else if (change.type === 'del')
77
+ removed++;
78
+ }
79
+ return { mode, added, removed, changes };
80
+ }
81
+ //# sourceMappingURL=diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../../src/modules/v5/diff.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export interface EvaluateResult {
2
+ expression: string;
3
+ result: number;
4
+ precision: number;
5
+ }
6
+ /**
7
+ * Evaluates a mathematical expression string and returns the result.
8
+ *
9
+ * @param expr - Math expression; supports +, -, *, /, %, ^, unary -, parentheses, constants (pi, e) and functions (sin, cos, tan, sqrt, abs, ceil, floor, round, log, log2, log10, exp, min, max)
10
+ * @param precision - Number of decimal places in the result (0–15, default 10)
11
+ * @returns Object with the original expression, numeric result, and applied precision
12
+ * @throws Error if the expression is empty, exceeds the maximum length, contains unknown identifiers, or produces a non-finite result
13
+ */
14
+ export default function evaluate(expr: string, precision?: number): EvaluateResult;
@@ -0,0 +1,11 @@
1
+ export interface JwtResult {
2
+ header: Record<string, unknown>;
3
+ payload: Record<string, unknown>;
4
+ signature: string;
5
+ expired?: boolean;
6
+ }
7
+ /**
8
+ * Decodes a JSON Web Token (header + payload) without verifying the signature.
9
+ * WARNING: The signature is NOT verified. Use this for inspection only, not for security decisions.
10
+ */
11
+ export default function jwt(token: string): JwtResult;
@@ -0,0 +1,77 @@
1
+ export type Matrix = number[][];
2
+ export interface MatrixResult {
3
+ operation: string;
4
+ result: Matrix | number;
5
+ dimensions: {
6
+ rows: number;
7
+ cols: number;
8
+ };
9
+ }
10
+ /**
11
+ * Adds two matrices element-wise.
12
+ *
13
+ * @param matrix - First matrix (2D array of finite numbers)
14
+ * @param matrix2 - Second matrix (must have the same dimensions as matrix)
15
+ * @returns MatrixResult with the resulting matrix and its dimensions
16
+ * @throws Error if either argument is not a valid matrix or dimensions do not match
17
+ */
18
+ export declare function add(matrix: unknown, matrix2: unknown): MatrixResult;
19
+ /**
20
+ * Subtracts the second matrix from the first element-wise.
21
+ *
22
+ * @param matrix - Matrix to subtract from (2D array of finite numbers)
23
+ * @param matrix2 - Matrix to subtract (must have the same dimensions as matrix)
24
+ * @returns MatrixResult with the resulting matrix and its dimensions
25
+ * @throws Error if either argument is not a valid matrix or dimensions do not match
26
+ */
27
+ export declare function subtract(matrix: unknown, matrix2: unknown): MatrixResult;
28
+ /**
29
+ * Multiplies two matrices using standard matrix multiplication.
30
+ *
31
+ * @param matrix - Left-hand matrix (2D array of finite numbers)
32
+ * @param matrix2 - Right-hand matrix; its row count must equal matrix's column count
33
+ * @returns MatrixResult with the resulting matrix and its dimensions
34
+ * @throws Error if either argument is not a valid matrix or inner dimensions are incompatible
35
+ */
36
+ export declare function multiply(matrix: unknown, matrix2: unknown): MatrixResult;
37
+ /**
38
+ * Multiplies every element of a matrix by a scalar value.
39
+ *
40
+ * @param matrix - Matrix to scale (2D array of finite numbers)
41
+ * @param scalarVal - Finite number to multiply each element by
42
+ * @returns MatrixResult with the scaled matrix and its dimensions
43
+ * @throws Error if matrix is invalid or scalarVal is not a finite number
44
+ */
45
+ export declare function scalar(matrix: unknown, scalarVal: unknown): MatrixResult;
46
+ /**
47
+ * Transposes a matrix, swapping its rows and columns.
48
+ *
49
+ * @param matrix - Matrix to transpose (2D array of finite numbers)
50
+ * @returns MatrixResult with the transposed matrix and its dimensions
51
+ * @throws Error if matrix is not a valid 2D array of finite numbers
52
+ */
53
+ export declare function transpose(matrix: unknown): MatrixResult;
54
+ /**
55
+ * Computes the determinant of a square matrix using Gaussian elimination with partial pivoting.
56
+ *
57
+ * @param matrix - Square matrix (2D array of finite numbers)
58
+ * @returns MatrixResult with the determinant as a scalar result and the input dimensions
59
+ * @throws Error if matrix is not a valid square matrix
60
+ */
61
+ export declare function determinant(matrix: unknown): MatrixResult;
62
+ /**
63
+ * Computes the inverse of a square matrix using Gauss-Jordan elimination.
64
+ *
65
+ * @param matrix - Square matrix (2D array of finite numbers)
66
+ * @returns MatrixResult with the inverted matrix and its dimensions
67
+ * @throws Error if matrix is not a valid square matrix or is singular (determinant is 0)
68
+ */
69
+ export declare function inverse(matrix: unknown): MatrixResult;
70
+ /**
71
+ * Generates an n×n identity matrix.
72
+ *
73
+ * @param n - Size of the identity matrix (positive integer, max MAX_MATRIX_SIZE)
74
+ * @returns MatrixResult with the identity matrix and its dimensions
75
+ * @throws Error if n is not a positive integer or exceeds the maximum allowed size
76
+ */
77
+ export declare function identity(n: unknown): MatrixResult;
@@ -0,0 +1,30 @@
1
+ export interface OtpSecretResult {
2
+ secret: string;
3
+ uri: string;
4
+ }
5
+ export interface OtpGenerateResult {
6
+ code: string;
7
+ remaining: number;
8
+ period: number;
9
+ }
10
+ export interface OtpVerifyResult {
11
+ valid: boolean;
12
+ drift: number;
13
+ }
14
+ /**
15
+ * Generates or verifies TOTP/HOTP codes (RFC 4226 / RFC 6238).
16
+ *
17
+ * @param action - "secret", "generate", or "verify"
18
+ * @param options - Configuration options
19
+ * @returns Result depending on action
20
+ */
21
+ export default function otp(action: string, options?: {
22
+ secret?: string;
23
+ code?: string;
24
+ algorithm?: string;
25
+ digits?: number;
26
+ period?: number;
27
+ counter?: number;
28
+ label?: string;
29
+ issuer?: string;
30
+ }): OtpSecretResult | OtpGenerateResult | OtpVerifyResult;
@@ -0,0 +1,20 @@
1
+ export interface ReadResult {
2
+ lang: string;
3
+ words: number;
4
+ sentences: number;
5
+ syllables: number;
6
+ fleschReadingEase: number;
7
+ fleschKincaidGrade: number | null;
8
+ readingTime: string;
9
+ }
10
+ /**
11
+ * Computes Flesch readability scores on a text. English uses the original
12
+ * Flesch coefficients; French uses the Kandel & Moles adaptation, which has no
13
+ * grade-level counterpart, so fleschKincaidGrade is null for French.
14
+ *
15
+ * @param text - The text to analyze
16
+ * @param lang - Language of the text: en (default) or fr
17
+ * @returns Word, sentence and syllable counts, Flesch scores and estimated reading time
18
+ * @throws Error if the text is missing or too long, or if the language is unsupported
19
+ */
20
+ export default function read(text: string, lang?: string): ReadResult;
@@ -0,0 +1,59 @@
1
+ import { MAX_READ_LENGTH } from '../../constants.js';
2
+ const LANGUAGES = ['en', 'fr'];
3
+ // English heuristic: vowel groups minus silent trailing "e", at least one syllable.
4
+ function countSyllablesEn(word) {
5
+ const groups = word
6
+ .toLowerCase()
7
+ .replace(/[^a-z]/g, '')
8
+ .replace(/e$/, '')
9
+ .match(/[aeiouy]+/g);
10
+ return Math.max(1, groups ? groups.length : 1);
11
+ }
12
+ // French heuristic: accented vowels count as vowels, a trailing "e"/"es" is silent.
13
+ function countSyllablesFr(word) {
14
+ const groups = word
15
+ .toLowerCase()
16
+ .replace(/[^a-zàâäéèêëîïôöùûüÿç]/g, '')
17
+ .replace(/es?$/, '')
18
+ .match(/[aeiouyàâäéèêëîïôöùûüÿ]+/g);
19
+ return Math.max(1, groups ? groups.length : 1);
20
+ }
21
+ const round2 = (n) => Math.round(n * 100) / 100;
22
+ /**
23
+ * Computes Flesch readability scores on a text. English uses the original
24
+ * Flesch coefficients; French uses the Kandel & Moles adaptation, which has no
25
+ * grade-level counterpart, so fleschKincaidGrade is null for French.
26
+ *
27
+ * @param text - The text to analyze
28
+ * @param lang - Language of the text: en (default) or fr
29
+ * @returns Word, sentence and syllable counts, Flesch scores and estimated reading time
30
+ * @throws Error if the text is missing or too long, or if the language is unsupported
31
+ */
32
+ export default function read(text, lang = 'en') {
33
+ if (!text || !text.trim())
34
+ throw new Error('Please provide a text');
35
+ if (text.length > MAX_READ_LENGTH)
36
+ throw new Error(`Text must be ${MAX_READ_LENGTH} characters or fewer`);
37
+ if (!LANGUAGES.includes(lang))
38
+ throw new Error(`Language must be one of: ${LANGUAGES.join(', ')}`);
39
+ const wordList = text
40
+ .trim()
41
+ .split(/\s+/)
42
+ .filter((w) => /[\p{L}\p{N}]/u.test(w));
43
+ const words = wordList.length;
44
+ if (words === 0)
45
+ throw new Error('Please provide a text');
46
+ const sentences = text.split(/[.!?…]+/).filter((s) => s.trim()).length || 1;
47
+ const countSyllables = lang === 'fr' ? countSyllablesFr : countSyllablesEn;
48
+ const syllables = wordList.reduce((sum, word) => sum + countSyllables(word), 0);
49
+ const wordsPerSentence = words / sentences;
50
+ const syllablesPerWord = syllables / words;
51
+ const fleschReadingEase = lang === 'fr'
52
+ ? round2(207 - 1.015 * wordsPerSentence - 73.6 * syllablesPerWord)
53
+ : round2(206.835 - 1.015 * wordsPerSentence - 84.6 * syllablesPerWord);
54
+ const fleschKincaidGrade = lang === 'fr' ? null : round2(0.39 * wordsPerSentence + 11.8 * syllablesPerWord - 15.59);
55
+ const minutes = words / 200;
56
+ const readingTime = minutes < 1 ? `${Math.ceil(minutes * 60)}s` : `${Math.round(minutes)}min`;
57
+ return { lang, words, sentences, syllables, fleschReadingEase, fleschKincaidGrade, readingTime };
58
+ }
59
+ //# sourceMappingURL=read.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/modules/v5/read.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ export interface SemverParseResult {
2
+ version: string;
3
+ major: number;
4
+ minor: number;
5
+ patch: number;
6
+ prerelease: string | null;
7
+ build: string | null;
8
+ }
9
+ export interface SemverBumpResult {
10
+ version: string;
11
+ action: 'bump';
12
+ part: string;
13
+ result: string;
14
+ }
15
+ export interface SemverCompareResult {
16
+ version: string;
17
+ action: 'compare';
18
+ other: string;
19
+ result: -1 | 0 | 1;
20
+ description: string;
21
+ }
22
+ export type SemverResult = SemverParseResult | SemverBumpResult | SemverCompareResult;
23
+ /**
24
+ * Parses, bumps or compares semantic versions (semver.org).
25
+ *
26
+ * @param version - The semver version to work with
27
+ * @param action - Action to perform: parse (default), bump or compare
28
+ * @param part - For bump: part to increment (major, minor or patch), lower parts reset to zero
29
+ * @param other - For compare: second version to compare against
30
+ * @returns Parsed components, the bumped version, or the comparison result (-1, 0 or 1)
31
+ * @throws Error if a version is missing, too long or invalid, or if action/part is unknown
32
+ */
33
+ export default function semver(version: string, action?: string, part?: string, other?: string): SemverResult;
@@ -0,0 +1,99 @@
1
+ import { MAX_SEMVER_LENGTH } from '../../constants.js';
2
+ const SEMVER_REGEX = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-([0-9A-Za-z.-]+))?(?:\+([0-9A-Za-z.-]+))?$/;
3
+ const ACTIONS = ['parse', 'bump', 'compare'];
4
+ const PARTS = ['major', 'minor', 'patch'];
5
+ function parse(version) {
6
+ if (version.length > MAX_SEMVER_LENGTH) {
7
+ throw new Error(`Version must be ${MAX_SEMVER_LENGTH} characters or fewer`);
8
+ }
9
+ const match = SEMVER_REGEX.exec(version);
10
+ if (!match)
11
+ throw new Error('Invalid semver version');
12
+ return {
13
+ major: parseInt(match[1], 10),
14
+ minor: parseInt(match[2], 10),
15
+ patch: parseInt(match[3], 10),
16
+ prerelease: match[4] ?? null,
17
+ build: match[5] ?? null,
18
+ };
19
+ }
20
+ function comparePrerelease(a, b) {
21
+ if (a === null && b === null)
22
+ return 0;
23
+ if (a === null)
24
+ return 1;
25
+ if (b === null)
26
+ return -1;
27
+ const left = a.split('.');
28
+ const right = b.split('.');
29
+ for (let i = 0; i < Math.max(left.length, right.length); i++) {
30
+ const x = left[i];
31
+ const y = right[i];
32
+ if (x === undefined)
33
+ return -1;
34
+ if (y === undefined)
35
+ return 1;
36
+ const xNumeric = /^\d+$/.test(x);
37
+ const yNumeric = /^\d+$/.test(y);
38
+ if (xNumeric && yNumeric) {
39
+ if (parseInt(x, 10) !== parseInt(y, 10))
40
+ return parseInt(x, 10) < parseInt(y, 10) ? -1 : 1;
41
+ }
42
+ else if (xNumeric) {
43
+ return -1;
44
+ }
45
+ else if (yNumeric) {
46
+ return 1;
47
+ }
48
+ else if (x !== y) {
49
+ return x < y ? -1 : 1;
50
+ }
51
+ }
52
+ return 0;
53
+ }
54
+ function compare(a, b) {
55
+ if (a.major !== b.major)
56
+ return a.major < b.major ? -1 : 1;
57
+ if (a.minor !== b.minor)
58
+ return a.minor < b.minor ? -1 : 1;
59
+ if (a.patch !== b.patch)
60
+ return a.patch < b.patch ? -1 : 1;
61
+ const prerelease = comparePrerelease(a.prerelease, b.prerelease);
62
+ return prerelease < 0 ? -1 : prerelease > 0 ? 1 : 0;
63
+ }
64
+ /**
65
+ * Parses, bumps or compares semantic versions (semver.org).
66
+ *
67
+ * @param version - The semver version to work with
68
+ * @param action - Action to perform: parse (default), bump or compare
69
+ * @param part - For bump: part to increment (major, minor or patch), lower parts reset to zero
70
+ * @param other - For compare: second version to compare against
71
+ * @returns Parsed components, the bumped version, or the comparison result (-1, 0 or 1)
72
+ * @throws Error if a version is missing, too long or invalid, or if action/part is unknown
73
+ */
74
+ export default function semver(version, action = 'parse', part = 'patch', other) {
75
+ if (!version)
76
+ throw new Error('Please provide a version (?version={version})');
77
+ if (!ACTIONS.includes(action))
78
+ throw new Error(`Action must be one of: ${ACTIONS.join(', ')}`);
79
+ const parsed = parse(version);
80
+ if (action === 'parse') {
81
+ return { version, ...parsed };
82
+ }
83
+ if (action === 'bump') {
84
+ if (!PARTS.includes(part))
85
+ throw new Error(`Part must be one of: ${PARTS.join(', ')}`);
86
+ const result = part === 'major'
87
+ ? `${parsed.major + 1}.0.0`
88
+ : part === 'minor'
89
+ ? `${parsed.major}.${parsed.minor + 1}.0`
90
+ : `${parsed.major}.${parsed.minor}.${parsed.patch + 1}`;
91
+ return { version, action: 'bump', part, result };
92
+ }
93
+ if (!other)
94
+ throw new Error('Please provide a second version (&other={version})');
95
+ const result = compare(parsed, parse(other));
96
+ const sign = result === 0 ? '=' : result < 0 ? '<' : '>';
97
+ return { version, action: 'compare', other, result, description: `${version} ${sign} ${other}` };
98
+ }
99
+ //# sourceMappingURL=semver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semver.js","sourceRoot":"","sources":["../../../src/modules/v5/semver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export interface EncryptResult {
2
+ action: string;
3
+ algorithm: string;
4
+ result: string;
5
+ }
6
+ /**
7
+ * Encrypts or decrypts text using AES with key derivation via scrypt.
8
+ *
9
+ * @param action - "encrypt" or "decrypt"
10
+ * @param text - Text to encrypt, or base64 blob to decrypt
11
+ * @param key - User-provided key (min 8 characters)
12
+ * @param algorithm - Cipher algorithm (default: aes-256-gcm)
13
+ * @returns Object containing action, algorithm, and base64 result
14
+ */
15
+ export default function encrypt(action: string, text: string, key: string, algorithm?: string): EncryptResult;
@@ -0,0 +1,5 @@
1
+ export * from '../v4/text.js';
2
+ /**
3
+ * Converts a number to its written form in the given language.
4
+ */
5
+ export declare function number(value: string, lang: string): string;
@@ -0,0 +1,19 @@
1
+ import type { TicTacToeStorage } from '../../types/storage.js';
2
+ interface TicTacToeParams {
3
+ username?: string;
4
+ move?: string;
5
+ session?: string;
6
+ game?: string;
7
+ private?: boolean;
8
+ storage: TicTacToeStorage;
9
+ }
10
+ /**
11
+ * Handles Tic-Tac-Toe game actions including playing a move, fetching game state, listing games, and forfeiting.
12
+ *
13
+ * @param action - The action to perform: "play", "fetch", "list", or "forfeit"
14
+ * @param params - Game parameters including username, move, session, game ID, and shared storage
15
+ * @returns Game state or action result depending on the action
16
+ * @throws Error if a required parameter is missing, the action is invalid, or a rate limit is exceeded
17
+ */
18
+ export default function tic_tac_toe(action: string, params: TicTacToeParams): Record<string, unknown>;
19
+ export {};
@@ -105,7 +105,7 @@ function playMove(params, games, sessions, u, now) {
105
105
  setTimeout(() => {
106
106
  if (games[game] && games[game].creation === creation)
107
107
  delete games[game];
108
- }, GAME_CLEANUP_TTL);
108
+ }, GAME_CLEANUP_TTL).unref();
109
109
  return {
110
110
  message: `Move sent successfully. ${result.winner ? result.winner + ' wins. ' + result.loser + ' loses.' : "It's a tie."}`,
111
111
  ...result,
@@ -116,13 +116,13 @@ function playMove(params, games, sessions, u, now) {
116
116
  if (cur && cur.creation === creation && Date.now() - (cur.last ?? cur.creation) >= SESSION_TTL) {
117
117
  delete games[game];
118
118
  }
119
- }, SESSION_TTL);
119
+ }, SESSION_TTL).unref();
120
120
  sessions[u] = sessions[u] ?? { user: session, last: now };
121
121
  sessions[u].last = now;
122
122
  setTimeout(() => {
123
123
  if (sessions[u] && Date.now() - sessions[u].last >= SESSION_TTL)
124
124
  delete sessions[u];
125
- }, SESSION_TTL);
125
+ }, SESSION_TTL).unref();
126
126
  return { message: 'Move sent successfully' };
127
127
  }
128
128
  function fetchGame(params, games, u) {
@@ -1 +1 @@
1
- {"version":3,"file":"tic_tac_toe.js","sourceRoot":"","sources":["../../../src/modules/v5/tic_tac_toe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tic_tac_toe.js","sourceRoot":"","sources":["../../../src/modules/v5/tic_tac_toe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export interface UrlResult {
2
+ url: string;
3
+ scheme: string;
4
+ host: string;
5
+ port: number | null;
6
+ path: string;
7
+ params: Record<string, string | string[]>;
8
+ fragment: string;
9
+ valid: boolean;
10
+ }
11
+ /**
12
+ * Parses a URL into its structural components.
13
+ *
14
+ * @param url - Absolute URL to parse, including its scheme (e.g. https://example.com/path?a=1)
15
+ * @returns Object with the original URL, scheme, host, port, path, query parameters, fragment, and validity status
16
+ * @throws Error if the URL is empty, exceeds the maximum length, or cannot be parsed
17
+ */
18
+ export default function parseUrl(url: string): UrlResult;
@@ -1,9 +1,17 @@
1
1
  import { MAX_URL_LENGTH } from '../../constants.js';
2
+ // Default ports for common URL schemes
3
+ const DEFAULT_PORTS = new Map([
4
+ ['ftp', 21],
5
+ ['http', 80],
6
+ ['https', 443],
7
+ ['ws', 80],
8
+ ['wss', 443],
9
+ ]);
2
10
  /**
3
11
  * Parses a URL into its structural components.
4
12
  *
5
13
  * @param url - Absolute URL to parse, including its scheme (e.g. https://example.com/path?a=1)
6
- * @returns Object with the original URL, scheme, host, port, path, query params (duplicates grouped into arrays) and fragment
14
+ * @returns Object with the original URL, scheme, host, port, path, query parameters, fragment, and validity status
7
15
  * @throws Error if the URL is empty, exceeds the maximum length, or cannot be parsed
8
16
  */
9
17
  export default function parseUrl(url) {
@@ -28,11 +36,12 @@ export default function parseUrl(url) {
28
36
  else
29
37
  params[key] = [current, value];
30
38
  }
39
+ const scheme = parsed.protocol.replace(':', '');
31
40
  return {
32
41
  url,
33
- scheme: parsed.protocol.replace(':', ''),
42
+ scheme,
34
43
  host: parsed.hostname,
35
- port: parsed.port ? parseInt(parsed.port, 10) : null,
44
+ port: parsed.port ? parseInt(parsed.port, 10) : (DEFAULT_PORTS.get(scheme) ?? null),
36
45
  path: parsed.pathname,
37
46
  params,
38
47
  fragment: parsed.hash.replace('#', ''),
@@ -1 +1 @@
1
- {"version":3,"file":"url.js","sourceRoot":"","sources":["../../../src/modules/v5/url.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAapD;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAW;IACxC,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAC/D,IAAI,GAAG,CAAC,MAAM,GAAG,cAAc;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,cAAc,aAAa,CAAC,CAAC;IAEnG,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACD,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACL,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,MAAM,GAAsC,EAAE,CAAC;IACrD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,OAAO,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;YAChD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,OAAO;QACH,GAAG;QACH,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;QACxC,IAAI,EAAE,MAAM,CAAC,QAAQ;QACrB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;QACpD,IAAI,EAAE,MAAM,CAAC,QAAQ;QACrB,MAAM;QACN,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;QACtC,KAAK,EAAE,IAAI;KACd,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"url.js","sourceRoot":"","sources":["../../../src/modules/v5/url.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,uCAAuC;AACvC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC1B,CAAC,KAAK,EAAE,EAAE,CAAC;IACX,CAAC,MAAM,EAAE,EAAE,CAAC;IACZ,CAAC,OAAO,EAAE,GAAG,CAAC;IACd,CAAC,IAAI,EAAE,EAAE,CAAC;IACV,CAAC,KAAK,EAAE,GAAG,CAAC;CACf,CAAC,CAAC;AAaH;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAW;IACxC,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAC/D,IAAI,GAAG,CAAC,MAAM,GAAG,cAAc;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,cAAc,aAAa,CAAC,CAAC;IAEnG,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACD,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACL,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,MAAM,GAAsC,EAAE,CAAC;IACrD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,OAAO,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;YAChD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAEhD,OAAO;QACH,GAAG;QACH,MAAM;QACN,IAAI,EAAE,MAAM,CAAC,QAAQ;QACrB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;QACnF,IAAI,EAAE,MAAM,CAAC,QAAQ;QACrB,MAAM;QACN,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;QACtC,KAAK,EAAE,IAAI;KACd,CAAC;AACN,CAAC"}