@ya-accelerators/web-backend-framework 0.0.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/@types/error.d.ts +4 -0
- package/@types/general.d.ts +9 -0
- package/dist/app/index.d.ts +2 -0
- package/dist/app/index.js +3 -0
- package/dist/app/index.js.map +1 -0
- package/dist/app/server/index.d.ts +16 -0
- package/dist/app/server/index.js +162 -0
- package/dist/app/server/index.js.map +1 -0
- package/dist/app/trpc/error/index.d.ts +12 -0
- package/dist/app/trpc/error/index.js +108 -0
- package/dist/app/trpc/error/index.js.map +1 -0
- package/dist/app/trpc/header/index.d.ts +2 -0
- package/dist/app/trpc/header/index.js +9 -0
- package/dist/app/trpc/header/index.js.map +1 -0
- package/dist/app/trpc/index.d.ts +4 -0
- package/dist/app/trpc/index.js +5 -0
- package/dist/app/trpc/index.js.map +1 -0
- package/dist/app/trpc/schema/index.d.ts +10 -0
- package/dist/app/trpc/schema/index.js +28 -0
- package/dist/app/trpc/schema/index.js.map +1 -0
- package/dist/app/trpc/server/index.d.ts +149 -0
- package/dist/app/trpc/server/index.js +125 -0
- package/dist/app/trpc/server/index.js.map +1 -0
- package/dist/env.d.ts +16 -0
- package/dist/env.js +43 -0
- package/dist/env.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/prisma/index.d.ts +37 -0
- package/dist/prisma/index.js +204 -0
- package/dist/prisma/index.js.map +1 -0
- package/dist/redis/index.d.ts +7 -0
- package/dist/redis/index.js +55 -0
- package/dist/redis/index.js.map +1 -0
- package/dist/s3/index.d.ts +4 -0
- package/dist/s3/index.js +19 -0
- package/dist/s3/index.js.map +1 -0
- package/dist/util/index.d.ts +26 -0
- package/dist/util/index.js +174 -0
- package/dist/util/index.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { ulid } from 'ulid';
|
|
2
|
+
const PASSWORD_ALLOWED_CHARACTERS = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()_+=-[]{}|;:,.?/~';
|
|
3
|
+
export const Util = {
|
|
4
|
+
isArray: (maybeArray) => Array.isArray(maybeArray),
|
|
5
|
+
isObject: (arg) => typeof arg === typeof Object,
|
|
6
|
+
isString: (arg) => typeof arg === 'string',
|
|
7
|
+
normalize: (value) => value.trim().toLowerCase(),
|
|
8
|
+
sanitize: (input, options) => {
|
|
9
|
+
const DEFAULT_SANITIZE_KEYWORDS = [
|
|
10
|
+
'authorization',
|
|
11
|
+
'proxy-authorization',
|
|
12
|
+
'cookie',
|
|
13
|
+
'set-cookie',
|
|
14
|
+
'x-api-key',
|
|
15
|
+
'apikey',
|
|
16
|
+
'api_key',
|
|
17
|
+
'token',
|
|
18
|
+
'secret',
|
|
19
|
+
'password',
|
|
20
|
+
'passwd',
|
|
21
|
+
'signature',
|
|
22
|
+
'private',
|
|
23
|
+
'session',
|
|
24
|
+
'jwt',
|
|
25
|
+
'bearer',
|
|
26
|
+
];
|
|
27
|
+
const normalizeKey = (k) => k.trim().toLowerCase();
|
|
28
|
+
const shouldRedactKey = (key, keywords) => keywords.some((kw) => normalizeKey(key) === kw || normalizeKey(key).includes(kw));
|
|
29
|
+
const maybeTruncate = (s, max) => !max || max <= 0 ? s : s.length <= max ? s : `${s.slice(0, max)}...<truncated>`;
|
|
30
|
+
const toJsonLike = (v) => {
|
|
31
|
+
if (v === null)
|
|
32
|
+
return null;
|
|
33
|
+
if (v === undefined)
|
|
34
|
+
return undefined;
|
|
35
|
+
if (v instanceof Date)
|
|
36
|
+
return v.toISOString();
|
|
37
|
+
if (typeof v === 'bigint')
|
|
38
|
+
return v.toString();
|
|
39
|
+
if (v instanceof Uint8Array)
|
|
40
|
+
return `Uint8Array(${v.byteLength})`;
|
|
41
|
+
if (typeof v === 'string')
|
|
42
|
+
return v;
|
|
43
|
+
if (typeof v === 'number')
|
|
44
|
+
return Number.isFinite(v) ? v : String(v);
|
|
45
|
+
if (typeof v === 'boolean')
|
|
46
|
+
return v;
|
|
47
|
+
if (Array.isArray(v))
|
|
48
|
+
return v.map((x) => toJsonLike(x));
|
|
49
|
+
if (typeof v === 'object') {
|
|
50
|
+
const out = {};
|
|
51
|
+
for (const [k, vv] of Object.entries(v)) {
|
|
52
|
+
out[k] = toJsonLike(vv);
|
|
53
|
+
}
|
|
54
|
+
return out;
|
|
55
|
+
}
|
|
56
|
+
return String(v);
|
|
57
|
+
};
|
|
58
|
+
const maskInText = (text) => text
|
|
59
|
+
// password: "xxx"
|
|
60
|
+
.replace(/(\bpassword\b\s*:\s*)"(?:[^"\\]|\\.)*"/gi, '$1"***"')
|
|
61
|
+
.replace(/(\bpasswd\b\s*:\s*)"(?:[^"\\]|\\.)*"/gi, '$1"***"')
|
|
62
|
+
// authorization: "Bearer xxx"
|
|
63
|
+
.replace(/(\bauthorization\b\s*:\s*)"(?:[^"\\]|\\.)*"/gi, '$1"***"')
|
|
64
|
+
.replace(/(\bproxy-authorization\b\s*:\s*)"(?:[^"\\]|\\.)*"/gi, '$1"***"')
|
|
65
|
+
// cookie / set-cookie
|
|
66
|
+
.replace(/(\bcookie\b\s*:\s*)"(?:[^"\\]|\\.)*"/gi, '$1"***"')
|
|
67
|
+
.replace(/(\bset-cookie\b\s*:\s*)"(?:[^"\\]|\\.)*"/gi, '$1"***"')
|
|
68
|
+
// token / secret
|
|
69
|
+
.replace(/(\btoken\b\s*:\s*)"(?:[^"\\]|\\.)*"/gi, '$1"***"')
|
|
70
|
+
.replace(/(\bsecret\b\s*:\s*)"(?:[^"\\]|\\.)*"/gi, '$1"***"');
|
|
71
|
+
const keywords = options?.keywords ?? DEFAULT_SANITIZE_KEYWORDS;
|
|
72
|
+
const maxStringLength = options?.maxStringLength;
|
|
73
|
+
const seen = new WeakSet();
|
|
74
|
+
const walk = (value, keyHint) => {
|
|
75
|
+
if (value === null)
|
|
76
|
+
return null;
|
|
77
|
+
if (value === undefined)
|
|
78
|
+
return undefined;
|
|
79
|
+
if (typeof value === 'object') {
|
|
80
|
+
if (seen.has(value)) {
|
|
81
|
+
return '[Circular]';
|
|
82
|
+
}
|
|
83
|
+
seen.add(value);
|
|
84
|
+
}
|
|
85
|
+
if (typeof value === 'string') {
|
|
86
|
+
const maskedText = maskInText(value);
|
|
87
|
+
if (keyHint && shouldRedactKey(keyHint, keywords)) {
|
|
88
|
+
return '***';
|
|
89
|
+
}
|
|
90
|
+
return maybeTruncate(maskedText, maxStringLength);
|
|
91
|
+
}
|
|
92
|
+
if (typeof value === 'number')
|
|
93
|
+
return Number.isFinite(value) ? value : String(value);
|
|
94
|
+
if (typeof value === 'boolean')
|
|
95
|
+
return value;
|
|
96
|
+
if (Array.isArray(value)) {
|
|
97
|
+
return value.map((v) => walk(v));
|
|
98
|
+
}
|
|
99
|
+
if (typeof value === 'object') {
|
|
100
|
+
const out = {};
|
|
101
|
+
for (const [k, v] of Object.entries(value)) {
|
|
102
|
+
const nk = normalizeKey(k);
|
|
103
|
+
if (shouldRedactKey(k, keywords)) {
|
|
104
|
+
out[nk] = '***';
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
out[nk] = walk(v, k);
|
|
108
|
+
}
|
|
109
|
+
return out;
|
|
110
|
+
}
|
|
111
|
+
return String(value);
|
|
112
|
+
};
|
|
113
|
+
return walk(toJsonLike(input));
|
|
114
|
+
},
|
|
115
|
+
createEnvProxy: ((schema, parseEnv, _omitKeys, extend) => {
|
|
116
|
+
let cachedEnv = null;
|
|
117
|
+
let cachedExtend = null;
|
|
118
|
+
return new Proxy({}, {
|
|
119
|
+
get: (_target, prop) => {
|
|
120
|
+
const env = (cachedEnv ??= schema.parse(parseEnv()));
|
|
121
|
+
if (extend) {
|
|
122
|
+
cachedExtend ??= extend(env);
|
|
123
|
+
const extended = cachedExtend;
|
|
124
|
+
if (prop in extended)
|
|
125
|
+
return extended[prop];
|
|
126
|
+
}
|
|
127
|
+
return env[prop];
|
|
128
|
+
},
|
|
129
|
+
});
|
|
130
|
+
}),
|
|
131
|
+
// backend only
|
|
132
|
+
isValidEmail: (value) => value === undefined
|
|
133
|
+
? false
|
|
134
|
+
: /^[a-zA-Z0-9_.+-]+@([a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]*\.)+[a-zA-Z]{2,}$/.test(value),
|
|
135
|
+
isValidPasswordCharacters: (value) => value !== undefined && [...value].every((ch) => PASSWORD_ALLOWED_CHARACTERS.includes(ch)),
|
|
136
|
+
isValidPassword: (value) => value === undefined
|
|
137
|
+
? false
|
|
138
|
+
: new RegExp(`^((?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])|(?=.*[a-z])(?=.*[A-Z])(?=.*[\u{E0000}])|(?=.*[A-Z])(?=.*[0-9])(?=.*[\u{E0000}])|(?=.*[a-z])(?=.*[0-9])(?=.*[\u{E0000}]))[a-zA-Z0-9\u{E0000}]{8,}$`.replaceAll('\u{E0000}', [...PASSWORD_ALLOWED_CHARACTERS.slice(62)]
|
|
139
|
+
.map((c) => {
|
|
140
|
+
switch (c) {
|
|
141
|
+
case '\\':
|
|
142
|
+
return '\\\\';
|
|
143
|
+
case ']':
|
|
144
|
+
return '\\]';
|
|
145
|
+
case '-':
|
|
146
|
+
return '\\-';
|
|
147
|
+
case '[':
|
|
148
|
+
return '\\[';
|
|
149
|
+
case '^':
|
|
150
|
+
return '\\^';
|
|
151
|
+
default:
|
|
152
|
+
return c;
|
|
153
|
+
}
|
|
154
|
+
})
|
|
155
|
+
.join(''))).test(value),
|
|
156
|
+
// E.164形式の電話番号 +819012345678
|
|
157
|
+
isValidPhoneE164: (value) => value !== undefined && /^\+[1-9]\d{1,14}$/.test(value),
|
|
158
|
+
// 日本の電話番号 012-3456-7890
|
|
159
|
+
isValidJapanesePhoneNumber: (value) => value !== undefined && /^0\d{1,4}-\d{1,4}-\d{3,4}$/.test(value) && /^0\d{9,10}$/.test(value.replace(/-/g, '')),
|
|
160
|
+
// 法人番号 13桁の数字
|
|
161
|
+
isValidJapaneseCorporateId: (value) => (value === undefined ? false : /[0-9]{13}/.test(value)),
|
|
162
|
+
// インボイス番号 T+13桁の数字
|
|
163
|
+
isValidInvoiceNumber: (value) => (value === undefined ? false : /T[0-9]{13}/.test(value)),
|
|
164
|
+
// 郵便番号 3桁-4桁の数字
|
|
165
|
+
isValidJapaneseZipCode: (value) => (value === undefined ? false : /^\d{3}-?\d{4}$/g.test(value)),
|
|
166
|
+
createOTP: (n, isNumberOnly) => {
|
|
167
|
+
const seed = isNumberOnly ? '0123456789' : 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
|
|
168
|
+
return Array.from(crypto.getRandomValues(new Uint8Array(n)))
|
|
169
|
+
.map((x) => seed[x % seed.length])
|
|
170
|
+
.join('');
|
|
171
|
+
},
|
|
172
|
+
createULID: ulid,
|
|
173
|
+
};
|
|
174
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ya-accelerators/web-backend-framework",
|
|
3
|
+
"version": "0.0.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "",
|
|
6
|
+
"author": "YA Holdings OÜ",
|
|
7
|
+
"license": "Apache-2.0",
|
|
8
|
+
"keywords": [],
|
|
9
|
+
"main": "./dist/index.js",
|
|
10
|
+
"module": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"repository": {
|
|
13
|
+
"type": "git",
|
|
14
|
+
"url": "git+https://github.com/ya-holdings/web-development-base.git",
|
|
15
|
+
"directory": "backend/packages/web-backend-framework"
|
|
16
|
+
},
|
|
17
|
+
"publishConfig": {
|
|
18
|
+
"access": "public",
|
|
19
|
+
"registry": "https://registry.npmjs.org"
|
|
20
|
+
},
|
|
21
|
+
"files": [
|
|
22
|
+
"@types",
|
|
23
|
+
"dist"
|
|
24
|
+
],
|
|
25
|
+
"scripts": {
|
|
26
|
+
"setup": "pnpm run build",
|
|
27
|
+
"build": "tsc",
|
|
28
|
+
"dev": "tsc --watch --preserveWatchOutput",
|
|
29
|
+
"lint": "run-p -l -c lint:*",
|
|
30
|
+
"lint:tsc": "tsc --pretty --noEmit",
|
|
31
|
+
"lint:eslint": "eslint .",
|
|
32
|
+
"lint:prettier": "prettier --check --config ../../.prettierrc.mjs --ignore-path ../../../.gitignore .",
|
|
33
|
+
"fix": "run-p -l -c fix:*",
|
|
34
|
+
"fix:eslint": "eslint . --fix",
|
|
35
|
+
"fix:prettier": "prettier --write --config ../../.prettierrc.mjs --ignore-path ../../../.gitignore ."
|
|
36
|
+
},
|
|
37
|
+
"dependencies": {
|
|
38
|
+
"@aws-sdk/client-s3": "^3.1028.0",
|
|
39
|
+
"@prisma/adapter-mariadb": "^7.7.0",
|
|
40
|
+
"@prisma/extension-read-replicas": "^0.5.0",
|
|
41
|
+
"@valkey/valkey-glide": "^2.3.1",
|
|
42
|
+
"cors": "^2.8.6",
|
|
43
|
+
"dayjs": "^1.11.20",
|
|
44
|
+
"express": "^5.2.1",
|
|
45
|
+
"http-proxy-middleware": "^3.0.5",
|
|
46
|
+
"mariadb": "^3.5.2",
|
|
47
|
+
"ulid": "^3.0.2"
|
|
48
|
+
},
|
|
49
|
+
"devDependencies": {
|
|
50
|
+
"@types/cors": "^2.8.19",
|
|
51
|
+
"@types/express": "^5.0.6"
|
|
52
|
+
}
|
|
53
|
+
}
|