@exabugs/dynamodb-client 1.4.16 → 1.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.
Files changed (42) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/client/FindCursor.d.ts +29 -0
  3. package/dist/client/FindCursor.d.ts.map +1 -1
  4. package/dist/client/FindCursor.js +48 -0
  5. package/dist/client/FindCursor.js.map +1 -1
  6. package/dist/integrations/react-admin/components/ReferenceManyToMany/ReferenceManyToManyField.d.ts +4 -0
  7. package/dist/integrations/react-admin/components/ReferenceManyToMany/ReferenceManyToManyField.d.ts.map +1 -0
  8. package/dist/integrations/react-admin/components/ReferenceManyToMany/ReferenceManyToManyField.js +49 -0
  9. package/dist/integrations/react-admin/components/ReferenceManyToMany/ReferenceManyToManyField.js.map +1 -0
  10. package/dist/integrations/react-admin/components/ReferenceManyToMany/ReferenceManyToManyInput.d.ts +4 -0
  11. package/dist/integrations/react-admin/components/ReferenceManyToMany/ReferenceManyToManyInput.d.ts.map +1 -0
  12. package/dist/integrations/react-admin/components/ReferenceManyToMany/ReferenceManyToManyInput.js +34 -0
  13. package/dist/integrations/react-admin/components/ReferenceManyToMany/ReferenceManyToManyInput.js.map +1 -0
  14. package/dist/integrations/react-admin/components/ReferenceManyToMany/index.d.ts +4 -0
  15. package/dist/integrations/react-admin/components/ReferenceManyToMany/index.d.ts.map +1 -0
  16. package/dist/integrations/react-admin/components/ReferenceManyToMany/index.js +3 -0
  17. package/dist/integrations/react-admin/components/ReferenceManyToMany/index.js.map +1 -0
  18. package/dist/integrations/react-admin/components/ReferenceManyToMany/types.d.ts +53 -0
  19. package/dist/integrations/react-admin/components/ReferenceManyToMany/types.d.ts.map +1 -0
  20. package/dist/integrations/react-admin/components/ReferenceManyToMany/types.js +33 -0
  21. package/dist/integrations/react-admin/components/ReferenceManyToMany/types.js.map +1 -0
  22. package/dist/integrations/react-admin/components/index.d.ts +1 -2
  23. package/dist/integrations/react-admin/components/index.d.ts.map +1 -1
  24. package/dist/integrations/react-admin/components/index.js +1 -2
  25. package/dist/integrations/react-admin/components/index.js.map +1 -1
  26. package/dist/integrations/react-admin/dataProvider.js +6 -6
  27. package/dist/scripts/operations/bulkRecordRepair.js +1 -2
  28. package/dist/scripts/operations/bulkRecordRepair.js.map +1 -1
  29. package/dist/server/handler.cjs +7 -4
  30. package/dist/server/handler.cjs.map +3 -3
  31. package/dist/server/operations/find/handler.d.ts.map +1 -1
  32. package/dist/server/operations/find/handler.js +4 -2
  33. package/dist/server/operations/find/handler.js.map +1 -1
  34. package/package.json +1 -1
  35. package/dist/integrations/react-admin/components/ReferenceManyToManyField.d.ts +0 -13
  36. package/dist/integrations/react-admin/components/ReferenceManyToManyField.d.ts.map +0 -1
  37. package/dist/integrations/react-admin/components/ReferenceManyToManyField.js +0 -171
  38. package/dist/integrations/react-admin/components/ReferenceManyToManyField.js.map +0 -1
  39. package/dist/integrations/react-admin/components/ReferenceManyToManyInput.d.ts +0 -41
  40. package/dist/integrations/react-admin/components/ReferenceManyToManyInput.d.ts.map +0 -1
  41. package/dist/integrations/react-admin/components/ReferenceManyToManyInput.js +0 -119
  42. package/dist/integrations/react-admin/components/ReferenceManyToManyInput.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -7,6 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.5.0] - 2026-08-23
11
+
12
+ ### Added
13
+
14
+ - `FindCursor.toArrayAll()` を追加。`nextToken` を内部で自動的に辿り、条件に一致する全件を取得する
15
+ - `toArray()` は引き続き1ページ分(デフォルト・最大50件)のみを返す(後方互換)
16
+ - 大量データに対する安全弁として、既定で最大200ページ(1万件)まで取得したら打ち切り警告を出力
17
+ - 背景: `toArray()` を1回呼ぶだけでは51件目以降が静かに切り捨てられるため、呼び出し側が手動で
18
+ `nextToken` をループする必要があった。この誤用パターンが複数の利用側アプリで繰り返し発生していた
19
+ - `src/scripts/operations/bulkRecordRepair.ts` の `fetchAllRecords()` もこの新APIに置き換え
20
+
10
21
  ## [1.4.2] - 2026-03-14
