@forge/migrations

2.0.232.1.0-next.0
~

Modified (10 files)

Index: package/out/migration/index.js
===================================================================
--- package/out/migration/index.js
+++ package/out/migration/index.js
@@ -9,8 +9,10 @@
         messageProcessed: (transferId, messageId) => adapter.messageProcessed(transferId, messageId),
         messageFailed: (transferId, messageId) => adapter.messageFailed(transferId, messageId),
         addLog: (transferId, logMessage) => adapter.addLog(transferId, logMessage),
         getAppDataList: (transferId) => adapter.getAppDataList(transferId),
+        getAppDataPage: (transferId, options) => adapter.getAppDataPage(transferId, options),
+        getAppDataIterator: (transferId, options) => adapter.getAppDataIterator(transferId, options),
         getAppDataPayload: (s3Key) => adapter.getAppDataPayload(s3Key),
         getMappings: (transferId, namespace) => new query_api_1.DefaultQueryBuilder(adapter, { transferId: transferId, namespace: namespace }),
         getContainers: (transferId, containerType) => new query_api_1.DefaultQueryBuilder(adapter, { transferId: transferId, containerType: containerType })
     };
@@ -21,8 +23,10 @@
     messageProcessed: (transferId, messageId) => (0, exports.getMigrationInstance)(new migration_1.Migration()).messageProcessed(transferId, messageId),
     messageFailed: (transferId, messageId) => (0, exports.getMigrationInstance)(new migration_1.Migration()).messageFailed(transferId, messageId),
     addLog: (transferId, logMessage) => (0, exports.getMigrationInstance)(new migration_1.Migration()).addLog(transferId, logMessage),
     getAppDataList: (transferId) => (0, exports.getMigrationInstance)(new migration_1.Migration()).getAppDataList(transferId),
+    getAppDataPage: (transferId, options) => (0, exports.getMigrationInstance)(new migration_1.Migration()).getAppDataPage(transferId, options),
+    getAppDataIterator: (transferId, options) => (0, exports.getMigrationInstance)(new migration_1.Migration()).getAppDataIterator(transferId, options),
     getAppDataPayload: (s3Key) => (0, exports.getMigrationInstance)(new migration_1.Migration()).getAppDataPayload(s3Key),
     getMappings: (transferId, namespace) => (0, exports.getMigrationInstance)(new migration_1.Migration()).getMappings(transferId, namespace),
     getContainers: (transferId, containerType) => (0, exports.getMigrationInstance)(new migration_1.Migration()).getContainers(transferId, containerType)
 };
Index: package/out/migration/migration.js
===================================================================
--- package/out/migration/migration.js
+++ package/out/migration/migration.js
@@ -11,8 +11,31 @@
     getAppDataList = async (transferId) => {
         const result = await (0, utils_1.invokeGETApi)(`${this.basePath}/data/${transferId}/all`);
         return (0, utils_1.getResponseBody)(result);
     };
