@exabugs/dynamodb-client 1.25.1 → 1.27.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 (147) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/dist/__generated__/models/apiOperation.d.ts +1 -0
  3. package/dist/__generated__/models/apiOperation.d.ts.map +1 -1
  4. package/dist/__generated__/models/apiOperation.js +1 -0
  5. package/dist/__generated__/models/apiOperation.js.map +1 -1
  6. package/dist/__generated__/models/bulkOperationResult.d.ts +2 -0
  7. package/dist/__generated__/models/bulkOperationResult.d.ts.map +1 -1
  8. package/dist/__generated__/models/countParams.d.ts +31 -0
  9. package/dist/__generated__/models/countParams.d.ts.map +1 -0
  10. package/dist/__generated__/models/countParams.js +2 -0
  11. package/dist/__generated__/models/countParams.js.map +1 -0
  12. package/dist/__generated__/models/countResult.d.ts +37 -0
  13. package/dist/__generated__/models/countResult.d.ts.map +1 -0
  14. package/dist/__generated__/models/countResult.js +2 -0
  15. package/dist/__generated__/models/countResult.js.map +1 -0
  16. package/dist/__generated__/models/countResultConsumedCapacity.d.ts +35 -0
  17. package/dist/__generated__/models/countResultConsumedCapacity.d.ts.map +1 -0
  18. package/dist/__generated__/models/countResultConsumedCapacity.js +25 -0
  19. package/dist/__generated__/models/countResultConsumedCapacity.js.map +1 -0
  20. package/dist/__generated__/models/executeOperationBodyOp.d.ts +1 -0
  21. package/dist/__generated__/models/executeOperationBodyOp.d.ts.map +1 -1
  22. package/dist/__generated__/models/executeOperationBodyOp.js +1 -0
  23. package/dist/__generated__/models/executeOperationBodyOp.js.map +1 -1
  24. package/dist/__generated__/models/index.d.ts +3 -0
  25. package/dist/__generated__/models/index.d.ts.map +1 -1
  26. package/dist/__generated__/models/index.js +3 -0
  27. package/dist/__generated__/models/index.js.map +1 -1
  28. package/dist/client/Collection.d.ts +7 -0
  29. package/dist/client/Collection.d.ts.map +1 -1
  30. package/dist/client/Collection.js +20 -1
  31. package/dist/client/Collection.js.map +1 -1
  32. package/dist/scripts/repair-shadows.js +86 -42
  33. package/dist/scripts/repair-shadows.js.map +1 -1
  34. package/dist/scripts/utils/cliParser.d.ts +9 -22
  35. package/dist/scripts/utils/cliParser.d.ts.map +1 -1
  36. package/dist/scripts/utils/cliParser.js +14 -37
  37. package/dist/scripts/utils/cliParser.js.map +1 -1
  38. package/dist/scripts/utils/shadowAudit.d.ts +49 -0
  39. package/dist/scripts/utils/shadowAudit.d.ts.map +1 -0
  40. package/dist/scripts/utils/shadowAudit.js +84 -0
  41. package/dist/scripts/utils/shadowAudit.js.map +1 -0
  42. package/dist/scripts/utils/shadowRepair.d.ts +42 -0
  43. package/dist/scripts/utils/shadowRepair.d.ts.map +1 -0
  44. package/dist/scripts/utils/shadowRepair.js +110 -0
  45. package/dist/scripts/utils/shadowRepair.js.map +1 -0
  46. package/dist/server/handler.cjs +1264 -1088
  47. package/dist/server/handler.cjs.map +4 -4
  48. package/dist/server/handler.js +2 -2
  49. package/dist/server/handler.js.map +1 -1
  50. package/dist/server/media-handler.cjs +2 -2
  51. package/dist/server/media-process-handler-dlq.cjs +19 -3
  52. package/dist/server/media-process-handler-dlq.cjs.map +2 -2
  53. package/dist/server/media-process-handler.cjs +19 -3
  54. package/dist/server/media-process-handler.cjs.map +2 -2
  55. package/dist/server/operations/count.d.ts +3 -0
  56. package/dist/server/operations/count.d.ts.map +1 -0
  57. package/dist/server/operations/count.js +81 -0
  58. package/dist/server/operations/count.js.map +1 -0
  59. package/dist/server/operations/deleteMany.d.ts.map +1 -1
  60. package/dist/server/operations/deleteMany.js +13 -1
  61. package/dist/server/operations/deleteMany.js.map +1 -1
  62. package/dist/server/operations/deleteOne.d.ts.map +1 -1
  63. package/dist/server/operations/deleteOne.js +7 -13
  64. package/dist/server/operations/deleteOne.js.map +1 -1
  65. package/dist/server/operations/find/idQuery.d.ts.map +1 -1
  66. package/dist/server/operations/find/idQuery.js +31 -22
  67. package/dist/server/operations/find/idQuery.js.map +1 -1
  68. package/dist/server/operations/find/keyCondition.d.ts +38 -0
  69. package/dist/server/operations/find/keyCondition.d.ts.map +1 -0
  70. package/dist/server/operations/find/keyCondition.js +184 -0
  71. package/dist/server/operations/find/keyCondition.js.map +1 -0
  72. package/dist/server/operations/find/shadowQuery.d.ts.map +1 -1
  73. package/dist/server/operations/find/shadowQuery.js +16 -143
  74. package/dist/server/operations/find/shadowQuery.js.map +1 -1
  75. package/dist/server/operations/find/utils.d.ts +11 -0
  76. package/dist/server/operations/find/utils.d.ts.map +1 -1
  77. package/dist/server/operations/find/utils.js +1 -6
  78. package/dist/server/operations/find/utils.js.map +1 -1
  79. package/dist/server/operations/findMany.d.ts.map +1 -1
  80. package/dist/server/operations/findMany.js +4 -1
  81. package/dist/server/operations/findMany.js.map +1 -1
  82. package/dist/server/operations/findOne.d.ts.map +1 -1
  83. package/dist/server/operations/findOne.js +1 -1
  84. package/dist/server/operations/findOne.js.map +1 -1
  85. package/dist/server/operations/insertMany.d.ts.map +1 -1
  86. package/dist/server/operations/insertMany.js +1 -4
  87. package/dist/server/operations/insertMany.js.map +1 -1
  88. package/dist/server/operations/insertOne.d.ts.map +1 -1
  89. package/dist/server/operations/insertOne.js +2 -6
  90. package/dist/server/operations/insertOne.js.map +1 -1
  91. package/dist/server/operations/operationDispatcher.d.ts.map +1 -1
  92. package/dist/server/operations/operationDispatcher.js +3 -0
  93. package/dist/server/operations/operationDispatcher.js.map +1 -1
  94. package/dist/server/operations/parameterConverter.d.ts +1 -0
  95. package/dist/server/operations/parameterConverter.d.ts.map +1 -1
  96. package/dist/server/operations/parameterConverter.js +34 -41
  97. package/dist/server/operations/parameterConverter.js.map +1 -1
  98. package/dist/server/operations/updateMany.d.ts.map +1 -1
  99. package/dist/server/operations/updateMany.js +37 -16
  100. package/dist/server/operations/updateMany.js.map +1 -1
  101. package/dist/server/operations/updateOne.d.ts.map +1 -1
  102. package/dist/server/operations/updateOne.js +18 -22
  103. package/dist/server/operations/updateOne.js.map +1 -1
  104. package/dist/server/types.d.ts +22 -7
  105. package/dist/server/types.d.ts.map +1 -1
  106. package/dist/server/utils/bulkError.d.ts +12 -0
  107. package/dist/server/utils/bulkError.d.ts.map +1 -0
  108. package/dist/server/utils/bulkError.js +21 -0
  109. package/dist/server/utils/bulkError.js.map +1 -0
  110. package/dist/server/utils/chunking.d.ts +9 -1
  111. package/dist/server/utils/chunking.d.ts.map +1 -1
  112. package/dist/server/utils/chunking.js +20 -3
  113. package/dist/server/utils/chunking.js.map +1 -1
  114. package/dist/server/utils/filter.d.ts +3 -105
  115. package/dist/server/utils/filter.d.ts.map +1 -1
  116. package/dist/server/utils/filter.js +14 -218
  117. package/dist/server/utils/filter.js.map +1 -1
  118. package/dist/server/utils/idFilter.d.ts +15 -0
  119. package/dist/server/utils/idFilter.d.ts.map +1 -0
  120. package/dist/server/utils/idFilter.js +32 -0
  121. package/dist/server/utils/idFilter.js.map +1 -0
  122. package/docs/README.md +9 -12
  123. package/package.json +1 -1
  124. package/dist/scripts/operations/bulkRecordRepair.d.ts +0 -17
  125. package/dist/scripts/operations/bulkRecordRepair.d.ts.map +0 -1
  126. package/dist/scripts/operations/bulkRecordRepair.js +0 -76
  127. package/dist/scripts/operations/bulkRecordRepair.js.map +0 -1
  128. package/dist/scripts/operations/singleRecordRepair.d.ts +0 -18
  129. package/dist/scripts/operations/singleRecordRepair.d.ts.map +0 -1
  130. package/dist/scripts/operations/singleRecordRepair.js +0 -46
  131. package/dist/scripts/operations/singleRecordRepair.js.map +0 -1
  132. package/dist/scripts/utils/awsUtils.d.ts +0 -15
  133. package/dist/scripts/utils/awsUtils.d.ts.map +0 -1
  134. package/dist/scripts/utils/awsUtils.js +0 -31
  135. package/dist/scripts/utils/awsUtils.js.map +0 -1
  136. package/dist/scripts/utils/clientFactory.d.ts +0 -22
  137. package/dist/scripts/utils/clientFactory.d.ts.map +0 -1
  138. package/dist/scripts/utils/clientFactory.js +0 -36
  139. package/dist/scripts/utils/clientFactory.js.map +0 -1
  140. package/dist/scripts/utils/repairUtils.d.ts +0 -58
  141. package/dist/scripts/utils/repairUtils.d.ts.map +0 -1
  142. package/dist/scripts/utils/repairUtils.js +0 -52
  143. package/dist/scripts/utils/repairUtils.js.map +0 -1
  144. package/dist/server/utils/ttl.d.ts +0 -17
  145. package/dist/server/utils/ttl.d.ts.map +0 -1
  146. package/dist/server/utils/ttl.js +0 -64
  147. package/dist/server/utils/ttl.js.map +0 -1
