@food-log/utils 0.0.32

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 (59) hide show
  1. package/.build/index.d.ts +15 -0
  2. package/.build/index.js +32 -0
  3. package/.build/index.js.map +1 -0
  4. package/.build/src/core/constant/auth.d.ts +7 -0
  5. package/.build/src/core/constant/auth.js +3 -0
  6. package/.build/src/core/constant/auth.js.map +1 -0
  7. package/.build/src/core/constant/language.d.ts +4 -0
  8. package/.build/src/core/constant/language.js +3 -0
  9. package/.build/src/core/constant/language.js.map +1 -0
  10. package/.build/src/core/constant/stage.d.ts +7 -0
  11. package/.build/src/core/constant/stage.js +10 -0
  12. package/.build/src/core/constant/stage.js.map +1 -0
  13. package/.build/src/core/constant/timezone.d.ts +597 -0
  14. package/.build/src/core/constant/timezone.js +600 -0
  15. package/.build/src/core/constant/timezone.js.map +1 -0
  16. package/.build/src/core/env/decorator.d.ts +8 -0
  17. package/.build/src/core/env/decorator.js +55 -0
  18. package/.build/src/core/env/decorator.js.map +1 -0
  19. package/.build/src/core/env/env.d.ts +8 -0
  20. package/.build/src/core/env/env.js +30 -0
  21. package/.build/src/core/env/env.js.map +1 -0
  22. package/.build/src/core/exception/authError.d.ts +10 -0
  23. package/.build/src/core/exception/authError.js +23 -0
  24. package/.build/src/core/exception/authError.js.map +1 -0
  25. package/.build/src/core/exception/baseError.d.ts +13 -0
  26. package/.build/src/core/exception/baseError.js +13 -0
  27. package/.build/src/core/exception/baseError.js.map +1 -0
  28. package/.build/src/core/exception/internalServerError.d.ts +10 -0
  29. package/.build/src/core/exception/internalServerError.js +23 -0
  30. package/.build/src/core/exception/internalServerError.js.map +1 -0
  31. package/.build/src/core/exception/requestError.d.ts +10 -0
  32. package/.build/src/core/exception/requestError.js +23 -0
  33. package/.build/src/core/exception/requestError.js.map +1 -0
  34. package/.build/src/core/exception/warningError.d.ts +10 -0
  35. package/.build/src/core/exception/warningError.js +23 -0
  36. package/.build/src/core/exception/warningError.js.map +1 -0
  37. package/.build/src/core/firebase/app.d.ts +9 -0
  38. package/.build/src/core/firebase/app.js +15 -0
  39. package/.build/src/core/firebase/app.js.map +1 -0
  40. package/.build/src/core/firebase/auth.d.ts +13 -0
  41. package/.build/src/core/firebase/auth.js +48 -0
  42. package/.build/src/core/firebase/auth.js.map +1 -0
  43. package/.build/src/core/firebase/firestore.d.ts +26 -0
  44. package/.build/src/core/firebase/firestore.js +82 -0
  45. package/.build/src/core/firebase/firestore.js.map +1 -0
  46. package/.build/src/core/firebase/storage.d.ts +5 -0
  47. package/.build/src/core/firebase/storage.js +17 -0
  48. package/.build/src/core/firebase/storage.js.map +1 -0
  49. package/.build/src/core/service/dateUtils.d.ts +16 -0
  50. package/.build/src/core/service/dateUtils.js +40 -0
  51. package/.build/src/core/service/dateUtils.js.map +1 -0
  52. package/.build/src/core/service/objectUtils.d.ts +25 -0
  53. package/.build/src/core/service/objectUtils.js +135 -0
  54. package/.build/src/core/service/objectUtils.js.map +1 -0
  55. package/.build/src/core/validation/validationUtils.d.ts +102 -0
  56. package/.build/src/core/validation/validationUtils.js +185 -0
  57. package/.build/src/core/validation/validationUtils.js.map +1 -0
  58. package/README.md +5 -0
  59. package/package.json +42 -0
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ObjectUtils = void 0;
7
+ const lodash_1 = __importDefault(require("lodash"));
8
+ /*******************************************************
9
+ *
10
+ * オブジェクトのトランスフォーム系
11
+ *
12
+ *******************************************************/
13
+ class ObjectUtils {
14
+ /**
15
+ * undefined -> null変換する
16
+ * @param target 変換対象のオブジェクト
17
+ */
18
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
19
+ static convertOptionalToNull(target) {
20
+ return target === undefined ? null : target;
21
+ }
22
+ /**
23
+ * オブジェクトのキーをキャメルケースに変換する
24
+ * UNDEFINEDはnullに変換する
25
+ * @param target 変換対象のオブジェクト
26
+ */
27
+ static camelCase(target) {
28
+ let response = {};
29
+ let property = {};
30
+ for (const [key, value] of Object.entries(target)) {
31
+ const camelKey = lodash_1.default.camelCase(key);
32
+ if (camelKey !== key && camelKey in target) {
33
+ delete target[camelKey];
34
+ response = { ...this.camelCase(target) };
35
+ }
36
+ if (lodash_1.default.isObject(value) && !lodash_1.default.isArray(value)) {
37
+ // 単一オブジェクトの場合
38
+ property = { [camelKey]: this.camelCase(value) };
39
+ }
40
+ else if (lodash_1.default.isObject(value) && lodash_1.default.isArray(value)) {
41
+ // 配列オブジェクトの場合
42
+ const array = [];
43
+ for (const v of value) {
44
+ if (lodash_1.default.isObject(v)) {
45
+ array.push(this.camelCase(v));
46
+ continue;
47
+ }
48
+ array.push(v ?? null);
49
+ }
50
+ property = { [camelKey]: array };
51
+ }
52
+ else {
53
+ // オブジェクト以外の場合
54
+ property = { [camelKey]: value ?? null };
55
+ }
56
+ response = { ...response, ...property };
57
+ }
58
+ return response;
59
+ }
60
+ /**
61
+ * オブジェクトのキーをスネークケースに変換する
62
+ * UNDEFINEDはnullに変換する
63
+ * @param target 変換対象のオブジェクト
64
+ */
65
+ static snakeCase(target) {
66
+ let response = {};
67
+ let property = {};
68
+ for (const [key, value] of Object.entries(target)) {
69
+ const snakeKey = lodash_1.default.snakeCase(key);
70
+ if (snakeKey !== key && snakeKey in target) {
71
+ delete target[snakeKey];
72
+ response = { ...this.snakeCase(target) };
73
+ }
74
+ if (lodash_1.default.isObject(value) && !lodash_1.default.isArray(value)) {
75
+ // 単一オブジェクトの場合
76
+ property = { [snakeKey]: this.snakeCase(value) };
77
+ }
78
+ else if (lodash_1.default.isObject(value) && lodash_1.default.isArray(value)) {
79
+ // 配列オブジェクトの場合
80
+ const array = [];
81
+ for (const v of value) {
82
+ if (lodash_1.default.isObject(v)) {
83
+ array.push(this.snakeCase(v));
84
+ continue;
85
+ }
86
+ // datetimeの形式に変換可能な場合はキャストする
87
+ array.push(v ?? null);
88
+ }
89
+ property = { [snakeKey]: array };
90
+ }
91
+ else {
92
+ // オブジェクト以外の場合
93
+ property = { [snakeKey]: value ?? null };
94
+ }
95
+ response = { ...response, ...property };
96
+ }
97
+ return response;
98
+ }
99
+ static kebabCase(target) {
100
+ let response = {};
101
+ let property = {};
102
+ for (const [key, value] of Object.entries(target)) {
103
+ const kebabKey = lodash_1.default.kebabCase(key);
104
+ if (kebabKey !== key && kebabKey in target) {
105
+ delete target[kebabKey];
106
+ response = { ...this.kebabCase(target) };
107
+ }
108
+ if (lodash_1.default.isObject(value) && !lodash_1.default.isArray(value)) {
109
+ // 単一オブジェクトの場合
110
+ property = { [kebabKey]: this.kebabCase(value) };
111
+ }
112
+ else if (lodash_1.default.isObject(value) && lodash_1.default.isArray(value)) {
113
+ // 配列オブジェクトの場合
114
+ const array = [];
115
+ for (const v of value) {
116
+ if (lodash_1.default.isObject(v)) {
117
+ array.push(this.kebabCase(v));
118
+ continue;
119
+ }
120
+ // datetimeの形式に変換可能な場合はキャストする
121
+ array.push(v ?? null);
122
+ }
123
+ property = { [kebabKey]: array };
124
+ }
125
+ else {
126
+ // オブジェクト以外の場合
127
+ property = { [kebabKey]: value ?? null };
128
+ }
129
+ response = { ...response, ...property };
130
+ }
131
+ return response;
132
+ }
133
+ }
134
+ exports.ObjectUtils = ObjectUtils;
135
+ //# sourceMappingURL=objectUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objectUtils.js","sourceRoot":"","sources":["../../../../src/core/service/objectUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * 文字列チェックで利用可能なチェック一覧
3
+ */
4
+ export declare const CharType: {
5
+ readonly zenkaku: "zenkaku";
6
+ readonly hiragana: "hiragana";
7
+ readonly katakana: "katakana";
8
+ readonly alphanumeric: "alphanumeric";
9
+ readonly numeric: "numeric";
10
+ readonly alpha: "alpha";
11
+ readonly upper: "upper";
12
+ readonly lower: "lower";
13
+ };
14
+ export declare type CharType = typeof CharType[keyof typeof CharType];
15
+ /*******************************************************
16
+ *
17
+ * Validation
18
+ *
19
+ *******************************************************/
20
+ export declare class ValidationUtils {
21
+ /**
22
+ * 対象がstringかどうかをチェックする
23
+ * @param target
24
+ */
25
+ static isString(target: unknown): target is string;
26
+ /**
27
+ * 対象がnumberかどうかをチェックする
28
+ * @param target
29
+ */
30
+ static isNumber(target: unknown): target is number;
31
+ /**
32
+ * 対象がbooleanかどうかをチェックする
33
+ * https://youmightnotneed.com/lodash/#isBoolean
34
+ * @param target
35
+ */
36
+ static isBoolean(target: unknown): target is boolean;
37
+ /**
38
+ * 対象が配列かどうかをチェックする
39
+ * https://youmightnotneed.com/lodash/#isArray
40
+ * @param target
41
+ */
42
+ static isArray(target: unknown): target is any[];
43
+ /**
44
+ * 対象が空白かどうかを確認
45
+ * This does not support evaluating a Set or a Map
46
+ * https://stackoverflow.com/questions/43233102/lodash-isempty-and-has-method-vs-simple-check/43233163#43233163
47
+ * https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore#_isempty
48
+ * @param target
49
+ */
50
+ static isEmpty(target: unknown): boolean;
51
+ /**
52
+ * 対象がEnumのメンバーか確認
53
+ * @param target
54
+ * @param enumObject
55
+ * @returns
56
+ */
57
+ static isEnumMember<TUnionType>(target: unknown, enumObject: object): target is TUnionType;
58
+ /**
59
+ * [正規表現] URLの有効性を確認
60
+ * @param target
61
+ */
62
+ static checkUrl(target: unknown): boolean;
63
+ /**
64
+ * [正規表現] 電話番号の値の有効性を確認
65
+ * @param target
66
+ */
67
+ static checkTel(target: unknown): boolean;
68
+ /**
69
+ * [正規表現] 郵便番号の値の有効性を確認
70
+ * @param target
71
+ */
72
+ static checkZip(target: unknown): boolean;
73
+ /**
74
+ * [正規表現] emailのフォーマットが有効か確認する
75
+ * @param target
76
+ */
77
+ static checkEmail(target: unknown): boolean;
78
+ /**
79
+ * [正規表現] YYYY-MM-DDの形式かをチェックする
80
+ * @param target
81
+ */
82
+ static checkYYYYMMDD(target: unknown): boolean;
83
+ /**
84
+ * [正規表現] YYYY-MMの形式かをチェックする
85
+ * @param target
86
+ */
87
+ static checkYYYYMM(target: unknown): boolean;
88
+ /**
89
+ * [正規表現] YYYYの形式かをチェックする
90
+ * @param target
91
+ */
92
+ static checkYYYY(target: unknown): boolean;
93
+ /**
94
+ * [正規表現] 文字列チェック
95
+ * @param {unknown} target チェック対象文字列
96
+ * @param {CharType} charType チェック種別
97
+ * @return {boolean}
98
+ * - true : チェックOK(引数に指定した種別の文字列のみで構成されている)
99
+ * - false : チェックNG(引数に指定した種別以外の文字列が含まれている)
100
+ * */
101
+ static checkCharType(target: unknown, charType: CharType): boolean;
102
+ }
@@ -0,0 +1,185 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ValidationUtils = exports.CharType = void 0;
4
+ /**
5
+ * 正規表現を判定するためのベース関数
6
+ * @param target
7
+ * @param regexp
8
+ */
9
+ const checkRegex = (target, regexp) => {
10
+ return target.match(regexp) !== null;
11
+ };
12
+ /**
13
+ * 文字列チェックで利用可能なチェック一覧
14
+ */
15
+ // eslint-disable-next-line @typescript-eslint/naming-convention
16
+ exports.CharType = {
17
+ zenkaku: 'zenkaku',
18
+ hiragana: 'hiragana',
19
+ katakana: 'katakana',
20
+ alphanumeric: 'alphanumeric',
21
+ numeric: 'numeric',
22
+ alpha: 'alpha',
23
+ upper: 'upper',
24
+ lower: 'lower', // 半角英字(小文字のみ)
25
+ };
26
+ /*******************************************************
27
+ *
28
+ * Validation
29
+ *
30
+ *******************************************************/
31
+ class ValidationUtils {
32
+ /**
33
+ * 対象がstringかどうかをチェックする
34
+ * @param target
35
+ */
36
+ static isString(target) {
37
+ return typeof target === 'string';
38
+ }
39
+ /**
40
+ * 対象がnumberかどうかをチェックする
41
+ * @param target
42
+ */
43
+ static isNumber(target) {
44
+ if (isNaN(Number(`${target}`))) {
45
+ return false;
46
+ }
47
+ return true;
48
+ }
49
+ /**
50
+ * 対象がbooleanかどうかをチェックする
51
+ * https://youmightnotneed.com/lodash/#isBoolean
52
+ * @param target
53
+ */
54
+ static isBoolean(target) {
55
+ return target === !!target;
56
+ }
57
+ /**
58
+ * 対象が配列かどうかをチェックする
59
+ * https://youmightnotneed.com/lodash/#isArray
60
+ * @param target
61
+ */
62
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
63
+ static isArray(target) {
64
+ return Array.isArray(target);
65
+ }
66
+ /**
67
+ * 対象が空白かどうかを確認
68
+ * This does not support evaluating a Set or a Map
69
+ * https://stackoverflow.com/questions/43233102/lodash-isempty-and-has-method-vs-simple-check/43233163#43233163
70
+ * https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore#_isempty
71
+ * @param target
72
+ */
73
+ static isEmpty(target) {
74
+ return (typeof target === 'undefined' ||
75
+ target === null ||
76
+ (typeof target === 'number' && isNaN(target)) ||
77
+ (typeof target === 'object' && target !== null && Object.keys(target).length === 0) ||
78
+ (typeof target === 'string' && target.trim().length === 0));
79
+ }
80
+ /**
81
+ * 対象がEnumのメンバーか確認
82
+ * @param target
83
+ * @param enumObject
84
+ * @returns
85
+ */
86
+ static isEnumMember(target, enumObject) {
87
+ // 列挙型チェック(空白もNG)
88
+ if (this.isEmpty(target) || !Object.values(enumObject).some((value) => target === value)) {
89
+ return false;
90
+ }
91
+ return true;
92
+ }
93
+ /**
94
+ * [正規表現] URLの有効性を確認
95
+ * @param target
96
+ */
97
+ static checkUrl(target) {
98
+ return (this.isString(target) &&
99
+ checkRegex(target,
100
+ // eslint-disable-next-line no-useless-escape
101
+ /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/));
102
+ }
103
+ /**
104
+ * [正規表現] 電話番号の値の有効性を確認
105
+ * @param target
106
+ */
107
+ static checkTel(target) {
108
+ return this.isString(target) && checkRegex(target, /0\d{1,4}-\d{1,4}-\d{4}/);
109
+ }
110
+ /**
111
+ * [正規表現] 郵便番号の値の有効性を確認
112
+ * @param target
113
+ */
114
+ static checkZip(target) {
115
+ return this.isString(target) && checkRegex(target, '[0-9]{3}-[0-9]{4}');
116
+ }
117
+ /**
118
+ * [正規表現] emailのフォーマットが有効か確認する
119
+ * @param target
120
+ */
121
+ static checkEmail(target) {
122
+ return (this.isString(target) &&
123
+ checkRegex(target, "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)*$"));
124
+ }
125
+ /**
126
+ * [正規表現] YYYY-MM-DDの形式かをチェックする
127
+ * @param target
128
+ */
129
+ static checkYYYYMMDD(target) {
130
+ return this.isString(target) && checkRegex(target, '^[1-2][0-9]{3}-[0-2][0-9]-[0-3][0-9]$');
131
+ }
132
+ /**
133
+ * [正規表現] YYYY-MMの形式かをチェックする
134
+ * @param target
135
+ */
136
+ static checkYYYYMM(target) {
137
+ return this.isString(target) && checkRegex(target, '^[1-2][0-9]{3}-[0-2][0-9]$');
138
+ }
139
+ /**
140
+ * [正規表現] YYYYの形式かをチェックする
141
+ * @param target
142
+ */
143
+ static checkYYYY(target) {
144
+ return this.isString(target) && checkRegex(target, '^[1-2][0-9]{3}$');
145
+ }
146
+ /**
147
+ * [正規表現] 文字列チェック
148
+ * @param {unknown} target チェック対象文字列
149
+ * @param {CharType} charType チェック種別
150
+ * @return {boolean}
151
+ * - true : チェックOK(引数に指定した種別の文字列のみで構成されている)
152
+ * - false : チェックNG(引数に指定した種別以外の文字列が含まれている)
153
+ * */
154
+ static checkCharType(target, charType) {
155
+ switch (charType) {
156
+ // 全角文字(ひらがな・カタカナ・漢字 etc.)
157
+ case 'zenkaku':
158
+ // eslint-disable-next-line no-control-regex
159
+ return this.isString(target) && checkRegex(target, /^[^\x01-\x7E\xA1-\xDF]+$/);
160
+ // 全角ひらがな
161
+ case 'hiragana':
162
+ return this.isString(target) && checkRegex(target, /^[\u3041-\u3096]+$/);
163
+ // 全角カタカナ
164
+ case 'katakana':
165
+ return this.isString(target) && checkRegex(target, /^[\u30a1-\u30fc]+$/);
166
+ // 半角英数字(大文字・小文字)
167
+ case 'alphanumeric':
168
+ return this.isString(target) && checkRegex(target, /^[0-9a-zA-Z]+$/);
169
+ // 半角数字
170
+ case 'numeric':
171
+ return this.isString(target) && checkRegex(target, /^[0-9]+$/);
172
+ // 半角英字(大文字・小文字)
173
+ case 'alpha':
174
+ return this.isString(target) && checkRegex(target, /^[a-zA-Z]+$/);
175
+ // 半角英字(大文字のみ)
176
+ case 'upper':
177
+ return this.isString(target) && checkRegex(target, /^[A-Z]+$/);
178
+ // 半角英字(小文字のみ)
179
+ case 'lower':
180
+ return this.isString(target) && checkRegex(target, /^[a-z]+$/);
181
+ }
182
+ }
183
+ }
184
+ exports.ValidationUtils = ValidationUtils;
185
+ //# sourceMappingURL=validationUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validationUtils.js","sourceRoot":"","sources":["../../../../src/core/validation/validationUtils.ts"],"names":[],"mappings":"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"}
package/README.md ADDED
@@ -0,0 +1,5 @@
1
+ # foodlog-utils
2
+
3
+ ## npmの管理
4
+
5
+ foolog-clientを参照: https://github.com/Food-Log/foolog-client?tab=readme-ov-file#npm%E3%81%AE%E7%AE%A1%E7%90%86
package/package.json ADDED
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "@food-log/utils",
3
+ "version": "0.0.32",
4
+ "description": "foodlog-utils package",
5
+ "author": "foodlog team",
6
+ "license": "PRIVATE",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+ssh://git@github.com:Food-Log/foodlog-utils.git"
10
+ },
11
+ "main": ".build/index.js",
12
+ "types": ".build/index.d.ts",
13
+ "files": [
14
+ ".build"
15
+ ],
16
+ "scripts": {
17
+ "clear": "rm -rf .build",
18
+ "compile": "npm run clear && npx tsc",
19
+ "eslint": "eslint --cache --config .eslintrc.json --ext .ts src/",
20
+ "eslint-fix": "eslint --cache --config .eslintrc.json --fix --ext .ts src/",
21
+ "update-version": "npm version patch && git push --tags && git push origin",
22
+ "pub": "npm run eslint-fix && npm run compile && npm run update-version && npm publish"
23
+ },
24
+ "dependencies": {
25
+ "dayjs": "^1.11.1",
26
+ "firebase": "^9.7.0",
27
+ "lodash": "^4.17.21"
28
+ },
29
+ "devDependencies": {
30
+ "@types/lodash": "^4.14.182",
31
+ "@types/node": "^17.0.31",
32
+ "@typescript-eslint/eslint-plugin": "^5.22.0",
33
+ "@typescript-eslint/parser": "^5.22.0",
34
+ "eslint": "^7.23.0",
35
+ "eslint-config-prettier": "^6.10.0",
36
+ "eslint-plugin-import": "^2.20.1",
37
+ "eslint-plugin-prettier": "^3.1.2",
38
+ "eslint-plugin-unused-imports": "^2.0.0",
39
+ "prettier": "^2.2.1",
40
+ "typescript": "^4.2.4"
41
+ }
42
+ }