@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.
Files changed (42) hide show
  1. package/@types/error.d.ts +4 -0
  2. package/@types/general.d.ts +9 -0
  3. package/dist/app/index.d.ts +2 -0
  4. package/dist/app/index.js +3 -0
  5. package/dist/app/index.js.map +1 -0
  6. package/dist/app/server/index.d.ts +16 -0
  7. package/dist/app/server/index.js +162 -0
  8. package/dist/app/server/index.js.map +1 -0
  9. package/dist/app/trpc/error/index.d.ts +12 -0
  10. package/dist/app/trpc/error/index.js +108 -0
  11. package/dist/app/trpc/error/index.js.map +1 -0
  12. package/dist/app/trpc/header/index.d.ts +2 -0
  13. package/dist/app/trpc/header/index.js +9 -0
  14. package/dist/app/trpc/header/index.js.map +1 -0
  15. package/dist/app/trpc/index.d.ts +4 -0
  16. package/dist/app/trpc/index.js +5 -0
  17. package/dist/app/trpc/index.js.map +1 -0
  18. package/dist/app/trpc/schema/index.d.ts +10 -0
  19. package/dist/app/trpc/schema/index.js +28 -0
  20. package/dist/app/trpc/schema/index.js.map +1 -0
  21. package/dist/app/trpc/server/index.d.ts +149 -0
  22. package/dist/app/trpc/server/index.js +125 -0
  23. package/dist/app/trpc/server/index.js.map +1 -0
  24. package/dist/env.d.ts +16 -0
  25. package/dist/env.js +43 -0
  26. package/dist/env.js.map +1 -0
  27. package/dist/index.d.ts +6 -0
  28. package/dist/index.js +7 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/prisma/index.d.ts +37 -0
  31. package/dist/prisma/index.js +204 -0
  32. package/dist/prisma/index.js.map +1 -0
  33. package/dist/redis/index.d.ts +7 -0
  34. package/dist/redis/index.js +55 -0
  35. package/dist/redis/index.js.map +1 -0
  36. package/dist/s3/index.d.ts +4 -0
  37. package/dist/s3/index.js +19 -0
  38. package/dist/s3/index.js.map +1 -0
  39. package/dist/util/index.d.ts +26 -0
  40. package/dist/util/index.js +174 -0
  41. package/dist/util/index.js.map +1 -0
  42. 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
+ }