@exabugs/dynamodb-client 0.4.0 → 0.5.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/CHANGELOG.md +43 -0
- package/dist/client/Collection.d.ts +0 -5
- package/dist/client/Collection.d.ts.map +1 -1
- package/dist/client/Collection.js +7 -1
- package/dist/client/Collection.js.map +1 -1
- package/dist/client/DynamoClient.d.ts +1 -1
- package/dist/client/DynamoClient.d.ts.map +1 -1
- package/dist/client/FindCursor.d.ts.map +1 -1
- package/dist/client/FindCursor.js +2 -1
- package/dist/client/FindCursor.js.map +1 -1
- package/dist/scripts/operations/bulkRecordRepair.d.ts +17 -0
- package/dist/scripts/operations/bulkRecordRepair.d.ts.map +1 -0
- package/dist/scripts/operations/bulkRecordRepair.js +69 -0
- package/dist/scripts/operations/bulkRecordRepair.js.map +1 -0
- package/dist/scripts/operations/singleRecordRepair.d.ts +18 -0
- package/dist/scripts/operations/singleRecordRepair.d.ts.map +1 -0
- package/dist/scripts/operations/singleRecordRepair.js +46 -0
- package/dist/scripts/operations/singleRecordRepair.js.map +1 -0
- package/dist/scripts/repair-shadows.js +26 -160
- package/dist/scripts/repair-shadows.js.map +1 -1
- package/dist/scripts/utils/awsUtils.d.ts +15 -0
- package/dist/scripts/utils/awsUtils.d.ts.map +1 -0
- package/dist/scripts/utils/awsUtils.js +31 -0
- package/dist/scripts/utils/awsUtils.js.map +1 -0
- package/dist/scripts/utils/cliParser.d.ts +30 -0
- package/dist/scripts/utils/cliParser.d.ts.map +1 -0
- package/dist/scripts/utils/cliParser.js +44 -0
- package/dist/scripts/utils/cliParser.js.map +1 -0
- package/dist/scripts/utils/clientFactory.d.ts +22 -0
- package/dist/scripts/utils/clientFactory.d.ts.map +1 -0
- package/dist/scripts/utils/clientFactory.js +31 -0
- package/dist/scripts/utils/clientFactory.js.map +1 -0
- package/dist/scripts/utils/repairUtils.d.ts +58 -0
- package/dist/scripts/utils/repairUtils.d.ts.map +1 -0
- package/dist/scripts/utils/repairUtils.js +52 -0
- package/dist/scripts/utils/repairUtils.js.map +1 -0
- package/dist/server/handler.cjs +2093 -931
- package/dist/server/handler.cjs.map +4 -4
- package/dist/server/handler.d.ts +3 -3
- package/dist/server/handler.d.ts.map +1 -1
- package/dist/server/handler.js +16 -373
- package/dist/server/handler.js.map +1 -1
- package/dist/server/operations/find/shadowQuery.d.ts.map +1 -1
- package/dist/server/operations/find/shadowQuery.js +2 -1
- package/dist/server/operations/find/shadowQuery.js.map +1 -1
- package/dist/server/operations/find/utils.js.map +1 -1
- package/dist/server/operations/insertMany.js +2 -2
- package/dist/server/operations/insertMany.js.map +1 -1
- package/dist/server/operations/operationDispatcher.d.ts +10 -0
- package/dist/server/operations/operationDispatcher.d.ts.map +1 -0
- package/dist/server/operations/operationDispatcher.js +84 -0
- package/dist/server/operations/operationDispatcher.js.map +1 -0
- package/dist/server/operations/parameterConverter.d.ts +117 -0
- package/dist/server/operations/parameterConverter.d.ts.map +1 -0
- package/dist/server/operations/parameterConverter.js +155 -0
- package/dist/server/operations/parameterConverter.js.map +1 -0
- package/dist/server/operations/updateMany.js +2 -2
- package/dist/server/operations/updateMany.js.map +1 -1
- package/dist/server/utils/authHandler.d.ts +16 -0
- package/dist/server/utils/authHandler.d.ts.map +1 -0
- package/dist/server/utils/authHandler.js +85 -0
- package/dist/server/utils/authHandler.js.map +1 -0
- package/dist/server/utils/errorHandler.d.ts +15 -0
- package/dist/server/utils/errorHandler.d.ts.map +1 -0
- package/dist/server/utils/errorHandler.js +61 -0
- package/dist/server/utils/errorHandler.js.map +1 -0
- package/dist/server/utils/pagination.d.ts.map +1 -1
- package/dist/server/utils/pagination.js +2 -1
- package/dist/server/utils/pagination.js.map +1 -1
- package/dist/server/utils/requestParser.d.ts +10 -0
- package/dist/server/utils/requestParser.d.ts.map +1 -0
- package/dist/server/utils/requestParser.js +45 -0
- package/dist/server/utils/requestParser.js.map +1 -0
- package/dist/server/utils/responseBuilder.d.ts +33 -0
- package/dist/server/utils/responseBuilder.d.ts.map +1 -0
- package/dist/server/utils/responseBuilder.js +85 -0
- package/dist/server/utils/responseBuilder.js.map +1 -0
- package/dist/shadows/generator.d.ts.map +1 -1
- package/dist/shadows/generator.js +2 -1
- package/dist/shadows/generator.js.map +1 -1
- package/dist/shared/constants/formatting.d.ts +15 -0
- package/dist/shared/constants/formatting.d.ts.map +1 -0
- package/dist/shared/constants/formatting.js +15 -0
- package/dist/shared/constants/formatting.js.map +1 -0
- package/dist/shared/constants/http.d.ts +10 -24
- package/dist/shared/constants/http.d.ts.map +1 -1
- package/dist/shared/constants/http.js +10 -24
- package/dist/shared/constants/http.js.map +1 -1
- package/dist/shared/constants/validation.d.ts +22 -0
- package/dist/shared/constants/validation.d.ts.map +1 -0
- package/dist/shared/constants/validation.js +29 -0
- package/dist/shared/constants/validation.js.map +1 -0
- package/dist/shared/errors/index.d.ts +11 -1
- package/dist/shared/errors/index.d.ts.map +1 -1
- package/dist/shared/errors/index.js +10 -0
- package/dist/shared/errors/index.js.map +1 -1
- package/package.json +2 -5
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 操作ディスパッチャー
|
|
3
|
+
*
|
|
4
|
+
* MongoDB風APIの操作を適切なハンドラーに振り分ける
|
|
5
|
+
*/
|
|
6
|
+
import { createLogger } from '../../shared/index.js';
|
|
7
|
+
import { handleDeleteMany } from './deleteMany.js';
|
|
8
|
+
import { handleDeleteOne } from './deleteOne.js';
|
|
9
|
+
import { handleFind } from './find.js';
|
|
10
|
+
import { handleFindMany } from './findMany.js';
|
|
11
|
+
import { handleFindManyReference } from './findManyReference.js';
|
|
12
|
+
import { handleFindOne } from './findOne.js';
|
|
13
|
+
import { handleInsertMany } from './insertMany.js';
|
|
14
|
+
import { handleInsertOne } from './insertOne.js';
|
|
15
|
+
import { handleUpdateMany } from './updateMany.js';
|
|
16
|
+
import { handleUpdateOne } from './updateOne.js';
|
|
17
|
+
import { convertDeleteManyParams, convertDeleteOneParams, convertFindManyParams, convertFindOneParams, convertFindParams, convertInsertManyParams, convertInsertOneParams, convertUpdateManyParams, convertUpdateOneParams, } from './parameterConverter.js';
|
|
18
|
+
/**
|
|
19
|
+
* ロガーインスタンス
|
|
20
|
+
*/
|
|
21
|
+
const logger = createLogger({
|
|
22
|
+
service: 'operation-dispatcher',
|
|
23
|
+
level: process.env.LOG_LEVEL || 'info',
|
|
24
|
+
});
|
|
25
|
+
/**
|
|
26
|
+
* 操作を実行する(MongoDB風API)
|
|
27
|
+
*
|
|
28
|
+
* @param request - APIリクエスト
|
|
29
|
+
* @param requestId - リクエストID
|
|
30
|
+
* @returns 操作結果
|
|
31
|
+
*/
|
|
32
|
+
export async function executeOperation(request, requestId) {
|
|
33
|
+
const { op, resource } = request;
|
|
34
|
+
logger.debug('Executing operation', {
|
|
35
|
+
requestId,
|
|
36
|
+
operation: op,
|
|
37
|
+
resource,
|
|
38
|
+
});
|
|
39
|
+
// MongoDB風の操作名で処理を実行
|
|
40
|
+
// MongoDB風のparamsを内部形式に変換してから各ハンドラーを呼び出す
|
|
41
|
+
switch (op) {
|
|
42
|
+
case 'find': {
|
|
43
|
+
const internalParams = convertFindParams(request.params);
|
|
44
|
+
return await handleFind(resource, internalParams, requestId);
|
|
45
|
+
}
|
|
46
|
+
case 'findOne': {
|
|
47
|
+
const internalParams = convertFindOneParams(request.params);
|
|
48
|
+
return await handleFindOne(resource, internalParams, requestId);
|
|
49
|
+
}
|
|
50
|
+
case 'findMany': {
|
|
51
|
+
const internalParams = convertFindManyParams(request.params);
|
|
52
|
+
return await handleFindMany(resource, internalParams, requestId);
|
|
53
|
+
}
|
|
54
|
+
case 'findManyReference':
|
|
55
|
+
return await handleFindManyReference(resource, request.params, requestId);
|
|
56
|
+
case 'insertOne': {
|
|
57
|
+
const internalParams = convertInsertOneParams(request.params);
|
|
58
|
+
return await handleInsertOne(resource, internalParams, requestId);
|
|
59
|
+
}
|
|
60
|
+
case 'updateOne': {
|
|
61
|
+
const internalParams = convertUpdateOneParams(request.params);
|
|
62
|
+
return await handleUpdateOne(resource, internalParams, requestId);
|
|
63
|
+
}
|
|
64
|
+
case 'updateMany': {
|
|
65
|
+
const internalParams = convertUpdateManyParams(request.params);
|
|
66
|
+
return await handleUpdateMany(resource, internalParams, requestId);
|
|
67
|
+
}
|
|
68
|
+
case 'deleteOne': {
|
|
69
|
+
const internalParams = convertDeleteOneParams(request.params);
|
|
70
|
+
return await handleDeleteOne(resource, internalParams, requestId);
|
|
71
|
+
}
|
|
72
|
+
case 'deleteMany': {
|
|
73
|
+
const internalParams = convertDeleteManyParams(request.params);
|
|
74
|
+
return await handleDeleteMany(resource, internalParams, requestId);
|
|
75
|
+
}
|
|
76
|
+
case 'insertMany': {
|
|
77
|
+
const internalParams = convertInsertManyParams(request.params);
|
|
78
|
+
return await handleInsertMany(resource, internalParams, requestId);
|
|
79
|
+
}
|
|
80
|
+
default:
|
|
81
|
+
throw new Error(`Unknown operation: ${op}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=operationDispatcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operationDispatcher.js","sourceRoot":"","sources":["../../../src/server/operations/operationDispatcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MongoDB風APIパラメータの変換ユーティリティ
|
|
3
|
+
*
|
|
4
|
+
* MongoDB風のパラメータを内部形式に変換する共通ロジック
|
|
5
|
+
*/
|
|
6
|
+
import type { DeleteManyParams, DeleteOneParams, FindManyParams, FindOneParams, FindParams, InsertManyParams, InsertOneParams, UpdateManyParams, UpdateOneParams } from '../types.js';
|
|
7
|
+
/**
|
|
8
|
+
* MongoDB風のfindパラメータ
|
|
9
|
+
*/
|
|
10
|
+
interface MongoFindParams {
|
|
11
|
+
filter?: Record<string, unknown>;
|
|
12
|
+
options?: {
|
|
13
|
+
sort?: Record<string, 'asc' | 'desc' | 1 | -1>;
|
|
14
|
+
limit?: number;
|
|
15
|
+
nextToken?: string;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* MongoDB風のフィルタパラメータ
|
|
20
|
+
*/
|
|
21
|
+
interface MongoFilterParams {
|
|
22
|
+
filter?: {
|
|
23
|
+
id?: string | {
|
|
24
|
+
in?: string[];
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* MongoDB風の更新パラメータ
|
|
30
|
+
*/
|
|
31
|
+
interface MongoUpdateParams extends MongoFilterParams {
|
|
32
|
+
update?: {
|
|
33
|
+
set?: Record<string, unknown>;
|
|
34
|
+
} | Record<string, unknown>;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* MongoDB風のドキュメントパラメータ
|
|
38
|
+
*/
|
|
39
|
+
interface MongoDocumentParams {
|
|
40
|
+
document?: Record<string, unknown>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* MongoDB風の複数ドキュメントパラメータ
|
|
44
|
+
*/
|
|
45
|
+
interface MongoDocumentsParams {
|
|
46
|
+
documents?: Array<Record<string, unknown>>;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* MongoDB風のfindパラメータを内部形式に変換する
|
|
50
|
+
*
|
|
51
|
+
* @param mongoParams - MongoDB風のfindパラメータ
|
|
52
|
+
* @returns 内部形式のfindパラメータ
|
|
53
|
+
*/
|
|
54
|
+
export declare function convertFindParams(mongoParams: MongoFindParams): FindParams;
|
|
55
|
+
/**
|
|
56
|
+
* MongoDB風のfindOneパラメータを内部形式に変換する
|
|
57
|
+
*
|
|
58
|
+
* @param mongoParams - MongoDB風のfindOneパラメータ
|
|
59
|
+
* @returns 内部形式のfindOneパラメータ
|
|
60
|
+
* @throws {Error} idが指定されていない場合
|
|
61
|
+
*/
|
|
62
|
+
export declare function convertFindOneParams(mongoParams: MongoFilterParams): FindOneParams;
|
|
63
|
+
/**
|
|
64
|
+
* MongoDB風のfindManyパラメータを内部形式に変換する
|
|
65
|
+
*
|
|
66
|
+
* @param mongoParams - MongoDB風のfindManyパラメータ
|
|
67
|
+
* @returns 内部形式のfindManyパラメータ
|
|
68
|
+
*/
|
|
69
|
+
export declare function convertFindManyParams(mongoParams: MongoFilterParams): FindManyParams;
|
|
70
|
+
/**
|
|
71
|
+
* MongoDB風のinsertOneパラメータを内部形式に変換する
|
|
72
|
+
*
|
|
73
|
+
* @param mongoParams - MongoDB風のinsertOneパラメータ
|
|
74
|
+
* @returns 内部形式のinsertOneパラメータ
|
|
75
|
+
* @throws {Error} documentが指定されていない場合
|
|
76
|
+
*/
|
|
77
|
+
export declare function convertInsertOneParams(mongoParams: MongoDocumentParams): InsertOneParams;
|
|
78
|
+
/**
|
|
79
|
+
* MongoDB風のupdateOneパラメータを内部形式に変換する
|
|
80
|
+
*
|
|
81
|
+
* @param mongoParams - MongoDB風のupdateOneパラメータ
|
|
82
|
+
* @returns 内部形式のupdateOneパラメータ
|
|
83
|
+
* @throws {Error} idが指定されていない場合
|
|
84
|
+
*/
|
|
85
|
+
export declare function convertUpdateOneParams(mongoParams: MongoUpdateParams): UpdateOneParams;
|
|
86
|
+
/**
|
|
87
|
+
* MongoDB風のupdateManyパラメータを内部形式に変換する
|
|
88
|
+
*
|
|
89
|
+
* @param mongoParams - MongoDB風のupdateManyパラメータ
|
|
90
|
+
* @returns 内部形式のupdateManyパラメータ
|
|
91
|
+
*/
|
|
92
|
+
export declare function convertUpdateManyParams(mongoParams: MongoUpdateParams): UpdateManyParams;
|
|
93
|
+
/**
|
|
94
|
+
* MongoDB風のdeleteOneパラメータを内部形式に変換する
|
|
95
|
+
*
|
|
96
|
+
* @param mongoParams - MongoDB風のdeleteOneパラメータ
|
|
97
|
+
* @returns 内部形式のdeleteOneパラメータ
|
|
98
|
+
* @throws {Error} idが指定されていない場合
|
|
99
|
+
*/
|
|
100
|
+
export declare function convertDeleteOneParams(mongoParams: MongoFilterParams): DeleteOneParams;
|
|
101
|
+
/**
|
|
102
|
+
* MongoDB風のdeleteManyパラメータを内部形式に変換する
|
|
103
|
+
*
|
|
104
|
+
* @param mongoParams - MongoDB風のdeleteManyパラメータ
|
|
105
|
+
* @returns 内部形式のdeleteManyパラメータ
|
|
106
|
+
*/
|
|
107
|
+
export declare function convertDeleteManyParams(mongoParams: MongoFilterParams): DeleteManyParams;
|
|
108
|
+
/**
|
|
109
|
+
* MongoDB風のinsertManyパラメータを内部形式に変換する
|
|
110
|
+
*
|
|
111
|
+
* @param mongoParams - MongoDB風のinsertManyパラメータ
|
|
112
|
+
* @returns 内部形式のinsertManyパラメータ
|
|
113
|
+
* @throws {Error} documentsが指定されていない場合
|
|
114
|
+
*/
|
|
115
|
+
export declare function convertInsertManyParams(mongoParams: MongoDocumentsParams): InsertManyParams;
|
|
116
|
+
export {};
|
|
117
|
+
//# sourceMappingURL=parameterConverter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parameterConverter.d.ts","sourceRoot":"","sources":["../../../src/server/operations/parameterConverter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,eAAe,EAChB,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,UAAU,eAAe;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED;;GAEG;AACH,UAAU,iBAAiB;IACzB,MAAM,CAAC,EAAE;QACP,EAAE,CAAC,EAAE,MAAM,GAAG;YAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC;KACjC,CAAC;CACH;AAED;;GAEG;AACH,UAAU,iBAAkB,SAAQ,iBAAiB;IACnD,MAAM,CAAC,EACH;QACE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC/B,GACD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7B;AAED;;GAEG;AACH,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,UAAU,oBAAoB;IAC5B,SAAS,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC5C;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,eAAe,GAAG,UAAU,CAsB1E;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,iBAAiB,GAAG,aAAa,CAMlF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,iBAAiB,GAAG,cAAc,CAOpF;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,mBAAmB,GAAG,eAAe,CAOxF;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,iBAAiB,GAAG,eAAe,CAetF;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,iBAAiB,GAAG,gBAAgB,CAgBxF;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,iBAAiB,GAAG,eAAe,CAMtF;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,iBAAiB,GAAG,gBAAgB,CAOxF;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,oBAAoB,GAAG,gBAAgB,CAO3F"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MongoDB風のfindパラメータを内部形式に変換する
|
|
3
|
+
*
|
|
4
|
+
* @param mongoParams - MongoDB風のfindパラメータ
|
|
5
|
+
* @returns 内部形式のfindパラメータ
|
|
6
|
+
*/
|
|
7
|
+
export function convertFindParams(mongoParams) {
|
|
8
|
+
const { filter = {}, options = {} } = mongoParams;
|
|
9
|
+
const { sort, limit, nextToken } = options;
|
|
10
|
+
const internalParams = {
|
|
11
|
+
filter,
|
|
12
|
+
...(sort &&
|
|
13
|
+
Object.keys(sort).length > 0 && {
|
|
14
|
+
sort: {
|
|
15
|
+
field: Object.keys(sort)[0],
|
|
16
|
+
order: Object.values(sort)[0] === 'desc' ? 'DESC' : 'ASC',
|
|
17
|
+
},
|
|
18
|
+
}),
|
|
19
|
+
...((limit || nextToken) && {
|
|
20
|
+
pagination: {
|
|
21
|
+
...(limit && { perPage: limit }),
|
|
22
|
+
...(nextToken && { nextToken }),
|
|
23
|
+
},
|
|
24
|
+
}),
|
|
25
|
+
};
|
|
26
|
+
return internalParams;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* MongoDB風のfindOneパラメータを内部形式に変換する
|
|
30
|
+
*
|
|
31
|
+
* @param mongoParams - MongoDB風のfindOneパラメータ
|
|
32
|
+
* @returns 内部形式のfindOneパラメータ
|
|
33
|
+
* @throws {Error} idが指定されていない場合
|
|
34
|
+
*/
|
|
35
|
+
export function convertFindOneParams(mongoParams) {
|
|
36
|
+
const id = typeof mongoParams.filter?.id === 'string' ? mongoParams.filter.id : undefined;
|
|
37
|
+
if (!id) {
|
|
38
|
+
throw new Error('findOne requires filter.id');
|
|
39
|
+
}
|
|
40
|
+
return { id };
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* MongoDB風のfindManyパラメータを内部形式に変換する
|
|
44
|
+
*
|
|
45
|
+
* @param mongoParams - MongoDB風のfindManyパラメータ
|
|
46
|
+
* @returns 内部形式のfindManyパラメータ
|
|
47
|
+
*/
|
|
48
|
+
export function convertFindManyParams(mongoParams) {
|
|
49
|
+
const idFilter = mongoParams.filter?.id;
|
|
50
|
+
const ids = typeof idFilter === 'object' && idFilter !== null && 'in' in idFilter
|
|
51
|
+
? idFilter.in || []
|
|
52
|
+
: [];
|
|
53
|
+
return { ids };
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* MongoDB風のinsertOneパラメータを内部形式に変換する
|
|
57
|
+
*
|
|
58
|
+
* @param mongoParams - MongoDB風のinsertOneパラメータ
|
|
59
|
+
* @returns 内部形式のinsertOneパラメータ
|
|
60
|
+
* @throws {Error} documentが指定されていない場合
|
|
61
|
+
*/
|
|
62
|
+
export function convertInsertOneParams(mongoParams) {
|
|
63
|
+
if (!mongoParams.document) {
|
|
64
|
+
throw new Error('insertOne requires document');
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
data: mongoParams.document,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* MongoDB風のupdateOneパラメータを内部形式に変換する
|
|
72
|
+
*
|
|
73
|
+
* @param mongoParams - MongoDB風のupdateOneパラメータ
|
|
74
|
+
* @returns 内部形式のupdateOneパラメータ
|
|
75
|
+
* @throws {Error} idが指定されていない場合
|
|
76
|
+
*/
|
|
77
|
+
export function convertUpdateOneParams(mongoParams) {
|
|
78
|
+
const id = typeof mongoParams.filter?.id === 'string' ? mongoParams.filter.id : undefined;
|
|
79
|
+
if (!id) {
|
|
80
|
+
throw new Error('updateOne requires filter.id');
|
|
81
|
+
}
|
|
82
|
+
const updateData = mongoParams.update && typeof mongoParams.update === 'object'
|
|
83
|
+
? 'set' in mongoParams.update
|
|
84
|
+
? mongoParams.update.set || {}
|
|
85
|
+
: mongoParams.update
|
|
86
|
+
: {};
|
|
87
|
+
return {
|
|
88
|
+
id,
|
|
89
|
+
data: updateData,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* MongoDB風のupdateManyパラメータを内部形式に変換する
|
|
94
|
+
*
|
|
95
|
+
* @param mongoParams - MongoDB風のupdateManyパラメータ
|
|
96
|
+
* @returns 内部形式のupdateManyパラメータ
|
|
97
|
+
*/
|
|
98
|
+
export function convertUpdateManyParams(mongoParams) {
|
|
99
|
+
const idFilter = mongoParams.filter?.id;
|
|
100
|
+
const ids = typeof idFilter === 'object' && idFilter !== null && 'in' in idFilter
|
|
101
|
+
? idFilter.in || []
|
|
102
|
+
: [];
|
|
103
|
+
const updateData = mongoParams.update && typeof mongoParams.update === 'object'
|
|
104
|
+
? 'set' in mongoParams.update
|
|
105
|
+
? mongoParams.update.set || {}
|
|
106
|
+
: mongoParams.update
|
|
107
|
+
: {};
|
|
108
|
+
return {
|
|
109
|
+
ids,
|
|
110
|
+
data: updateData,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* MongoDB風のdeleteOneパラメータを内部形式に変換する
|
|
115
|
+
*
|
|
116
|
+
* @param mongoParams - MongoDB風のdeleteOneパラメータ
|
|
117
|
+
* @returns 内部形式のdeleteOneパラメータ
|
|
118
|
+
* @throws {Error} idが指定されていない場合
|
|
119
|
+
*/
|
|
120
|
+
export function convertDeleteOneParams(mongoParams) {
|
|
121
|
+
const id = typeof mongoParams.filter?.id === 'string' ? mongoParams.filter.id : undefined;
|
|
122
|
+
if (!id) {
|
|
123
|
+
throw new Error('deleteOne requires filter.id');
|
|
124
|
+
}
|
|
125
|
+
return { id };
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* MongoDB風のdeleteManyパラメータを内部形式に変換する
|
|
129
|
+
*
|
|
130
|
+
* @param mongoParams - MongoDB風のdeleteManyパラメータ
|
|
131
|
+
* @returns 内部形式のdeleteManyパラメータ
|
|
132
|
+
*/
|
|
133
|
+
export function convertDeleteManyParams(mongoParams) {
|
|
134
|
+
const idFilter = mongoParams.filter?.id;
|
|
135
|
+
const ids = typeof idFilter === 'object' && idFilter !== null && 'in' in idFilter
|
|
136
|
+
? idFilter.in || []
|
|
137
|
+
: [];
|
|
138
|
+
return { ids };
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* MongoDB風のinsertManyパラメータを内部形式に変換する
|
|
142
|
+
*
|
|
143
|
+
* @param mongoParams - MongoDB風のinsertManyパラメータ
|
|
144
|
+
* @returns 内部形式のinsertManyパラメータ
|
|
145
|
+
* @throws {Error} documentsが指定されていない場合
|
|
146
|
+
*/
|
|
147
|
+
export function convertInsertManyParams(mongoParams) {
|
|
148
|
+
if (!mongoParams.documents) {
|
|
149
|
+
throw new Error('insertMany requires documents');
|
|
150
|
+
}
|
|
151
|
+
return {
|
|
152
|
+
data: mongoParams.documents,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=parameterConverter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parameterConverter.js","sourceRoot":"","sources":["../../../src/server/operations/parameterConverter.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* 要件: 4.2, 4.4, 5.2, 5.3, 7.4, 13.1, 13.2, 13.3, 13.8, 13.12
|
|
6
6
|
*/
|
|
7
7
|
import { BatchGetCommand, TransactWriteCommand } from '@aws-sdk/lib-dynamodb';
|
|
8
|
-
import { createLogger } from '../../shared/index.js';
|
|
8
|
+
import { createLogger, ErrorCode } from '../../shared/index.js';
|
|
9
9
|
import { generateShadowRecords, getShadowConfig } from '../shadow/index.js';
|
|
10
10
|
import { calculateShadowDiff, generateMainRecordSK } from '../shadow/index.js';
|
|
11
11
|
import { calculateTimeoutRisk, logBulkOperationComplete, logLargeBatchWarning, logPartialFailure, logPreparationTimeoutRisk, } from '../utils/bulkOperations.js';
|
|
@@ -311,6 +311,6 @@ function getPreparationErrorCode(error) {
|
|
|
311
311
|
return error.name;
|
|
312
312
|
}
|
|
313
313
|
}
|
|
314
|
-
return
|
|
314
|
+
return ErrorCode.VALIDATION_ERROR;
|
|
315
315
|
}
|
|
316
316
|
//# sourceMappingURL=updateMany.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateMany.js","sourceRoot":"","sources":["../../../src/server/operations/updateMany.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE9E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"updateMany.js","sourceRoot":"","sources":["../../../src/server/operations/updateMany.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 認証ハンドラー
|
|
3
|
+
*
|
|
4
|
+
* IAM認証とCognito JWT認証を処理する
|
|
5
|
+
*/
|
|
6
|
+
import type { APIGatewayProxyEventV2 } from 'aws-lambda';
|
|
7
|
+
/**
|
|
8
|
+
* 認証を処理する
|
|
9
|
+
*
|
|
10
|
+
* @param event - Lambda Function URLイベント
|
|
11
|
+
* @param requestId - リクエストID
|
|
12
|
+
* @returns 認証が成功した場合はvoid、失敗した場合は例外をスロー
|
|
13
|
+
* @throws {Error} 認証に失敗した場合
|
|
14
|
+
*/
|
|
15
|
+
export declare function handleAuthentication(event: APIGatewayProxyEventV2, requestId: string): Promise<void>;
|
|
16
|
+
//# sourceMappingURL=authHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authHandler.d.ts","sourceRoot":"","sources":["../../../src/server/utils/authHandler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAazD;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,sBAAsB,EAC7B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAgCf"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { createLogger } from '../../shared/index.js';
|
|
2
|
+
import { verifyAuthHeader } from './auth.js';
|
|
3
|
+
/**
|
|
4
|
+
* ロガーインスタンス
|
|
5
|
+
*/
|
|
6
|
+
const logger = createLogger({
|
|
7
|
+
service: 'auth-handler',
|
|
8
|
+
level: process.env.LOG_LEVEL || 'info',
|
|
9
|
+
});
|
|
10
|
+
/**
|
|
11
|
+
* 認証を処理する
|
|
12
|
+
*
|
|
13
|
+
* @param event - Lambda Function URLイベント
|
|
14
|
+
* @param requestId - リクエストID
|
|
15
|
+
* @returns 認証が成功した場合はvoid、失敗した場合は例外をスロー
|
|
16
|
+
* @throws {Error} 認証に失敗した場合
|
|
17
|
+
*/
|
|
18
|
+
export async function handleAuthentication(event, requestId) {
|
|
19
|
+
// 認証チェック: IAMまたはCognito JWT
|
|
20
|
+
// Lambda Function URLがNONEの場合、両方の認証方式をサポート
|
|
21
|
+
const authHeader = event.headers.authorization || event.headers.Authorization;
|
|
22
|
+
// AWS SigV4署名の検出(複数のヘッダーで判定)
|
|
23
|
+
const hasAmzDate = event.headers['x-amz-date'] || event.headers['X-Amz-Date'];
|
|
24
|
+
const hasAmzContentSha = event.headers['x-amz-content-sha256'] || event.headers['X-Amz-Content-Sha256'];
|
|
25
|
+
const hasAwsSigV4Auth = authHeader?.startsWith('AWS4-HMAC-SHA256');
|
|
26
|
+
// デバッグ: ヘッダーをログ出力
|
|
27
|
+
logger.debug('Authentication check', {
|
|
28
|
+
requestId,
|
|
29
|
+
hasAuthHeader: !!authHeader,
|
|
30
|
+
hasAmzDate: !!hasAmzDate,
|
|
31
|
+
hasAmzContentSha: !!hasAmzContentSha,
|
|
32
|
+
hasAwsSigV4Auth: !!hasAwsSigV4Auth,
|
|
33
|
+
authHeaderPrefix: authHeader?.substring(0, 20),
|
|
34
|
+
});
|
|
35
|
+
// IAM認証チェック(AWS SigV4署名の特徴的なヘッダーで判定)
|
|
36
|
+
// 以下のいずれかの条件を満たす場合、IAM認証とみなす:
|
|
37
|
+
// 1. AuthorizationヘッダーがAWS4-HMAC-SHA256で始まる
|
|
38
|
+
// 2. x-amz-dateとx-amz-content-sha256の両方が存在する
|
|
39
|
+
const isIAMAuth = hasAwsSigV4Auth || !!(hasAmzDate && hasAmzContentSha);
|
|
40
|
+
if (isIAMAuth) {
|
|
41
|
+
await handleIAMAuthentication(event, requestId);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
await handleCognitoAuthentication(authHeader, requestId);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* IAM認証を処理する
|
|
49
|
+
*
|
|
50
|
+
* @param event - Lambda Function URLイベント
|
|
51
|
+
* @param requestId - リクエストID
|
|
52
|
+
*/
|
|
53
|
+
async function handleIAMAuthentication(event, requestId) {
|
|
54
|
+
// IAM認証(スクリプトからのアクセス)
|
|
55
|
+
// Lambda Function URLがNONEの場合、署名検証は行われないため、
|
|
56
|
+
// ここではIAM認証として扱うが、実際の検証はAWS側で行われる
|
|
57
|
+
logger.info('IAM authenticated request', {
|
|
58
|
+
requestId,
|
|
59
|
+
sourceIp: event.requestContext.http.sourceIp,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Cognito JWT認証を処理する
|
|
64
|
+
*
|
|
65
|
+
* @param authHeader - Authorizationヘッダー
|
|
66
|
+
* @param requestId - リクエストID
|
|
67
|
+
* @throws {Error} 認証に失敗した場合
|
|
68
|
+
*/
|
|
69
|
+
async function handleCognitoAuthentication(authHeader, requestId) {
|
|
70
|
+
// Cognito JWT認証(ブラウザからのアクセス)
|
|
71
|
+
const userPoolId = process.env.COGNITO_USER_POOL_ID;
|
|
72
|
+
const clientId = process.env.COGNITO_CLIENT_ID; // オプション
|
|
73
|
+
if (!userPoolId) {
|
|
74
|
+
throw new Error('COGNITO_USER_POOL_ID environment variable is required');
|
|
75
|
+
}
|
|
76
|
+
const jwtPayload = await verifyAuthHeader(authHeader, userPoolId, clientId);
|
|
77
|
+
logger.debug('Cognito JWT verified', {
|
|
78
|
+
requestId,
|
|
79
|
+
sub: jwtPayload.sub,
|
|
80
|
+
email: jwtPayload.email,
|
|
81
|
+
});
|
|
82
|
+
// TODO: テナント境界の実装
|
|
83
|
+
// jwtPayload.subをレコードのuserIdフィールドと照合する
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=authHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authHandler.js","sourceRoot":"","sources":["../../../src/server/utils/authHandler.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C;;GAEG;AACH,MAAM,MAAM,GAAG,YAAY,CAAC;IAC1B,OAAO,EAAE,cAAc;IACvB,KAAK,EAAG,OAAO,CAAC,GAAG,CAAC,SAAiD,IAAI,MAAM;CAChF,CAAC,CAAC;AAEH;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,KAA6B,EAC7B,SAAiB;IAEjB,4BAA4B;IAC5B,2CAA2C;IAC3C,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;IAE9E,6BAA6B;IAC7B,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9E,MAAM,gBAAgB,GACpB,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACjF,MAAM,eAAe,GAAG,UAAU,EAAE,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAEnE,kBAAkB;IAClB,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE;QACnC,SAAS;QACT,aAAa,EAAE,CAAC,CAAC,UAAU;QAC3B,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;QACpC,eAAe,EAAE,CAAC,CAAC,eAAe;QAClC,gBAAgB,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;KAC/C,CAAC,CAAC;IAEH,qCAAqC;IACrC,8BAA8B;IAC9B,4CAA4C;IAC5C,6CAA6C;IAC7C,MAAM,SAAS,GAAG,eAAe,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,gBAAgB,CAAC,CAAC;IAExE,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,uBAAuB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAClD,CAAC;SAAM,CAAC;QACN,MAAM,2BAA2B,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,uBAAuB,CACpC,KAA6B,EAC7B,SAAiB;IAEjB,sBAAsB;IACtB,4CAA4C;IAC5C,kCAAkC;IAClC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE;QACvC,SAAS;QACT,QAAQ,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ;KAC7C,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,2BAA2B,CACxC,UAA8B,EAC9B,SAAiB;IAEjB,6BAA6B;IAC7B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IACpD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,QAAQ;IAExD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAE5E,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE;QACnC,SAAS;QACT,GAAG,EAAE,UAAU,CAAC,GAAG;QACnB,KAAK,EAAE,UAAU,CAAC,KAAK;KACxB,CAAC,CAAC;IAEH,kBAAkB;IAClB,uCAAuC;AACzC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* エラーハンドラー
|
|
3
|
+
*
|
|
4
|
+
* エラーをハンドリングしてHTTPレスポンスを生成する
|
|
5
|
+
*/
|
|
6
|
+
import type { APIGatewayProxyResultV2 } from 'aws-lambda';
|
|
7
|
+
/**
|
|
8
|
+
* エラーをハンドリングしてレスポンスを生成する
|
|
9
|
+
*
|
|
10
|
+
* @param error - エラーオブジェクト
|
|
11
|
+
* @param requestId - リクエストID
|
|
12
|
+
* @returns HTTPレスポンス
|
|
13
|
+
*/
|
|
14
|
+
export declare function handleError(error: unknown, requestId: string): APIGatewayProxyResultV2;
|
|
15
|
+
//# sourceMappingURL=errorHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errorHandler.d.ts","sourceRoot":"","sources":["../../../src/server/utils/errorHandler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAe1D;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,uBAAuB,CA4CtF"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { createLogger, isAppError, ErrorCode } from '../../shared/index.js';
|
|
2
|
+
import { HTTP_STATUS } from '../../shared/constants/http.js';
|
|
3
|
+
import { VALIDATION_ERROR_PATTERNS } from '../../shared/constants/validation.js';
|
|
4
|
+
import { createErrorResponse } from './responseBuilder.js';
|
|
5
|
+
/**
|
|
6
|
+
* ロガーインスタンス
|
|
7
|
+
*/
|
|
8
|
+
const logger = createLogger({
|
|
9
|
+
service: 'error-handler',
|
|
10
|
+
level: process.env.LOG_LEVEL || 'info',
|
|
11
|
+
});
|
|
12
|
+
/**
|
|
13
|
+
* エラーをハンドリングしてレスポンスを生成する
|
|
14
|
+
*
|
|
15
|
+
* @param error - エラーオブジェクト
|
|
16
|
+
* @param requestId - リクエストID
|
|
17
|
+
* @returns HTTPレスポンス
|
|
18
|
+
*/
|
|
19
|
+
export function handleError(error, requestId) {
|
|
20
|
+
// AppError(アプリケーション定義エラー)の場合
|
|
21
|
+
if (isAppError(error)) {
|
|
22
|
+
return createErrorResponse(error.code, error.message, error.statusCode, requestId, error.details);
|
|
23
|
+
}
|
|
24
|
+
// 標準Errorの場合
|
|
25
|
+
if (error instanceof Error) {
|
|
26
|
+
// スタックトレースをログ出力
|
|
27
|
+
logger.error('Error stack trace', {
|
|
28
|
+
requestId,
|
|
29
|
+
stack: error.stack,
|
|
30
|
+
message: error.message,
|
|
31
|
+
});
|
|
32
|
+
// バリデーションエラーの判定
|
|
33
|
+
if (isValidationError(error.message)) {
|
|
34
|
+
return createErrorResponse(ErrorCode.VALIDATION_ERROR, error.message, HTTP_STATUS.BAD_REQUEST, requestId);
|
|
35
|
+
}
|
|
36
|
+
// 未実装エラーの判定
|
|
37
|
+
if (error.message.includes('not yet implemented')) {
|
|
38
|
+
return createErrorResponse(ErrorCode.NOT_IMPLEMENTED, error.message, HTTP_STATUS.NOT_IMPLEMENTED, requestId);
|
|
39
|
+
}
|
|
40
|
+
// 不明な操作エラーの判定
|
|
41
|
+
if (error.message.includes('Unknown operation')) {
|
|
42
|
+
return createErrorResponse(ErrorCode.INVALID_OPERATION, error.message, HTTP_STATUS.BAD_REQUEST, requestId);
|
|
43
|
+
}
|
|
44
|
+
// その他のエラー
|
|
45
|
+
return createErrorResponse(ErrorCode.INTERNAL_ERROR, error.message, HTTP_STATUS.INTERNAL_SERVER_ERROR, requestId);
|
|
46
|
+
}
|
|
47
|
+
// 予期しないエラー
|
|
48
|
+
return createErrorResponse(ErrorCode.UNKNOWN_ERROR, 'An unexpected error occurred', HTTP_STATUS.INTERNAL_SERVER_ERROR, requestId, {
|
|
49
|
+
error: String(error),
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* バリデーションエラーかどうかを判定する
|
|
54
|
+
*
|
|
55
|
+
* @param message - エラーメッセージ
|
|
56
|
+
* @returns バリデーションエラーの場合true
|
|
57
|
+
*/
|
|
58
|
+
function isValidationError(message) {
|
|
59
|
+
return VALIDATION_ERROR_PATTERNS.some((pattern) => message.includes(pattern));
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=errorHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errorHandler.js","sourceRoot":"","sources":["../../../src/server/utils/errorHandler.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,GAAG,YAAY,CAAC;IAC1B,OAAO,EAAE,eAAe;IACxB,KAAK,EAAG,OAAO,CAAC,GAAG,CAAC,SAAiD,IAAI,MAAM;CAChF,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc,EAAE,SAAiB;IAC3D,6BAA6B;IAC7B,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,mBAAmB,CACxB,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,UAAU,EAChB,SAAS,EACT,KAAK,CAAC,OAAO,CACd,CAAC;IACJ,CAAC;IAED,aAAa;IACb,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,gBAAgB;QAChB,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE;YAChC,SAAS;YACT,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;QAEH,gBAAgB;QAChB,IAAI,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACrC,OAAO,mBAAmB,CAAC,SAAS,CAAC,gBAAgB,EAAE,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAC5G,CAAC;QAED,YAAY;QACZ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;YAClD,OAAO,mBAAmB,CAAC,SAAS,CAAC,eAAe,EAAE,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QAC/G,CAAC;QAED,cAAc;QACd,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAChD,OAAO,mBAAmB,CAAC,SAAS,CAAC,iBAAiB,EAAE,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAC7G,CAAC;QAED,UAAU;QACV,OAAO,mBAAmB,CAAC,SAAS,CAAC,cAAc,EAAE,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC;IACpH,CAAC;IAED,WAAW;IACX,OAAO,mBAAmB,CAAC,SAAS,CAAC,aAAa,EAAE,8BAA8B,EAAE,WAAW,CAAC,qBAAqB,EAAE,SAAS,EAAE;QAChI,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;KACrB,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,OAAe;IACxC,OAAO,yBAAyB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAChF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../../src/server/utils/pagination.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../../src/server/utils/pagination.ts"],"names":[],"mappings":"AASA;;GAEG;AACH,UAAU,gBAAgB;IACxB,gBAAgB;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,YAAY;IACZ,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAW9D;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CA4B/D"}
|