@bgord/bun 0.10.1 → 0.11.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.
- package/dist/basic-auth.service.d.ts +2 -2
- package/dist/basic-auth.service.d.ts.map +1 -1
- package/dist/basic-auth.service.js +2 -2
- package/dist/basic-auth.service.js.map +1 -1
- package/dist/build-info-repository.service.js +1 -1
- package/dist/build-info-repository.service.js.map +1 -1
- package/dist/correlation-id.vo.d.ts +1 -1
- package/dist/correlation-id.vo.d.ts.map +1 -1
- package/dist/correlation-id.vo.js +1 -1
- package/dist/correlation-id.vo.js.map +1 -1
- package/dist/encryption.service.d.ts +2 -2
- package/dist/file-uploader.middleware.d.ts +1 -1
- package/dist/file-uploader.middleware.d.ts.map +1 -1
- package/dist/file-uploader.middleware.js +1 -1
- package/dist/file-uploader.middleware.js.map +1 -1
- package/dist/hcaptcha-shield.middleware.d.ts +1 -1
- package/dist/hcaptcha-shield.middleware.d.ts.map +1 -1
- package/dist/hcaptcha-shield.middleware.js +11 -3
- package/dist/hcaptcha-shield.middleware.js.map +1 -1
- package/dist/image-compressor.service.d.ts +1 -1
- package/dist/image-compressor.service.d.ts.map +1 -1
- package/dist/image-compressor.service.js +7 -1
- package/dist/image-compressor.service.js.map +1 -1
- package/dist/logger.service.d.ts +1 -2
- package/dist/logger.service.d.ts.map +1 -1
- package/dist/mailer.service.d.ts +1 -1
- package/dist/mailer.service.d.ts.map +1 -1
- package/dist/port.vo.d.ts +1 -1
- package/dist/port.vo.d.ts.map +1 -1
- package/dist/port.vo.js +1 -1
- package/dist/port.vo.js.map +1 -1
- package/dist/prerequisites/translations.d.ts.map +1 -1
- package/dist/prerequisites/translations.js.map +1 -1
- package/dist/rate-limit-shield.middleware.js +1 -1
- package/dist/rate-limit-shield.middleware.js.map +1 -1
- package/dist/recaptcha-shield.middleware.d.ts +1 -1
- package/dist/recaptcha-shield.middleware.d.ts.map +1 -1
- package/dist/recaptcha-shield.middleware.js +8 -2
- package/dist/recaptcha-shield.middleware.js.map +1 -1
- package/dist/setup.service.d.ts +1 -1
- package/dist/setup.service.d.ts.map +1 -1
- package/dist/time-zone-offset.middleware.js +1 -1
- package/dist/time-zone-offset.middleware.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/uptime.service.d.ts.map +1 -1
- package/dist/uptime.service.js +4 -1
- package/dist/uptime.service.js.map +1 -1
- package/dist/url-wo-trailing-slash.vo.d.ts +1 -1
- package/dist/url-wo-trailing-slash.vo.d.ts.map +1 -1
- package/dist/url-wo-trailing-slash.vo.js +2 -1
- package/dist/url-wo-trailing-slash.vo.js.map +1 -1
- package/package.json +4 -4
- package/src/basic-auth.service.ts +2 -2
- package/src/build-info-repository.service.ts +1 -1
- package/src/correlation-id.vo.ts +1 -1
- package/src/file-uploader.middleware.ts +2 -2
- package/src/hcaptcha-shield.middleware.ts +1 -1
- package/src/image-compressor.service.ts +7 -1
- package/src/logger.service.ts +1 -1
- package/src/port.vo.ts +1 -1
- package/src/prerequisites/translations.ts +12 -9
- package/src/rate-limit-shield.middleware.ts +1 -1
- package/src/recaptcha-shield.middleware.ts +1 -1
- package/src/time-zone-offset.middleware.ts +1 -1
- package/src/uptime.service.ts +4 -1
- package/src/url-wo-trailing-slash.vo.ts +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uptime.service.d.ts","sourceRoot":"","sources":["../src/uptime.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC;IAC7B,SAAS,EAAE,UAAU,CAAC,CAAC,OAAO,KAAK,CAAC,cAAc,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;CAClE,CAAC;AAEF,qBAAa,MAAM;IACjB,MAAM,CAAC,GAAG,IAAI,gBAAgB;
|
|
1
|
+
{"version":3,"file":"uptime.service.d.ts","sourceRoot":"","sources":["../src/uptime.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC;IAC7B,SAAS,EAAE,UAAU,CAAC,CAAC,OAAO,KAAK,CAAC,cAAc,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;CAClE,CAAC;AAEF,qBAAa,MAAM;IACjB,MAAM,CAAC,GAAG,IAAI,gBAAgB;CAU/B"}
|
package/dist/uptime.service.js
CHANGED
|
@@ -4,7 +4,10 @@ export class Uptime {
|
|
|
4
4
|
const rounding = new tools.RoundToNearest();
|
|
5
5
|
const uptime = tools.Time.Seconds(rounding.round(process.uptime()));
|
|
6
6
|
const uptimeFormatted = tools.DateFormatters.relative(Date.now() - uptime.ms);
|
|
7
|
-
return {
|
|
7
|
+
return {
|
|
8
|
+
seconds: tools.Timestamp.parse(uptime.seconds),
|
|
9
|
+
formatted: uptimeFormatted,
|
|
10
|
+
};
|
|
8
11
|
}
|
|
9
12
|
}
|
|
10
13
|
//# sourceMappingURL=uptime.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uptime.service.js","sourceRoot":"","sources":["../src/uptime.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAOtC,MAAM,OAAO,MAAM;IACjB,MAAM,CAAC,GAAG;QACR,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACpE,MAAM,eAAe,GAAG,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAE9E,OAAO,
|
|
1
|
+
{"version":3,"file":"uptime.service.js","sourceRoot":"","sources":["../src/uptime.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAOtC,MAAM,OAAO,MAAM;IACjB,MAAM,CAAC,GAAG;QACR,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACpE,MAAM,eAAe,GAAG,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAE9E,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;YAC9C,SAAS,EAAE,eAAe;SAC3B,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { z } from "zod/v4";
|
|
2
|
-
export declare const UrlWithoutTrailingSlash: z.ZodURL
|
|
2
|
+
export declare const UrlWithoutTrailingSlash: z.core.$ZodBranded<z.ZodURL, "UrlWithoutTrailingSlash">;
|
|
3
3
|
export type UrlWithoutTrailingSlashType = z.infer<typeof UrlWithoutTrailingSlash>;
|
|
4
4
|
//# sourceMappingURL=url-wo-trailing-slash.vo.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url-wo-trailing-slash.vo.d.ts","sourceRoot":"","sources":["../src/url-wo-trailing-slash.vo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,eAAO,MAAM,uBAAuB,
|
|
1
|
+
{"version":3,"file":"url-wo-trailing-slash.vo.d.ts","sourceRoot":"","sources":["../src/url-wo-trailing-slash.vo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,eAAO,MAAM,uBAAuB,yDAOD,CAAC;AAEpC,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url-wo-trailing-slash.vo.js","sourceRoot":"","sources":["../src/url-wo-trailing-slash.vo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC;KACrC,GAAG,EAAE;KACL,IAAI,EAAE;KACN,GAAG,CAAC,CAAC,CAAC;KACN,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;IACvC,OAAO,EAAE,oCAAoC;CAC9C,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"url-wo-trailing-slash.vo.js","sourceRoot":"","sources":["../src/url-wo-trailing-slash.vo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC;KACrC,GAAG,EAAE;KACL,IAAI,EAAE;KACN,GAAG,CAAC,CAAC,CAAC;KACN,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;IACvC,OAAO,EAAE,oCAAoC;CAC9C,CAAC;KACD,KAAK,CAAC,yBAAyB,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bgord/bun",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "Bartosz Gordon",
|
|
@@ -20,19 +20,19 @@
|
|
|
20
20
|
"@biomejs/biome": "1.9.4",
|
|
21
21
|
"@commitlint/cli": "19.8.1",
|
|
22
22
|
"@commitlint/config-conventional": "19.8.1",
|
|
23
|
-
"@types/bun": "1.2.
|
|
23
|
+
"@types/bun": "1.2.16",
|
|
24
24
|
"@types/lodash": "4.17.17",
|
|
25
25
|
"@types/mime-types": "3.0.1",
|
|
26
26
|
"@types/nodemailer": "6.4.17",
|
|
27
27
|
"cspell": "9.0.2",
|
|
28
|
-
"knip": "5.
|
|
28
|
+
"knip": "5.61.0",
|
|
29
29
|
"lefthook": "1.11.13",
|
|
30
30
|
"only-allow": "1.2.1",
|
|
31
31
|
"shellcheck": "3.1.0",
|
|
32
32
|
"typescript": "5.8.3"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@bgord/tools": "0.
|
|
35
|
+
"@bgord/tools": "0.9.2",
|
|
36
36
|
"check-disk-space": "3.4.0",
|
|
37
37
|
"croner": "9.0.0",
|
|
38
38
|
"hcaptcha": "0.2.0",
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { z } from "zod/v4";
|
|
2
2
|
|
|
3
|
-
export const BasicAuthUsername = z.string().min(1).max(128);
|
|
3
|
+
export const BasicAuthUsername = z.string().min(1).max(128).brand("BasicAuthUsername");
|
|
4
4
|
|
|
5
5
|
export type BasicAuthUsernameType = z.infer<typeof BasicAuthUsername>;
|
|
6
6
|
|
|
7
|
-
export const BasicAuthPassword = z.string().min(1).max(128);
|
|
7
|
+
export const BasicAuthPassword = z.string().min(1).max(128).brand("BasicAuthPassword");
|
|
8
8
|
|
|
9
9
|
export type BasicAuthPasswordType = z.infer<typeof BasicAuthPassword>;
|
|
10
10
|
|
|
@@ -7,7 +7,7 @@ export type BuildInfoType = {
|
|
|
7
7
|
|
|
8
8
|
export class BuildInfoRepository {
|
|
9
9
|
static async extract(): Promise<BuildInfoType> {
|
|
10
|
-
const BUILD_DATE = Date.now();
|
|
10
|
+
const BUILD_DATE = tools.Timestamp.parse(Date.now());
|
|
11
11
|
|
|
12
12
|
try {
|
|
13
13
|
const packageJson = await BuildInfoRepository.getPackageJson();
|
package/src/correlation-id.vo.ts
CHANGED
|
@@ -13,14 +13,14 @@ export const FileTooBigError = new HTTPException(400, {
|
|
|
13
13
|
|
|
14
14
|
type FileUploaderConfigType = {
|
|
15
15
|
mimeTypes: string[];
|
|
16
|
-
maxFilesSize: tools.
|
|
16
|
+
maxFilesSize: tools.Size;
|
|
17
17
|
};
|
|
18
18
|
|
|
19
19
|
export class FileUploader {
|
|
20
20
|
static validate(config: FileUploaderConfigType) {
|
|
21
21
|
return [
|
|
22
22
|
bodyLimit({
|
|
23
|
-
maxSize: config.maxFilesSize,
|
|
23
|
+
maxSize: config.maxFilesSize.toBytes(),
|
|
24
24
|
onError: () => {
|
|
25
25
|
throw FileTooBigError;
|
|
26
26
|
},
|
|
@@ -3,7 +3,7 @@ import { createMiddleware } from "hono/factory";
|
|
|
3
3
|
import { HTTPException } from "hono/http-exception";
|
|
4
4
|
import { z } from "zod/v4";
|
|
5
5
|
|
|
6
|
-
export const HCaptchaSecretKey = z.string().trim().length(42);
|
|
6
|
+
export const HCaptchaSecretKey = z.string().trim().length(42).brand("HCaptchaSecretKey");
|
|
7
7
|
|
|
8
8
|
export type HCaptchaSecretKeyType = z.infer<typeof HCaptchaSecretKey>;
|
|
9
9
|
|
|
@@ -3,7 +3,13 @@ import { z } from "zod/v4";
|
|
|
3
3
|
|
|
4
4
|
import type { PathType } from "../src/path.vo";
|
|
5
5
|
|
|
6
|
-
export const ImageCompressionQuality = z
|
|
6
|
+
export const ImageCompressionQuality = z
|
|
7
|
+
.number()
|
|
8
|
+
.int()
|
|
9
|
+
.min(1)
|
|
10
|
+
.max(100)
|
|
11
|
+
.default(85)
|
|
12
|
+
.brand("ImageCompressionQuality");
|
|
7
13
|
|
|
8
14
|
type ImageCompressionQualityType = z.infer<typeof ImageCompressionQuality>;
|
|
9
15
|
|
package/src/logger.service.ts
CHANGED
package/src/port.vo.ts
CHANGED
|
@@ -34,7 +34,10 @@ export class PrerequisiteTranslations extends prereqs.AbstractPrerequisite<Prere
|
|
|
34
34
|
await fsp.access(translationsPath, constants.R_OK);
|
|
35
35
|
|
|
36
36
|
for (const language in this.config.supportedLanguages) {
|
|
37
|
-
await fsp.access(
|
|
37
|
+
await fsp.access(
|
|
38
|
+
new i18n.I18n().getTranslationPathForLanguage(language as tools.LanguageType),
|
|
39
|
+
constants.R_OK,
|
|
40
|
+
);
|
|
38
41
|
}
|
|
39
42
|
} catch (error) {
|
|
40
43
|
return this.reject();
|
|
@@ -49,28 +52,28 @@ export class PrerequisiteTranslations extends prereqs.AbstractPrerequisite<Prere
|
|
|
49
52
|
const problems: PrerequisiteTranslationsProblemType[] = [];
|
|
50
53
|
|
|
51
54
|
for (const language of supportedLanguages) {
|
|
52
|
-
const translations = await new i18n.I18n().getTranslations(language);
|
|
55
|
+
const translations = await new i18n.I18n().getTranslations(language as tools.LanguageType);
|
|
53
56
|
const translationKeys = Object.keys(translations);
|
|
54
57
|
|
|
55
|
-
languageToTranslationKeys[language] = translationKeys;
|
|
58
|
+
languageToTranslationKeys[language as tools.LanguageType] = translationKeys;
|
|
56
59
|
}
|
|
57
60
|
|
|
58
61
|
for (const currentLanguage in languageToTranslationKeys) {
|
|
59
|
-
const translationKeys = languageToTranslationKeys[currentLanguage] ?? [];
|
|
62
|
+
const translationKeys = languageToTranslationKeys[currentLanguage as tools.LanguageType] ?? [];
|
|
60
63
|
|
|
61
64
|
for (const translationKey of translationKeys) {
|
|
62
65
|
for (const supportedLanguage of supportedLanguages) {
|
|
63
66
|
if (supportedLanguage === currentLanguage) continue;
|
|
64
67
|
|
|
65
|
-
const translationKeyExists = languageToTranslationKeys[
|
|
66
|
-
|
|
67
|
-
);
|
|
68
|
+
const translationKeyExists = languageToTranslationKeys[
|
|
69
|
+
supportedLanguage as tools.LanguageType
|
|
70
|
+
]?.some((key) => translationKey === key);
|
|
68
71
|
|
|
69
72
|
if (!translationKeyExists) {
|
|
70
73
|
problems.push({
|
|
71
74
|
translationKey,
|
|
72
|
-
existsInLanguage: currentLanguage,
|
|
73
|
-
missingInLanguage: supportedLanguage,
|
|
75
|
+
existsInLanguage: currentLanguage as tools.LanguageType,
|
|
76
|
+
missingInLanguage: supportedLanguage as tools.LanguageType,
|
|
74
77
|
});
|
|
75
78
|
}
|
|
76
79
|
}
|
|
@@ -19,7 +19,7 @@ export const rateLimitShield = (options: RateLimitShieldOptionsType) => {
|
|
|
19
19
|
if (!enabled) return next();
|
|
20
20
|
|
|
21
21
|
const currentTimestampMs = Date.now();
|
|
22
|
-
const check = rateLimiter.verify(currentTimestampMs);
|
|
22
|
+
const check = rateLimiter.verify(tools.Timestamp.parse(currentTimestampMs));
|
|
23
23
|
|
|
24
24
|
if (!check.allowed) {
|
|
25
25
|
throw TooManyRequestsError;
|
|
@@ -6,7 +6,7 @@ export const RecaptchaSiteKey = z.string().trim().length(40);
|
|
|
6
6
|
|
|
7
7
|
export type RecaptchaSiteKeyType = z.infer<typeof RecaptchaSiteKey>;
|
|
8
8
|
|
|
9
|
-
export const RecaptchaSecretKey = z.string().trim().length(40);
|
|
9
|
+
export const RecaptchaSecretKey = z.string().trim().length(40).brand("RecaptchaSecretKey");
|
|
10
10
|
|
|
11
11
|
export type RecaptchaSecretKeyType = z.infer<typeof RecaptchaSecretKey>;
|
|
12
12
|
|
|
@@ -32,7 +32,7 @@ export class TimeZoneOffset {
|
|
|
32
32
|
timestamp: tools.TimestampType,
|
|
33
33
|
timeZoneOffsetMs: tools.TimeResult["ms"],
|
|
34
34
|
): tools.TimestampType {
|
|
35
|
-
return timestamp - timeZoneOffsetMs;
|
|
35
|
+
return tools.Timestamp.parse(timestamp - timeZoneOffsetMs);
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
static adjustDate(timestamp: tools.TimestampType, timeZoneOffsetMs: tools.TimeResult["ms"]): Date {
|
package/src/uptime.service.ts
CHANGED
|
@@ -11,6 +11,9 @@ export class Uptime {
|
|
|
11
11
|
const uptime = tools.Time.Seconds(rounding.round(process.uptime()));
|
|
12
12
|
const uptimeFormatted = tools.DateFormatters.relative(Date.now() - uptime.ms);
|
|
13
13
|
|
|
14
|
-
return {
|
|
14
|
+
return {
|
|
15
|
+
seconds: tools.Timestamp.parse(uptime.seconds),
|
|
16
|
+
formatted: uptimeFormatted,
|
|
17
|
+
};
|
|
15
18
|
}
|
|
16
19
|
}
|
|
@@ -6,6 +6,7 @@ export const UrlWithoutTrailingSlash = z
|
|
|
6
6
|
.min(1)
|
|
7
7
|
.refine((value) => !value.endsWith("/"), {
|
|
8
8
|
message: "url_cannot_end_with_trailing_slash",
|
|
9
|
-
})
|
|
9
|
+
})
|
|
10
|
+
.brand("UrlWithoutTrailingSlash");
|
|
10
11
|
|
|
11
12
|
export type UrlWithoutTrailingSlashType = z.infer<typeof UrlWithoutTrailingSlash>;
|