@@ -6,9 +6,14 @@
6
6
  *
7
7
  * リファクタリング: updateManyを内部で使用
8
8
  */
9
- import { AppError, ErrorCode, createLogger } from '../../shared/index.js';
9
+ import { ErrorCode, createLogger } from '../../shared/index.js';
10
+ import { toAppError } from '../utils/bulkError.js';
10
11
  import { findOneByFilter } from './findAll.js';
11
12
  const logger = createLogger({ service: 'records-lambda' });
13
+ /** upsert で新規作成されたときだけ upsertedId を返す(既存を更新したときは付けない) */
14
+ function upsertedIdOf(result, id) {
15
+ return result.upsertedIds?.includes(id) ? { upsertedId: id } : {};
16
+ }
12
17
  /**
13
18
  * updateOne 操作を実行する
14
19
  *
@@ -45,6 +50,7 @@ export async function handleUpdateOne(resource, params, requestId) {
45
50
  // updateMany([id], data)を呼び出す
46
51
  const updateManyResult = await handleUpdateMany(resource, {
47
52
  ids: [targetId],
53
+ condition: params.condition,
48
54
  data: patchData,
49
55
  options,
50
56
  }, requestId);
@@ -52,16 +58,7 @@ export async function handleUpdateOne(resource, params, requestId) {
52
58
  if (updateManyResult.count === 0) {
53
59
  // 更新に失敗した場合
54
60
  const error = Object.values(updateManyResult.errors || {})[0];
55
- if (error) {
56
- // パッチ自体の誤り(不正なパス等)はクライアントエラーとして 400 を維持する
57
- if (error.code === ErrorCode.VALIDATION_ERROR) {
58
- throw new AppError(ErrorCode.VALIDATION_ERROR, error.message ?? 'Invalid patch', 400);
59
- }
60
- throw new Error(`Failed to update record: ${error.message}`);
61
- }
62
- else {
63
- throw new Error(`Failed to update record: ${targetId}`);
64
- }
61
+ throw toAppError(error, `Failed to update record: ${targetId}`);
65
62
  }
66
63
  // 成功した場合は items[0] を返却(updateManyが更新したフィールドのみを返す)
67
64
  if (!updateManyResult.items || updateManyResult.items.length === 0) {
@@ -78,6 +75,7 @@ export async function handleUpdateOne(resource, params, requestId) {
78
75
  modifiedCount: 1,
79
76
  id: targetId,
80
77
  ...updatedItem,
78
+ ...upsertedIdOf(updateManyResult, targetId),
81
79
  consumedCapacity: updateManyResult.consumedCapacity,
82
80
  };
83
81
  }
@@ -94,22 +92,19 @@ export async function handleUpdateOne(resource, params, requestId) {
94
92
  // 一致が無いときは filter のまま渡し、upsert: true なら新規作成、そうでなければ「見つからない」になる
95
93
  const target = await findOneByFilter(resource, params.filter, requestId);
96
94
  const updateManyResult = await handleUpdateMany(resource, target
97
- ? { ids: [target.id], data: patchData, options }
95
+ ? {
96
+ ids: [target.id],
97
+ // 選んでから書くまでの間に条件から外れたレコードを書かない
98
+ condition: params.filter,
99
+ data: patchData,
100
+ options,
101
+ }
98
102
  : { filter: params.filter, data: patchData, options }, requestId);
99
103
  // 結果を検証
100
104
  if (updateManyResult.count === 0) {
101
105
  // 更新に失敗した場合
102
106
  const error = Object.values(updateManyResult.errors || {})[0];
103
- if (error) {
104
- // パッチ自体の誤り(不正なパス等)はクライアントエラーとして 400 を維持する
105
- if (error.code === ErrorCode.VALIDATION_ERROR) {
106
- throw new AppError(ErrorCode.VALIDATION_ERROR, error.message ?? 'Invalid patch', 400);
107
- }
108
- throw new Error(`Failed to update record: ${error.message}`);
109
- }
110
- else {
111
- throw new Error(`No records found matching filter`);
112
- }
107
+ throw toAppError(error ?? { code: ErrorCode.ITEM_NOT_FOUND }, 'No records found matching filter');
113
108
  }
114
109
  // 成功した場合は items[0] を返却(updateManyが更新したフィールドのみを返す)
115
110
  if (!updateManyResult.items || updateManyResult.items.length === 0) {
@@ -131,6 +126,7 @@ export async function handleUpdateOne(resource, params, requestId) {
131
126
  modifiedCount: 1,
132
127
  id: updatedId,
133
128
  ...updatedItem,
129
+ ...upsertedIdOf(updateManyResult, updatedId),
134
130
  consumedCapacity: updateManyResult.consumedCapacity,
135
131
  };
136
132
  }
@@ -1 +1 @@
1
- {"version":3,"file":"updateOne.js","sourceRoot":"","sources":["../../../src/server/operations/updateOne.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"updateOne.js","sourceRoot":"","sources":["../../../src/server/operations/updateOne.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEhE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAE3D,yDAAyD;AACzD,SAAS,YAAY,CAAC,MAAkC,EAAE,EAAU;IAClE,OAAO,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACpE,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAAgB,EAChB,MAAuB,EACvB,SAAiB;IAEjB,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAE5C,mBAAmB;IACnB,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAE7D,yBAAyB;IACzB,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;QACnB,eAAe;QACf,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC;QAE3B,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE;YAC1C,SAAS;YACT,QAAQ;YACR,EAAE,EAAE,QAAQ;YACZ,MAAM,EAAE,OAAO,EAAE,MAAM;SACxB,CAAC,CAAC;QAEH,8BAA8B;QAC9B,MAAM,gBAAgB,GAAG,MAAM,gBAAgB,CAC7C,QAAQ,EACR;YACE,GAAG,EAAE,CAAC,QAAQ,CAAC;YACf,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,IAAI,EAAE,SAAS;YACf,OAAO;SACR,EACD,SAAS,CACV,CAAC;QAEF,QAAQ;QACR,IAAI,gBAAgB,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YACjC,YAAY;YACZ,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,MAAM,UAAU,CAAC,KAAK,EAAE,4BAA4B,QAAQ,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,kDAAkD;QAClD,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,gBAAgB,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QAED,cAAc;QACd,OAAO;YACL,YAAY,EAAE,IAAI;YAClB,YAAY,EAAE,CAAC;YACf,aAAa,EAAE,CAAC;YAChB,EAAE,EAAE,QAAQ;YACZ,GAAG,WAAW;YACd,GAAG,YAAY,CAAC,gBAAgB,EAAE,QAAQ,CAAC;YAC3C,gBAAgB,EAAE,gBAAgB,CAAC,gBAAgB;SACpD,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,mBAAmB;QACnB,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE;YAC9C,SAAS;YACT,QAAQ;YACR,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,OAAO,EAAE,MAAM;SACxB,CAAC,CAAC;QAEH,kEAAkE;QAClE,gDAAgD;QAChD,+DAA+D;QAC/D,MAAM,MAAM,GAAG,MAAM,eAAe,CAClC,QAAQ,EACR,MAAM,CAAC,MAAiC,EACxC,SAAS,CACV,CAAC;QACF,MAAM,gBAAgB,GAAG,MAAM,gBAAgB,CAC7C,QAAQ,EACR,MAAM;YACJ,CAAC,CAAC;gBACE,GAAG,EAAE,CAAC,MAAM,CAAC,EAAY,CAAC;gBAC1B,+BAA+B;gBAC/B,SAAS,EAAE,MAAM,CAAC,MAAiC;gBACnD,IAAI,EAAE,SAAS;gBACf,OAAO;aACR;YACH,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,EACvD,SAAS,CACV,CAAC;QAEF,QAAQ;QACR,IAAI,gBAAgB,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YACjC,YAAY;YACZ,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,MAAM,UAAU,CACd,KAAK,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,cAAc,EAAE,EAC3C,kCAAkC,CACnC,CAAC;QACJ,CAAC;QAED,kDAAkD;QAClD,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,gBAAgB,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QAED,yBAAyB;QACzB,MAAM,SAAS,GAAG,WAAW,CAAC,EAAY,CAAC;QAC3C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QAED,cAAc;QACd,OAAO;YACL,YAAY,EAAE,IAAI;YAClB,YAAY,EAAE,CAAC;YACf,aAAa,EAAE,CAAC;YAChB,EAAE,EAAE,SAAS;YACb,GAAG,WAAW;YACd,GAAG,YAAY,CAAC,gBAAgB,EAAE,SAAS,CAAC;YAC5C,gBAAgB,EAAE,gBAAgB,CAAC,gBAAgB;SACpD,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -5,7 +5,16 @@
5
5
  *
6
6
  * NOTE: OpenAPI仕様から型を生成し、実装で使用しています。
7
7
  */