+    getAppDataPage = async (transferId, options = {}) => {
+        const params = new URLSearchParams();
+        if (options.pageSize !== undefined) {
+            params.append('pageSize', String(options.pageSize));
+        }
+        if (options.lastEvaluatedKey !== undefined) {
+            params.append('lastEvaluatedKey', options.lastEvaluatedKey);
+        }
+        const queryString = params.toString();
+        const url = `${this.basePath}/data/${transferId}/page${queryString ? `?${queryString}` : ''}`;
+        const result = await (0, utils_1.invokeGETApi)(url);
+        return (0, utils_1.getResponseBody)(result);
+    };
+    async *getAppDataIterator(transferId, { pageSize } = {}) {
+        let lastEvaluatedKey;
+        do {
+            const page = await this.getAppDataPage(transferId, { pageSize, lastEvaluatedKey });
+            for (const item of page.items) {
+                yield item;
+            }
+            lastEvaluatedKey = page.lastEvaluatedKey ?? undefined;
+        } while (lastEvaluatedKey);
+    }
     getAppDataPayload = async (key) => {
         return (0, utils_1.invokeGETApi)(`${this.basePath}/data/${key}/payload`);
     };
     messageProcessed = async (transferId, messageId) => {
Index: package/package.json
===================================================================
--- package/package.json
+++ package/package.json
@@ -1,7 +1,7 @@
 {
   "name": "@forge/migrations",
-  "version": "2.0.23",
+  "version": "2.1.0-next.0",
   "description": "App migration methods for Forge app",
   "main": "out/index.js",
   "scripts": {
     "build": "yarn run clean && yarn run compile",
Index: package/out/migration/index.d.ts.map
===================================================================
--- package/out/migration/index.d.ts.map
+++ package/out/migration/index.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migration/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,eAAO,MAAM,oBAAoB,YAAa,SAAS;iCAEtB,MAAM,aAAa,MAAM,QAAQ,MAAM,MAAM,CAAC;mCAE5C,MAAM,aAAa,MAAM;gCAC5B,MAAM,aAAa,MAAM;yBAChC,MAAM,cAAc,MAAM;iCAClB,MAAM;+BACR,MAAM;8BACP,MAAM,aAAa,MAAM;gCAEvB,MAAM,iBAAiB,aAAa;CAGnE,CAAC;AAEF,eAAO,MAAM,SAAS;iCACS,MAAM,aAAa,MAAM,QAAQ,MAAM,MAAM,CAAC;mCAE5C,MAAM,aAAa,MAAM;gCAE5B,MAAM,aAAa,MAAM;yBAEhC,MAAM,cAAc,MAAM;iCAElB,MAAM;+BACR,MAAM;8BACP,MAAM,aAAa,MAAM;gCAEvB,MAAM,iBAAiB,aAAa;CAEjE,CAAC;AAEF,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,UAAU,CAAC"}
\ No newline at end of file
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migration/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAChG,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,eAAO,MAAM,oBAAoB,YAAa,SAAS;iCAEtB,MAAM,aAAa,MAAM,QAAQ,MAAM,MAAM,CAAC;mCAE5C,MAAM,aAAa,MAAM;gCAC5B,MAAM,aAAa,MAAM;yBAChC,MAAM,cAAc,MAAM;iCAClB,MAAM;iCACN,MAAM,YAAY,kBAAkB;qCAChC,MAAM,YAAY,sBAAsB;+BAE9C,MAAM;8BACP,MAAM,aAAa,MAAM;gCAEvB,MAAM,iBAAiB,aAAa;CAGnE,CAAC;AAEF,eAAO,MAAM,SAAS;iCACS,MAAM,aAAa,MAAM,QAAQ,MAAM,MAAM,CAAC;mCAE5C,MAAM,aAAa,MAAM;gCAE5B,MAAM,aAAa,MAAM;yBAEhC,MAAM,cAAc,MAAM;iCAElB,MAAM;iCACN,MAAM,YAAY,kBAAkB;qCAEhC,MAAM,YAAY,sBAAsB;+BAE9C,MAAM;8BACP,MAAM,aAAa,MAAM;gCAEvB,MAAM,iBAAiB,aAAa;CAEjE,CAAC;AAEF,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,UAAU,CAAC"}
\ No newline at end of file
Index: package/out/migration/migration-adaptor.d.ts.map
===================================================================
--- package/out/migration/migration-adaptor.d.ts.map
+++ package/out/migration/migration-adaptor.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"migration-adaptor.d.ts","sourceRoot":"","sources":["../../src/migration/migration-adaptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,WAAW,gBAAgB;IAC/B,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACrG,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACjE,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACvD,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,oBAAY,mBAAmB,GAAG,OAAO,EAAE,CAAC;AAE5C,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B;AAED,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,2BAA2B;IAC1C,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1B,IAAI,EAAE,sBAAsB,CAAC;CAC9B;AAED,oBAAY,aAAa,GAAG,iBAAiB,GAAG,aAAa,GAAG,MAAM,CAAC;AAEvE,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAAC;IACrC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC;IACnC,OAAO,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IAChC,MAAM,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACvC"}
\ No newline at end of file
+{"version":3,"file":"migration-adaptor.d.ts","sourceRoot":"","sources":["../../src/migration/migration-adaptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,WAAW,gBAAgB;IAC/B,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACrG,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACjE,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACpG,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;IAC9G,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACvD,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,oBAAY,mBAAmB,GAAG,OAAO,EAAE,CAAC;AAE5C,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B;AAED,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,2BAA2B;IAC1C,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1B,IAAI,EAAE,sBAAsB,CAAC;CAC9B;AAED,oBAAY,aAAa,GAAG,iBAAiB,GAAG,aAAa,GAAG,MAAM,CAAC;AAEvE,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAAC;IACrC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC;IACnC,OAAO,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IAChC,MAAM,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACvC"}
\ No newline at end of file
Index: package/out/migration/migration.d.ts.map
===================================================================
--- package/out/migration/migration.d.ts.map
+++ package/out/migration/migration.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../../src/migration/migration.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,WAAW,EAIZ,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAIzC,qBAAa,SAAU,YAAW,gBAAgB;IAChD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IAEtD,cAAc,eAAsB,MAAM,aAAa,MAAM,QAAQ,MAAM,MAAM,CAAC,KAAG,QAAQ,eAAe,CAAC,CAG3G;IAEF,cAAc,eAAsB,MAAM,KAAG,QAAQ,mBAAmB,CAAC,CAGvE;IAEF,iBAAiB,QAAe,MAAM,KAAG,QAAQ,WAAW,CAAC,CAE3D;IAEF,gBAAgB,eAAsB,MAAM,aAAa,MAAM,KAAG,QAAQ,IAAI,CAAC,CAO7E;IAEF,aAAa,eAAsB,MAAM,aAAa,MAAM,KAAG,QAAQ,IAAI,CAAC,CAO1E;IAEF,MAAM,eAAsB,MAAM,cAAc,MAAM,KAAG,QAAQ,IAAI,CAAC,CAMpE;IAEF,WAAW,eACG,MAAM,cACN,MAAM,eACL,MAAM,aACR,MAAM,KAChB,QAAQ,WAAW,CAAC,CAuBrB;IAEF,aAAa,eACC,MAAM,kBACF,MAAM,eACT,MAAM,aACR,MAAM,KAChB,QAAQ,WAAW,CAAC,CAsBrB;IAEF,IAAI,YAAmB,WAAW,aAAa,MAAM,KAAG,QAAQ,WAAW,CAAC,CAI1E;CACH"}
\ No newline at end of file
+{"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../../src/migration/migration.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,wBAAwB,EACxB,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,WAAW,EAIZ,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAIzC,qBAAa,SAAU,YAAW,gBAAgB;IAChD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IAEtD,cAAc,eAAsB,MAAM,aAAa,MAAM,QAAQ,MAAM,MAAM,CAAC,KAAG,QAAQ,eAAe,CAAC,CAG3G;IAEF,cAAc,eAAsB,MAAM,KAAG,QAAQ,mBAAmB,CAAC,CAGvE;IAEF,cAAc,eAAsB,MAAM,YAAW,kBAAkB,KAAQ,QAAQ,wBAAwB,CAAC,CAY9G;IAEK,kBAAkB,CACvB,UAAU,EAAE,MAAM,EAClB,EAAE,QAAQ,EAAE,GAAE,sBAA2B,GACxC,qBAAqB,CAAC,YAAY,CAAC;IAWtC,iBAAiB,QAAe,MAAM,KAAG,QAAQ,WAAW,CAAC,CAE3D;IAEF,gBAAgB,eAAsB,MAAM,aAAa,MAAM,KAAG,QAAQ,IAAI,CAAC,CAO7E;IAEF,aAAa,eAAsB,MAAM,aAAa,MAAM,KAAG,QAAQ,IAAI,CAAC,CAO1E;IAEF,MAAM,eAAsB,MAAM,cAAc,MAAM,KAAG,QAAQ,IAAI,CAAC,CAMpE;IAEF,WAAW,eACG,MAAM,cACN,MAAM,eACL,MAAM,aACR,MAAM,KAChB,QAAQ,WAAW,CAAC,CAuBrB;IAEF,aAAa,eACC,MAAM,kBACF,MAAM,eACT,MAAM,aACR,MAAM,KAChB,QAAQ,WAAW,CAAC,CAsBrB;IAEF,IAAI,YAAmB,WAAW,aAAa,MAAM,KAAG,QAAQ,WAAW,CAAC,CAI1E;CACH"}
\ No newline at end of file
Index: package/CHANGELOG.md
===================================================================
--- package/CHANGELOG.md
+++ package/CHANGELOG.md
@@ -1,6 +1,12 @@
 # @forge/migrations
 
+## 2.1.0-next.0
+
+### Minor Changes
+
+- d37ea76: Added `migration.getAppDataPage` and `migration.getAppDataIterator` for iterating uploaded app data files via the new paginated `/data/{transferId}/page` endpoint. Prefer these over the now-deprecated unbounded `getAppDataList`.
+
 ## 2.0.23
 
 ### Patch Changes
Index: package/out/migration/index.d.ts
===================================================================
--- package/out/migration/index.d.ts
+++ package/out/migration/index.d.ts
@@ -1,13 +1,15 @@
 import { Migration } from './migration';
-import { ContainerType } from './migration-adaptor';
+import { AppDataIteratorOptions, AppDataPageOptions, ContainerType } from './migration-adaptor';
 import { DefaultQueryBuilder } from './query-api';
 export declare const getMigrationInstance: (adapter: Migration) => {
     getMappingById: (transferId: string, namespace: string, keys: Array<string>) => Promise<import("./migration-adaptor").MappingResponse>;
     messageProcessed: (transferId: string, messageId: string) => Promise<void>;
     messageFailed: (transferId: string, messageId: string) => Promise<void>;
     addLog: (transferId: string, logMessage: string) => Promise<void>;
     getAppDataList: (transferId: string) => Promise<import("./migration-adaptor").AppDataListResponse>;
+    getAppDataPage: (transferId: string, options?: AppDataPageOptions) => Promise<import("./migration-adaptor").FileMetadataPageResponse>;
+    getAppDataIterator: (transferId: string, options?: AppDataIteratorOptions) => AsyncIterableIterator<import("./migration-adaptor").FileMetadata>;
     getAppDataPayload: (s3Key: string) => Promise<import("@forge/api").Response>;
     getMappings: (transferId: string, namespace: string) => DefaultQueryBuilder;
     getContainers: (transferId: string, containerType: ContainerType) => DefaultQueryBuilder;
 };
@@ -16,8 +18,10 @@
     messageProcessed: (transferId: string, messageId: string) => Promise<void>;
     messageFailed: (transferId: string, messageId: string) => Promise<void>;
     addLog: (transferId: string, logMessage: string) => Promise<void>;
     getAppDataList: (transferId: string) => Promise<import("./migration-adaptor").AppDataListResponse>;
+    getAppDataPage: (transferId: string, options?: AppDataPageOptions) => Promise<import("./migration-adaptor").FileMetadataPageResponse>;
+    getAppDataIterator: (transferId: string, options?: AppDataIteratorOptions) => AsyncIterableIterator<import("./migration-adaptor").FileMetadata>;
     getAppDataPayload: (s3Key: string) => Promise<import("@forge/api").Response>;
     getMappings: (transferId: string, namespace: string) => DefaultQueryBuilder;
     getContainers: (transferId: string, containerType: ContainerType) => DefaultQueryBuilder;
 };
Index: package/out/migration/migration-adaptor.d.ts
===================================================================
--- package/out/migration/migration-adaptor.d.ts
+++ package/out/migration/migration-adaptor.d.ts
@@ -1,13 +1,31 @@
 import { APIResponse } from '@forge/api';
 export interface MigrationAdapter {
     getMappingById(transferId: string, namespace: string, keys: Array<string>): Promise<MappingResponse>;
     getAppDataList(transferId: string): Promise<AppDataListResponse>;
+    getAppDataPage(transferId: string, options?: AppDataPageOptions): Promise<FileMetadataPageResponse>;
+    getAppDataIterator(transferId: string, options?: AppDataIteratorOptions): AsyncIterableIterator<FileMetadata>;
     getAppDataPayload(s3Key: string): Promise<APIResponse>;
     messageProcessed(transferId: string, messageId: string): Promise<void>;
     messageFailed(transferId: string, messageId: string): Promise<void>;
     addLog(transferId: string, logMessage: string): Promise<void>;
 }
+export interface FileMetadata {
+    key: string;
+    label?: string;
+    fileSize?: number;
+}
+export interface FileMetadataPageResponse {
+    items: FileMetadata[];
+    lastEvaluatedKey: string | null;
+}
+export interface AppDataPageOptions {
+    pageSize?: number;
+    lastEvaluatedKey?: string;
+}
+export interface AppDataIteratorOptions {
+    pageSize?: number;
+}
 export interface MappingResponse {
     result: Map<string, string>;
 }
 export interface AppData {
Index: package/out/migration/migration.d.ts
===================================================================
--- package/out/migration/migration.d.ts
+++ package/out/migration/migration.d.ts
@@ -1,10 +1,12 @@
-import { AppDataListResponse, MappingResponse, MigrationAdapter, ListOptions, ListResults } from './migration-adaptor';
+import { AppDataIteratorOptions, AppDataListResponse, AppDataPageOptions, FileMetadata, FileMetadataPageResponse, MappingResponse, MigrationAdapter, ListOptions, ListResults } from './migration-adaptor';
 import { APIResponse } from '@forge/api';
 export declare class Migration implements MigrationAdapter {
     private readonly basePath;
     getMappingById: (transferId: string, namespace: string, keys: Array<string>) => Promise<MappingResponse>;
     getAppDataList: (transferId: string) => Promise<AppDataListResponse>;
+    getAppDataPage: (transferId: string, options?: AppDataPageOptions) => Promise<FileMetadataPageResponse>;
+    getAppDataIterator(transferId: string, { pageSize }?: AppDataIteratorOptions): AsyncIterableIterator<FileMetadata>;
     getAppDataPayload: (key: string) => Promise<APIResponse>;
     messageProcessed: (transferId: string, messageId: string) => Promise<void>;
     messageFailed: (transferId: string, messageId: string) => Promise<void>;
     addLog: (transferId: string, logMessage: string) => Promise<void>;