11
22
 
12
23
  ### Fixed
@@ -195,5 +195,34 @@ export declare class FindCursor<TSchema extends {
195
195
  * ```
196
196
  */
197
197
  getConsumedCapacity(): Promise<AggregatedCost | undefined>;
198
+ /**
199
+ * 全ページを自動的に辿り、条件に一致するすべてのドキュメントを取得
200
+ *
201
+ * `toArray()` は1ページ分(デフォルト50件、最大50件)しか返さず、
202
+ * `nextToken` を辿るかどうかは呼び出し側の責任です。
203
+ * `toArrayAll()` は内部で `nextToken` が無くなるまでページを取得し続け、
204
+ * 全件をまとめて返します。
205
+ *
206
+ * このメソッドの前に呼ばれた `limit()`/`skip()` は無視されます
207
+ * (全件取得とページ制限は意味が競合するため)。`sort()` は各ページに適用されます。
208
+ *
209
+ * Lambda タイムアウト・無限ループに対する安全弁として、既定で最大200ページ
210
+ * (1ページ50件 × 200 = 1万件)まで取得したら打ち切り、コンソールに警告を出力します。
211
+ * 通常のデータ量では到達しないはずですが、到達した場合はそれまでに集めた分を返します
212
+ * (タイムアウトによるエラーより安全なため)。
213
+ *
214
+ * @param options - ページサイズ・最大ページ数を上書きするオプション
215
+ * @returns 条件に一致するすべてのドキュメントの配列
216
+ *
217
+ * @example
218
+ * ```typescript
219
+ * // limit を指定せず、条件に一致する全件を取得
220
+ * const allActive = await products.find({ status: 'active' }).toArrayAll();
221
+ * ```
222
+ */
223
+ toArrayAll(options?: {
224
+ pageSize?: number;
225
+ maxPages?: number;
226
+ }): Promise<TSchema[]>;
198
227
  }
199
228
  //# sourceMappingURL=FindCursor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FindCursor.d.ts","sourceRoot":"","sources":["../../src/client/FindCursor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,UAAU,CACrB,OAAO,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,EAC/F,YAAY,GAAG,OAAO;IAqBpB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,MAAM;IAEd,OAAO,CAAC,SAAS,CAAC;IAClB,OAAO,CAAC,WAAW,CAAC;IACpB,OAAO,CAAC,aAAa,CAAC;IACtB,OAAO,CAAC,cAAc,CAAC;IA1BzB,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,QAAQ,CAAC,CAAyE;IAC1F,OAAO,CAAC,gBAAgB,CAAC,CAAiB;IAE1C;;;;;;;;;;;OAWG;gBAEO,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,EAC/B,OAAO,GAAE,WAAgB,EACjB,SAAS,CAAC,EAAE,MAAM,YAAA,EAClB,WAAW,CAAC,EAAE,YAAY,YAAA,EAC1B,aAAa,CAAC,EAAE,aAAa,YAAA,EAC7B,cAAc,CAAC,EAAE,iBAAiB,CAAC,YAAY,CAAC,YAAA;IAK1D;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,GAAG,IAAI;IAKzD;;;;;;;;;;;;;;;;;OAiBG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B;;;;;;;;;;;;;;;;;OAiBG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKxB;;;;;OAKG;YACW,OAAO;IAwFrB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAOnC;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,WAAW,IAAI,OAAO,CAAC;QAC3B,WAAW,EAAE,OAAO,CAAC;QACrB,eAAe,EAAE,OAAO,CAAC;QACzB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IAYF;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACG,mBAAmB,IAAI,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;CAMjE"}
1
+ {"version":3,"file":"FindCursor.d.ts","sourceRoot":"","sources":["../../src/client/FindCursor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,UAAU,CACrB,OAAO,SAAS;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,EAC/F,YAAY,GAAG,OAAO;IAqBpB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,MAAM;IAEd,OAAO,CAAC,SAAS,CAAC;IAClB,OAAO,CAAC,WAAW,CAAC;IACpB,OAAO,CAAC,aAAa,CAAC;IACtB,OAAO,CAAC,cAAc,CAAC;IA1BzB,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,QAAQ,CAAC,CAAyE;IAC1F,OAAO,CAAC,gBAAgB,CAAC,CAAiB;IAE1C;;;;;;;;;;;OAWG;gBAEO,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,EAC/B,OAAO,GAAE,WAAgB,EACjB,SAAS,CAAC,EAAE,MAAM,YAAA,EAClB,WAAW,CAAC,EAAE,YAAY,YAAA,EAC1B,aAAa,CAAC,EAAE,aAAa,YAAA,EAC7B,cAAc,CAAC,EAAE,iBAAiB,CAAC,YAAY,CAAC,YAAA;IAK1D;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,GAAG,IAAI;IAKzD;;;;;;;;;;;;;;;;;OAiBG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B;;;;;;;;;;;;;;;;;OAiBG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKxB;;;;;OAKG;YACW,OAAO;IAwFrB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAOnC;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,WAAW,IAAI,OAAO,CAAC;QAC3B,WAAW,EAAE,OAAO,CAAC;QACrB,eAAe,EAAE,OAAO,CAAC;QACzB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IAYF;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACG,mBAAmB,IAAI,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAOhE;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACG,UAAU,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAyCzF"}
@@ -282,5 +282,53 @@ export class FindCursor {
282
282
  }
283
283
  return this.consumedCapacity;
284
284
  }
285
+ /**
286
+ * 全ページを自動的に辿り、条件に一致するすべてのドキュメントを取得
287
+ *
288
+ * `toArray()` は1ページ分(デフォルト50件、最大50件)しか返さず、
289
+ * `nextToken` を辿るかどうかは呼び出し側の責任です。
290
+ * `toArrayAll()` は内部で `nextToken` が無くなるまでページを取得し続け、
291
+ * 全件をまとめて返します。
292
+ *
293
+ * このメソッドの前に呼ばれた `limit()`/`skip()` は無視されます
294
+ * (全件取得とページ制限は意味が競合するため)。`sort()` は各ページに適用されます。
295
+ *
296
+ * Lambda タイムアウト・無限ループに対する安全弁として、既定で最大200ページ
297
+ * (1ページ50件 × 200 = 1万件)まで取得したら打ち切り、コンソールに警告を出力します。
298
+ * 通常のデータ量では到達しないはずですが、到達した場合はそれまでに集めた分を返します
299
+ * (タイムアウトによるエラーより安全なため)。
300
+ *
301
+ * @param options - ページサイズ・最大ページ数を上書きするオプション
302
+ * @returns 条件に一致するすべてのドキュメントの配列
303
+ *
304
+ * @example
305
+ * ```typescript
306
+ * // limit を指定せず、条件に一致する全件を取得
307
+ * const allActive = await products.find({ status: 'active' }).toArrayAll();
308
+ * ```
309
+ */
310
+ async toArrayAll(options) {
311
+ const pageSize = options?.pageSize ?? 50;
312
+ const maxPages = options?.maxPages ?? 200;
313
+ const all = [];
314
+ let nextToken = this.options.nextToken;
315
+ let page = 0;
316
+ for (;;) {
317
+ const cursor = new FindCursor(this.endpoint, this.collectionName, this.filter, { sort: this.options.sort, limit: pageSize, nextToken }, this.authToken, this.authOptions, this.clientOptions, this.getAuthHeaders);
318
+ const items = await cursor.toArray();
319
+ all.push(...items);
320
+ const pageInfo = await cursor.getPageInfo();
321
+ nextToken = pageInfo.nextToken;
322
+ page++;
323
+ if (!nextToken) {
324
+ break;
325
+ }
326
+ if (page >= maxPages) {
327
+ console.warn(`FindCursor.toArrayAll: reached maxPages=${maxPages} (${all.length} items) for collection="${this.collectionName}". Stopping pagination.`);
328
+ break;
329
+ }
330
+ }
331
+ return all;
332
+ }
285
333
  }
286
334
  //# sourceMappingURL=FindCursor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FindCursor.js","sourceRoot":"","sources":["../../src/client/FindCursor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FindCursor.js","sourceRoot":"","sources":["../../src/client/FindCursor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { ReactElement } from 'react';
2
+ import type { ReferenceManyToManyFieldProps } from './types.js';
3
+ export declare const ReferenceManyToManyField: (props: ReferenceManyToManyFieldProps) => ReactElement;
4
+ //# sourceMappingURL=ReferenceManyToManyField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReferenceManyToManyField.d.ts","sourceRoot":"","sources":["../../../../../src/integrations/react-admin/components/ReferenceManyToMany/ReferenceManyToManyField.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAI1C,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAahE,eAAO,MAAM,wBAAwB,GAAI,OAAO,6BAA6B,KAAG,YAsE/E,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useMemo } from 'react';
3
+ import { ListContextProvider, useGetList, useGetMany, useRecordContext } from 'react-admin';
4
+ import { BASE_LIST_CONTEXT, DEFAULT_SORT, parseUsing } from './types.js';
5
+ export const ReferenceManyToManyField = (props) => {
6
+ const { reference, through, using, source = 'id', children, sort = DEFAULT_SORT } = props;
7
+ const record = useRecordContext();
8
+ const recordId = record?.[source];
9
+ const [sourceKey, targetKey] = parseUsing(using);
10
+ const { data: junctionRecords, isPending: junctionPending, error: junctionError, } = useGetList(through, {
11
+ filter: { [sourceKey]: recordId },
12
+ pagination: { page: 1, perPage: 1000 },
13
+ sort,
14
+ }, { enabled: !!recordId });
15
+ const { targetIds, junctionMap } = useMemo(() => {
16
+ const ids = [];
17
+ const map = new Map();
18
+ (junctionRecords ?? []).forEach((j) => {
19
+ const targetId = j[targetKey];
20
+ if (targetId) {
21
+ ids.push(targetId);
22
+ map.set(targetId, j);
23
+ }
24
+ });
25
+ return { targetIds: ids, junctionMap: map };
26
+ }, [junctionRecords, targetKey]);
27
+ const { data: targetRecords, isPending: targetPending, error: targetError, } = useGetMany(reference, { ids: targetIds }, { enabled: targetIds.length > 0 });
28
+ const enrichedRecords = useMemo(() => (targetRecords ?? []).map((r) => ({
29
+ ...r,
30
+ _through: junctionMap.get(String(r.id)) ?? null,
31
+ })), [targetRecords, junctionMap]);
32
+ const total = enrichedRecords.length;
33
+ const loading = junctionPending || (targetIds.length > 0 && targetPending);
34
+ const error = junctionError ?? targetError;
35
+ const listContextValue = useMemo(() => ({
36
+ ...BASE_LIST_CONTEXT,
37
+ data: enrichedRecords,
38
+ total,
39
+ perPage: total,
40
+ resource: reference,
41
+ sort,
42
+ }), [enrichedRecords, total, sort, reference]);
43
+ if (loading)
44
+ return _jsx("div", { children: "\u8AAD\u307F\u8FBC\u307F\u4E2D..." });
45
+ if (error)
46
+ return _jsxs("div", { children: ["\u30A8\u30E9\u30FC: ", error.message] });
47
+ return _jsx(ListContextProvider, { value: listContextValue, children: children });
48
+ };
49
+ //# sourceMappingURL=ReferenceManyToManyField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReferenceManyToManyField.js","sourceRoot":"","sources":["../../../../../src/integrations/react-admin/components/ReferenceManyToMany/ReferenceManyToManyField.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { ReactElement } from 'react';
2
+ import type { ReferenceManyToManyInputProps } from './types.js';
3
+ export declare const ReferenceManyToManyInput: (props: ReferenceManyToManyInputProps) => ReactElement;
4
+ //# sourceMappingURL=ReferenceManyToManyInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReferenceManyToManyInput.d.ts","sourceRoot":"","sources":["../../../../../src/integrations/react-admin/components/ReferenceManyToMany/ReferenceManyToManyInput.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAS1C,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAEhE,eAAO,MAAM,wBAAwB,GAAI,OAAO,6BAA6B,KAAG,YAwD/E,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useQueryClient } from '@tanstack/react-query';
3
+ import { cloneElement, useCallback, useMemo } from 'react';
4
+ import { ReferenceArrayInput, useGetList, useRecordContext, useRegisterMutationMiddleware, } from 'react-admin';
5
+ import { DEFAULT_SORT, parseUsing } from './types.js';
6
+ export const ReferenceManyToManyInput = (props) => {
7
+ const { reference, through, using, source = 'id', children, label, filter } = props;
8
+ const record = useRecordContext();
9
+ const recordId = record?.[source];
10
+ const [sourceKey, targetKey] = parseUsing(using);
11
+ // crudRouter が __manyToMany:{through}:{sourceKey}:{targetKey} 形式を解釈して中間テーブルを更新する
12
+ const fieldName = `__manyToMany:${through}:${sourceKey}:${targetKey}`;
13
+ const { data: junctionRecords, isPending, error, } = useGetList(through, {
14
+ filter: { [sourceKey]: recordId },
15
+ pagination: { page: 1, perPage: 1000 },
16
+ sort: DEFAULT_SORT,
17
+ }, { enabled: !!recordId });
18
+ const initialIds = useMemo(() => (junctionRecords ?? []).map((r) => r[targetKey]).filter(Boolean), [junctionRecords, targetKey]);
19
+ // 保存後に中間テーブルのキャッシュだけをピンポイント invalidate する。
20
+ // onSuccess で渡すとデフォルトの redirect/notify が失われるため、middleware で割り込む。
21
+ const queryClient = useQueryClient();
22
+ const middleware = useCallback(async (resource, params, next) => {
23
+ const result = await next(resource, params);
24
+ queryClient.invalidateQueries({ queryKey: [through] });
25
+ return result;
26
+ }, [through, queryClient]);
27
+ useRegisterMutationMiddleware(middleware);
28
+ if (isPending && !!recordId)
29
+ return _jsx("div", { children: "\u8AAD\u307F\u8FBC\u307F\u4E2D..." });
30
+ if (error)
31
+ return _jsxs("div", { children: ["\u30A8\u30E9\u30FC: ", error.message] });
32
+ return (_jsx(ReferenceArrayInput, { source: fieldName, reference: reference, label: label, filter: filter, children: cloneElement(children, { defaultValue: initialIds }) }));
33
+ };
34
+ //# sourceMappingURL=ReferenceManyToManyInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReferenceManyToManyInput.js","sourceRoot":"","sources":["../../../../../src/integrations/react-admin/components/ReferenceManyToMany/ReferenceManyToManyInput.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAE3D,OAAO,EACL,mBAAmB,EACnB,UAAU,EACV,gBAAgB,EAChB,6BAA6B,GAC9B,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGtD,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,KAAoC,EAAgB,EAAE;IAC7F,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAEpF,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,MAAM,CAAuB,CAAC;IAExD,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAEjD,iFAAiF;IACjF,MAAM,SAAS,GAAG,gBAAgB,OAAO,IAAI,SAAS,IAAI,SAAS,EAAE,CAAC;IAEtE,MAAM,EACJ,IAAI,EAAE,eAAe,EACrB,SAAS,EACT,KAAK,GACN,GAAG,UAAU,CACZ,OAAO,EACP;QACE,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE;QACjC,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;QACtC,IAAI,EAAE,YAAY;KACnB,EACD,EAAE,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CACxB,CAAC;IAEF,MAAM,UAAU,GAAG,OAAO,CACxB,GAAG,EAAE,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAChF,CAAC,eAAe,EAAE,SAAS,CAAC,CAC7B,CAAC;IAEF,2CAA2C;IAC3C,iEAAiE;IACjE,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,UAAU,GAAG,WAAW,CAC5B,KAAK,EACH,QAAgB,EAChB,MAAe,EACf,IAA6D,EAC7D,EAAE;QACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5C,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACvD,OAAO,MAAM,CAAC;IAChB,CAAC,EACD,CAAC,OAAO,EAAE,WAAW,CAAC,CACvB,CAAC;IACF,6BAA6B,CAAC,UAAU,CAAC,CAAC;IAE1C,IAAI,SAAS,IAAI,CAAC,CAAC,QAAQ;QAAE,OAAO,8DAAmB,CAAC;IACxD,IAAI,KAAK;QAAE,OAAO,kDAAY,KAAe,CAAC,OAAO,IAAO,CAAC;IAE7D,OAAO,CACL,KAAC,mBAAmB,IAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,YAEvF,YAAY,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,UAAU,EAAS,CAAC,GACxC,CACvB,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { ReferenceManyToManyField } from './ReferenceManyToManyField.js';
2
+ export { ReferenceManyToManyInput } from './ReferenceManyToManyInput.js';
3
+ export type { ReferenceManyToManyFieldProps, ReferenceManyToManyInputProps } from './types.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/integrations/react-admin/components/ReferenceManyToMany/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,YAAY,EAAE,6BAA6B,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { ReferenceManyToManyField } from './ReferenceManyToManyField.js';
2
+ export { ReferenceManyToManyInput } from './ReferenceManyToManyInput.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/integrations/react-admin/components/ReferenceManyToMany/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,53 @@
1
+ import type { ReactElement } from 'react';
2
+ export declare const DEFAULT_SORT: {
3
+ field: string;
4
+ order: "ASC";
5
+ };
6
+ export declare function parseUsing(using: string): [string, string];
7
+ export declare const noop: () => void;
8
+ export declare const BASE_LIST_CONTEXT: {
9
+ isLoading: false;
10
+ isFetching: false;
11
+ isPending: false;
12
+ error: null;
13
+ page: number;
14
+ displayedFilters: {};
15
+ filterValues: {};
16
+ hasNextPage: boolean;
17
+ hasPreviousPage: boolean;
18
+ selectedIds: string[];
19
+ setSort: () => void;
20
+ setPage: () => void;
21
+ setPerPage: () => void;
22
+ setFilters: () => void;
23
+ showFilter: () => void;
24
+ hideFilter: () => void;
25
+ refetch: () => void;
26
+ onSelect: () => void;
27
+ onSelectAll: () => void;
28
+ onToggleItem: () => void;
29
+ onUnselectItems: () => void;
30
+ };
31
+ export interface ReferenceManyToManyFieldProps {
32
+ reference: string;
33
+ through: string;
34
+ using: string;
35
+ source?: string;
36
+ children: ReactElement;
37
+ label?: string;
38
+ sort?: {
39
+ field: string;
40
+ order: 'ASC' | 'DESC';
41
+ };
42
+ perPage?: number;
43
+ }
44
+ export interface ReferenceManyToManyInputProps {
45
+ reference: string;
46
+ through: string;
47
+ using: string;
48
+ source?: string;
49
+ children: ReactElement;
50
+ label?: string;
51
+ filter?: Record<string, unknown>;
52
+ }
53
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/integrations/react-admin/components/ReferenceManyToMany/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,eAAO,MAAM,YAAY;;;CAAyC,CAAC;AAEnE,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAM1D;AAED,eAAO,MAAM,IAAI,YAAW,CAAC;AAE7B,eAAO,MAAM,iBAAiB;;;;;;;;;;iBAUT,MAAM,EAAE;;;;;;;;;;;;CAY5B,CAAC;AAEF,MAAM,WAAW,6BAA6B;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAA;KAAE,CAAC;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,6BAA6B;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC"}
@@ -0,0 +1,33 @@
1
+ export const DEFAULT_SORT = { field: 'id', order: 'ASC' };
2
+ export function parseUsing(using) {
3
+ const keys = using.split(',').map((k) => k.trim());
4
+ if (keys.length !== 2 || !keys[0] || !keys[1]) {
5
+ throw new Error(`Invalid using format: "${using}". Expected "sourceKey,targetKey"`);
6
+ }
7
+ return keys;
8
+ }
9
+ export const noop = () => { };
10
+ export const BASE_LIST_CONTEXT = {
11
+ isLoading: false,
12
+ isFetching: false,
13
+ isPending: false,
14
+ error: null,
15
+ page: 1,
16
+ displayedFilters: {},
17
+ filterValues: {},
18
+ hasNextPage: false,
19
+ hasPreviousPage: false,
20
+ selectedIds: [],
21
+ setSort: noop,
22
+ setPage: noop,
23
+ setPerPage: noop,
24
+ setFilters: noop,
25
+ showFilter: noop,
26
+ hideFilter: noop,
27
+ refetch: noop,
28
+ onSelect: noop,
29
+ onSelectAll: noop,
30
+ onToggleItem: noop,
31
+ onUnselectItems: noop,
32
+ };
33
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/integrations/react-admin/components/ReferenceManyToMany/types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAc,EAAE,CAAC;AAEnE,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACnD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,mCAAmC,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,IAAwB,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;AAE7B,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,SAAS,EAAE,KAAc;IACzB,UAAU,EAAE,KAAc;IAC1B,SAAS,EAAE,KAAc;IACzB,KAAK,EAAE,IAAI;IACX,IAAI,EAAE,CAAC;IACP,gBAAgB,EAAE,EAAE;IACpB,YAAY,EAAE,EAAE;IAChB,WAAW,EAAE,KAAK;IAClB,eAAe,EAAE,KAAK;IACtB,WAAW,EAAE,EAAc;IAC3B,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,IAAI;IAChB,UAAU,EAAE,IAAI;IAChB,UAAU,EAAE,IAAI;IAChB,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,IAAI;IACd,WAAW,EAAE,IAAI;IACjB,YAAY,EAAE,IAAI;IAClB,eAAe,EAAE,IAAI;CACtB,CAAC"}
@@ -1,6 +1,5 @@
1
1
  /**
2
2
  * React-Admin 多対多関係コンポーネント
3
3
  */
4
- export { ReferenceManyToManyField } from './ReferenceManyToManyField.js';
5
- export { ReferenceManyToManyInput } from './ReferenceManyToManyInput.js';
4
+ export { ReferenceManyToManyField, ReferenceManyToManyInput } from './ReferenceManyToMany/index.js';
6
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/integrations/react-admin/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/integrations/react-admin/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC"}
@@ -1,6 +1,5 @@
1
1
  /**
2
2
  * React-Admin 多対多関係コンポーネント
3
3
  */
4
- export { ReferenceManyToManyField } from './ReferenceManyToManyField.js';
5
- export { ReferenceManyToManyInput } from './ReferenceManyToManyInput.js';
4
+ export { ReferenceManyToManyField, ReferenceManyToManyInput } from './ReferenceManyToMany/index.js';
6
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/integrations/react-admin/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/integrations/react-admin/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC"}
@@ -312,9 +312,9 @@ export function createDataProvider(options) {
312
312
  const cleanData = { ...params.data };
313
313
  const manyToManyFields = [];
314
314
  for (const [key, value] of Object.entries(cleanData)) {
315
- // __manyToMany_{through}_{sourceKey}_{targetKey} 形式のフィールドを検出
316
- if (key.startsWith('__manyToMany_')) {
317
- const parts = key.replace('__manyToMany_', '').split('_');
315
+ // __manyToMany:{through}:{sourceKey}:{targetKey} 形式のフィールドを検出
316
+ if (key.startsWith('__manyToMany:')) {
317
+ const parts = key.replace('__manyToMany:', '').split(':');
318
318
  if (parts.length === 3) {
319
319
  const [through, sourceKey, targetKey] = parts;
320
320
  manyToManyFields.push({
@@ -379,9 +379,9 @@ export function createDataProvider(options) {
379
379
  const cleanData = { ...params.data };
380
380
  const manyToManyFields = [];
381
381
  for (const [key, value] of Object.entries(cleanData)) {
382
- // __manyToMany_{through}_{sourceKey}_{targetKey} 形式のフィールドを検出
383
- if (key.startsWith('__manyToMany_')) {
384
- const parts = key.replace('__manyToMany_', '').split('_');
382
+ // __manyToMany:{through}:{sourceKey}:{targetKey} 形式のフィールドを検出
383
+ if (key.startsWith('__manyToMany:')) {
384
+ const parts = key.replace('__manyToMany:', '').split(':');
385
385
  if (parts.length === 3) {
386
386
  const [through, sourceKey, targetKey] = parts;
387
387
  manyToManyFields.push({
@@ -32,8 +32,7 @@ export async function repairAllRecords(collection, dryRun) {
32
32
  * @returns 全レコードの配列
33
33
  */
34
34
  async function fetchAllRecords(collection) {
35
- const cursor = collection.find({});
36
- return await cursor.toArray();
35
+ return await collection.find({}).toArrayAll();
37
36
  }
38
37
  /**
39
38
  * 単一レコードを処理
@@ -1 +1 @@
1
- {"version":3,"file":"bulkRecordRepair.js","sourceRoot":"","sources":["../../../src/scripts/operations/bulkRecordRepair.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,oBAAoB,EACpB,oBAAoB,EACpB,2BAA2B,EAC3B,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AAEjC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,UAA4E,EAC5E,MAAe;IAEf,MAAM,KAAK,GAAgB;QACzB,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,CAAC;QACd,QAAQ,EAAE,CAAC;QACX,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,EAAE;KACX,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEtD,WAAW;IACX,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,SAAS,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC;IAE/C,WAAW;IACX,KAAK,MAAM,UAAU,IAAI,OAAO,EAAE,CAAC;QACjC,MAAM,aAAa,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAC7D,CAAC;IAED,UAAU;IACV,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,eAAe,CAC5B,UAA4E;IAE5E,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnC,OAAO,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;AAChC,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,aAAa,CAC1B,UAAkD,EAClD,KAAkB,EAClB,MAAe,EACf,UAA4E;IAE5E,KAAK,CAAC,OAAO,EAAE,CAAC;IAChB,MAAM,QAAQ,GAAG,UAAU,CAAC,EAAE,CAAC;IAE/B,IAAI,CAAC;QACH,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,MAAM,oBAAoB,EAAE,CAAC;QAEnF,IAAI,WAAW,EAAE,CAAC;YAChB,KAAK,CAAC,WAAW,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CACT,MAAM,KAAK,CAAC,OAAO,YAAY,QAAQ,aAAa,cAAc,WAAW,YAAY,EAAE,CAC5F,CAAC;YAEF,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,2BAA2B,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBACxD,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBAE5B,kBAAkB;gBAClB,MAAM,gBAAgB,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB;;;;;WAKG;QACH,KAAK,CAAC,MAAM,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QACzD,OAAO,CAAC,KAAK,CAAC,eAAe,YAAY,EAAE,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"bulkRecordRepair.js","sourceRoot":"","sources":["../../../src/scripts/operations/bulkRecordRepair.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,oBAAoB,EACpB,oBAAoB,EACpB,2BAA2B,EAC3B,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AAEjC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,UAA4E,EAC5E,MAAe;IAEf,MAAM,KAAK,GAAgB;QACzB,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,CAAC;QACd,QAAQ,EAAE,CAAC;QACX,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,EAAE;KACX,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEtD,WAAW;IACX,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,SAAS,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC;IAE/C,WAAW;IACX,KAAK,MAAM,UAAU,IAAI,OAAO,EAAE,CAAC;QACjC,MAAM,aAAa,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAC7D,CAAC;IAED,UAAU;IACV,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,eAAe,CAC5B,UAA4E;IAE5E,OAAO,MAAM,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;AAChD,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,aAAa,CAC1B,UAAkD,EAClD,KAAkB,EAClB,MAAe,EACf,UAA4E;IAE5E,KAAK,CAAC,OAAO,EAAE,CAAC;IAChB,MAAM,QAAQ,GAAG,UAAU,CAAC,EAAE,CAAC;IAE/B,IAAI,CAAC;QACH,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,MAAM,oBAAoB,EAAE,CAAC;QAEnF,IAAI,WAAW,EAAE,CAAC;YAChB,KAAK,CAAC,WAAW,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CACT,MAAM,KAAK,CAAC,OAAO,YAAY,QAAQ,aAAa,cAAc,WAAW,YAAY,EAAE,CAC5F,CAAC;YAEF,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,2BAA2B,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBACxD,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBAE5B,kBAAkB;gBAClB,MAAM,gBAAgB,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB;;;;;WAKG;QACH,KAAK,CAAC,MAAM,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QACzD,OAAO,CAAC,KAAK,CAAC,eAAe,YAAY,EAAE,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC"}
@@ -1,5 +1,5 @@
1
- // @exabugs/dynamodb-client v1.4.16
2
- // Built: 2026-04-25T01:19:25.013Z
1
+ // @exabugs/dynamodb-client v1.5.0
2
+ // Built: 2026-08-22T23:11:31.236Z
3
3
  "use strict";
4
4
  var __create = Object.create;
5
5
  var __defProp = Object.defineProperty;
@@ -31298,7 +31298,10 @@ async function handleFind(resource, params, requestId) {
31298
31298
  pagination: normalizedParams.pagination,
31299
31299
  filterCount: normalizedParams.parsedFilters.length
31300
31300
  });
31301
- if (normalizedParams.sort.field === "id") {
31301
+ const hasIdInFilter = normalizedParams.parsedFilters.some(
31302
+ (f4) => f4.parsed.field === "id" && f4.parsed.operator === "$in"
31303
+ );
31304
+ if (normalizedParams.sort.field === "id" || hasIdInFilter) {
31302
31305
  return executeIdQuery(resource, normalizedParams, requestId);
31303
31306
  }
31304
31307
  return executeShadowQuery(resource, normalizedParams, requestId);
@@ -34556,7 +34559,7 @@ async function handler(event) {
34556
34559
  return createCorsResponse(HTTP_STATUS.OK);
34557
34560
  }
34558
34561
  if (event.requestContext.http.method === "GET" && event.requestContext.http.path === "/version") {
34559
- const version = "1.4.16";
34562
+ const version = "1.5.0";
34560
34563
  return createSuccessResponse({ version, timestamp: (/* @__PURE__ */ new Date()).toISOString() }, requestId);
34561
34564
  }
34562
34565
  if (event.requestContext.http.method !== "POST") {