8
- import type { ApiErrorResponse, ApiOperation, BulkOperationResult, DeleteManyParams, DeleteOneParams, DeleteOneResult, FilterOperators, FindManyParams, FindManyReferenceParams, FindManyReferenceResult, FindOneParams, FindParams, FindResult, ApiRequest as GeneratedApiRequest, ApiSuccessResponse as GeneratedApiSuccessResponse, InsertManyParams, InsertOneParams, InsertOneResult, OperationError, UpdateManyParams, UpdateOneParams, UpdateOneResult } from '../__generated__/models/index.js';
8
+ import type { ApiErrorResponse, ApiOperation, BulkOperationResult, CountParams, CountResult, DeleteOneResult, FilterOperators, FindManyReferenceParams, FindManyReferenceResult, FindParams, FindResult, ApiRequest as GeneratedApiRequest, ApiSuccessResponse as GeneratedApiSuccessResponse, DeleteManyParams as GeneratedDeleteManyParams, DeleteOneParams as GeneratedDeleteOneParams, FindManyParams as GeneratedFindManyParams, FindOneParams as GeneratedFindOneParams, UpdateManyParams as GeneratedUpdateManyParams, UpdateOneParams as GeneratedUpdateOneParams, InsertManyParams, InsertOneParams, InsertOneResult, OperationError, UpdateOneResult } from '../__generated__/models/index.js';
9
+ /**
10
+ * サーバー内部の追加条件(id 以外の条件)
11
+ *
12
+ * フィルタの id 以外の条件を、id で引いたレコードに対してメモリで確かめる。
13
+ * 書く操作では、楽観ロックの読み取りの中で確かめる(条件つき更新)。ワイヤの形式(OpenAPI)は変えない。
14
+ */
15
+ export type WithCondition<T> = T & {
16
+ condition?: Record<string, unknown>;
17
+ };
9
18
  /**
10
19
  * フィルタ演算子($プレフィックス付き)
11
20
  */
@@ -24,14 +33,18 @@ export type ApiRequest<T = unknown> = Omit<GeneratedApiRequest, 'params'> & {
24
33
  * find パラメータ
25
34
  */
26
35
  export type { FindParams };
36
+ /**
37
+ * count パラメータ・レスポンスデータ
38
+ */
39
+ export type { CountParams, CountResult };
27
40
  /**
28
41
  * findOne パラメータ
29
42
  */
30
- export type { FindOneParams };
43
+ export type FindOneParams = WithCondition<GeneratedFindOneParams>;
31
44
  /**
32
45
  * findMany パラメータ
33
46
  */
34
- export type { FindManyParams };
47
+ export type FindManyParams = WithCondition<GeneratedFindManyParams>;
35
48
  /**
36
49
  * findManyReference パラメータ
37
50
  */
@@ -51,19 +64,19 @@ export type MultipleRecordsSelector = FindManyParams;
51
64
  /**
52
65
  * updateOne パラメータ
53
66
  */
54
- export type { UpdateOneParams };
67
+ export type UpdateOneParams = WithCondition<GeneratedUpdateOneParams>;
55
68
  /**
56
69
  * updateMany パラメータ
57
70
  */
58
- export type { UpdateManyParams };
71
+ export type UpdateManyParams = WithCondition<GeneratedUpdateManyParams>;
59
72
  /**
60
73
  * deleteOne パラメータ
61
74
  */
62
- export type { DeleteOneParams };
75
+ export type DeleteOneParams = WithCondition<GeneratedDeleteOneParams>;
63
76
  /**
64
77
  * deleteMany パラメータ
65
78
  */
66
- export type { DeleteManyParams };
79
+ export type DeleteManyParams = WithCondition<GeneratedDeleteManyParams>;
67
80
  /**
68
81
  * insertMany パラメータ
69
82
  */
@@ -146,6 +159,7 @@ export type ApiParamsMap = {
146
159
  findOne: FindOneParams;
147
160
  findMany: FindManyParams;
148
161
  findManyReference: FindManyReferenceParams;
162
+ count: CountParams;
149
163
  insertOne: InsertOneParams;
150
164
  updateOne: UpdateOneParams;
151
165
  updateMany: UpdateManyParams;
@@ -161,6 +175,7 @@ export type ApiDataMap = {
161
175
  findOne: FindOneResult;
162
176
  findMany: FindManyResult;
163
177
  findManyReference: FindManyReferenceResult;
178
+ count: CountResult;
164
179
  insertOne: InsertOneResult;
165
180
  updateOne: UpdateOneResult;
166
181
  updateMany: UpdateManyResult;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * *Many 操作の失敗(errors の要素)を、単体操作(*One)の AppError に直す
3
+ *
4
+ * 「対象が無い」は 404、競合は 409、リクエストの誤りは 400 にする。
5
+ * それ以外は 500(障害)のまま。
6
+ */
7
+ import { AppError } from '../../shared/index.js';
8
+ export declare function toAppError(error: {
9
+ code?: string;
10
+ message?: string;
11
+ } | undefined, fallbackMessage: string): AppError;
12
+ //# sourceMappingURL=bulkError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bulkError.d.ts","sourceRoot":"","sources":["../../../src/server/utils/bulkError.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,QAAQ,EAAa,MAAM,uBAAuB,CAAC;AAE5D,wBAAgB,UAAU,CACxB,KAAK,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,EACtD,eAAe,EAAE,MAAM,GACtB,QAAQ,CAYV"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * *Many 操作の失敗(errors の要素)を、単体操作(*One)の AppError に直す
3
+ *
4
+ * 「対象が無い」は 404、競合は 409、リクエストの誤りは 400 にする。
5
+ * それ以外は 500(障害)のまま。
6
+ */
7
+ import { AppError, ErrorCode } from '../../shared/index.js';
8
+ export function toAppError(error, fallbackMessage) {
9
+ const message = error?.message ?? fallbackMessage;
10
+ switch (error?.code) {
11
+ case ErrorCode.VALIDATION_ERROR:
12
+ return new AppError(ErrorCode.VALIDATION_ERROR, message, 400);
13
+ case ErrorCode.ITEM_NOT_FOUND:
14
+ return new AppError(ErrorCode.ITEM_NOT_FOUND, message, 404);
15
+ case ErrorCode.VERSION_CONFLICT:
16
+ return new AppError(ErrorCode.VERSION_CONFLICT, message, 409);
17
+ default:
18
+ return new AppError(ErrorCode.INTERNAL_ERROR, message, 500);
19
+ }
20
+ }
21
+ //# sourceMappingURL=bulkError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bulkError.js","sourceRoot":"","sources":["../../../src/server/utils/bulkError.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,UAAU,UAAU,CACxB,KAAsD,EACtD,eAAuB;IAEvB,MAAM,OAAO,GAAG,KAAK,EAAE,OAAO,IAAI,eAAe,CAAC;IAClD,QAAQ,KAAK,EAAE,IAAI,EAAE,CAAC;QACpB,KAAK,SAAS,CAAC,gBAAgB;YAC7B,OAAO,IAAI,QAAQ,CAAC,SAAS,CAAC,gBAAgB,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QAChE,KAAK,SAAS,CAAC,cAAc;YAC3B,OAAO,IAAI,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QAC9D,KAAK,SAAS,CAAC,gBAAgB;YAC7B,OAAO,IAAI,QAAQ,CAAC,SAAS,CAAC,gBAAgB,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QAChE;YACE,OAAO,IAAI,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAChE,CAAC;AACH,CAAC"}
@@ -1,3 +1,9 @@
1
+ /**
2
+ * 1 チャンク(1 トランザクション)の推定サイズの上限(バイト)
3
+ *
4
+ * DynamoDB のトランザクションは合計 4MB までなので、シャドーなどの余白を見て 3.5MB で分ける。
5
+ */
6
+ export declare const CHUNK_MAX_BYTES: number;
1
7
  /**
2
8
  * チャンク分割結果
3
9
  */
@@ -15,6 +21,8 @@ export interface ChunkResult<T> {
15
21
  *
16
22
  * @param records - 処理対象のレコード配列
17
23
  * @param getItemCount - 各レコードのアイテム数を計算する関数
24
+ * @param getByteSize - 各レコードの推定サイズ(バイト)を返す関数(既定は JSON の長さ)。
25
+ * 合計が {@link CHUNK_MAX_BYTES} を超えるときもチャンクを分ける(4MB の上限対策)
18
26
  * @returns チャンク分割結果
19
27
  * @throws {Error} 単一レコードが100アイテムを超える場合
20
28
  *
@@ -34,7 +42,7 @@ export interface ChunkResult<T> {
34
42
  * });
35
43
  * ```
36
44
  */
37
- export declare function calculateChunks<T>(records: T[], getItemCount: (record: T) => number): ChunkResult<T>;
45
+ export declare function calculateChunks<T>(records: T[], getItemCount: (record: T) => number, getByteSize?: (record: T) => number): ChunkResult<T>;
38
46
  /**
39
47
  * チャンク実行結果
40
48
  */
@@ -1 +1 @@
1
- {"version":3,"file":"chunking.d.ts","sourceRoot":"","sources":["../../../src/server/utils/chunking.ts"],"names":[],"mappings":"AAaA;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,8BAA8B;IAC9B,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;IACd,kBAAkB;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAC/B,OAAO,EAAE,CAAC,EAAE,EACZ,YAAY,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,GAClC,WAAW,CAAC,CAAC,CAAC,CAsDhB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC;IACrC,eAAe;IACf,cAAc,EAAE,CAAC,EAAE,CAAC;IACpB,kBAAkB;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY;IACZ,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,aAAa;IACb,EAAE,EAAE,MAAM,CAAC;IACX,aAAa;IACb,IAAI,EAAE,MAAM,CAAC;IACb,eAAe;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,aAAa,CAAC,CAAC,EACnC,MAAM,EAAE,CAAC,EAAE,EAAE,EACb,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,EAC1C,WAAW,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,GACjC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CA8FlC"}
1
+ {"version":3,"file":"chunking.d.ts","sourceRoot":"","sources":["../../../src/server/utils/chunking.ts"],"names":[],"mappings":"AAaA;;;;GAIG;AACH,eAAO,MAAM,eAAe,QAAoB,CAAC;AAOjD;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,8BAA8B;IAC9B,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;IACd,kBAAkB;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAC/B,OAAO,EAAE,CAAC,EAAE,EACZ,YAAY,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,EACnC,WAAW,GAAE,CAAC,MAAM,EAAE,CAAC,KAAK,MAA4B,GACvD,WAAW,CAAC,CAAC,CAAC,CA6DhB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC;IACrC,eAAe;IACf,cAAc,EAAE,CAAC,EAAE,CAAC;IACpB,kBAAkB;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY;IACZ,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,aAAa;IACb,EAAE,EAAE,MAAM,CAAC;IACX,aAAa;IACb,IAAI,EAAE,MAAM,CAAC;IACb,eAAe;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,aAAa,CAAC,CAAC,EACnC,MAAM,EAAE,CAAC,EAAE,EAAE,EACb,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,EAC1C,WAAW,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,GACjC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CA8FlC"}
@@ -9,6 +9,16 @@
9
9
  */
10
10
  import { DYNAMODB_TRANSACT_WRITE_MAX_ITEMS, createLogger } from '../../shared/index.js';
11
11
  const logger = createLogger({ service: 'records-lambda' });
12
+ /**
13
+ * 1 チャンク(1 トランザクション)の推定サイズの上限(バイト)
14
+ *
15
+ * DynamoDB のトランザクションは合計 4MB までなので、シャドーなどの余白を見て 3.5MB で分ける。
16
+ */
17
+ export const CHUNK_MAX_BYTES = 3.5 * 1024 * 1024;
18
+ /** レコードの推定サイズ(JSON の長さ。メインレコードの大きさが支配的なので近似として使う) */
19
+ function estimateRecordBytes(record) {
20
+ return Buffer.byteLength(JSON.stringify(record) ?? '', 'utf8');
21
+ }
12
22
  /**
13
23
  * バルク操作のチャンクサイズを動的に計算する
14
24
  *
@@ -17,6 +27,8 @@ const logger = createLogger({ service: 'records-lambda' });
17
27
  *
18
28
  * @param records - 処理対象のレコード配列
19
29
  * @param getItemCount - 各レコードのアイテム数を計算する関数
30
+ * @param getByteSize - 各レコードの推定サイズ(バイト)を返す関数(既定は JSON の長さ)。
31
+ * 合計が {@link CHUNK_MAX_BYTES} を超えるときもチャンクを分ける(4MB の上限対策)
20
32
  * @returns チャンク分割結果
21
33
  * @throws {Error} 単一レコードが100アイテムを超える場合
22
34
  *
@@ -36,13 +48,15 @@ const logger = createLogger({ service: 'records-lambda' });
36
48
  * });
37
49
  * ```
38
50
  */
39
- export function calculateChunks(records, getItemCount) {
51
+ export function calculateChunks(records, getItemCount, getByteSize = estimateRecordBytes) {
40
52
  const chunks = [];
41
53
  const itemCounts = [];
42
54
  let currentChunk = [];
43
55
  let currentItemCount = 0;
56
+ let currentBytes = 0;
44
57
  for (const record of records) {
45
58
  const itemCount = getItemCount(record);
59
+ const bytes = getByteSize(record);
46
60
  // 単一レコードがDynamoDB制限を超える場合はエラー
47
61
  if (itemCount > DYNAMODB_TRANSACT_WRITE_MAX_ITEMS) {
48
62
  const errorMsg = `Single record exceeds ${DYNAMODB_TRANSACT_WRITE_MAX_ITEMS} items limit: ${itemCount} items`;
@@ -52,18 +66,21 @@ export function calculateChunks(records, getItemCount) {
52
66
  });
53
67
  throw new Error(errorMsg);
54
68
  }
55
- // 現在のチャンクに追加するとDynamoDB制限を超える場合、新しいチャンクを開始
56
- if (currentItemCount + itemCount > DYNAMODB_TRANSACT_WRITE_MAX_ITEMS) {
69
+ // 現在のチャンクに追加するとDynamoDB制限(アイテム数・サイズ)を超える場合、新しいチャンクを開始
70
+ if (currentItemCount + itemCount > DYNAMODB_TRANSACT_WRITE_MAX_ITEMS ||
71
+ currentBytes + bytes > CHUNK_MAX_BYTES) {
57
72
  if (currentChunk.length > 0) {
58
73
  chunks.push(currentChunk);
59
74
  itemCounts.push(currentItemCount);
60
75
  }
61
76
  currentChunk = [record];
62
77
  currentItemCount = itemCount;
78
+ currentBytes = bytes;
63
79
  }
64
80
  else {
65
81
  currentChunk.push(record);
66
82
  currentItemCount += itemCount;
83
+ currentBytes += bytes;
67
84
  }
68
85
  }
69
86
  // 最後のチャンクを追加
@@ -1 +1 @@
1
- {"version":3,"file":"chunking.js","sourceRoot":"","sources":["../../../src/server/utils/chunking.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chunking.js","sourceRoot":"","sources":["../../../src/server/utils/chunking.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,14 @@
1
1
  /**
2
- * DynamoDB フィルター式生成ユーティリティ
3
- * FilterExpression の構築とシャドーレコード除外条件の生成
2
+ * フィルターのフィールド指定(`field:$op:type`)の解析
4
3
  *
5
- * 要件: 5.5, 7.1, 12.1-12.12
4
+ * 要件: 12.1-12.12
6
5
  */
7
6
  /**
8
7
  * フィルター演算子(MongoDB互換)
9
8
  *
10
9
  * 要件: 12.2
11
10
  */
12
- export type FilterOperator = '$eq' | '$ne' | '$lt' | '$lte' | '$gt' | '$gte' | '$in' | '$nin' | '$starts' | '$ends' | '$contains' | '$regex' | '$exists' | '$near';
11
+ export type FilterOperator = '$eq' | '$ne' | '$lt' | '$lte' | '$gt' | '$gte' | '$in' | '$nin' | '$starts' | '$ends' | '$contains' | '$exists' | '$near';
13
12
  /**
14
13
  * フィルター型
15
14
  *
@@ -29,17 +28,6 @@ export interface ParsedFilterField {
29
28
  /** データ型 */
30
29
  type: FilterType;
31
30
  }
32
- /**
33
- * フィルター式の構築結果
34
- */
35
- export interface FilterExpressionResult {
36
- /** FilterExpression 文字列 */
37
- expression: string;
38
- /** ExpressionAttributeNames マッピング */
39
- names: Record<string, string>;
40
- /** ExpressionAttributeValues マッピング */
41
- values: Record<string, unknown>;
42
- }
43
31
  /**
44
32
  * フィルターフィールド名をパースする
45
33
  *
@@ -59,94 +47,4 @@ export interface FilterExpressionResult {
59
47
  * @throws Error - 構文エラーの場合
60
48
  */
61
49
  export declare function parseFilterField(fieldKey: string): ParsedFilterField;
62
- /**
63
- * シャドーレコードを除外するフィルター式を生成する
64
- *
65
- * シャドーレコードの特徴:
66
- * - SK に '#' が含まれる(例: "name#value#id#ULID")
67
- * - 本体レコードは "id#ULID" 形式で '#' が1つのみ
68
- *
69
- * 除外条件:
70
- * - attribute_exists(data) AND NOT contains(SK, '#id#')
71
- *
72
- * @returns シャドー除外フィルター式
73
- */
74
- export declare function createShadowExclusionFilter(): FilterExpressionResult;
75
- /**
76
- * ユーザー指定のフィルター条件から FilterExpression を構築する
77
- *
78
- * 注意: この実装は基本的な等価比較のみをサポート
79
- * より複雑な条件(範囲検索、部分一致など)は将来の拡張として実装可能
80
- *
81
- * @param filter - フィルター条件(キー: フィールド名、値: 期待値)
82
- * @returns フィルター式の構築結果
83
- */
84
- export declare function buildFilterExpression(filter: Record<string, unknown>): FilterExpressionResult | null;
85
- /**
86
- * 複数のフィルター式を AND 条件で結合する
87
- *
88
- * @param filters - 結合するフィルター式の配列
89
- * @returns 結合されたフィルター式
90
- */
91
- export declare function combineFilters(filters: (FilterExpressionResult | null)[]): FilterExpressionResult | null;
92
- /**
93
- * フィルター式を DynamoDB Query/Scan パラメータに適用する
94
- *
95
- * @param params - DynamoDB Query/Scan パラメータ
96
- * @param filter - フィルター式
97
- * @returns フィルター式が適用されたパラメータ
98
- */
99
- export declare function applyFilterExpression<T extends Record<string, unknown>>(params: T, filter: FilterExpressionResult | null): T;
100
- /**
101
- * 型変換ヘルパー
102
- *
103
- * 要件: 12.5
104
- *
105
- * @param value - 変換する値
106
- * @param type - 変換先の型
107
- * @returns 変換後の値
108
- */
109
- export declare function convertType(value: unknown, type: FilterType): string | number | Date | boolean;
110
- /**
111
- * レコードが単一のフィルター条件に一致するかチェックする
112
- *
113
- * 要件: 12.2, 12.6, 12.8, 12.9
114
- *
115
- * @param record - チェック対象レコード
116
- * @param parsed - パース済みフィルター条件
117
- * @param value - フィルター値
118
- * @returns 一致する場合true
119
- */
120
- export declare function matchesFilter(record: Record<string, unknown>, parsed: ParsedFilterField, value: unknown): boolean;
121
- /**
122
- * レコードがすべてのフィルター条件に一致するかチェックする(AND条件)
123
- *
124
- * 要件: 12.9
125
- *
126
- * @param record - チェック対象レコード
127
- * @param parsedFilters - パース済みフィルター条件の配列
128
- * @returns すべての条件に一致する場合true
129
- */
130
- export declare function matchesAllFilters(record: Record<string, unknown>, parsedFilters: Array<{
131
- parsed: ParsedFilterField;
132
- value: unknown;
133
- }>): boolean;
134
- /**
135
- * Query最適化が可能かチェックする
136
- *
137
- * ソートフィールドと一致し、Query可能な演算子を持つフィルター条件を検出する
138
- *
139
- * 要件: 12.7
140
- *
141
- * @param sortField - ソート対象フィールド
142
- * @param parsedFilters - パース済みフィルター条件
143
- * @returns 最適化可能なフィルター条件(なければnull)
144
- */
145
- export declare function findOptimizableFilter(sortField: string, parsedFilters: Array<{
146
- parsed: ParsedFilterField;
147
- value: unknown;
148
- }>): {
149
- parsed: ParsedFilterField;
150
- value: unknown;
151
- } | null;
152
50
  //# sourceMappingURL=filter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../src/server/utils/filter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,MAAM,MAAM,cAAc,GACtB,KAAK,GACL,KAAK,GACL,KAAK,GACL,MAAM,GACN,KAAK,GACL,MAAM,GACN,KAAK,GACL,MAAM,GACN,SAAS,GACT,OAAO,GACP,WAAW,GACX,QAAQ,GACR,SAAS,GACT,OAAO,CAAC;AAEZ;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAElE;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,gBAAgB;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU;IACV,QAAQ,EAAE,cAAc,CAAC;IACzB,WAAW;IACX,IAAI,EAAE,UAAU,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,CAiCpE;AA+BD;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,IAAI,sBAAsB,CAWpE;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,sBAAsB,GAAG,IAAI,CA4B/B;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,CAAC,sBAAsB,GAAG,IAAI,CAAC,EAAE,GACzC,sBAAsB,GAAG,IAAI,CA6B/B;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrE,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,sBAAsB,GAAG,IAAI,GACpC,CAAC,CAiBH;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,CAe9F;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,OAAO,GACb,OAAO,CAqCT;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,aAAa,EAAE,KAAK,CAAC;IAAE,MAAM,EAAE,iBAAiB,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC,GAClE,OAAO,CAET;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,KAAK,CAAC;IAAE,MAAM,EAAE,iBAAiB,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC,GAClE;IAAE,MAAM,EAAE,iBAAiB,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAUtD"}
1
+ {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../src/server/utils/filter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AACH,MAAM,MAAM,cAAc,GACtB,KAAK,GACL,KAAK,GACL,KAAK,GACL,MAAM,GACN,KAAK,GACL,MAAM,GACN,KAAK,GACL,MAAM,GACN,SAAS,GACT,OAAO,GACP,WAAW,GACX,SAAS,GACT,OAAO,CAAC;AAEZ;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAElE;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,gBAAgB;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU;IACV,QAAQ,EAAE,cAAc,CAAC;IACzB,WAAW;IACX,IAAI,EAAE,UAAU,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,CA6BpE"}