@webiny/api-headless-cms-import-export 5.43.3 → 6.0.0-alpha.1

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 (30) hide show
  1. package/crud/useCases/abortImportFromUrl/AbortImportFromUrlUseCase.d.ts +4 -4
  2. package/crud/useCases/abortImportFromUrl/AbortImportFromUrlUseCase.js.map +1 -1
  3. package/graphql/index.js.map +1 -1
  4. package/graphql/models.d.ts +1 -1
  5. package/graphql/models.js.map +1 -1
  6. package/graphql/resolvers.d.ts +1 -1
  7. package/graphql/resolvers.js.map +1 -1
  8. package/graphql/security.d.ts +1 -1
  9. package/graphql/security.js.map +1 -1
  10. package/graphql/typeDefs.d.ts +1 -1
  11. package/graphql/typeDefs.js.map +1 -1
  12. package/package.json +20 -20
  13. package/tasks/domain/ImportFromUrlController.d.ts +1 -1
  14. package/tasks/domain/ImportFromUrlController.js.map +1 -1
  15. package/tasks/domain/createImportFromUrlProcessAssets.d.ts +1 -1
  16. package/tasks/domain/createImportFromUrlProcessAssets.js.map +1 -1
  17. package/tasks/domain/createImportFromUrlProcessEntries.d.ts +1 -1
  18. package/tasks/domain/createImportFromUrlProcessEntries.js.map +1 -1
  19. package/tasks/domain/importFromUrlControllerSteps/ImportFromUrlControllerDownloadStep.d.ts +1 -1
  20. package/tasks/domain/importFromUrlControllerSteps/ImportFromUrlControllerDownloadStep.js.map +1 -1
  21. package/tasks/domain/importFromUrlControllerSteps/getChildTasks.js.map +1 -1
  22. package/tasks/domain/importFromUrlProcessAssets/ImportFromUrlProcessAssets.d.ts +1 -1
  23. package/tasks/domain/importFromUrlProcessAssets/ImportFromUrlProcessAssets.js.map +1 -1
  24. package/tasks/utils/externalFileFetcher/ExternalFileFetcher.js.map +1 -1
  25. package/tasks/utils/upload/MultipartUploadFactory.d.ts +2 -2
  26. package/tasks/utils/upload/MultipartUploadFactory.js.map +1 -1
  27. package/tasks/utils/upload/Upload.d.ts +1 -1
  28. package/tasks/utils/upload/Upload.js.map +1 -1
  29. package/tasks/utils/urlSigner/UrlSigner.d.ts +2 -1
  30. package/tasks/utils/urlSigner/UrlSigner.js.map +1 -1
@@ -1,7 +1,7 @@
1
- import { ITasksContextObject } from "@webiny/tasks";
2
- import { IImportFromUrlUseCaseExecuteResponse } from "../importFromUrl";
3
- import { IAbortImportFromUrlUseCase, IAbortImportFromUrlUseCaseExecuteParams } from "./abstractions/AbortImportFromUrlUseCase";
4
- import { IGetImportFromUrlUseCase } from "../getImportFromUrl";
1
+ import type { ITasksContextObject } from "@webiny/tasks";
2
+ import type { IImportFromUrlUseCaseExecuteResponse } from "../importFromUrl";
3
+ import type { IAbortImportFromUrlUseCase, IAbortImportFromUrlUseCaseExecuteParams } from "./abstractions/AbortImportFromUrlUseCase";
4
+ import type { IGetImportFromUrlUseCase } from "../getImportFromUrl";
5
5
  export interface IAbortImportFromUrlUseCaseParams {
6
6
  getTaskUseCase: IGetImportFromUrlUseCase;
7
7
  abortTask: ITasksContextObject["abort"];
@@ -1 +1 @@
1
- {"version":3,"names":["_handlerGraphql","require","_convertTaskToImportRecord","AbortImportFromUrlUseCase","constructor","params","getTaskUseCase","abortTask","execute","task","NotFoundError","id","result","convertTaskToImportRecord","ex","console","log","error","exports"],"sources":["AbortImportFromUrlUseCase.ts"],"sourcesContent":["import { ITasksContextObject } from \"@webiny/tasks\";\nimport { IImportFromUrlUseCaseExecuteResponse } from \"../importFromUrl\";\nimport {\n IAbortImportFromUrlUseCase,\n IAbortImportFromUrlUseCaseExecuteParams\n} from \"./abstractions/AbortImportFromUrlUseCase\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { convertTaskToImportRecord } from \"~/crud/utils/convertTaskToImportRecord\";\nimport type {\n IImportFromUrlControllerInput,\n IImportFromUrlControllerOutput\n} from \"~/tasks/domain/abstractions/ImportFromUrlController\";\nimport { IGetImportFromUrlUseCase } from \"~/crud/useCases/getImportFromUrl\";\n\nexport interface IAbortImportFromUrlUseCaseParams {\n getTaskUseCase: IGetImportFromUrlUseCase;\n abortTask: ITasksContextObject[\"abort\"];\n}\n\nexport class AbortImportFromUrlUseCase implements IAbortImportFromUrlUseCase {\n private readonly getTaskUseCase: IGetImportFromUrlUseCase;\n private readonly abortTask: ITasksContextObject[\"abort\"];\n\n public constructor(params: IAbortImportFromUrlUseCaseParams) {\n this.getTaskUseCase = params.getTaskUseCase;\n this.abortTask = params.abortTask;\n }\n public async execute(\n params: IAbortImportFromUrlUseCaseExecuteParams\n ): Promise<IImportFromUrlUseCaseExecuteResponse> {\n const task = await this.getTaskUseCase.execute(params);\n if (!task) {\n throw new NotFoundError(`Task with id \"${params.id}\" not found.`);\n }\n\n try {\n const result = await this.abortTask<\n IImportFromUrlControllerInput,\n IImportFromUrlControllerOutput\n >(params);\n return convertTaskToImportRecord(result);\n } catch (ex) {\n console.log(\"Could not abort the task.\");\n console.error(ex);\n throw ex;\n }\n }\n}\n"],"mappings":";;;;;;AAMA,IAAAA,eAAA,GAAAC,OAAA;AACA,IAAAC,0BAAA,GAAAD,OAAA;AAYO,MAAME,yBAAyB,CAAuC;EAIlEC,WAAWA,CAACC,MAAwC,EAAE;IACzD,IAAI,CAACC,cAAc,GAAGD,MAAM,CAACC,cAAc;IAC3C,IAAI,CAACC,SAAS,GAAGF,MAAM,CAACE,SAAS;EACrC;EACA,MAAaC,OAAOA,CAChBH,MAA+C,EACF;IAC7C,MAAMI,IAAI,GAAG,MAAM,IAAI,CAACH,cAAc,CAACE,OAAO,CAACH,MAAM,CAAC;IACtD,IAAI,CAACI,IAAI,EAAE;MACP,MAAM,IAAIC,6BAAa,CAAC,iBAAiBL,MAAM,CAACM,EAAE,cAAc,CAAC;IACrE;IAEA,IAAI;MACA,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACL,SAAS,CAGjCF,MAAM,CAAC;MACT,OAAO,IAAAQ,oDAAyB,EAACD,MAAM,CAAC;IAC5C,CAAC,CAAC,OAAOE,EAAE,EAAE;MACTC,OAAO,CAACC,GAAG,CAAC,2BAA2B,CAAC;MACxCD,OAAO,CAACE,KAAK,CAACH,EAAE,CAAC;MACjB,MAAMA,EAAE;IACZ;EACJ;AACJ;AAACI,OAAA,CAAAf,yBAAA,GAAAA,yBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_handlerGraphql","require","_convertTaskToImportRecord","AbortImportFromUrlUseCase","constructor","params","getTaskUseCase","abortTask","execute","task","NotFoundError","id","result","convertTaskToImportRecord","ex","console","log","error","exports"],"sources":["AbortImportFromUrlUseCase.ts"],"sourcesContent":["import type { ITasksContextObject } from \"@webiny/tasks\";\nimport type { IImportFromUrlUseCaseExecuteResponse } from \"../importFromUrl\";\nimport type {\n IAbortImportFromUrlUseCase,\n IAbortImportFromUrlUseCaseExecuteParams\n} from \"./abstractions/AbortImportFromUrlUseCase\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { convertTaskToImportRecord } from \"~/crud/utils/convertTaskToImportRecord\";\nimport type {\n IImportFromUrlControllerInput,\n IImportFromUrlControllerOutput\n} from \"~/tasks/domain/abstractions/ImportFromUrlController\";\nimport type { IGetImportFromUrlUseCase } from \"~/crud/useCases/getImportFromUrl\";\n\nexport interface IAbortImportFromUrlUseCaseParams {\n getTaskUseCase: IGetImportFromUrlUseCase;\n abortTask: ITasksContextObject[\"abort\"];\n}\n\nexport class AbortImportFromUrlUseCase implements IAbortImportFromUrlUseCase {\n private readonly getTaskUseCase: IGetImportFromUrlUseCase;\n private readonly abortTask: ITasksContextObject[\"abort\"];\n\n public constructor(params: IAbortImportFromUrlUseCaseParams) {\n this.getTaskUseCase = params.getTaskUseCase;\n this.abortTask = params.abortTask;\n }\n public async execute(\n params: IAbortImportFromUrlUseCaseExecuteParams\n ): Promise<IImportFromUrlUseCaseExecuteResponse> {\n const task = await this.getTaskUseCase.execute(params);\n if (!task) {\n throw new NotFoundError(`Task with id \"${params.id}\" not found.`);\n }\n\n try {\n const result = await this.abortTask<\n IImportFromUrlControllerInput,\n IImportFromUrlControllerOutput\n >(params);\n return convertTaskToImportRecord(result);\n } catch (ex) {\n console.log(\"Could not abort the task.\");\n console.error(ex);\n throw ex;\n }\n }\n}\n"],"mappings":";;;;;;AAMA,IAAAA,eAAA,GAAAC,OAAA;AACA,IAAAC,0BAAA,GAAAD,OAAA;AAYO,MAAME,yBAAyB,CAAuC;EAIlEC,WAAWA,CAACC,MAAwC,EAAE;IACzD,IAAI,CAACC,cAAc,GAAGD,MAAM,CAACC,cAAc;IAC3C,IAAI,CAACC,SAAS,GAAGF,MAAM,CAACE,SAAS;EACrC;EACA,MAAaC,OAAOA,CAChBH,MAA+C,EACF;IAC7C,MAAMI,IAAI,GAAG,MAAM,IAAI,CAACH,cAAc,CAACE,OAAO,CAACH,MAAM,CAAC;IACtD,IAAI,CAACI,IAAI,EAAE;MACP,MAAM,IAAIC,6BAAa,CAAC,iBAAiBL,MAAM,CAACM,EAAE,cAAc,CAAC;IACrE;IAEA,IAAI;MACA,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACL,SAAS,CAGjCF,MAAM,CAAC;MACT,OAAO,IAAAQ,oDAAyB,EAACD,MAAM,CAAC;IAC5C,CAAC,CAAC,OAAOE,EAAE,EAAE;MACTC,OAAO,CAACC,GAAG,CAAC,2BAA2B,CAAC;MACxCD,OAAO,CAACE,KAAK,CAACH,EAAE,CAAC;MACjB,MAAMA,EAAE;IACZ;EACJ;AACJ;AAACI,OAAA,CAAAf,yBAAA,GAAAA,yBAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_apiHeadlessCms","require","_typeDefs","_resolvers","_models","attachHeadlessCmsImportExportGraphQL","context","tenant","tenancy","getCurrentTenant","locale","i18n","getContentLocale","models","listModels","length","plugin","CmsGraphQLSchemaPlugin","typeDefs","createTypeDefs","resolvers","createResolvers","isApplicable","id","code","name","plugins","register","exports"],"sources":["index.ts"],"sourcesContent":["import type { Context } from \"~/types\";\nimport { CmsGraphQLSchemaPlugin } from \"@webiny/api-headless-cms\";\nimport { createTypeDefs } from \"./typeDefs\";\nimport { createResolvers } from \"./resolvers\";\nimport { listModels } from \"~/graphql/models\";\nimport type { NonEmptyArray } from \"@webiny/api/types\";\nimport { CmsModel } from \"@webiny/api-headless-cms/types\";\n\nexport const attachHeadlessCmsImportExportGraphQL = async (context: Context): Promise<void> => {\n const tenant = context.tenancy.getCurrentTenant();\n const locale = context.i18n.getContentLocale();\n const models = await listModels(context);\n\n if (!locale || models.length === 0) {\n return;\n }\n\n const plugin = new CmsGraphQLSchemaPlugin<Context>({\n typeDefs: createTypeDefs(models as NonEmptyArray<CmsModel>),\n resolvers: createResolvers(models as NonEmptyArray<CmsModel>),\n isApplicable: context =>\n context.tenancy.getCurrentTenant().id === tenant.id &&\n context.i18n.getContentLocale()?.code === locale.code\n });\n\n plugin.name = \"headlessCms.graphql.importExport\";\n\n context.plugins.register(plugin);\n};\n"],"mappings":";;;;;;AACA,IAAAA,eAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AAIO,MAAMI,oCAAoC,GAAG,MAAOC,OAAgB,IAAoB;EAC3F,MAAMC,MAAM,GAAGD,OAAO,CAACE,OAAO,CAACC,gBAAgB,CAAC,CAAC;EACjD,MAAMC,MAAM,GAAGJ,OAAO,CAACK,IAAI,CAACC,gBAAgB,CAAC,CAAC;EAC9C,MAAMC,MAAM,GAAG,MAAM,IAAAC,kBAAU,EAACR,OAAO,CAAC;EAExC,IAAI,CAACI,MAAM,IAAIG,MAAM,CAACE,MAAM,KAAK,CAAC,EAAE;IAChC;EACJ;EAEA,MAAMC,MAAM,GAAG,IAAIC,sCAAsB,CAAU;IAC/CC,QAAQ,EAAE,IAAAC,wBAAc,EAACN,MAAiC,CAAC;IAC3DO,SAAS,EAAE,IAAAC,0BAAe,EAACR,MAAiC,CAAC;IAC7DS,YAAY,EAAEhB,OAAO,IACjBA,OAAO,CAACE,OAAO,CAACC,gBAAgB,CAAC,CAAC,CAACc,EAAE,KAAKhB,MAAM,CAACgB,EAAE,IACnDjB,OAAO,CAACK,IAAI,CAACC,gBAAgB,CAAC,CAAC,EAAEY,IAAI,KAAKd,MAAM,CAACc;EACzD,CAAC,CAAC;EAEFR,MAAM,CAACS,IAAI,GAAG,kCAAkC;EAEhDnB,OAAO,CAACoB,OAAO,CAACC,QAAQ,CAACX,MAAM,CAAC;AACpC,CAAC;AAACY,OAAA,CAAAvB,oCAAA,GAAAA,oCAAA","ignoreList":[]}
1
+ {"version":3,"names":["_apiHeadlessCms","require","_typeDefs","_resolvers","_models","attachHeadlessCmsImportExportGraphQL","context","tenant","tenancy","getCurrentTenant","locale","i18n","getContentLocale","models","listModels","length","plugin","CmsGraphQLSchemaPlugin","typeDefs","createTypeDefs","resolvers","createResolvers","isApplicable","id","code","name","plugins","register","exports"],"sources":["index.ts"],"sourcesContent":["import type { Context } from \"~/types\";\nimport { CmsGraphQLSchemaPlugin } from \"@webiny/api-headless-cms\";\nimport { createTypeDefs } from \"./typeDefs\";\nimport { createResolvers } from \"./resolvers\";\nimport { listModels } from \"~/graphql/models\";\nimport type { NonEmptyArray } from \"@webiny/api/types\";\nimport type { CmsModel } from \"@webiny/api-headless-cms/types\";\n\nexport const attachHeadlessCmsImportExportGraphQL = async (context: Context): Promise<void> => {\n const tenant = context.tenancy.getCurrentTenant();\n const locale = context.i18n.getContentLocale();\n const models = await listModels(context);\n\n if (!locale || models.length === 0) {\n return;\n }\n\n const plugin = new CmsGraphQLSchemaPlugin<Context>({\n typeDefs: createTypeDefs(models as NonEmptyArray<CmsModel>),\n resolvers: createResolvers(models as NonEmptyArray<CmsModel>),\n isApplicable: context =>\n context.tenancy.getCurrentTenant().id === tenant.id &&\n context.i18n.getContentLocale()?.code === locale.code\n });\n\n plugin.name = \"headlessCms.graphql.importExport\";\n\n context.plugins.register(plugin);\n};\n"],"mappings":";;;;;;AACA,IAAAA,eAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AAIO,MAAMI,oCAAoC,GAAG,MAAOC,OAAgB,IAAoB;EAC3F,MAAMC,MAAM,GAAGD,OAAO,CAACE,OAAO,CAACC,gBAAgB,CAAC,CAAC;EACjD,MAAMC,MAAM,GAAGJ,OAAO,CAACK,IAAI,CAACC,gBAAgB,CAAC,CAAC;EAC9C,MAAMC,MAAM,GAAG,MAAM,IAAAC,kBAAU,EAACR,OAAO,CAAC;EAExC,IAAI,CAACI,MAAM,IAAIG,MAAM,CAACE,MAAM,KAAK,CAAC,EAAE;IAChC;EACJ;EAEA,MAAMC,MAAM,GAAG,IAAIC,sCAAsB,CAAU;IAC/CC,QAAQ,EAAE,IAAAC,wBAAc,EAACN,MAAiC,CAAC;IAC3DO,SAAS,EAAE,IAAAC,0BAAe,EAACR,MAAiC,CAAC;IAC7DS,YAAY,EAAEhB,OAAO,IACjBA,OAAO,CAACE,OAAO,CAACC,gBAAgB,CAAC,CAAC,CAACc,EAAE,KAAKhB,MAAM,CAACgB,EAAE,IACnDjB,OAAO,CAACK,IAAI,CAACC,gBAAgB,CAAC,CAAC,EAAEY,IAAI,KAAKd,MAAM,CAACc;EACzD,CAAC,CAAC;EAEFR,MAAM,CAACS,IAAI,GAAG,kCAAkC;EAEhDnB,OAAO,CAACoB,OAAO,CAACC,QAAQ,CAACX,MAAM,CAAC;AACpC,CAAC;AAACY,OAAA,CAAAvB,oCAAA,GAAAA,oCAAA","ignoreList":[]}
@@ -1,3 +1,3 @@
1
1
  import type { Context } from "../types";
2
- import { CmsModel } from "@webiny/api-headless-cms/types";
2
+ import type { CmsModel } from "@webiny/api-headless-cms/types";
3
3
  export declare const listModels: (context: Context) => Promise<CmsModel[]>;
@@ -1 +1 @@
1
- {"version":3,"names":["listModels","context","security","withoutAuthorization","models","cms","filter","model","isPrivate","ex","exports"],"sources":["models.ts"],"sourcesContent":["import type { Context } from \"~/types\";\nimport { CmsModel } from \"@webiny/api-headless-cms/types\";\n\nexport const listModels = async (context: Context): Promise<CmsModel[]> => {\n return await context.security.withoutAuthorization(async () => {\n try {\n const models = await context.cms.listModels();\n\n return models.filter(model => {\n return !model.isPrivate;\n });\n } catch (ex) {\n return [];\n }\n });\n};\n"],"mappings":";;;;;;AAGO,MAAMA,UAAU,GAAG,MAAOC,OAAgB,IAA0B;EACvE,OAAO,MAAMA,OAAO,CAACC,QAAQ,CAACC,oBAAoB,CAAC,YAAY;IAC3D,IAAI;MACA,MAAMC,MAAM,GAAG,MAAMH,OAAO,CAACI,GAAG,CAACL,UAAU,CAAC,CAAC;MAE7C,OAAOI,MAAM,CAACE,MAAM,CAACC,KAAK,IAAI;QAC1B,OAAO,CAACA,KAAK,CAACC,SAAS;MAC3B,CAAC,CAAC;IACN,CAAC,CAAC,OAAOC,EAAE,EAAE;MACT,OAAO,EAAE;IACb;EACJ,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAAV,UAAA,GAAAA,UAAA","ignoreList":[]}
1
+ {"version":3,"names":["listModels","context","security","withoutAuthorization","models","cms","filter","model","isPrivate","ex","exports"],"sources":["models.ts"],"sourcesContent":["import type { Context } from \"~/types\";\nimport type { CmsModel } from \"@webiny/api-headless-cms/types\";\n\nexport const listModels = async (context: Context): Promise<CmsModel[]> => {\n return await context.security.withoutAuthorization(async () => {\n try {\n const models = await context.cms.listModels();\n\n return models.filter(model => {\n return !model.isPrivate;\n });\n } catch (ex) {\n return [];\n }\n });\n};\n"],"mappings":";;;;;;AAGO,MAAMA,UAAU,GAAG,MAAOC,OAAgB,IAA0B;EACvE,OAAO,MAAMA,OAAO,CAACC,QAAQ,CAACC,oBAAoB,CAAC,YAAY;IAC3D,IAAI;MACA,MAAMC,MAAM,GAAG,MAAMH,OAAO,CAACI,GAAG,CAACL,UAAU,CAAC,CAAC;MAE7C,OAAOI,MAAM,CAACE,MAAM,CAACC,KAAK,IAAI;QAC1B,OAAO,CAACA,KAAK,CAACC,SAAS;MAC3B,CAAC,CAAC;IACN,CAAC,CAAC,OAAOC,EAAE,EAAE;MACT,OAAO,EAAE;IACb;EACJ,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAAV,UAAA,GAAAA,UAAA","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import type { Context } from "../types";
2
2
  import type { NonEmptyArray } from "@webiny/api/types";
3
- import { CmsModel } from "@webiny/api-headless-cms/types";
3
+ import type { CmsModel } from "@webiny/api-headless-cms/types";
4
4
  export declare const createResolvers: (models: NonEmptyArray<CmsModel>) => {
5
5
  Query: {
6
6
  getExportContentEntries(_: unknown, input: unknown, context: Context): Promise<import("@webiny/handler-graphql").ErrorResponse | import("@webiny/handler-graphql").Response<import("../types").ICmsImportExportRecord>>;
@@ -1 +1 @@
1
- {"version":3,"names":["_utils","require","_handlerGraphql","_zod","_interopRequireDefault","_security","validateAbortExportContentEntries","zod","object","id","string","validateGetExportContentEntries","validateListExportContentEntries","limit","number","optional","default","after","validateImportFromUrl","data","or","passthrough","getValidateImportFromUrl","getImportFromUrl","importFromUrlValidation","maxInsertErrors","overwrite","boolean","abortImportFromUrl","validateExportContentEntriesInput","exportAssets","where","sort","array","createExportContentEntries","models","reduce","resolvers","model","pluralApiName","_","input","context","resolve","checkPermissions","result","safeParse","success","createZodError","error","cmsImportExport","exportContentEntries","modelId","undefined","createResolvers","Query","getExportContentEntries","listExportContentEntries","resolveList","Mutation","abortExportContentEntries","importFromUrl","exports"],"sources":["resolvers.ts"],"sourcesContent":["import type { Context } from \"~/types\";\nimport { createZodError } from \"@webiny/utils\";\nimport { resolve, resolveList } from \"@webiny/handler-graphql\";\nimport zod from \"zod\";\nimport type { GenericRecord, NonEmptyArray } from \"@webiny/api/types\";\nimport { CmsEntryListSort, CmsEntryListWhere, CmsModel } from \"@webiny/api-headless-cms/types\";\nimport { checkPermissions } from \"./security\";\n\nconst validateAbortExportContentEntries = zod.object({\n id: zod.string()\n});\n\nconst validateGetExportContentEntries = zod.object({\n id: zod.string()\n});\n\nconst validateListExportContentEntries = zod.object({\n limit: zod.number().optional().default(50),\n after: zod.string().optional()\n});\n\nconst validateImportFromUrl = zod.object({\n data: zod.string().or(zod.object({}).passthrough())\n});\n\nconst getValidateImportFromUrl = zod.object({\n id: zod.string()\n});\n\nconst getImportFromUrl = zod.object({\n id: zod.string()\n});\n\nconst importFromUrlValidation = zod.object({\n id: zod.string(),\n maxInsertErrors: zod.number().optional().default(100),\n overwrite: zod.boolean().optional().default(false)\n});\n\nconst abortImportFromUrl = zod.object({\n id: zod.string()\n});\n\nconst validateExportContentEntriesInput = zod.object({\n exportAssets: zod.boolean().optional().default(false),\n limit: zod.number().optional(),\n where: zod.object({}).passthrough().optional().default({}),\n sort: zod.array(zod.string()).optional()\n});\n/**\n * Create export resolver for each of the models given.\n */\nconst createExportContentEntries = (models: NonEmptyArray<CmsModel>) => {\n return models.reduce<GenericRecord<string>>((resolvers, model) => {\n resolvers[`export${model.pluralApiName}ContentEntries`] = async (\n _: unknown,\n input: unknown,\n context: Context\n ) => {\n return resolve(async () => {\n await checkPermissions(context);\n\n const result = validateExportContentEntriesInput.safeParse(input);\n\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n return await context.cmsImportExport.exportContentEntries({\n ...result.data,\n modelId: model.modelId,\n sort: result.data.sort ? (result.data.sort as CmsEntryListSort) : undefined,\n where: result.data.where ? (result.data.where as CmsEntryListWhere) : undefined\n });\n });\n };\n return resolvers;\n }, {});\n};\n\nexport const createResolvers = (models: NonEmptyArray<CmsModel>) => {\n return {\n Query: {\n async getExportContentEntries(_: unknown, input: unknown, context: Context) {\n return resolve(async () => {\n await checkPermissions(context);\n\n const result = validateGetExportContentEntries.safeParse(input);\n\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n return await context.cmsImportExport.getExportContentEntries(result.data);\n });\n },\n async listExportContentEntries(_: unknown, input: unknown, context: Context) {\n return resolveList(async () => {\n await checkPermissions(context);\n\n const result = validateListExportContentEntries.safeParse(input);\n if (!result.success) {\n throw createZodError(result.error);\n }\n return await context.cmsImportExport.listExportContentEntries(result.data);\n });\n },\n async getValidateImportFromUrl(_: unknown, input: unknown, context: Context) {\n return resolve(async () => {\n await checkPermissions(context);\n\n const result = getValidateImportFromUrl.safeParse(input);\n\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n return await context.cmsImportExport.getValidateImportFromUrl(result.data);\n });\n },\n async getImportFromUrl(_: unknown, input: unknown, context: Context) {\n return resolve(async () => {\n await checkPermissions(context);\n\n const result = getImportFromUrl.safeParse(input);\n\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n return await context.cmsImportExport.getImportFromUrl(result.data);\n });\n }\n },\n Mutation: {\n ...createExportContentEntries(models),\n async abortExportContentEntries(_: unknown, input: unknown, context: Context) {\n return resolve(async () => {\n await checkPermissions(context);\n\n const result = validateAbortExportContentEntries.safeParse(input);\n\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n return await context.cmsImportExport.abortExportContentEntries(result.data);\n });\n },\n async validateImportFromUrl(_: unknown, input: unknown, context: Context) {\n return resolve(async () => {\n await checkPermissions(context);\n\n const result = validateImportFromUrl.safeParse(input);\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n return await context.cmsImportExport.validateImportFromUrl(result.data);\n });\n },\n async importFromUrl(_: unknown, input: unknown, context: Context) {\n return resolve(async () => {\n await checkPermissions(context);\n\n const result = importFromUrlValidation.safeParse(input);\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n return await context.cmsImportExport.importFromUrl(result.data);\n });\n },\n async abortImportFromUrl(_: unknown, input: unknown, context: Context) {\n return resolve(async () => {\n await checkPermissions(context);\n\n const result = abortImportFromUrl.safeParse(input);\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n return await context.cmsImportExport.abortImportFromUrl(result.data);\n });\n }\n }\n };\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_utils","require","_handlerGraphql","_zod","_interopRequireDefault","_security","validateAbortExportContentEntries","zod","object","id","string","validateGetExportContentEntries","validateListExportContentEntries","limit","number","optional","default","after","validateImportFromUrl","data","or","passthrough","getValidateImportFromUrl","getImportFromUrl","importFromUrlValidation","maxInsertErrors","overwrite","boolean","abortImportFromUrl","validateExportContentEntriesInput","exportAssets","where","sort","array","createExportContentEntries","models","reduce","resolvers","model","pluralApiName","_","input","context","resolve","checkPermissions","result","safeParse","success","createZodError","error","cmsImportExport","exportContentEntries","modelId","undefined","createResolvers","Query","getExportContentEntries","listExportContentEntries","resolveList","Mutation","abortExportContentEntries","importFromUrl","exports"],"sources":["resolvers.ts"],"sourcesContent":["import type { Context } from \"~/types\";\nimport { createZodError } from \"@webiny/utils\";\nimport { resolve, resolveList } from \"@webiny/handler-graphql\";\nimport zod from \"zod\";\nimport type { GenericRecord, NonEmptyArray } from \"@webiny/api/types\";\nimport type { CmsEntryListSort, CmsEntryListWhere, CmsModel } from \"@webiny/api-headless-cms/types\";\nimport { checkPermissions } from \"./security\";\n\nconst validateAbortExportContentEntries = zod.object({\n id: zod.string()\n});\n\nconst validateGetExportContentEntries = zod.object({\n id: zod.string()\n});\n\nconst validateListExportContentEntries = zod.object({\n limit: zod.number().optional().default(50),\n after: zod.string().optional()\n});\n\nconst validateImportFromUrl = zod.object({\n data: zod.string().or(zod.object({}).passthrough())\n});\n\nconst getValidateImportFromUrl = zod.object({\n id: zod.string()\n});\n\nconst getImportFromUrl = zod.object({\n id: zod.string()\n});\n\nconst importFromUrlValidation = zod.object({\n id: zod.string(),\n maxInsertErrors: zod.number().optional().default(100),\n overwrite: zod.boolean().optional().default(false)\n});\n\nconst abortImportFromUrl = zod.object({\n id: zod.string()\n});\n\nconst validateExportContentEntriesInput = zod.object({\n exportAssets: zod.boolean().optional().default(false),\n limit: zod.number().optional(),\n where: zod.object({}).passthrough().optional().default({}),\n sort: zod.array(zod.string()).optional()\n});\n/**\n * Create export resolver for each of the models given.\n */\nconst createExportContentEntries = (models: NonEmptyArray<CmsModel>) => {\n return models.reduce<GenericRecord<string>>((resolvers, model) => {\n resolvers[`export${model.pluralApiName}ContentEntries`] = async (\n _: unknown,\n input: unknown,\n context: Context\n ) => {\n return resolve(async () => {\n await checkPermissions(context);\n\n const result = validateExportContentEntriesInput.safeParse(input);\n\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n return await context.cmsImportExport.exportContentEntries({\n ...result.data,\n modelId: model.modelId,\n sort: result.data.sort ? (result.data.sort as CmsEntryListSort) : undefined,\n where: result.data.where ? (result.data.where as CmsEntryListWhere) : undefined\n });\n });\n };\n return resolvers;\n }, {});\n};\n\nexport const createResolvers = (models: NonEmptyArray<CmsModel>) => {\n return {\n Query: {\n async getExportContentEntries(_: unknown, input: unknown, context: Context) {\n return resolve(async () => {\n await checkPermissions(context);\n\n const result = validateGetExportContentEntries.safeParse(input);\n\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n return await context.cmsImportExport.getExportContentEntries(result.data);\n });\n },\n async listExportContentEntries(_: unknown, input: unknown, context: Context) {\n return resolveList(async () => {\n await checkPermissions(context);\n\n const result = validateListExportContentEntries.safeParse(input);\n if (!result.success) {\n throw createZodError(result.error);\n }\n return await context.cmsImportExport.listExportContentEntries(result.data);\n });\n },\n async getValidateImportFromUrl(_: unknown, input: unknown, context: Context) {\n return resolve(async () => {\n await checkPermissions(context);\n\n const result = getValidateImportFromUrl.safeParse(input);\n\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n return await context.cmsImportExport.getValidateImportFromUrl(result.data);\n });\n },\n async getImportFromUrl(_: unknown, input: unknown, context: Context) {\n return resolve(async () => {\n await checkPermissions(context);\n\n const result = getImportFromUrl.safeParse(input);\n\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n return await context.cmsImportExport.getImportFromUrl(result.data);\n });\n }\n },\n Mutation: {\n ...createExportContentEntries(models),\n async abortExportContentEntries(_: unknown, input: unknown, context: Context) {\n return resolve(async () => {\n await checkPermissions(context);\n\n const result = validateAbortExportContentEntries.safeParse(input);\n\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n return await context.cmsImportExport.abortExportContentEntries(result.data);\n });\n },\n async validateImportFromUrl(_: unknown, input: unknown, context: Context) {\n return resolve(async () => {\n await checkPermissions(context);\n\n const result = validateImportFromUrl.safeParse(input);\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n return await context.cmsImportExport.validateImportFromUrl(result.data);\n });\n },\n async importFromUrl(_: unknown, input: unknown, context: Context) {\n return resolve(async () => {\n await checkPermissions(context);\n\n const result = importFromUrlValidation.safeParse(input);\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n return await context.cmsImportExport.importFromUrl(result.data);\n });\n },\n async abortImportFromUrl(_: unknown, input: unknown, context: Context) {\n return resolve(async () => {\n await checkPermissions(context);\n\n const result = abortImportFromUrl.safeParse(input);\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n return await context.cmsImportExport.abortImportFromUrl(result.data);\n });\n }\n }\n };\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import { Context } from "../types";
1
+ import type { Context } from "../types";
2
2
  export declare const checkPermissions: (context: Pick<Context, "security">) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"names":["_apiSecurity","require","checkPermissions","context","permission","security","getPermission","ex","console","log","error","NotAuthorizedError","exports"],"sources":["security.ts"],"sourcesContent":["import { NotAuthorizedError } from \"@webiny/api-security\";\nimport { Context } from \"~/types\";\n\nexport const checkPermissions = async (context: Pick<Context, \"security\">): Promise<void> => {\n try {\n const permission = await context.security.getPermission(\"*\");\n\n if (permission) {\n return;\n }\n } catch (ex) {\n console.log(\"Error while checking CMS Export / Import permissions.\");\n console.error(ex);\n }\n throw new NotAuthorizedError();\n};\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAGO,MAAMC,gBAAgB,GAAG,MAAOC,OAAkC,IAAoB;EACzF,IAAI;IACA,MAAMC,UAAU,GAAG,MAAMD,OAAO,CAACE,QAAQ,CAACC,aAAa,CAAC,GAAG,CAAC;IAE5D,IAAIF,UAAU,EAAE;MACZ;IACJ;EACJ,CAAC,CAAC,OAAOG,EAAE,EAAE;IACTC,OAAO,CAACC,GAAG,CAAC,wDAAwD,CAAC;IACrED,OAAO,CAACE,KAAK,CAACH,EAAE,CAAC;EACrB;EACA,MAAM,IAAII,+BAAkB,CAAC,CAAC;AAClC,CAAC;AAACC,OAAA,CAAAV,gBAAA,GAAAA,gBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_apiSecurity","require","checkPermissions","context","permission","security","getPermission","ex","console","log","error","NotAuthorizedError","exports"],"sources":["security.ts"],"sourcesContent":["import { NotAuthorizedError } from \"@webiny/api-security\";\nimport type { Context } from \"~/types\";\n\nexport const checkPermissions = async (context: Pick<Context, \"security\">): Promise<void> => {\n try {\n const permission = await context.security.getPermission(\"*\");\n\n if (permission) {\n return;\n }\n } catch (ex) {\n console.log(\"Error while checking CMS Export / Import permissions.\");\n console.error(ex);\n }\n throw new NotAuthorizedError();\n};\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAGO,MAAMC,gBAAgB,GAAG,MAAOC,OAAkC,IAAoB;EACzF,IAAI;IACA,MAAMC,UAAU,GAAG,MAAMD,OAAO,CAACE,QAAQ,CAACC,aAAa,CAAC,GAAG,CAAC;IAE5D,IAAIF,UAAU,EAAE;MACZ;IACJ;EACJ,CAAC,CAAC,OAAOG,EAAE,EAAE;IACTC,OAAO,CAACC,GAAG,CAAC,wDAAwD,CAAC;IACrED,OAAO,CAACE,KAAK,CAACH,EAAE,CAAC;EACrB;EACA,MAAM,IAAII,+BAAkB,CAAC,CAAC;AAClC,CAAC;AAACC,OAAA,CAAAV,gBAAA,GAAAA,gBAAA","ignoreList":[]}
@@ -1,3 +1,3 @@
1
1
  import type { NonEmptyArray } from "@webiny/api/types";
2
- import { CmsModel } from "@webiny/api-headless-cms/types";
2
+ import type { CmsModel } from "@webiny/api-headless-cms/types";
3
3
  export declare const createTypeDefs: (models: NonEmptyArray<CmsModel>) => string;
@@ -1 +1 @@
1
- {"version":3,"names":["_constants","require","createExportContentEntriesByModel","models","map","model","whereCondition","tags","includes","CMS_MODEL_SINGLETON_TAG","singularApiName","pluralApiName","join","createTypeDefs","exports"],"sources":["typeDefs.ts"],"sourcesContent":["import type { NonEmptyArray } from \"@webiny/api/types\";\nimport { CmsModel } from \"@webiny/api-headless-cms/types\";\nimport { CMS_MODEL_SINGLETON_TAG } from \"@webiny/api-headless-cms/constants\";\n\nconst createExportContentEntriesByModel = (models: NonEmptyArray<CmsModel>): string => {\n return models\n .map(model => {\n let whereCondition = \"\";\n const tags = model.tags || [];\n if (tags.includes(CMS_MODEL_SINGLETON_TAG) === false) {\n whereCondition = /* GraphQL */ `\n # filter the entries by providing a where input\n where: ${model.singularApiName}ListWhereInput\n `;\n }\n return /* GraphQL */ `\n export${model.pluralApiName}ContentEntries(\n # limit on how much entries will be fetched in a single batch - mostly used for testing\n limit: Int\n # do we export assets as well? default is false\n exportAssets: Boolean\n ${whereCondition}\n # if after is provided, export will start after the provided cursor\n after: String\n ): ExportContentEntriesResponse!\n \n `;\n })\n .join(\"\\n\");\n};\n\nexport const createTypeDefs = (models: NonEmptyArray<CmsModel>): string => {\n return /* GraphQL */ `\n enum ExportContentEntriesExportRecordStatusEnum {\n pending\n running\n failed\n success\n aborted\n }\n \n type ExportContentEntriesExportRecordFile {\n get: String!\n head: String!\n key: String!\n type: String!\n checksum: String!\n }\n \n type ExportContentEntriesExportRecord {\n id: ID!\n createdOn: DateTime!\n createdBy: CmsIdentity!\n finishedOn: DateTime\n modelId: String!\n files: [ExportContentEntriesExportRecordFile!]\n exportAssets: Boolean!\n status: ExportContentEntriesExportRecordStatusEnum!\n }\n \n type ExportContentEntriesResponse {\n data: ExportContentEntriesExportRecord\n error: CmsError\n }\n \n type ListExportContentEntriesExportRecord {\n id: ID!\n createdOn: DateTime!\n createdBy: CmsIdentity!\n finishedOn: DateTime\n modelId: String!\n exportAssets: Boolean!\n status: ExportContentEntriesExportRecordStatusEnum!\n }\n \n type ListExportContentEntriesResponse {\n data: [ListExportContentEntriesExportRecord!]\n meta: CmsListMeta\n error: CmsError\n }\n\n type AbortExportContentEntriesResponse {\n data: ExportContentEntriesExportRecord\n error: CmsError\n }\n \n type ValidateImportFromUrlResponseDataFileError {\n message: String!\n data: JSON\n }\n \n type ValidateImportFromUrlResponseDataFile {\n get: String\n head: String\n type: String\n checksum: String\n key: String\n size: Number\n checked: Boolean\n error: ValidateImportFromUrlResponseDataFileError\n }\n \n type ValidateImportFromUrlResponseData {\n id: ID!\n files: [ValidateImportFromUrlResponseDataFile!]\n status: String!\n error: CmsError\n }\n \n type GetValidateImportFromUrlResponseData {\n id: ID!\n files: [ValidateImportFromUrlResponseDataFile!]\n status: String!\n error: CmsError\n }\n \n type GetValidateImportFromUrlResponse {\n data: GetValidateImportFromUrlResponseData\n error: CmsError\n }\n \n type ValidateImportFromUrlResponse {\n data: ValidateImportFromUrlResponseData\n error: CmsError\n }\n \n type ImportFromUrlResponseDataFileError {\n message: String!\n data: JSON\n }\n \n type ImportFromUrlResponseDataFile {\n get: String!\n head: String!\n type: String!\n checksum: String!\n size: Number!\n error: ImportFromUrlResponseDataFileError\n }\n \n type ImportFromUrlResponseData {\n id: ID!\n files: [ImportFromUrlResponseDataFile!]\n status: String!\n }\n \n type ImportFromUrlResponse {\n data: ImportFromUrlResponseData\n error: CmsError\n }\n \n extend type Query {\n getExportContentEntries(id: ID!): ExportContentEntriesResponse!\n listExportContentEntries(after: String, limit: Int): ListExportContentEntriesResponse!\n getValidateImportFromUrl(id: ID!): GetValidateImportFromUrlResponse!\n getImportFromUrl(id: ID!): ImportFromUrlResponse!\n }\n\n extend type Mutation {\n ${createExportContentEntriesByModel(models)}\n \n abortExportContentEntries(id: ID!): AbortExportContentEntriesResponse!\n validateImportFromUrl(data: JSON!): ValidateImportFromUrlResponse!\n # the id is a task id returned from the validateImportFromUrl mutation\n # it will be used to get the file information and start a new task for the actual import\n importFromUrl(id: ID!): ImportFromUrlResponse!\n abortImportFromUrl(id: ID!): ImportFromUrlResponse!\n }\n `;\n};\n"],"mappings":";;;;;;AAEA,IAAAA,UAAA,GAAAC,OAAA;AAEA,MAAMC,iCAAiC,GAAIC,MAA+B,IAAa;EACnF,OAAOA,MAAM,CACRC,GAAG,CAACC,KAAK,IAAI;IACV,IAAIC,cAAc,GAAG,EAAE;IACvB,MAAMC,IAAI,GAAGF,KAAK,CAACE,IAAI,IAAI,EAAE;IAC7B,IAAIA,IAAI,CAACC,QAAQ,CAACC,kCAAuB,CAAC,KAAK,KAAK,EAAE;MAClDH,cAAc,GAAG,aAAc;AAC/C;AACA,6BAA6BD,KAAK,CAACK,eAAe;AAClD,iBAAiB;IACL;IACA,OAAO,aAAc;AACjC,oBAAoBL,KAAK,CAACM,aAAa;AACvC;AACA;AACA;AACA;AACA,kBAAkBL,cAAc;AAChC;AACA;AACA;AACA;AACA,SAAS;EACD,CAAC,CAAC,CACDM,IAAI,CAAC,IAAI,CAAC;AACnB,CAAC;AAEM,MAAMC,cAAc,GAAIV,MAA+B,IAAa;EACvE,OAAO,aAAc;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAcD,iCAAiC,CAACC,MAAM,CAAC;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;AAACW,OAAA,CAAAD,cAAA,GAAAA,cAAA","ignoreList":[]}
1
+ {"version":3,"names":["_constants","require","createExportContentEntriesByModel","models","map","model","whereCondition","tags","includes","CMS_MODEL_SINGLETON_TAG","singularApiName","pluralApiName","join","createTypeDefs","exports"],"sources":["typeDefs.ts"],"sourcesContent":["import type { NonEmptyArray } from \"@webiny/api/types\";\nimport type { CmsModel } from \"@webiny/api-headless-cms/types\";\nimport { CMS_MODEL_SINGLETON_TAG } from \"@webiny/api-headless-cms/constants\";\n\nconst createExportContentEntriesByModel = (models: NonEmptyArray<CmsModel>): string => {\n return models\n .map(model => {\n let whereCondition = \"\";\n const tags = model.tags || [];\n if (tags.includes(CMS_MODEL_SINGLETON_TAG) === false) {\n whereCondition = /* GraphQL */ `\n # filter the entries by providing a where input\n where: ${model.singularApiName}ListWhereInput\n `;\n }\n return /* GraphQL */ `\n export${model.pluralApiName}ContentEntries(\n # limit on how much entries will be fetched in a single batch - mostly used for testing\n limit: Int\n # do we export assets as well? default is false\n exportAssets: Boolean\n ${whereCondition}\n # if after is provided, export will start after the provided cursor\n after: String\n ): ExportContentEntriesResponse!\n \n `;\n })\n .join(\"\\n\");\n};\n\nexport const createTypeDefs = (models: NonEmptyArray<CmsModel>): string => {\n return /* GraphQL */ `\n enum ExportContentEntriesExportRecordStatusEnum {\n pending\n running\n failed\n success\n aborted\n }\n \n type ExportContentEntriesExportRecordFile {\n get: String!\n head: String!\n key: String!\n type: String!\n checksum: String!\n }\n \n type ExportContentEntriesExportRecord {\n id: ID!\n createdOn: DateTime!\n createdBy: CmsIdentity!\n finishedOn: DateTime\n modelId: String!\n files: [ExportContentEntriesExportRecordFile!]\n exportAssets: Boolean!\n status: ExportContentEntriesExportRecordStatusEnum!\n }\n \n type ExportContentEntriesResponse {\n data: ExportContentEntriesExportRecord\n error: CmsError\n }\n \n type ListExportContentEntriesExportRecord {\n id: ID!\n createdOn: DateTime!\n createdBy: CmsIdentity!\n finishedOn: DateTime\n modelId: String!\n exportAssets: Boolean!\n status: ExportContentEntriesExportRecordStatusEnum!\n }\n \n type ListExportContentEntriesResponse {\n data: [ListExportContentEntriesExportRecord!]\n meta: CmsListMeta\n error: CmsError\n }\n\n type AbortExportContentEntriesResponse {\n data: ExportContentEntriesExportRecord\n error: CmsError\n }\n \n type ValidateImportFromUrlResponseDataFileError {\n message: String!\n data: JSON\n }\n \n type ValidateImportFromUrlResponseDataFile {\n get: String\n head: String\n type: String\n checksum: String\n key: String\n size: Number\n checked: Boolean\n error: ValidateImportFromUrlResponseDataFileError\n }\n \n type ValidateImportFromUrlResponseData {\n id: ID!\n files: [ValidateImportFromUrlResponseDataFile!]\n status: String!\n error: CmsError\n }\n \n type GetValidateImportFromUrlResponseData {\n id: ID!\n files: [ValidateImportFromUrlResponseDataFile!]\n status: String!\n error: CmsError\n }\n \n type GetValidateImportFromUrlResponse {\n data: GetValidateImportFromUrlResponseData\n error: CmsError\n }\n \n type ValidateImportFromUrlResponse {\n data: ValidateImportFromUrlResponseData\n error: CmsError\n }\n \n type ImportFromUrlResponseDataFileError {\n message: String!\n data: JSON\n }\n \n type ImportFromUrlResponseDataFile {\n get: String!\n head: String!\n type: String!\n checksum: String!\n size: Number!\n error: ImportFromUrlResponseDataFileError\n }\n \n type ImportFromUrlResponseData {\n id: ID!\n files: [ImportFromUrlResponseDataFile!]\n status: String!\n }\n \n type ImportFromUrlResponse {\n data: ImportFromUrlResponseData\n error: CmsError\n }\n \n extend type Query {\n getExportContentEntries(id: ID!): ExportContentEntriesResponse!\n listExportContentEntries(after: String, limit: Int): ListExportContentEntriesResponse!\n getValidateImportFromUrl(id: ID!): GetValidateImportFromUrlResponse!\n getImportFromUrl(id: ID!): ImportFromUrlResponse!\n }\n\n extend type Mutation {\n ${createExportContentEntriesByModel(models)}\n \n abortExportContentEntries(id: ID!): AbortExportContentEntriesResponse!\n validateImportFromUrl(data: JSON!): ValidateImportFromUrlResponse!\n # the id is a task id returned from the validateImportFromUrl mutation\n # it will be used to get the file information and start a new task for the actual import\n importFromUrl(id: ID!): ImportFromUrlResponse!\n abortImportFromUrl(id: ID!): ImportFromUrlResponse!\n }\n `;\n};\n"],"mappings":";;;;;;AAEA,IAAAA,UAAA,GAAAC,OAAA;AAEA,MAAMC,iCAAiC,GAAIC,MAA+B,IAAa;EACnF,OAAOA,MAAM,CACRC,GAAG,CAACC,KAAK,IAAI;IACV,IAAIC,cAAc,GAAG,EAAE;IACvB,MAAMC,IAAI,GAAGF,KAAK,CAACE,IAAI,IAAI,EAAE;IAC7B,IAAIA,IAAI,CAACC,QAAQ,CAACC,kCAAuB,CAAC,KAAK,KAAK,EAAE;MAClDH,cAAc,GAAG,aAAc;AAC/C;AACA,6BAA6BD,KAAK,CAACK,eAAe;AAClD,iBAAiB;IACL;IACA,OAAO,aAAc;AACjC,oBAAoBL,KAAK,CAACM,aAAa;AACvC;AACA;AACA;AACA;AACA,kBAAkBL,cAAc;AAChC;AACA;AACA;AACA;AACA,SAAS;EACD,CAAC,CAAC,CACDM,IAAI,CAAC,IAAI,CAAC;AACnB,CAAC;AAEM,MAAMC,cAAc,GAAIV,MAA+B,IAAa;EACvE,OAAO,aAAc;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAcD,iCAAiC,CAACC,MAAM,CAAC;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;AAACW,OAAA,CAAAD,cAAA,GAAAA,cAAA","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-headless-cms-import-export",
3
- "version": "5.43.3",
3
+ "version": "6.0.0-alpha.1",
4
4
  "main": "index.js",
5
5
  "description": "Import / Export for Webiny Headless CMS",
6
6
  "keywords": [
@@ -14,14 +14,14 @@
14
14
  "license": "MIT",
15
15
  "dependencies": {
16
16
  "@smithy/node-http-handler": "2.1.6",
17
- "@webiny/api-file-manager": "5.43.3",
18
- "@webiny/api-headless-cms": "5.43.3",
19
- "@webiny/aws-sdk": "5.43.3",
20
- "@webiny/error": "5.43.3",
21
- "@webiny/handler-graphql": "5.43.3",
22
- "@webiny/plugins": "5.43.3",
23
- "@webiny/tasks": "5.43.3",
24
- "@webiny/utils": "5.43.3",
17
+ "@webiny/api-file-manager": "6.0.0-alpha.1",
18
+ "@webiny/api-headless-cms": "6.0.0-alpha.1",
19
+ "@webiny/aws-sdk": "6.0.0-alpha.1",
20
+ "@webiny/error": "6.0.0-alpha.1",
21
+ "@webiny/handler-graphql": "6.0.0-alpha.1",
22
+ "@webiny/plugins": "6.0.0-alpha.1",
23
+ "@webiny/tasks": "6.0.0-alpha.1",
24
+ "@webiny/utils": "6.0.0-alpha.1",
25
25
  "archiver": "7.0.1",
26
26
  "bytes": "3.1.2",
27
27
  "uniqid": "5.4.0",
@@ -31,17 +31,17 @@
31
31
  "devDependencies": {
32
32
  "@types/adm-zip": "0.5.5",
33
33
  "@types/unzipper": "0.10.10",
34
- "@webiny/api": "5.43.3",
35
- "@webiny/api-admin-users": "5.43.3",
36
- "@webiny/api-i18n": "5.43.3",
37
- "@webiny/api-security": "5.43.3",
38
- "@webiny/api-tenancy": "5.43.3",
39
- "@webiny/api-wcp": "5.43.3",
40
- "@webiny/handler": "5.43.3",
41
- "@webiny/handler-aws": "5.43.3",
34
+ "@webiny/api": "6.0.0-alpha.1",
35
+ "@webiny/api-admin-users": "6.0.0-alpha.1",
36
+ "@webiny/api-i18n": "6.0.0-alpha.1",
37
+ "@webiny/api-security": "6.0.0-alpha.1",
38
+ "@webiny/api-tenancy": "6.0.0-alpha.1",
39
+ "@webiny/api-wcp": "6.0.0-alpha.1",
40
+ "@webiny/handler": "6.0.0-alpha.1",
41
+ "@webiny/handler-aws": "6.0.0-alpha.1",
42
42
  "@webiny/plugins": "0.0.0",
43
- "@webiny/project-utils": "5.43.3",
44
- "@webiny/wcp": "5.43.3",
43
+ "@webiny/project-utils": "6.0.0-alpha.1",
44
+ "@webiny/wcp": "6.0.0-alpha.1",
45
45
  "adm-zip": "0.5.16",
46
46
  "aws-sdk-client-mock": "4.1.0",
47
47
  "graphql": "15.9.0",
@@ -55,5 +55,5 @@
55
55
  "access": "public",
56
56
  "directory": "dist"
57
57
  },
58
- "gitHead": "c6d623eb1b715f3731434a8d3107b8fd8a1d6792"
58
+ "gitHead": "9bd236cf5e689f209a11bec089207dcc2d41a53c"
59
59
  }
@@ -1,5 +1,5 @@
1
1
  import type { ITaskResponseResult, ITaskRunParams } from "@webiny/tasks";
2
- import { IImportFromUrlController, IImportFromUrlControllerInput, IImportFromUrlControllerOutput } from "./abstractions/ImportFromUrlController";
2
+ import type { IImportFromUrlController, IImportFromUrlControllerInput, IImportFromUrlControllerOutput } from "./abstractions/ImportFromUrlController";
3
3
  import type { Context } from "../../types";
4
4
  export declare class ImportFromUrlController<C extends Context = Context, I extends IImportFromUrlControllerInput = IImportFromUrlControllerInput, O extends IImportFromUrlControllerOutput = IImportFromUrlControllerOutput> implements IImportFromUrlController<C, I, O> {
5
5
  run(params: ITaskRunParams<C, I, O>): Promise<ITaskResponseResult<I, O>>;
@@ -1 +1 @@
1
- {"version":3,"names":["_ImportFromUrlController","require","_ImportFromUrlControllerDownloadStep","_ImportFromUrlControllerProcessEntriesStep","_ImportFromUrlControllerProcessAssetsStep","getDefaultStepValues","files","triggered","finished","done","failed","invalid","aborted","ImportFromUrlController","run","params","context","response","input","modelId","error","message","code","Array","isArray","length","cms","getModel","ex","steps","downloadStep","IImportFromUrlControllerInputStep","DOWNLOAD","step","ImportFromUrlControllerDownloadStep","execute","data","processEntriesStep","PROCESS_ENTRIES","ImportFromUrlControllerProcessEntriesStep","processAssetsStep","PROCESS_ASSETS","ImportFromUrlControllerProcessAssetsStep","concat","output","exports"],"sources":["ImportFromUrlController.ts"],"sourcesContent":["import type { ITaskResponseResult, ITaskRunParams } from \"@webiny/tasks\";\nimport {\n IImportFromUrlController,\n IImportFromUrlControllerInput,\n IImportFromUrlControllerInputStep,\n IImportFromUrlControllerInputStepsStep,\n IImportFromUrlControllerOutput\n} from \"~/tasks/domain/abstractions/ImportFromUrlController\";\nimport type { Context } from \"~/types\";\nimport { ImportFromUrlControllerDownloadStep } from \"~/tasks/domain/importFromUrlControllerSteps/ImportFromUrlControllerDownloadStep\";\nimport { ImportFromUrlControllerProcessEntriesStep } from \"./importFromUrlControllerSteps/ImportFromUrlControllerProcessEntriesStep\";\nimport { ImportFromUrlControllerProcessAssetsStep } from \"./importFromUrlControllerSteps/ImportFromUrlControllerProcessAssetsStep\";\n\nconst getDefaultStepValues = (): IImportFromUrlControllerInputStepsStep => {\n return {\n files: [],\n triggered: false,\n finished: false,\n done: [],\n failed: [],\n invalid: [],\n aborted: []\n };\n};\n\nexport class ImportFromUrlController<\n C extends Context = Context,\n I extends IImportFromUrlControllerInput = IImportFromUrlControllerInput,\n O extends IImportFromUrlControllerOutput = IImportFromUrlControllerOutput\n> implements IImportFromUrlController<C, I, O>\n{\n public async run(params: ITaskRunParams<C, I, O>): Promise<ITaskResponseResult<I, O>> {\n const { context, response, input } = params;\n\n if (!input.modelId) {\n return response.error({\n message: `Missing \"modelId\" in the input.`,\n code: \"MISSING_MODEL_ID\"\n });\n } else if (Array.isArray(input.files) === false || input.files.length === 0) {\n return response.error({\n message: `No files found in the provided data.`,\n code: \"NO_FILES_FOUND\"\n });\n }\n\n try {\n await context.cms.getModel(input.modelId);\n } catch (ex) {\n return response.error({\n message: `Model \"${input.modelId}\" not found.`,\n code: \"MODEL_NOT_FOUND\"\n });\n }\n\n if (!input.steps) {\n input.steps = {};\n }\n\n const downloadStep =\n input.steps[IImportFromUrlControllerInputStep.DOWNLOAD] || getDefaultStepValues();\n\n if (!downloadStep.finished) {\n const step = new ImportFromUrlControllerDownloadStep<C, I, O>();\n return await step.execute(params);\n } else if (downloadStep.failed.length) {\n return response.error({\n message: `Failed to download files.`,\n code: \"FAILED_DOWNLOADING_FILES\",\n data: input.steps\n });\n }\n\n const processEntriesStep =\n input.steps[IImportFromUrlControllerInputStep.PROCESS_ENTRIES] ||\n getDefaultStepValues();\n if (!processEntriesStep.finished) {\n const step = new ImportFromUrlControllerProcessEntriesStep<C, I, O>();\n return await step.execute(params);\n } else if (processEntriesStep.failed.length) {\n return response.error({\n message: `Failed to process entries.`,\n code: \"FAILED_PROCESSING_ENTRIES\",\n data: input.steps\n });\n }\n\n const processAssetsStep =\n input.steps[IImportFromUrlControllerInputStep.PROCESS_ASSETS] || getDefaultStepValues();\n if (!processAssetsStep.finished) {\n const step = new ImportFromUrlControllerProcessAssetsStep<C, I, O>();\n return await step.execute(params);\n } else if (processAssetsStep.failed.length) {\n return response.error({\n message: `Failed to process assets.`,\n code: \"FAILED_PROCESSING_ASSETS\",\n data: input.steps\n });\n }\n\n const files = downloadStep.files\n .concat(processEntriesStep.files)\n .concat(processAssetsStep.files);\n\n const output: IImportFromUrlControllerOutput = {\n files,\n done: [],\n invalid: [],\n failed: [],\n aborted: []\n };\n\n return response.done(output as O);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_ImportFromUrlController","require","_ImportFromUrlControllerDownloadStep","_ImportFromUrlControllerProcessEntriesStep","_ImportFromUrlControllerProcessAssetsStep","getDefaultStepValues","files","triggered","finished","done","failed","invalid","aborted","ImportFromUrlController","run","params","context","response","input","modelId","error","message","code","Array","isArray","length","cms","getModel","ex","steps","downloadStep","IImportFromUrlControllerInputStep","DOWNLOAD","step","ImportFromUrlControllerDownloadStep","execute","data","processEntriesStep","PROCESS_ENTRIES","ImportFromUrlControllerProcessEntriesStep","processAssetsStep","PROCESS_ASSETS","ImportFromUrlControllerProcessAssetsStep","concat","output","exports"],"sources":["ImportFromUrlController.ts"],"sourcesContent":["import type { ITaskResponseResult, ITaskRunParams } from \"@webiny/tasks\";\nimport type {\n IImportFromUrlController,\n IImportFromUrlControllerInput,\n IImportFromUrlControllerInputStepsStep,\n IImportFromUrlControllerOutput\n} from \"~/tasks/domain/abstractions/ImportFromUrlController\";\nimport { IImportFromUrlControllerInputStep } from \"~/tasks/domain/abstractions/ImportFromUrlController\";\nimport type { Context } from \"~/types\";\nimport { ImportFromUrlControllerDownloadStep } from \"~/tasks/domain/importFromUrlControllerSteps/ImportFromUrlControllerDownloadStep\";\nimport { ImportFromUrlControllerProcessEntriesStep } from \"./importFromUrlControllerSteps/ImportFromUrlControllerProcessEntriesStep\";\nimport { ImportFromUrlControllerProcessAssetsStep } from \"./importFromUrlControllerSteps/ImportFromUrlControllerProcessAssetsStep\";\n\nconst getDefaultStepValues = (): IImportFromUrlControllerInputStepsStep => {\n return {\n files: [],\n triggered: false,\n finished: false,\n done: [],\n failed: [],\n invalid: [],\n aborted: []\n };\n};\n\nexport class ImportFromUrlController<\n C extends Context = Context,\n I extends IImportFromUrlControllerInput = IImportFromUrlControllerInput,\n O extends IImportFromUrlControllerOutput = IImportFromUrlControllerOutput\n> implements IImportFromUrlController<C, I, O>\n{\n public async run(params: ITaskRunParams<C, I, O>): Promise<ITaskResponseResult<I, O>> {\n const { context, response, input } = params;\n\n if (!input.modelId) {\n return response.error({\n message: `Missing \"modelId\" in the input.`,\n code: \"MISSING_MODEL_ID\"\n });\n } else if (Array.isArray(input.files) === false || input.files.length === 0) {\n return response.error({\n message: `No files found in the provided data.`,\n code: \"NO_FILES_FOUND\"\n });\n }\n\n try {\n await context.cms.getModel(input.modelId);\n } catch (ex) {\n return response.error({\n message: `Model \"${input.modelId}\" not found.`,\n code: \"MODEL_NOT_FOUND\"\n });\n }\n\n if (!input.steps) {\n input.steps = {};\n }\n\n const downloadStep =\n input.steps[IImportFromUrlControllerInputStep.DOWNLOAD] || getDefaultStepValues();\n\n if (!downloadStep.finished) {\n const step = new ImportFromUrlControllerDownloadStep<C, I, O>();\n return await step.execute(params);\n } else if (downloadStep.failed.length) {\n return response.error({\n message: `Failed to download files.`,\n code: \"FAILED_DOWNLOADING_FILES\",\n data: input.steps\n });\n }\n\n const processEntriesStep =\n input.steps[IImportFromUrlControllerInputStep.PROCESS_ENTRIES] ||\n getDefaultStepValues();\n if (!processEntriesStep.finished) {\n const step = new ImportFromUrlControllerProcessEntriesStep<C, I, O>();\n return await step.execute(params);\n } else if (processEntriesStep.failed.length) {\n return response.error({\n message: `Failed to process entries.`,\n code: \"FAILED_PROCESSING_ENTRIES\",\n data: input.steps\n });\n }\n\n const processAssetsStep =\n input.steps[IImportFromUrlControllerInputStep.PROCESS_ASSETS] || getDefaultStepValues();\n if (!processAssetsStep.finished) {\n const step = new ImportFromUrlControllerProcessAssetsStep<C, I, O>();\n return await step.execute(params);\n } else if (processAssetsStep.failed.length) {\n return response.error({\n message: `Failed to process assets.`,\n code: \"FAILED_PROCESSING_ASSETS\",\n data: input.steps\n });\n }\n\n const files = downloadStep.files\n .concat(processEntriesStep.files)\n .concat(processAssetsStep.files);\n\n const output: IImportFromUrlControllerOutput = {\n files,\n done: [],\n invalid: [],\n failed: [],\n aborted: []\n };\n\n return response.done(output as O);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,3 +1,3 @@
1
- import { Context } from "../../types";
1
+ import type { Context } from "../../types";
2
2
  import type { IImportFromUrlProcessAssets, IImportFromUrlProcessAssetsInput } from "./importFromUrlProcessAssets/abstractions/ImportFromUrlProcessAssets";
3
3
  export declare const createImportFromUrlProcessAssets: <C extends Context = Context, I extends IImportFromUrlProcessAssetsInput = IImportFromUrlProcessAssetsInput, O extends import("@webiny/tasks").ITaskResponseDoneResultOutput = import("@webiny/tasks").ITaskResponseDoneResultOutput>() => IImportFromUrlProcessAssets<C, I, O>;
@@ -1 +1 @@
1
- {"version":3,"names":["_s3Client","require","_ImportFromUrlProcessAssets","_getBucket","_decompressor","_upload","_fileFetcher","createImportFromUrlProcessAssets","client","createS3Client","bucket","getBucket","reader","createCompressedFileReader","decompressor","createDecompressor","createUploadFactory","filename","createMultipartUploadFactory","createHandler","createMultipartUpload","fileFetcher","FileFetcher","ImportFromUrlProcessAssets","exports"],"sources":["createImportFromUrlProcessAssets.ts"],"sourcesContent":["import { Context } from \"~/types\";\nimport { createS3Client } from \"~/tasks/utils/helpers/s3Client\";\nimport { ImportFromUrlProcessAssets } from \"./importFromUrlProcessAssets/ImportFromUrlProcessAssets\";\nimport type {\n IImportFromUrlProcessAssets,\n IImportFromUrlProcessAssetsInput,\n IImportFromUrlProcessAssetsOutput\n} from \"./importFromUrlProcessAssets/abstractions/ImportFromUrlProcessAssets\";\nimport { getBucket } from \"~/tasks/utils/helpers/getBucket\";\nimport { createCompressedFileReader, createDecompressor } from \"~/tasks/utils/decompressor\";\nimport { createMultipartUpload, createMultipartUploadFactory } from \"~/tasks/utils/upload\";\nimport { FileFetcher } from \"~/tasks/utils/fileFetcher\";\n\nexport const createImportFromUrlProcessAssets = <\n C extends Context = Context,\n I extends IImportFromUrlProcessAssetsInput = IImportFromUrlProcessAssetsInput,\n O extends IImportFromUrlProcessAssetsOutput = IImportFromUrlProcessAssetsOutput\n>(): IImportFromUrlProcessAssets<C, I, O> => {\n const client = createS3Client();\n const bucket = getBucket();\n const reader = createCompressedFileReader({\n client,\n bucket\n });\n const decompressor = createDecompressor({\n createUploadFactory: filename => {\n return createMultipartUploadFactory({\n filename,\n client,\n bucket,\n createHandler: createMultipartUpload\n });\n }\n });\n\n const fileFetcher = new FileFetcher({\n client,\n bucket\n });\n\n return new ImportFromUrlProcessAssets<C, I, O>({\n fileFetcher,\n reader,\n decompressor\n });\n};\n"],"mappings":";;;;;;AACA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,2BAAA,GAAAD,OAAA;AAMA,IAAAE,UAAA,GAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,YAAA,GAAAL,OAAA;AAEO,MAAMM,gCAAgC,GAAGA,CAAA,KAIH;EACzC,MAAMC,MAAM,GAAG,IAAAC,wBAAc,EAAC,CAAC;EAC/B,MAAMC,MAAM,GAAG,IAAAC,oBAAS,EAAC,CAAC;EAC1B,MAAMC,MAAM,GAAG,IAAAC,wCAA0B,EAAC;IACtCL,MAAM;IACNE;EACJ,CAAC,CAAC;EACF,MAAMI,YAAY,GAAG,IAAAC,gCAAkB,EAAC;IACpCC,mBAAmB,EAAEC,QAAQ,IAAI;MAC7B,OAAO,IAAAC,oCAA4B,EAAC;QAChCD,QAAQ;QACRT,MAAM;QACNE,MAAM;QACNS,aAAa,EAAEC;MACnB,CAAC,CAAC;IACN;EACJ,CAAC,CAAC;EAEF,MAAMC,WAAW,GAAG,IAAIC,wBAAW,CAAC;IAChCd,MAAM;IACNE;EACJ,CAAC,CAAC;EAEF,OAAO,IAAIa,sDAA0B,CAAU;IAC3CF,WAAW;IACXT,MAAM;IACNE;EACJ,CAAC,CAAC;AACN,CAAC;AAACU,OAAA,CAAAjB,gCAAA,GAAAA,gCAAA","ignoreList":[]}
1
+ {"version":3,"names":["_s3Client","require","_ImportFromUrlProcessAssets","_getBucket","_decompressor","_upload","_fileFetcher","createImportFromUrlProcessAssets","client","createS3Client","bucket","getBucket","reader","createCompressedFileReader","decompressor","createDecompressor","createUploadFactory","filename","createMultipartUploadFactory","createHandler","createMultipartUpload","fileFetcher","FileFetcher","ImportFromUrlProcessAssets","exports"],"sources":["createImportFromUrlProcessAssets.ts"],"sourcesContent":["import type { Context } from \"~/types\";\nimport { createS3Client } from \"~/tasks/utils/helpers/s3Client\";\nimport { ImportFromUrlProcessAssets } from \"./importFromUrlProcessAssets/ImportFromUrlProcessAssets\";\nimport type {\n IImportFromUrlProcessAssets,\n IImportFromUrlProcessAssetsInput,\n IImportFromUrlProcessAssetsOutput\n} from \"./importFromUrlProcessAssets/abstractions/ImportFromUrlProcessAssets\";\nimport { getBucket } from \"~/tasks/utils/helpers/getBucket\";\nimport { createCompressedFileReader, createDecompressor } from \"~/tasks/utils/decompressor\";\nimport { createMultipartUpload, createMultipartUploadFactory } from \"~/tasks/utils/upload\";\nimport { FileFetcher } from \"~/tasks/utils/fileFetcher\";\n\nexport const createImportFromUrlProcessAssets = <\n C extends Context = Context,\n I extends IImportFromUrlProcessAssetsInput = IImportFromUrlProcessAssetsInput,\n O extends IImportFromUrlProcessAssetsOutput = IImportFromUrlProcessAssetsOutput\n>(): IImportFromUrlProcessAssets<C, I, O> => {\n const client = createS3Client();\n const bucket = getBucket();\n const reader = createCompressedFileReader({\n client,\n bucket\n });\n const decompressor = createDecompressor({\n createUploadFactory: filename => {\n return createMultipartUploadFactory({\n filename,\n client,\n bucket,\n createHandler: createMultipartUpload\n });\n }\n });\n\n const fileFetcher = new FileFetcher({\n client,\n bucket\n });\n\n return new ImportFromUrlProcessAssets<C, I, O>({\n fileFetcher,\n reader,\n decompressor\n });\n};\n"],"mappings":";;;;;;AACA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,2BAAA,GAAAD,OAAA;AAMA,IAAAE,UAAA,GAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,YAAA,GAAAL,OAAA;AAEO,MAAMM,gCAAgC,GAAGA,CAAA,KAIH;EACzC,MAAMC,MAAM,GAAG,IAAAC,wBAAc,EAAC,CAAC;EAC/B,MAAMC,MAAM,GAAG,IAAAC,oBAAS,EAAC,CAAC;EAC1B,MAAMC,MAAM,GAAG,IAAAC,wCAA0B,EAAC;IACtCL,MAAM;IACNE;EACJ,CAAC,CAAC;EACF,MAAMI,YAAY,GAAG,IAAAC,gCAAkB,EAAC;IACpCC,mBAAmB,EAAEC,QAAQ,IAAI;MAC7B,OAAO,IAAAC,oCAA4B,EAAC;QAChCD,QAAQ;QACRT,MAAM;QACNE,MAAM;QACNS,aAAa,EAAEC;MACnB,CAAC,CAAC;IACN;EACJ,CAAC,CAAC;EAEF,MAAMC,WAAW,GAAG,IAAIC,wBAAW,CAAC;IAChCd,MAAM;IACNE;EACJ,CAAC,CAAC;EAEF,OAAO,IAAIa,sDAA0B,CAAU;IAC3CF,WAAW;IACXT,MAAM;IACNE;EACJ,CAAC,CAAC;AACN,CAAC;AAACU,OAAA,CAAAjB,gCAAA,GAAAA,gCAAA","ignoreList":[]}
@@ -1,3 +1,3 @@
1
- import { Context } from "../../types";
1
+ import type { Context } from "../../types";
2
2
  import type { IImportFromUrlProcessEntries, IImportFromUrlProcessEntriesInput, IImportFromUrlProcessEntriesOutput } from "./importFromUrlProcessEntries/abstractions/ImportFromUrlProcessEntries";
3
3
  export declare const createImportFromUrlProcessEntries: <C extends Context = Context, I extends IImportFromUrlProcessEntriesInput = IImportFromUrlProcessEntriesInput, O extends IImportFromUrlProcessEntriesOutput = IImportFromUrlProcessEntriesOutput>() => IImportFromUrlProcessEntries<C, I, O>;
@@ -1 +1 @@
1
- {"version":3,"names":["_s3Client","require","_ImportFromUrlProcessEntries","_getBucket","_decompressor","_upload","_fileFetcher","createImportFromUrlProcessEntries","client","createS3Client","bucket","getBucket","reader","createCompressedFileReader","decompressor","createDecompressor","createUploadFactory","filename","createMultipartUploadFactory","createHandler","createMultipartUpload","fileFetcher","FileFetcher","ImportFromUrlProcessEntries","exports"],"sources":["createImportFromUrlProcessEntries.ts"],"sourcesContent":["import { Context } from \"~/types\";\nimport { createS3Client } from \"~/tasks/utils/helpers/s3Client\";\nimport { ImportFromUrlProcessEntries } from \"./importFromUrlProcessEntries/ImportFromUrlProcessEntries\";\nimport type {\n IImportFromUrlProcessEntries,\n IImportFromUrlProcessEntriesInput,\n IImportFromUrlProcessEntriesOutput\n} from \"./importFromUrlProcessEntries/abstractions/ImportFromUrlProcessEntries\";\nimport { getBucket } from \"~/tasks/utils/helpers/getBucket\";\nimport { createCompressedFileReader, createDecompressor } from \"~/tasks/utils/decompressor\";\nimport { createMultipartUpload, createMultipartUploadFactory } from \"~/tasks/utils/upload\";\nimport { FileFetcher } from \"~/tasks/utils/fileFetcher\";\n\nexport const createImportFromUrlProcessEntries = <\n C extends Context = Context,\n I extends IImportFromUrlProcessEntriesInput = IImportFromUrlProcessEntriesInput,\n O extends IImportFromUrlProcessEntriesOutput = IImportFromUrlProcessEntriesOutput\n>(): IImportFromUrlProcessEntries<C, I, O> => {\n const client = createS3Client();\n const bucket = getBucket();\n\n const reader = createCompressedFileReader({\n client,\n bucket\n });\n const decompressor = createDecompressor({\n createUploadFactory: filename => {\n return createMultipartUploadFactory({\n filename,\n client,\n bucket,\n createHandler: createMultipartUpload\n });\n }\n });\n\n const fileFetcher = new FileFetcher({\n client,\n bucket\n });\n\n return new ImportFromUrlProcessEntries<C, I, O>({\n fileFetcher,\n reader,\n decompressor\n });\n};\n"],"mappings":";;;;;;AACA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,4BAAA,GAAAD,OAAA;AAMA,IAAAE,UAAA,GAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,YAAA,GAAAL,OAAA;AAEO,MAAMM,iCAAiC,GAAGA,CAAA,KAIH;EAC1C,MAAMC,MAAM,GAAG,IAAAC,wBAAc,EAAC,CAAC;EAC/B,MAAMC,MAAM,GAAG,IAAAC,oBAAS,EAAC,CAAC;EAE1B,MAAMC,MAAM,GAAG,IAAAC,wCAA0B,EAAC;IACtCL,MAAM;IACNE;EACJ,CAAC,CAAC;EACF,MAAMI,YAAY,GAAG,IAAAC,gCAAkB,EAAC;IACpCC,mBAAmB,EAAEC,QAAQ,IAAI;MAC7B,OAAO,IAAAC,oCAA4B,EAAC;QAChCD,QAAQ;QACRT,MAAM;QACNE,MAAM;QACNS,aAAa,EAAEC;MACnB,CAAC,CAAC;IACN;EACJ,CAAC,CAAC;EAEF,MAAMC,WAAW,GAAG,IAAIC,wBAAW,CAAC;IAChCd,MAAM;IACNE;EACJ,CAAC,CAAC;EAEF,OAAO,IAAIa,wDAA2B,CAAU;IAC5CF,WAAW;IACXT,MAAM;IACNE;EACJ,CAAC,CAAC;AACN,CAAC;AAACU,OAAA,CAAAjB,iCAAA,GAAAA,iCAAA","ignoreList":[]}
1
+ {"version":3,"names":["_s3Client","require","_ImportFromUrlProcessEntries","_getBucket","_decompressor","_upload","_fileFetcher","createImportFromUrlProcessEntries","client","createS3Client","bucket","getBucket","reader","createCompressedFileReader","decompressor","createDecompressor","createUploadFactory","filename","createMultipartUploadFactory","createHandler","createMultipartUpload","fileFetcher","FileFetcher","ImportFromUrlProcessEntries","exports"],"sources":["createImportFromUrlProcessEntries.ts"],"sourcesContent":["import type { Context } from \"~/types\";\nimport { createS3Client } from \"~/tasks/utils/helpers/s3Client\";\nimport { ImportFromUrlProcessEntries } from \"./importFromUrlProcessEntries/ImportFromUrlProcessEntries\";\nimport type {\n IImportFromUrlProcessEntries,\n IImportFromUrlProcessEntriesInput,\n IImportFromUrlProcessEntriesOutput\n} from \"./importFromUrlProcessEntries/abstractions/ImportFromUrlProcessEntries\";\nimport { getBucket } from \"~/tasks/utils/helpers/getBucket\";\nimport { createCompressedFileReader, createDecompressor } from \"~/tasks/utils/decompressor\";\nimport { createMultipartUpload, createMultipartUploadFactory } from \"~/tasks/utils/upload\";\nimport { FileFetcher } from \"~/tasks/utils/fileFetcher\";\n\nexport const createImportFromUrlProcessEntries = <\n C extends Context = Context,\n I extends IImportFromUrlProcessEntriesInput = IImportFromUrlProcessEntriesInput,\n O extends IImportFromUrlProcessEntriesOutput = IImportFromUrlProcessEntriesOutput\n>(): IImportFromUrlProcessEntries<C, I, O> => {\n const client = createS3Client();\n const bucket = getBucket();\n\n const reader = createCompressedFileReader({\n client,\n bucket\n });\n const decompressor = createDecompressor({\n createUploadFactory: filename => {\n return createMultipartUploadFactory({\n filename,\n client,\n bucket,\n createHandler: createMultipartUpload\n });\n }\n });\n\n const fileFetcher = new FileFetcher({\n client,\n bucket\n });\n\n return new ImportFromUrlProcessEntries<C, I, O>({\n fileFetcher,\n reader,\n decompressor\n });\n};\n"],"mappings":";;;;;;AACA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,4BAAA,GAAAD,OAAA;AAMA,IAAAE,UAAA,GAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,YAAA,GAAAL,OAAA;AAEO,MAAMM,iCAAiC,GAAGA,CAAA,KAIH;EAC1C,MAAMC,MAAM,GAAG,IAAAC,wBAAc,EAAC,CAAC;EAC/B,MAAMC,MAAM,GAAG,IAAAC,oBAAS,EAAC,CAAC;EAE1B,MAAMC,MAAM,GAAG,IAAAC,wCAA0B,EAAC;IACtCL,MAAM;IACNE;EACJ,CAAC,CAAC;EACF,MAAMI,YAAY,GAAG,IAAAC,gCAAkB,EAAC;IACpCC,mBAAmB,EAAEC,QAAQ,IAAI;MAC7B,OAAO,IAAAC,oCAA4B,EAAC;QAChCD,QAAQ;QACRT,MAAM;QACNE,MAAM;QACNS,aAAa,EAAEC;MACnB,CAAC,CAAC;IACN;EACJ,CAAC,CAAC;EAEF,MAAMC,WAAW,GAAG,IAAIC,wBAAW,CAAC;IAChCd,MAAM;IACNE;EACJ,CAAC,CAAC;EAEF,OAAO,IAAIa,wDAA2B,CAAU;IAC5CF,WAAW;IACXT,MAAM;IACNE;EACJ,CAAC,CAAC;AACN,CAAC;AAACU,OAAA,CAAAjB,iCAAA,GAAAA,iCAAA","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import type { ImportFromUrlControllerStep } from "./abstractions/ImportFromUrlControllerStep";
2
- import { Context } from "../../../types";
2
+ import type { Context } from "../../../types";
3
3
  import type { IImportFromUrlControllerInput, IImportFromUrlControllerOutput } from "../abstractions/ImportFromUrlController";
4
4
  import type { ITaskResponseResult, ITaskRunParams } from "@webiny/tasks";
5
5
  export declare class ImportFromUrlControllerDownloadStep<C extends Context = Context, I extends IImportFromUrlControllerInput = IImportFromUrlControllerInput, O extends IImportFromUrlControllerOutput = IImportFromUrlControllerOutput> implements ImportFromUrlControllerStep<C, I, O> {
@@ -1 +1 @@
1
- {"version":3,"names":["_constants","require","_getBackOffSeconds","_types","_ImportFromUrlController","_getChildTasks","ImportFromUrlControllerDownloadStep","execute","params","context","response","input","trigger","store","task","getTask","step","steps","IImportFromUrlControllerInputStep","DOWNLOAD","triggered","files","filter","file","type","CmsImportExportFileType","ENTRIES","ASSETS","length","error","message","code","name","definition","IMPORT_FROM_URL_DOWNLOAD_TASK","modelId","output","continue","seconds","getBackOffSeconds","iterations","finished","failed","running","invalid","aborted","done","collection","getChildTasks","map","item","data","exports"],"sources":["ImportFromUrlControllerDownloadStep.ts"],"sourcesContent":["import type { ImportFromUrlControllerStep } from \"./abstractions/ImportFromUrlControllerStep\";\nimport type {\n IImportFromUrlDownloadInput,\n IImportFromUrlDownloadOutput\n} from \"~/tasks/domain/abstractions/ImportFromUrlDownload\";\nimport { IMPORT_FROM_URL_DOWNLOAD_TASK } from \"~/tasks/constants\";\nimport { getBackOffSeconds } from \"~/tasks/utils/helpers/getBackOffSeconds\";\nimport { CmsImportExportFileType, Context } from \"~/types\";\nimport type {\n IImportFromUrlControllerInput,\n IImportFromUrlControllerOutput\n} from \"~/tasks/domain/abstractions/ImportFromUrlController\";\nimport { IImportFromUrlControllerInputStep } from \"~/tasks/domain/abstractions/ImportFromUrlController\";\nimport type { ITask, ITaskResponseResult, ITaskRunParams } from \"@webiny/tasks\";\nimport { getChildTasks } from \"./getChildTasks\";\n\nexport class ImportFromUrlControllerDownloadStep<\n C extends Context = Context,\n I extends IImportFromUrlControllerInput = IImportFromUrlControllerInput,\n O extends IImportFromUrlControllerOutput = IImportFromUrlControllerOutput\n> implements ImportFromUrlControllerStep<C, I, O>\n{\n public async execute(params: ITaskRunParams<C, I, O>): Promise<ITaskResponseResult<I, O>> {\n const { context, response, input, trigger, store } = params;\n\n const task = store.getTask() as ITask<I, O>;\n\n const step = input.steps[IImportFromUrlControllerInputStep.DOWNLOAD];\n if (!step?.triggered) {\n const files = input.files.filter(file => {\n return (\n file.type === CmsImportExportFileType.ENTRIES ||\n file.type === CmsImportExportFileType.ASSETS\n );\n });\n if (files.length === 0) {\n return response.error({\n message: `No files found in the provided data.`,\n code: \"NO_FILES_FOUND\"\n });\n }\n for (const file of files) {\n await trigger<IImportFromUrlDownloadInput>({\n name: `Import From Url - Download`,\n definition: IMPORT_FROM_URL_DOWNLOAD_TASK,\n input: {\n file,\n modelId: input.modelId\n }\n });\n }\n\n const output: I = {\n ...input,\n steps: {\n ...input.steps,\n [IImportFromUrlControllerInputStep.DOWNLOAD]: {\n ...step,\n triggered: true\n }\n }\n };\n\n return response.continue(output, {\n seconds: getBackOffSeconds(task.iterations)\n });\n } else if (step.finished !== true) {\n const { failed, running, invalid, aborted, done, collection } = await getChildTasks<\n IImportFromUrlDownloadInput,\n IImportFromUrlDownloadOutput\n >({\n context,\n task,\n definition: IMPORT_FROM_URL_DOWNLOAD_TASK\n });\n\n /**\n * If there are any running tasks, we should continue waiting.\n */\n if (running.length > 0) {\n return response.continue(input, {\n seconds: getBackOffSeconds(task.iterations)\n });\n } else if (collection.length === 0) {\n return response.error({\n message: \"No download tasks found. We are not continuing.\",\n code: \"NO_DOWNLOAD_TASKS\"\n });\n }\n\n const files = collection\n .map(item => {\n return item.output?.file;\n })\n .filter((file): file is string => {\n return !!file;\n });\n\n const output: I = {\n ...input,\n steps: {\n ...input.steps,\n [IImportFromUrlControllerInputStep.DOWNLOAD]: {\n ...step,\n files,\n failed,\n invalid,\n aborted,\n done,\n finished: true\n }\n }\n };\n\n if (failed.length > 0 || aborted.length > 0 || invalid.length > 0) {\n return response.error({\n message: \"Some download tasks failed.\",\n code: \"DOWNLOAD_FAILED\",\n data: {\n failed,\n aborted,\n invalid\n }\n });\n }\n\n return response.continue(output);\n }\n return response.error({\n message: \"Impossible to get to this point. Fatal error.\"\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_constants","require","_getBackOffSeconds","_types","_ImportFromUrlController","_getChildTasks","ImportFromUrlControllerDownloadStep","execute","params","context","response","input","trigger","store","task","getTask","step","steps","IImportFromUrlControllerInputStep","DOWNLOAD","triggered","files","filter","file","type","CmsImportExportFileType","ENTRIES","ASSETS","length","error","message","code","name","definition","IMPORT_FROM_URL_DOWNLOAD_TASK","modelId","output","continue","seconds","getBackOffSeconds","iterations","finished","failed","running","invalid","aborted","done","collection","getChildTasks","map","item","data","exports"],"sources":["ImportFromUrlControllerDownloadStep.ts"],"sourcesContent":["import type { ImportFromUrlControllerStep } from \"./abstractions/ImportFromUrlControllerStep\";\nimport type {\n IImportFromUrlDownloadInput,\n IImportFromUrlDownloadOutput\n} from \"~/tasks/domain/abstractions/ImportFromUrlDownload\";\nimport { IMPORT_FROM_URL_DOWNLOAD_TASK } from \"~/tasks/constants\";\nimport { getBackOffSeconds } from \"~/tasks/utils/helpers/getBackOffSeconds\";\nimport type { Context } from \"~/types\";\nimport { CmsImportExportFileType } from \"~/types\";\nimport type {\n IImportFromUrlControllerInput,\n IImportFromUrlControllerOutput\n} from \"~/tasks/domain/abstractions/ImportFromUrlController\";\nimport { IImportFromUrlControllerInputStep } from \"~/tasks/domain/abstractions/ImportFromUrlController\";\nimport type { ITask, ITaskResponseResult, ITaskRunParams } from \"@webiny/tasks\";\nimport { getChildTasks } from \"./getChildTasks\";\n\nexport class ImportFromUrlControllerDownloadStep<\n C extends Context = Context,\n I extends IImportFromUrlControllerInput = IImportFromUrlControllerInput,\n O extends IImportFromUrlControllerOutput = IImportFromUrlControllerOutput\n> implements ImportFromUrlControllerStep<C, I, O>\n{\n public async execute(params: ITaskRunParams<C, I, O>): Promise<ITaskResponseResult<I, O>> {\n const { context, response, input, trigger, store } = params;\n\n const task = store.getTask() as ITask<I, O>;\n\n const step = input.steps[IImportFromUrlControllerInputStep.DOWNLOAD];\n if (!step?.triggered) {\n const files = input.files.filter(file => {\n return (\n file.type === CmsImportExportFileType.ENTRIES ||\n file.type === CmsImportExportFileType.ASSETS\n );\n });\n if (files.length === 0) {\n return response.error({\n message: `No files found in the provided data.`,\n code: \"NO_FILES_FOUND\"\n });\n }\n for (const file of files) {\n await trigger<IImportFromUrlDownloadInput>({\n name: `Import From Url - Download`,\n definition: IMPORT_FROM_URL_DOWNLOAD_TASK,\n input: {\n file,\n modelId: input.modelId\n }\n });\n }\n\n const output: I = {\n ...input,\n steps: {\n ...input.steps,\n [IImportFromUrlControllerInputStep.DOWNLOAD]: {\n ...step,\n triggered: true\n }\n }\n };\n\n return response.continue(output, {\n seconds: getBackOffSeconds(task.iterations)\n });\n } else if (step.finished !== true) {\n const { failed, running, invalid, aborted, done, collection } = await getChildTasks<\n IImportFromUrlDownloadInput,\n IImportFromUrlDownloadOutput\n >({\n context,\n task,\n definition: IMPORT_FROM_URL_DOWNLOAD_TASK\n });\n\n /**\n * If there are any running tasks, we should continue waiting.\n */\n if (running.length > 0) {\n return response.continue(input, {\n seconds: getBackOffSeconds(task.iterations)\n });\n } else if (collection.length === 0) {\n return response.error({\n message: \"No download tasks found. We are not continuing.\",\n code: \"NO_DOWNLOAD_TASKS\"\n });\n }\n\n const files = collection\n .map(item => {\n return item.output?.file;\n })\n .filter((file): file is string => {\n return !!file;\n });\n\n const output: I = {\n ...input,\n steps: {\n ...input.steps,\n [IImportFromUrlControllerInputStep.DOWNLOAD]: {\n ...step,\n files,\n failed,\n invalid,\n aborted,\n done,\n finished: true\n }\n }\n };\n\n if (failed.length > 0 || aborted.length > 0 || invalid.length > 0) {\n return response.error({\n message: \"Some download tasks failed.\",\n code: \"DOWNLOAD_FAILED\",\n data: {\n failed,\n aborted,\n invalid\n }\n });\n }\n\n return response.continue(output);\n }\n return response.error({\n message: \"Impossible to get to this point. Fatal error.\"\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_tasks","require","mapServiceStatusToTaskStatus","task","serviceInfo","console","log","id","definitionId","status","TaskDataStatus","RUNNING","SUCCESS","FAILED","ABORTED","PENDING","getChildTasks","context","definition","running","done","invalid","aborted","failed","collection","items","tasks","listTasks","where","parentId","limit","push","taskStatus","fetchServiceInfo","error","exports"],"sources":["getChildTasks.ts"],"sourcesContent":["import type { ITask, ITaskResponseDoneResultOutput } from \"@webiny/tasks\";\nimport { TaskDataStatus } from \"@webiny/tasks\";\nimport type { Context } from \"~/types\";\nimport { IStepFunctionServiceFetchResult } from \"@webiny/tasks/service/StepFunctionServicePlugin\";\n\nexport interface IGetChildTasksParams {\n context: Context;\n task: ITask;\n definition: string;\n}\n\nconst mapServiceStatusToTaskStatus = (\n task: ITask<any, any>,\n serviceInfo: IStepFunctionServiceFetchResult | null\n) => {\n if (!serviceInfo) {\n console.log(`Service info is missing for task ${task.id} (${task.definitionId}).`);\n return null;\n }\n if (serviceInfo.status === \"RUNNING\") {\n return TaskDataStatus.RUNNING;\n } else if (serviceInfo.status === \"SUCCEEDED\") {\n return TaskDataStatus.SUCCESS;\n } else if (serviceInfo.status === \"FAILED\") {\n return TaskDataStatus.FAILED;\n } else if (serviceInfo.status === \"ABORTED\") {\n return TaskDataStatus.ABORTED;\n } else if (serviceInfo.status === \"TIMED_OUT\" || serviceInfo.status === \"PENDING_REDRIVE\") {\n console.log(\n `Service status is ${serviceInfo.status} for task ${task.id} (${task.definitionId}).`\n );\n return null;\n }\n return TaskDataStatus.PENDING;\n};\n\nexport const getChildTasks = async <I, O extends ITaskResponseDoneResultOutput>({\n context,\n task,\n definition\n}: IGetChildTasksParams) => {\n const running: string[] = [];\n const done: string[] = [];\n const invalid: string[] = [];\n const aborted: string[] = [];\n const failed: string[] = [];\n const collection: ITask<I, O>[] = [];\n\n const { items } = await context.tasks.listTasks<I, O>({\n where: {\n parentId: task.id,\n definitionId: definition\n },\n limit: 100000\n });\n for (const task of items) {\n collection.push(task);\n\n if (\n task.taskStatus === TaskDataStatus.RUNNING ||\n task.taskStatus === TaskDataStatus.PENDING\n ) {\n /**\n * We also need to check the actual status of the service.\n * It can happen that the task is marked as running, but the service is not running.\n */\n const serviceInfo = await context.tasks.fetchServiceInfo(task);\n const status = mapServiceStatusToTaskStatus(task, serviceInfo);\n\n if (status === null || !serviceInfo) {\n invalid.push(task.id);\n continue;\n } else if (status !== task.taskStatus) {\n console.error(\n `Status of the task is not same as the status of the service (task: ${task.taskStatus}, service: ${status} / ${serviceInfo.status}).`\n );\n invalid.push(task.id);\n continue;\n }\n running.push(task.id);\n continue;\n } else if (task.taskStatus === TaskDataStatus.SUCCESS) {\n done.push(task.id);\n continue;\n } else if (task.taskStatus === TaskDataStatus.FAILED) {\n failed.push(task.id);\n continue;\n } else if (task.taskStatus === TaskDataStatus.ABORTED) {\n aborted.push(task.id);\n continue;\n }\n /**\n * Impossible to be in a state not listed above, but just in case.\n */\n invalid.push(task.id);\n }\n return {\n running,\n done,\n invalid,\n aborted,\n failed,\n collection\n };\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_tasks","require","mapServiceStatusToTaskStatus","task","serviceInfo","console","log","id","definitionId","status","TaskDataStatus","RUNNING","SUCCESS","FAILED","ABORTED","PENDING","getChildTasks","context","definition","running","done","invalid","aborted","failed","collection","items","tasks","listTasks","where","parentId","limit","push","taskStatus","fetchServiceInfo","error","exports"],"sources":["getChildTasks.ts"],"sourcesContent":["import type { ITask, ITaskResponseDoneResultOutput } from \"@webiny/tasks\";\nimport { TaskDataStatus } from \"@webiny/tasks\";\nimport type { Context } from \"~/types\";\nimport type { IStepFunctionServiceFetchResult } from \"@webiny/tasks/service/StepFunctionServicePlugin\";\n\nexport interface IGetChildTasksParams {\n context: Context;\n task: ITask;\n definition: string;\n}\n\nconst mapServiceStatusToTaskStatus = (\n task: ITask<any, any>,\n serviceInfo: IStepFunctionServiceFetchResult | null\n) => {\n if (!serviceInfo) {\n console.log(`Service info is missing for task ${task.id} (${task.definitionId}).`);\n return null;\n }\n if (serviceInfo.status === \"RUNNING\") {\n return TaskDataStatus.RUNNING;\n } else if (serviceInfo.status === \"SUCCEEDED\") {\n return TaskDataStatus.SUCCESS;\n } else if (serviceInfo.status === \"FAILED\") {\n return TaskDataStatus.FAILED;\n } else if (serviceInfo.status === \"ABORTED\") {\n return TaskDataStatus.ABORTED;\n } else if (serviceInfo.status === \"TIMED_OUT\" || serviceInfo.status === \"PENDING_REDRIVE\") {\n console.log(\n `Service status is ${serviceInfo.status} for task ${task.id} (${task.definitionId}).`\n );\n return null;\n }\n return TaskDataStatus.PENDING;\n};\n\nexport const getChildTasks = async <I, O extends ITaskResponseDoneResultOutput>({\n context,\n task,\n definition\n}: IGetChildTasksParams) => {\n const running: string[] = [];\n const done: string[] = [];\n const invalid: string[] = [];\n const aborted: string[] = [];\n const failed: string[] = [];\n const collection: ITask<I, O>[] = [];\n\n const { items } = await context.tasks.listTasks<I, O>({\n where: {\n parentId: task.id,\n definitionId: definition\n },\n limit: 100000\n });\n for (const task of items) {\n collection.push(task);\n\n if (\n task.taskStatus === TaskDataStatus.RUNNING ||\n task.taskStatus === TaskDataStatus.PENDING\n ) {\n /**\n * We also need to check the actual status of the service.\n * It can happen that the task is marked as running, but the service is not running.\n */\n const serviceInfo = await context.tasks.fetchServiceInfo(task);\n const status = mapServiceStatusToTaskStatus(task, serviceInfo);\n\n if (status === null || !serviceInfo) {\n invalid.push(task.id);\n continue;\n } else if (status !== task.taskStatus) {\n console.error(\n `Status of the task is not same as the status of the service (task: ${task.taskStatus}, service: ${status} / ${serviceInfo.status}).`\n );\n invalid.push(task.id);\n continue;\n }\n running.push(task.id);\n continue;\n } else if (task.taskStatus === TaskDataStatus.SUCCESS) {\n done.push(task.id);\n continue;\n } else if (task.taskStatus === TaskDataStatus.FAILED) {\n failed.push(task.id);\n continue;\n } else if (task.taskStatus === TaskDataStatus.ABORTED) {\n aborted.push(task.id);\n continue;\n }\n /**\n * Impossible to be in a state not listed above, but just in case.\n */\n invalid.push(task.id);\n }\n return {\n running,\n done,\n invalid,\n aborted,\n failed,\n collection\n };\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import type { ITaskResponseResult, ITaskRunParams } from "@webiny/tasks/types";
2
2
  import type { IImportFromUrlProcessAssets, IImportFromUrlProcessAssetsInput, IImportFromUrlProcessAssetsOutput } from "./abstractions/ImportFromUrlProcessAssets";
3
- import { Context } from "../../../types";
3
+ import type { Context } from "../../../types";
4
4
  import type { IFileFetcher } from "../../utils/fileFetcher";
5
5
  import type { ICompressedFileReader, IDecompressor } from "../../utils/decompressor";
6
6
  export interface IImportFromUrlProcessAssetsParams {
@@ -1 +1 @@
1
- {"version":3,"names":["_types","require","_constants","_getFilePath","_error","ImportFromUrlProcessAssets","constructor","params","fileFetcher","reader","decompressor","run","context","response","input","isCloseToTimeout","isAborted","maxInsertErrors","modelId","error","message","code","file","type","CmsImportExportFileType","ASSETS","recordExists","id","result","fileManager","getFile","ex","structuredClone","errors","sources","read","key","length","manifest","readManifest","console","continue","aborted","data","record","takeNextAssetRecord","lastAsset","done","source","find","path","push","existsPhysically","exists","override","log","extract","target","Key","updateFile","createFile","size","name","meta","aliases","extensions","location","tags","extractPath","getFilePath","MANIFEST_JSON","WebinyError","Error","json","JSON","parse","assets","lastIndex","findIndex","asset","exports"],"sources":["ImportFromUrlProcessAssets.ts"],"sourcesContent":["import type { ITaskResponseResult, ITaskRunParams } from \"@webiny/tasks/types\";\nimport type {\n IImportFromUrlProcessAssets,\n IImportFromUrlProcessAssetsInput,\n IImportFromUrlProcessAssetsOutput\n} from \"~/tasks/domain/importFromUrlProcessAssets/abstractions/ImportFromUrlProcessAssets\";\nimport { CmsImportExportFileType, Context } from \"~/types\";\nimport type { IFileFetcher } from \"~/tasks/utils/fileFetcher\";\nimport type {\n ICompressedFileReader,\n IDecompressor,\n IUnzipperFile\n} from \"~/tasks/utils/decompressor\";\nimport { MANIFEST_JSON } from \"~/tasks/constants\";\nimport { getFilePath } from \"~/tasks/utils/helpers/getFilePath\";\nimport { WebinyError } from \"@webiny/error\";\nimport type { ICmsAssetsManifestJson } from \"~/tasks/utils/types\";\nimport type { IResolvedAsset } from \"~/tasks/utils/entryAssets\";\n\nexport interface IImportFromUrlProcessAssetsParams {\n fileFetcher: IFileFetcher;\n reader: ICompressedFileReader;\n decompressor: IDecompressor;\n}\n\nexport class ImportFromUrlProcessAssets<\n C extends Context = Context,\n I extends IImportFromUrlProcessAssetsInput = IImportFromUrlProcessAssetsInput,\n O extends IImportFromUrlProcessAssetsOutput = IImportFromUrlProcessAssetsOutput\n> implements IImportFromUrlProcessAssets<C, I, O>\n{\n private readonly fileFetcher: IFileFetcher;\n private readonly reader: ICompressedFileReader;\n private readonly decompressor: IDecompressor;\n\n public constructor(params: IImportFromUrlProcessAssetsParams) {\n this.fileFetcher = params.fileFetcher;\n this.reader = params.reader;\n this.decompressor = params.decompressor;\n }\n\n public async run(params: ITaskRunParams<C, I, O>): Promise<ITaskResponseResult<I, O>> {\n const { context, response, input, isCloseToTimeout, isAborted } = params;\n\n const maxInsertErrors = input.maxInsertErrors || 100;\n\n if (!input.modelId) {\n return response.error({\n message: `Missing \"modelId\" in the input.`,\n code: \"MISSING_MODEL_ID\"\n });\n } else if (!input.file) {\n return response.error({\n message: `No file found in the provided data.`,\n code: \"NO_FILE_FOUND\"\n });\n } else if (input.file.type !== CmsImportExportFileType.ASSETS) {\n return response.error({\n message: `Invalid file type. Expected \"${CmsImportExportFileType.ASSETS}\" but got \"${input.file.type}\".`,\n code: \"INVALID_FILE_TYPE\"\n });\n }\n\n const recordExists = async (id: string): Promise<boolean> => {\n try {\n const result = await context.fileManager.getFile(id);\n return !!result;\n } catch (ex) {\n return false;\n }\n };\n\n const result = structuredClone({\n ...input,\n errors: []\n });\n /**\n * Read the compressed archive and get all the file information.\n */\n const sources = await this.reader.read(result.file.key);\n if (sources.length === 0) {\n return response.error({\n message: `No files found in the compressed archive.`,\n code: \"NO_FILES_FOUND\"\n });\n }\n\n /**\n * Read the manifest file.\n * Should not be possible it does not exist, but let's handle it anyway.\n */\n let manifest: ICmsAssetsManifestJson;\n try {\n manifest = await this.readManifest(sources, result);\n } catch (ex) {\n console.error(ex);\n return response.error(ex);\n }\n\n while (true) {\n if (isCloseToTimeout()) {\n return response.continue(result);\n } else if (isAborted()) {\n return response.aborted();\n } else if (result.errors.length > maxInsertErrors) {\n return response.error({\n message: `Too many errors encountered while processing assets.`,\n code: \"TOO_MANY_ERRORS\",\n data: {\n errors: result.errors\n }\n });\n }\n const record = this.takeNextAssetRecord(manifest, result.lastAsset);\n if (!record) {\n return response.done(\"No more assets to process\");\n }\n result.lastAsset = record.id;\n const source = sources.find(file => file.path === record.key);\n if (!source) {\n result.errors.push({\n file: record.key,\n message: `File not found in the compressed archive.`\n });\n continue;\n }\n /**\n * Check if the file exists physically.\n */\n const existsPhysically = await this.fileFetcher.exists(source.path);\n if (existsPhysically && !input.override) {\n console.log(\n `Asset \"${record.id}\" / ${source.path} file already exists. Skipping...`\n );\n continue;\n }\n /**\n * Check if the file record already exists.\n */\n const exists = await recordExists(record.id);\n if (exists && !input.override) {\n console.log(\n `Asset \"${record.id}\" / ${source.path} record already exists. Skipping...`\n );\n continue;\n }\n /**\n * Upload the file to the S3 bucket, if it does not exist already.\n */\n if (!existsPhysically) {\n try {\n const file = await this.decompressor.extract({\n source,\n target: record.key\n });\n if (!file?.Key) {\n result.errors.push({\n file: record.key,\n message: `Could not upload the file \"${source.path}\" to \"${record.key}\".`\n });\n continue;\n }\n } catch (ex) {\n result.errors.push({\n file: record.key,\n message: ex.message\n });\n continue;\n }\n }\n /**\n * Update an existing file record.\n */\n if (exists) {\n try {\n await context.fileManager.updateFile(record.id, {\n ...record\n });\n } catch (ex) {\n result.errors.push({\n file: record.key,\n message: ex.message\n });\n }\n continue;\n }\n /**\n * Create a new file record.\n */\n try {\n await context.fileManager.createFile({\n ...record,\n id: record.id,\n key: record.key,\n size: record.size,\n type: record.type,\n name: record.name,\n meta: record.meta,\n aliases: record.aliases,\n extensions: record.extensions,\n location: record.location,\n tags: record.tags\n });\n } catch (ex) {\n result.errors.push({\n file: record.key,\n message: ex.message\n });\n }\n }\n }\n\n private async readManifest(\n sources: IUnzipperFile[],\n input: I\n ): Promise<ICmsAssetsManifestJson> {\n let manifest: string | undefined = input?.manifest;\n\n if (!manifest) {\n const extractPath = getFilePath(input.file.key);\n const source = sources.find(file => file.path === MANIFEST_JSON);\n if (!source) {\n throw new WebinyError({\n message: `No manifest file found in the compressed archive.`,\n code: \"NO_MANIFEST_FILE\"\n });\n }\n const target = `extracted/${extractPath.path}/${source.path}`;\n try {\n const file = await this.decompressor.extract({\n source,\n target\n });\n if (!file.Key) {\n throw new Error(`Could not upload the file \"${source.path}\" to \"${target}\".`);\n }\n manifest = file.Key;\n } catch (ex) {\n throw new WebinyError({\n message: ex.message,\n code: \"MANIFEST_DECOMPRESS_FAILED\"\n });\n }\n }\n\n let file: string | null;\n try {\n file = await this.fileFetcher.read(manifest);\n if (!file) {\n throw new WebinyError({\n message: `Could not fetch the manifest file \"${manifest}\".`,\n code: \"MANIFEST_NOT_FOUND\"\n });\n }\n } catch (ex) {\n throw new WebinyError({\n message: ex.message,\n code: \"MANIFEST_FETCH_FAILED\",\n data: ex\n });\n }\n\n let json: ICmsAssetsManifestJson;\n try {\n json = JSON.parse(file);\n } catch (ex) {\n throw new WebinyError({\n message: ex.message,\n code: \"MANIFEST_PARSE_FAILED\",\n data: ex\n });\n }\n if (!json.assets?.length) {\n throw new WebinyError({\n message: `Invalid manifest file \"${manifest}\". Missing \"assets\" property.`,\n code: \"INVALID_MANIFEST_FILE\"\n });\n } else if (!json.size) {\n throw new WebinyError({\n message: `Invalid manifest file \"${manifest}\". Missing \"size\" property.`,\n code: \"INVALID_MANIFEST_FILE\"\n });\n }\n return json;\n }\n\n private takeNextAssetRecord(\n manifest: ICmsAssetsManifestJson,\n lastAsset: string | undefined\n ): IResolvedAsset | null {\n if (!lastAsset) {\n return manifest.assets[0] as IResolvedAsset;\n }\n const lastIndex = manifest.assets.findIndex(asset => asset.id === lastAsset);\n if (lastIndex === -1) {\n return null;\n }\n const asset = manifest.assets[lastIndex + 1];\n return asset || null;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_types","require","_constants","_getFilePath","_error","ImportFromUrlProcessAssets","constructor","params","fileFetcher","reader","decompressor","run","context","response","input","isCloseToTimeout","isAborted","maxInsertErrors","modelId","error","message","code","file","type","CmsImportExportFileType","ASSETS","recordExists","id","result","fileManager","getFile","ex","structuredClone","errors","sources","read","key","length","manifest","readManifest","console","continue","aborted","data","record","takeNextAssetRecord","lastAsset","done","source","find","path","push","existsPhysically","exists","override","log","extract","target","Key","updateFile","createFile","size","name","meta","aliases","extensions","location","tags","extractPath","getFilePath","MANIFEST_JSON","WebinyError","Error","json","JSON","parse","assets","lastIndex","findIndex","asset","exports"],"sources":["ImportFromUrlProcessAssets.ts"],"sourcesContent":["import type { ITaskResponseResult, ITaskRunParams } from \"@webiny/tasks/types\";\nimport type {\n IImportFromUrlProcessAssets,\n IImportFromUrlProcessAssetsInput,\n IImportFromUrlProcessAssetsOutput\n} from \"~/tasks/domain/importFromUrlProcessAssets/abstractions/ImportFromUrlProcessAssets\";\nimport type { Context } from \"~/types\";\nimport { CmsImportExportFileType } from \"~/types\";\nimport type { IFileFetcher } from \"~/tasks/utils/fileFetcher\";\nimport type {\n ICompressedFileReader,\n IDecompressor,\n IUnzipperFile\n} from \"~/tasks/utils/decompressor\";\nimport { MANIFEST_JSON } from \"~/tasks/constants\";\nimport { getFilePath } from \"~/tasks/utils/helpers/getFilePath\";\nimport { WebinyError } from \"@webiny/error\";\nimport type { ICmsAssetsManifestJson } from \"~/tasks/utils/types\";\nimport type { IResolvedAsset } from \"~/tasks/utils/entryAssets\";\n\nexport interface IImportFromUrlProcessAssetsParams {\n fileFetcher: IFileFetcher;\n reader: ICompressedFileReader;\n decompressor: IDecompressor;\n}\n\nexport class ImportFromUrlProcessAssets<\n C extends Context = Context,\n I extends IImportFromUrlProcessAssetsInput = IImportFromUrlProcessAssetsInput,\n O extends IImportFromUrlProcessAssetsOutput = IImportFromUrlProcessAssetsOutput\n> implements IImportFromUrlProcessAssets<C, I, O>\n{\n private readonly fileFetcher: IFileFetcher;\n private readonly reader: ICompressedFileReader;\n private readonly decompressor: IDecompressor;\n\n public constructor(params: IImportFromUrlProcessAssetsParams) {\n this.fileFetcher = params.fileFetcher;\n this.reader = params.reader;\n this.decompressor = params.decompressor;\n }\n\n public async run(params: ITaskRunParams<C, I, O>): Promise<ITaskResponseResult<I, O>> {\n const { context, response, input, isCloseToTimeout, isAborted } = params;\n\n const maxInsertErrors = input.maxInsertErrors || 100;\n\n if (!input.modelId) {\n return response.error({\n message: `Missing \"modelId\" in the input.`,\n code: \"MISSING_MODEL_ID\"\n });\n } else if (!input.file) {\n return response.error({\n message: `No file found in the provided data.`,\n code: \"NO_FILE_FOUND\"\n });\n } else if (input.file.type !== CmsImportExportFileType.ASSETS) {\n return response.error({\n message: `Invalid file type. Expected \"${CmsImportExportFileType.ASSETS}\" but got \"${input.file.type}\".`,\n code: \"INVALID_FILE_TYPE\"\n });\n }\n\n const recordExists = async (id: string): Promise<boolean> => {\n try {\n const result = await context.fileManager.getFile(id);\n return !!result;\n } catch (ex) {\n return false;\n }\n };\n\n const result = structuredClone({\n ...input,\n errors: []\n });\n /**\n * Read the compressed archive and get all the file information.\n */\n const sources = await this.reader.read(result.file.key);\n if (sources.length === 0) {\n return response.error({\n message: `No files found in the compressed archive.`,\n code: \"NO_FILES_FOUND\"\n });\n }\n\n /**\n * Read the manifest file.\n * Should not be possible it does not exist, but let's handle it anyway.\n */\n let manifest: ICmsAssetsManifestJson;\n try {\n manifest = await this.readManifest(sources, result);\n } catch (ex) {\n console.error(ex);\n return response.error(ex);\n }\n\n while (true) {\n if (isCloseToTimeout()) {\n return response.continue(result);\n } else if (isAborted()) {\n return response.aborted();\n } else if (result.errors.length > maxInsertErrors) {\n return response.error({\n message: `Too many errors encountered while processing assets.`,\n code: \"TOO_MANY_ERRORS\",\n data: {\n errors: result.errors\n }\n });\n }\n const record = this.takeNextAssetRecord(manifest, result.lastAsset);\n if (!record) {\n return response.done(\"No more assets to process\");\n }\n result.lastAsset = record.id;\n const source = sources.find(file => file.path === record.key);\n if (!source) {\n result.errors.push({\n file: record.key,\n message: `File not found in the compressed archive.`\n });\n continue;\n }\n /**\n * Check if the file exists physically.\n */\n const existsPhysically = await this.fileFetcher.exists(source.path);\n if (existsPhysically && !input.override) {\n console.log(\n `Asset \"${record.id}\" / ${source.path} file already exists. Skipping...`\n );\n continue;\n }\n /**\n * Check if the file record already exists.\n */\n const exists = await recordExists(record.id);\n if (exists && !input.override) {\n console.log(\n `Asset \"${record.id}\" / ${source.path} record already exists. Skipping...`\n );\n continue;\n }\n /**\n * Upload the file to the S3 bucket, if it does not exist already.\n */\n if (!existsPhysically) {\n try {\n const file = await this.decompressor.extract({\n source,\n target: record.key\n });\n if (!file?.Key) {\n result.errors.push({\n file: record.key,\n message: `Could not upload the file \"${source.path}\" to \"${record.key}\".`\n });\n continue;\n }\n } catch (ex) {\n result.errors.push({\n file: record.key,\n message: ex.message\n });\n continue;\n }\n }\n /**\n * Update an existing file record.\n */\n if (exists) {\n try {\n await context.fileManager.updateFile(record.id, {\n ...record\n });\n } catch (ex) {\n result.errors.push({\n file: record.key,\n message: ex.message\n });\n }\n continue;\n }\n /**\n * Create a new file record.\n */\n try {\n await context.fileManager.createFile({\n ...record,\n id: record.id,\n key: record.key,\n size: record.size,\n type: record.type,\n name: record.name,\n meta: record.meta,\n aliases: record.aliases,\n extensions: record.extensions,\n location: record.location,\n tags: record.tags\n });\n } catch (ex) {\n result.errors.push({\n file: record.key,\n message: ex.message\n });\n }\n }\n }\n\n private async readManifest(\n sources: IUnzipperFile[],\n input: I\n ): Promise<ICmsAssetsManifestJson> {\n let manifest: string | undefined = input?.manifest;\n\n if (!manifest) {\n const extractPath = getFilePath(input.file.key);\n const source = sources.find(file => file.path === MANIFEST_JSON);\n if (!source) {\n throw new WebinyError({\n message: `No manifest file found in the compressed archive.`,\n code: \"NO_MANIFEST_FILE\"\n });\n }\n const target = `extracted/${extractPath.path}/${source.path}`;\n try {\n const file = await this.decompressor.extract({\n source,\n target\n });\n if (!file.Key) {\n throw new Error(`Could not upload the file \"${source.path}\" to \"${target}\".`);\n }\n manifest = file.Key;\n } catch (ex) {\n throw new WebinyError({\n message: ex.message,\n code: \"MANIFEST_DECOMPRESS_FAILED\"\n });\n }\n }\n\n let file: string | null;\n try {\n file = await this.fileFetcher.read(manifest);\n if (!file) {\n throw new WebinyError({\n message: `Could not fetch the manifest file \"${manifest}\".`,\n code: \"MANIFEST_NOT_FOUND\"\n });\n }\n } catch (ex) {\n throw new WebinyError({\n message: ex.message,\n code: \"MANIFEST_FETCH_FAILED\",\n data: ex\n });\n }\n\n let json: ICmsAssetsManifestJson;\n try {\n json = JSON.parse(file);\n } catch (ex) {\n throw new WebinyError({\n message: ex.message,\n code: \"MANIFEST_PARSE_FAILED\",\n data: ex\n });\n }\n if (!json.assets?.length) {\n throw new WebinyError({\n message: `Invalid manifest file \"${manifest}\". Missing \"assets\" property.`,\n code: \"INVALID_MANIFEST_FILE\"\n });\n } else if (!json.size) {\n throw new WebinyError({\n message: `Invalid manifest file \"${manifest}\". Missing \"size\" property.`,\n code: \"INVALID_MANIFEST_FILE\"\n });\n }\n return json;\n }\n\n private takeNextAssetRecord(\n manifest: ICmsAssetsManifestJson,\n lastAsset: string | undefined\n ): IResolvedAsset | null {\n if (!lastAsset) {\n return manifest.assets[0] as IResolvedAsset;\n }\n const lastIndex = manifest.assets.findIndex(asset => asset.id === lastAsset);\n if (lastIndex === -1) {\n return null;\n }\n const asset = manifest.assets[lastIndex + 1];\n return asset || null;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_utils","require","defaultTimeout","ExternalFileFetcher","timeout","constructor","params","fetcher","_getChecksumHeader","getChecksumHeader","fetch","url","result","method","contentType","headers","get","Error","contentLengthString","contentLength","parseInt","checksum","body","file","name","split","pop","size","ex","error","getObjectProperties","code","data","head","abort","AbortController","tId","setTimeout","signal","clearTimeout","status","console","exports"],"sources":["ExternalFileFetcher.ts"],"sourcesContent":["import type {\n IExternalFileFetcher,\n IExternalFileFetcherFetchResult,\n IExternalFileFetcherHeadResult\n} from \"./abstractions/ExternalFileFetcher\";\nimport { getObjectProperties } from \"@webiny/utils\";\nimport { WebinyError } from \"@webiny/error\";\n\nexport interface IGetChecksumHeaderCallable {\n (headers: Headers): string | undefined | null;\n}\n\nexport interface IExternalFileFetcherParams {\n fetcher: typeof fetch;\n timeout?: number;\n getChecksumHeader: IGetChecksumHeaderCallable;\n}\n\nconst defaultTimeout = 5;\n\nexport class ExternalFileFetcher implements IExternalFileFetcher {\n private readonly fetcher: typeof fetch;\n private readonly timeout: number = defaultTimeout;\n private readonly _getChecksumHeader: IGetChecksumHeaderCallable;\n\n public constructor(params: IExternalFileFetcherParams) {\n this.fetcher = params.fetcher;\n this.timeout = params.timeout || defaultTimeout;\n this._getChecksumHeader = params.getChecksumHeader;\n }\n\n public async fetch(url: string): Promise<IExternalFileFetcherFetchResult> {\n try {\n const result = await this.fetcher(url, {\n method: \"GET\"\n });\n const contentType = result.headers.get(\"content-type\");\n if (!contentType) {\n throw new Error(`Content type not found for URL: ${url}`);\n }\n const contentLengthString = result.headers.get(\"content-length\");\n const contentLength = contentLengthString ? parseInt(contentLengthString) : 0;\n if (contentLength === 0) {\n throw new Error(`Content length not found for URL: ${url}`);\n }\n const checksum = this.getChecksumHeader(result.headers);\n if (!checksum) {\n throw new Error(`ETag not found for URL: ${url}`);\n }\n if (!result.body) {\n throw new Error(`Body not found for URL: ${url}`);\n }\n return {\n file: {\n name: url.split(\"/\").pop() as string,\n size: contentLength,\n url,\n contentType,\n body: result.body,\n checksum\n }\n };\n } catch (ex) {\n const error = getObjectProperties<WebinyError>(ex);\n return {\n error: {\n ...error,\n code: error.code || \"GET_FETCH_ERROR\",\n data: {\n ...error.data,\n url\n }\n }\n };\n }\n }\n\n public async head(url: string): Promise<IExternalFileFetcherHeadResult> {\n const abort = new AbortController();\n try {\n /**\n * We will allow $timeout seconds for the HEAD request to complete.\n */\n const tId = setTimeout(() => {\n abort.abort(\"Timeout.\");\n }, this.timeout * 1000);\n const result = await this.fetcher(url, {\n method: \"HEAD\",\n signal: abort.signal\n });\n /**\n * And clear timeout as soon as the request is completed.\n */\n clearTimeout(tId);\n if (result.status !== 200) {\n throw new Error(`Failed to fetch URL: ${url}. Status: ${result.status}`);\n }\n const contentType = result.headers.get(\"content-type\");\n if (!contentType) {\n throw new Error(`Content type not found for URL: ${url}`);\n }\n const checksum = this.getChecksumHeader(result.headers);\n if (!checksum) {\n throw new Error(`ETag not found for URL: ${url}`);\n }\n const contentLength = result.headers.get(\"content-length\");\n\n return {\n file: {\n name: url.split(\"/\").pop() as string,\n size: parseInt(contentLength || \"0\"),\n url,\n contentType,\n checksum\n }\n };\n } catch (ex) {\n const error = getObjectProperties<WebinyError>(ex);\n console.error(error);\n return {\n error: {\n ...error,\n code: error.code || \"HEAD_FETCH_ERROR\",\n data: {\n ...error.data,\n url\n }\n }\n };\n }\n }\n\n private getChecksumHeader(headers: Headers): string | undefined | null {\n return this._getChecksumHeader(headers);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_utils","require","defaultTimeout","ExternalFileFetcher","timeout","constructor","params","fetcher","_getChecksumHeader","getChecksumHeader","fetch","url","result","method","contentType","headers","get","Error","contentLengthString","contentLength","parseInt","checksum","body","file","name","split","pop","size","ex","error","getObjectProperties","code","data","head","abort","AbortController","tId","setTimeout","signal","clearTimeout","status","console","exports"],"sources":["ExternalFileFetcher.ts"],"sourcesContent":["import type {\n IExternalFileFetcher,\n IExternalFileFetcherFetchResult,\n IExternalFileFetcherHeadResult\n} from \"./abstractions/ExternalFileFetcher\";\nimport { getObjectProperties } from \"@webiny/utils\";\nimport type { WebinyError } from \"@webiny/error\";\n\nexport interface IGetChecksumHeaderCallable {\n (headers: Headers): string | undefined | null;\n}\n\nexport interface IExternalFileFetcherParams {\n fetcher: typeof fetch;\n timeout?: number;\n getChecksumHeader: IGetChecksumHeaderCallable;\n}\n\nconst defaultTimeout = 5;\n\nexport class ExternalFileFetcher implements IExternalFileFetcher {\n private readonly fetcher: typeof fetch;\n private readonly timeout: number = defaultTimeout;\n private readonly _getChecksumHeader: IGetChecksumHeaderCallable;\n\n public constructor(params: IExternalFileFetcherParams) {\n this.fetcher = params.fetcher;\n this.timeout = params.timeout || defaultTimeout;\n this._getChecksumHeader = params.getChecksumHeader;\n }\n\n public async fetch(url: string): Promise<IExternalFileFetcherFetchResult> {\n try {\n const result = await this.fetcher(url, {\n method: \"GET\"\n });\n const contentType = result.headers.get(\"content-type\");\n if (!contentType) {\n throw new Error(`Content type not found for URL: ${url}`);\n }\n const contentLengthString = result.headers.get(\"content-length\");\n const contentLength = contentLengthString ? parseInt(contentLengthString) : 0;\n if (contentLength === 0) {\n throw new Error(`Content length not found for URL: ${url}`);\n }\n const checksum = this.getChecksumHeader(result.headers);\n if (!checksum) {\n throw new Error(`ETag not found for URL: ${url}`);\n }\n if (!result.body) {\n throw new Error(`Body not found for URL: ${url}`);\n }\n return {\n file: {\n name: url.split(\"/\").pop() as string,\n size: contentLength,\n url,\n contentType,\n body: result.body,\n checksum\n }\n };\n } catch (ex) {\n const error = getObjectProperties<WebinyError>(ex);\n return {\n error: {\n ...error,\n code: error.code || \"GET_FETCH_ERROR\",\n data: {\n ...error.data,\n url\n }\n }\n };\n }\n }\n\n public async head(url: string): Promise<IExternalFileFetcherHeadResult> {\n const abort = new AbortController();\n try {\n /**\n * We will allow $timeout seconds for the HEAD request to complete.\n */\n const tId = setTimeout(() => {\n abort.abort(\"Timeout.\");\n }, this.timeout * 1000);\n const result = await this.fetcher(url, {\n method: \"HEAD\",\n signal: abort.signal\n });\n /**\n * And clear timeout as soon as the request is completed.\n */\n clearTimeout(tId);\n if (result.status !== 200) {\n throw new Error(`Failed to fetch URL: ${url}. Status: ${result.status}`);\n }\n const contentType = result.headers.get(\"content-type\");\n if (!contentType) {\n throw new Error(`Content type not found for URL: ${url}`);\n }\n const checksum = this.getChecksumHeader(result.headers);\n if (!checksum) {\n throw new Error(`ETag not found for URL: ${url}`);\n }\n const contentLength = result.headers.get(\"content-length\");\n\n return {\n file: {\n name: url.split(\"/\").pop() as string,\n size: parseInt(contentLength || \"0\"),\n url,\n contentType,\n checksum\n }\n };\n } catch (ex) {\n const error = getObjectProperties<WebinyError>(ex);\n console.error(error);\n return {\n error: {\n ...error,\n code: error.code || \"HEAD_FETCH_ERROR\",\n data: {\n ...error.data,\n url\n }\n }\n };\n }\n }\n\n private getChecksumHeader(headers: Headers): string | undefined | null {\n return this._getChecksumHeader(headers);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import type { S3Client } from "@webiny/aws-sdk/client-s3";
2
- import { ICreateMultipartUploadHandler, IMultipartUploadHandler } from "./abstractions/MultipartUploadHandler";
3
- import { IMultipartUploadFactory, IMultipartUploadFactoryContinueParams } from "./abstractions/MultipartUploadFactory";
2
+ import type { ICreateMultipartUploadHandler, IMultipartUploadHandler } from "./abstractions/MultipartUploadHandler";
3
+ import type { IMultipartUploadFactory, IMultipartUploadFactoryContinueParams } from "./abstractions/MultipartUploadFactory";
4
4
  export interface IMultipartUploadFactoryParams {
5
5
  client: S3Client;
6
6
  bucket: string;
@@ -1 +1 @@
1
- {"version":3,"names":["_clientS","require","_error","MultipartUploadFactory","constructor","params","client","bucket","filename","createHandler","start","resumeUploadId","uploadId","undefined","continue","cmd","CreateMultipartUploadCommand","Bucket","Key","result","send","UploadId","parts","WebinyError","message","code","data","listParts","Parts","map","part","ETag","PartNumber","tag","replaceAll","partNumber","filter","sort","a","b","ListPartsCommand","ex","metadata","$metadata","length","exports","createMultipartUploadFactory"],"sources":["MultipartUploadFactory.ts"],"sourcesContent":["import type { ListPartsCommandOutput, S3Client } from \"@webiny/aws-sdk/client-s3\";\nimport { CreateMultipartUploadCommand, ListPartsCommand } from \"@webiny/aws-sdk/client-s3\";\nimport { WebinyError } from \"@webiny/error\";\nimport {\n ICreateMultipartUploadHandler,\n IMultipartUploadHandler,\n IPart\n} from \"./abstractions/MultipartUploadHandler\";\nimport {\n IMultipartUploadFactory,\n IMultipartUploadFactoryContinueParams\n} from \"./abstractions/MultipartUploadFactory\";\n\nexport interface IMultipartUploadFactoryParams {\n client: S3Client;\n bucket: string;\n filename: string;\n createHandler: ICreateMultipartUploadHandler;\n}\n\nexport class MultipartUploadFactory implements IMultipartUploadFactory {\n private readonly client: S3Client;\n private readonly bucket: string;\n private readonly filename: string;\n private readonly createHandler: ICreateMultipartUploadHandler;\n\n public constructor(params: IMultipartUploadFactoryParams) {\n this.client = params.client;\n this.bucket = params.bucket;\n this.filename = params.filename;\n this.createHandler = params.createHandler;\n }\n\n public async start(\n params?: IMultipartUploadFactoryContinueParams\n ): Promise<IMultipartUploadHandler> {\n const resumeUploadId = params?.uploadId;\n if (resumeUploadId !== undefined) {\n return this.continue({\n uploadId: resumeUploadId\n });\n }\n const cmd = new CreateMultipartUploadCommand({\n Bucket: this.bucket,\n Key: this.filename\n });\n\n const result = await this.client.send(cmd);\n const uploadId = result.UploadId;\n if (uploadId) {\n return this.createHandler({\n uploadId,\n client: this.client,\n bucket: this.bucket,\n filename: this.filename,\n parts: undefined\n });\n }\n throw new WebinyError({\n message: \"Could not initiate multipart upload.\",\n code: \"S3_ERROR\",\n data: {\n bucket: this.bucket,\n filename: this.filename\n }\n });\n }\n\n private async continue(\n params: Required<IMultipartUploadFactoryContinueParams>\n ): Promise<IMultipartUploadHandler> {\n const result = await this.listParts({\n uploadId: params.uploadId\n });\n\n const parts = result.Parts.map<IPart | null>(part => {\n if (!part.ETag || part.PartNumber === undefined) {\n return null;\n }\n return {\n tag: part.ETag.replaceAll('\"', \"\"),\n partNumber: part.PartNumber\n };\n })\n .filter((part): part is IPart => !!part)\n .sort((a, b) => {\n return a.partNumber - b.partNumber;\n });\n return this.createHandler({\n client: this.client,\n bucket: this.bucket,\n filename: this.filename,\n uploadId: params.uploadId,\n parts\n });\n }\n\n private async listParts(\n params: Required<IMultipartUploadFactoryContinueParams>\n ): Promise<Required<ListPartsCommandOutput>> {\n const cmd = new ListPartsCommand({\n Bucket: this.bucket,\n Key: this.filename,\n UploadId: params.uploadId\n });\n\n let result: ListPartsCommandOutput;\n try {\n result = await this.client.send(cmd);\n } catch (ex) {\n throw new WebinyError({\n message: `Failed to list parts: ${ex.message}`,\n code: \"S3_ERROR\",\n data: {\n metadata: ex.$metadata,\n bucket: this.bucket,\n filename: this.filename,\n uploadId: params.uploadId\n }\n });\n }\n\n if (!result.UploadId || !result.Parts?.length) {\n throw new WebinyError({\n message: \"Could not find the upload.\",\n code: \"S3_ERROR\",\n data: {\n bucket: this.bucket,\n filename: this.filename,\n uploadId: params.uploadId\n }\n });\n }\n return result as Required<ListPartsCommandOutput>;\n }\n}\n\nexport interface ICreateMultipartUploadFactoryCallable {\n (params: IMultipartUploadFactoryParams): IMultipartUploadFactory;\n}\n\nexport const createMultipartUploadFactory: ICreateMultipartUploadFactoryCallable = params => {\n return new MultipartUploadFactory(params);\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_clientS","require","_error","MultipartUploadFactory","constructor","params","client","bucket","filename","createHandler","start","resumeUploadId","uploadId","undefined","continue","cmd","CreateMultipartUploadCommand","Bucket","Key","result","send","UploadId","parts","WebinyError","message","code","data","listParts","Parts","map","part","ETag","PartNumber","tag","replaceAll","partNumber","filter","sort","a","b","ListPartsCommand","ex","metadata","$metadata","length","exports","createMultipartUploadFactory"],"sources":["MultipartUploadFactory.ts"],"sourcesContent":["import type { ListPartsCommandOutput, S3Client } from \"@webiny/aws-sdk/client-s3\";\nimport { CreateMultipartUploadCommand, ListPartsCommand } from \"@webiny/aws-sdk/client-s3\";\nimport { WebinyError } from \"@webiny/error\";\nimport type {\n ICreateMultipartUploadHandler,\n IMultipartUploadHandler,\n IPart\n} from \"./abstractions/MultipartUploadHandler\";\nimport type {\n IMultipartUploadFactory,\n IMultipartUploadFactoryContinueParams\n} from \"./abstractions/MultipartUploadFactory\";\n\nexport interface IMultipartUploadFactoryParams {\n client: S3Client;\n bucket: string;\n filename: string;\n createHandler: ICreateMultipartUploadHandler;\n}\n\nexport class MultipartUploadFactory implements IMultipartUploadFactory {\n private readonly client: S3Client;\n private readonly bucket: string;\n private readonly filename: string;\n private readonly createHandler: ICreateMultipartUploadHandler;\n\n public constructor(params: IMultipartUploadFactoryParams) {\n this.client = params.client;\n this.bucket = params.bucket;\n this.filename = params.filename;\n this.createHandler = params.createHandler;\n }\n\n public async start(\n params?: IMultipartUploadFactoryContinueParams\n ): Promise<IMultipartUploadHandler> {\n const resumeUploadId = params?.uploadId;\n if (resumeUploadId !== undefined) {\n return this.continue({\n uploadId: resumeUploadId\n });\n }\n const cmd = new CreateMultipartUploadCommand({\n Bucket: this.bucket,\n Key: this.filename\n });\n\n const result = await this.client.send(cmd);\n const uploadId = result.UploadId;\n if (uploadId) {\n return this.createHandler({\n uploadId,\n client: this.client,\n bucket: this.bucket,\n filename: this.filename,\n parts: undefined\n });\n }\n throw new WebinyError({\n message: \"Could not initiate multipart upload.\",\n code: \"S3_ERROR\",\n data: {\n bucket: this.bucket,\n filename: this.filename\n }\n });\n }\n\n private async continue(\n params: Required<IMultipartUploadFactoryContinueParams>\n ): Promise<IMultipartUploadHandler> {\n const result = await this.listParts({\n uploadId: params.uploadId\n });\n\n const parts = result.Parts.map<IPart | null>(part => {\n if (!part.ETag || part.PartNumber === undefined) {\n return null;\n }\n return {\n tag: part.ETag.replaceAll('\"', \"\"),\n partNumber: part.PartNumber\n };\n })\n .filter((part): part is IPart => !!part)\n .sort((a, b) => {\n return a.partNumber - b.partNumber;\n });\n return this.createHandler({\n client: this.client,\n bucket: this.bucket,\n filename: this.filename,\n uploadId: params.uploadId,\n parts\n });\n }\n\n private async listParts(\n params: Required<IMultipartUploadFactoryContinueParams>\n ): Promise<Required<ListPartsCommandOutput>> {\n const cmd = new ListPartsCommand({\n Bucket: this.bucket,\n Key: this.filename,\n UploadId: params.uploadId\n });\n\n let result: ListPartsCommandOutput;\n try {\n result = await this.client.send(cmd);\n } catch (ex) {\n throw new WebinyError({\n message: `Failed to list parts: ${ex.message}`,\n code: \"S3_ERROR\",\n data: {\n metadata: ex.$metadata,\n bucket: this.bucket,\n filename: this.filename,\n uploadId: params.uploadId\n }\n });\n }\n\n if (!result.UploadId || !result.Parts?.length) {\n throw new WebinyError({\n message: \"Could not find the upload.\",\n code: \"S3_ERROR\",\n data: {\n bucket: this.bucket,\n filename: this.filename,\n uploadId: params.uploadId\n }\n });\n }\n return result as Required<ListPartsCommandOutput>;\n }\n}\n\nexport interface ICreateMultipartUploadFactoryCallable {\n (params: IMultipartUploadFactoryParams): IMultipartUploadFactory;\n}\n\nexport const createMultipartUploadFactory: ICreateMultipartUploadFactoryCallable = params => {\n return new MultipartUploadFactory(params);\n};\n"],"mappings":"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","ignoreList":[]}
@@ -3,7 +3,7 @@ import type { Options as BaseUploadOptions } from "@webiny/aws-sdk/lib-storage";
3
3
  import type { Transform } from "stream";
4
4
  import { PassThrough } from "stream";
5
5
  import type { CompleteMultipartUploadCommandOutput, S3Client } from "@webiny/aws-sdk/client-s3";
6
- import { IAwsUpload, IUpload, IUploadOnListener } from "./abstractions/Upload";
6
+ import type { IAwsUpload, IUpload, IUploadOnListener } from "./abstractions/Upload";
7
7
  export interface IUploadConfig {
8
8
  client: S3Client;
9
9
  stream: PassThrough;
@@ -1 +1 @@
1
- {"version":3,"names":["_libStorage","require","_stream","_getContentType","defaultFactory","options","BaseUpload","Upload","constructor","input","client","factory","params","ACL","Body","stream","Bucket","bucket","ContentType","getContentType","filename","Key","upload","queueSize","partSize","leavePartsOnError","abort","done","ex","onProgress","listener","on","exports","createUploadFactory","PassThrough","autoDestroy","listenerCount","console","log"],"sources":["Upload.ts"],"sourcesContent":["import type { Options as BaseUploadOptions } from \"@webiny/aws-sdk/lib-storage\";\nimport { Upload as BaseUpload } from \"@webiny/aws-sdk/lib-storage\";\nimport type { Transform } from \"stream\";\nimport { PassThrough } from \"stream\";\nimport type {\n CompleteMultipartUploadCommandOutput,\n PutObjectCommandInput,\n S3Client\n} from \"@webiny/aws-sdk/client-s3\";\nimport { IAwsUpload, IUpload, IUploadOnListener } from \"./abstractions/Upload\";\nimport { getContentType } from \"./getContentType\";\n\nexport interface IUploadConfig {\n client: S3Client;\n stream: PassThrough;\n bucket: string;\n filename: string;\n factory?(params: BaseUploadOptions): IAwsUpload;\n queueSize?: number;\n}\n\nconst defaultFactory = (options: BaseUploadOptions): IAwsUpload => {\n return new BaseUpload(options);\n};\n\nexport class Upload implements IUpload {\n public readonly stream: PassThrough;\n public readonly upload: IAwsUpload;\n public readonly client: S3Client;\n\n public constructor(input: IUploadConfig) {\n this.client = input.client;\n const factory = input?.factory || defaultFactory;\n\n const params: PutObjectCommandInput = {\n ACL: \"private\",\n Body: input.stream,\n Bucket: input.bucket,\n ContentType: getContentType(input.filename),\n Key: input.filename\n };\n\n this.upload = factory({\n client: input.client,\n params,\n queueSize: input.queueSize || 1,\n partSize: 1024 * 1024 * 5,\n leavePartsOnError: false\n });\n this.stream = input.stream;\n }\n\n public async abort(): Promise<void> {\n await this.upload.abort();\n }\n\n public async done(): Promise<CompleteMultipartUploadCommandOutput> {\n try {\n return await this.upload.done();\n } catch (ex) {\n await this.abort();\n throw ex;\n }\n }\n\n public onProgress(listener: IUploadOnListener): void {\n this.upload.on(\"httpUploadProgress\", listener);\n }\n}\n\nexport interface ICreateUploadFactoryParams {\n client: S3Client;\n bucket: string;\n}\n\nexport interface ICreateUploadCallable {\n (filename: string, options?: ICreateUploadFactoryOptions): IUpload;\n}\n\nexport interface ICreateUploadFactoryOptions {\n stream?: Transform;\n client?: S3Client;\n bucket?: string;\n}\n\nexport const createUploadFactory = (params: ICreateUploadFactoryParams): ICreateUploadCallable => {\n return (filename, options) => {\n const stream =\n options?.stream ||\n new PassThrough({\n autoDestroy: true\n });\n\n if (stream.listenerCount(\"error\") === 0) {\n stream.on(\"error\", ex => {\n console.log(\"Upload Stream Error\", ex);\n throw ex;\n });\n }\n\n return new Upload({\n client: options?.client || params.client,\n bucket: options?.bucket || params.bucket,\n stream,\n filename\n });\n };\n};\n"],"mappings":";;;;;;AACA,IAAAA,WAAA,GAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAD,OAAA;AAOA,IAAAE,eAAA,GAAAF,OAAA;AAWA,MAAMG,cAAc,GAAIC,OAA0B,IAAiB;EAC/D,OAAO,IAAIC,kBAAU,CAACD,OAAO,CAAC;AAClC,CAAC;AAEM,MAAME,MAAM,CAAoB;EAK5BC,WAAWA,CAACC,KAAoB,EAAE;IACrC,IAAI,CAACC,MAAM,GAAGD,KAAK,CAACC,MAAM;IAC1B,MAAMC,OAAO,GAAGF,KAAK,EAAEE,OAAO,IAAIP,cAAc;IAEhD,MAAMQ,MAA6B,GAAG;MAClCC,GAAG,EAAE,SAAS;MACdC,IAAI,EAAEL,KAAK,CAACM,MAAM;MAClBC,MAAM,EAAEP,KAAK,CAACQ,MAAM;MACpBC,WAAW,EAAE,IAAAC,8BAAc,EAACV,KAAK,CAACW,QAAQ,CAAC;MAC3CC,GAAG,EAAEZ,KAAK,CAACW;IACf,CAAC;IAED,IAAI,CAACE,MAAM,GAAGX,OAAO,CAAC;MAClBD,MAAM,EAAED,KAAK,CAACC,MAAM;MACpBE,MAAM;MACNW,SAAS,EAAEd,KAAK,CAACc,SAAS,IAAI,CAAC;MAC/BC,QAAQ,EAAE,IAAI,GAAG,IAAI,GAAG,CAAC;MACzBC,iBAAiB,EAAE;IACvB,CAAC,CAAC;IACF,IAAI,CAACV,MAAM,GAAGN,KAAK,CAACM,MAAM;EAC9B;EAEA,MAAaW,KAAKA,CAAA,EAAkB;IAChC,MAAM,IAAI,CAACJ,MAAM,CAACI,KAAK,CAAC,CAAC;EAC7B;EAEA,MAAaC,IAAIA,CAAA,EAAkD;IAC/D,IAAI;MACA,OAAO,MAAM,IAAI,CAACL,MAAM,CAACK,IAAI,CAAC,CAAC;IACnC,CAAC,CAAC,OAAOC,EAAE,EAAE;MACT,MAAM,IAAI,CAACF,KAAK,CAAC,CAAC;MAClB,MAAME,EAAE;IACZ;EACJ;EAEOC,UAAUA,CAACC,QAA2B,EAAQ;IACjD,IAAI,CAACR,MAAM,CAACS,EAAE,CAAC,oBAAoB,EAAED,QAAQ,CAAC;EAClD;AACJ;AAACE,OAAA,CAAAzB,MAAA,GAAAA,MAAA;AAiBM,MAAM0B,mBAAmB,GAAIrB,MAAkC,IAA4B;EAC9F,OAAO,CAACQ,QAAQ,EAAEf,OAAO,KAAK;IAC1B,MAAMU,MAAM,GACRV,OAAO,EAAEU,MAAM,IACf,IAAImB,mBAAW,CAAC;MACZC,WAAW,EAAE;IACjB,CAAC,CAAC;IAEN,IAAIpB,MAAM,CAACqB,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;MACrCrB,MAAM,CAACgB,EAAE,CAAC,OAAO,EAAEH,EAAE,IAAI;QACrBS,OAAO,CAACC,GAAG,CAAC,qBAAqB,EAAEV,EAAE,CAAC;QACtC,MAAMA,EAAE;MACZ,CAAC,CAAC;IACN;IAEA,OAAO,IAAIrB,MAAM,CAAC;MACdG,MAAM,EAAEL,OAAO,EAAEK,MAAM,IAAIE,MAAM,CAACF,MAAM;MACxCO,MAAM,EAAEZ,OAAO,EAAEY,MAAM,IAAIL,MAAM,CAACK,MAAM;MACxCF,MAAM;MACNK;IACJ,CAAC,CAAC;EACN,CAAC;AACL,CAAC;AAACY,OAAA,CAAAC,mBAAA,GAAAA,mBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_libStorage","require","_stream","_getContentType","defaultFactory","options","BaseUpload","Upload","constructor","input","client","factory","params","ACL","Body","stream","Bucket","bucket","ContentType","getContentType","filename","Key","upload","queueSize","partSize","leavePartsOnError","abort","done","ex","onProgress","listener","on","exports","createUploadFactory","PassThrough","autoDestroy","listenerCount","console","log"],"sources":["Upload.ts"],"sourcesContent":["import type { Options as BaseUploadOptions } from \"@webiny/aws-sdk/lib-storage\";\nimport { Upload as BaseUpload } from \"@webiny/aws-sdk/lib-storage\";\nimport type { Transform } from \"stream\";\nimport { PassThrough } from \"stream\";\nimport type {\n CompleteMultipartUploadCommandOutput,\n PutObjectCommandInput,\n S3Client\n} from \"@webiny/aws-sdk/client-s3\";\nimport type { IAwsUpload, IUpload, IUploadOnListener } from \"./abstractions/Upload\";\nimport { getContentType } from \"./getContentType\";\n\nexport interface IUploadConfig {\n client: S3Client;\n stream: PassThrough;\n bucket: string;\n filename: string;\n factory?(params: BaseUploadOptions): IAwsUpload;\n queueSize?: number;\n}\n\nconst defaultFactory = (options: BaseUploadOptions): IAwsUpload => {\n return new BaseUpload(options);\n};\n\nexport class Upload implements IUpload {\n public readonly stream: PassThrough;\n public readonly upload: IAwsUpload;\n public readonly client: S3Client;\n\n public constructor(input: IUploadConfig) {\n this.client = input.client;\n const factory = input?.factory || defaultFactory;\n\n const params: PutObjectCommandInput = {\n ACL: \"private\",\n Body: input.stream,\n Bucket: input.bucket,\n ContentType: getContentType(input.filename),\n Key: input.filename\n };\n\n this.upload = factory({\n client: input.client,\n params,\n queueSize: input.queueSize || 1,\n partSize: 1024 * 1024 * 5,\n leavePartsOnError: false\n });\n this.stream = input.stream;\n }\n\n public async abort(): Promise<void> {\n await this.upload.abort();\n }\n\n public async done(): Promise<CompleteMultipartUploadCommandOutput> {\n try {\n return await this.upload.done();\n } catch (ex) {\n await this.abort();\n throw ex;\n }\n }\n\n public onProgress(listener: IUploadOnListener): void {\n this.upload.on(\"httpUploadProgress\", listener);\n }\n}\n\nexport interface ICreateUploadFactoryParams {\n client: S3Client;\n bucket: string;\n}\n\nexport interface ICreateUploadCallable {\n (filename: string, options?: ICreateUploadFactoryOptions): IUpload;\n}\n\nexport interface ICreateUploadFactoryOptions {\n stream?: Transform;\n client?: S3Client;\n bucket?: string;\n}\n\nexport const createUploadFactory = (params: ICreateUploadFactoryParams): ICreateUploadCallable => {\n return (filename, options) => {\n const stream =\n options?.stream ||\n new PassThrough({\n autoDestroy: true\n });\n\n if (stream.listenerCount(\"error\") === 0) {\n stream.on(\"error\", ex => {\n console.log(\"Upload Stream Error\", ex);\n throw ex;\n });\n }\n\n return new Upload({\n client: options?.client || params.client,\n bucket: options?.bucket || params.bucket,\n stream,\n filename\n });\n };\n};\n"],"mappings":";;;;;;AACA,IAAAA,WAAA,GAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAD,OAAA;AAOA,IAAAE,eAAA,GAAAF,OAAA;AAWA,MAAMG,cAAc,GAAIC,OAA0B,IAAiB;EAC/D,OAAO,IAAIC,kBAAU,CAACD,OAAO,CAAC;AAClC,CAAC;AAEM,MAAME,MAAM,CAAoB;EAK5BC,WAAWA,CAACC,KAAoB,EAAE;IACrC,IAAI,CAACC,MAAM,GAAGD,KAAK,CAACC,MAAM;IAC1B,MAAMC,OAAO,GAAGF,KAAK,EAAEE,OAAO,IAAIP,cAAc;IAEhD,MAAMQ,MAA6B,GAAG;MAClCC,GAAG,EAAE,SAAS;MACdC,IAAI,EAAEL,KAAK,CAACM,MAAM;MAClBC,MAAM,EAAEP,KAAK,CAACQ,MAAM;MACpBC,WAAW,EAAE,IAAAC,8BAAc,EAACV,KAAK,CAACW,QAAQ,CAAC;MAC3CC,GAAG,EAAEZ,KAAK,CAACW;IACf,CAAC;IAED,IAAI,CAACE,MAAM,GAAGX,OAAO,CAAC;MAClBD,MAAM,EAAED,KAAK,CAACC,MAAM;MACpBE,MAAM;MACNW,SAAS,EAAEd,KAAK,CAACc,SAAS,IAAI,CAAC;MAC/BC,QAAQ,EAAE,IAAI,GAAG,IAAI,GAAG,CAAC;MACzBC,iBAAiB,EAAE;IACvB,CAAC,CAAC;IACF,IAAI,CAACV,MAAM,GAAGN,KAAK,CAACM,MAAM;EAC9B;EAEA,MAAaW,KAAKA,CAAA,EAAkB;IAChC,MAAM,IAAI,CAACJ,MAAM,CAACI,KAAK,CAAC,CAAC;EAC7B;EAEA,MAAaC,IAAIA,CAAA,EAAkD;IAC/D,IAAI;MACA,OAAO,MAAM,IAAI,CAACL,MAAM,CAACK,IAAI,CAAC,CAAC;IACnC,CAAC,CAAC,OAAOC,EAAE,EAAE;MACT,MAAM,IAAI,CAACF,KAAK,CAAC,CAAC;MAClB,MAAME,EAAE;IACZ;EACJ;EAEOC,UAAUA,CAACC,QAA2B,EAAQ;IACjD,IAAI,CAACR,MAAM,CAACS,EAAE,CAAC,oBAAoB,EAAED,QAAQ,CAAC;EAClD;AACJ;AAACE,OAAA,CAAAzB,MAAA,GAAAA,MAAA;AAiBM,MAAM0B,mBAAmB,GAAIrB,MAAkC,IAA4B;EAC9F,OAAO,CAACQ,QAAQ,EAAEf,OAAO,KAAK;IAC1B,MAAMU,MAAM,GACRV,OAAO,EAAEU,MAAM,IACf,IAAImB,mBAAW,CAAC;MACZC,WAAW,EAAE;IACjB,CAAC,CAAC;IAEN,IAAIpB,MAAM,CAACqB,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;MACrCrB,MAAM,CAACgB,EAAE,CAAC,OAAO,EAAEH,EAAE,IAAI;QACrBS,OAAO,CAACC,GAAG,CAAC,qBAAqB,EAAEV,EAAE,CAAC;QACtC,MAAMA,EAAE;MACZ,CAAC,CAAC;IACN;IAEA,OAAO,IAAIrB,MAAM,CAAC;MACdG,MAAM,EAAEL,OAAO,EAAEK,MAAM,IAAIE,MAAM,CAACF,MAAM;MACxCO,MAAM,EAAEZ,OAAO,EAAEY,MAAM,IAAIL,MAAM,CAACK,MAAM;MACxCF,MAAM;MACNK;IACJ,CAAC,CAAC;EACN,CAAC;AACL,CAAC;AAACY,OAAA,CAAAC,mBAAA,GAAAA,mBAAA","ignoreList":[]}
@@ -1,4 +1,5 @@
1
- import { GetObjectCommand, HeadObjectCommand, S3Client } from "@webiny/aws-sdk/client-s3";
1
+ import type { S3Client } from "@webiny/aws-sdk/client-s3";
2
+ import { GetObjectCommand, HeadObjectCommand } from "@webiny/aws-sdk/client-s3";
2
3
  import type { IUrlSigner, IUrlSignerSignParams, IUrlSignerSignResult } from "./abstractions/UrlSigner";
3
4
  export interface IUrlSignerParams {
4
5
  client: S3Client;
@@ -1 +1 @@
1
- {"version":3,"names":["_clientS","require","DEFAULT_TIMEOUT","UrlSigner","constructor","params","client","bucket","get","sign","GetObjectCommand","head","HeadObjectCommand","command","expiresIn","timeout","expiresOn","Date","getTime","url","getSignedUrl","Bucket","Key","key","exports"],"sources":["UrlSigner.ts"],"sourcesContent":["import {\n GetObjectCommand,\n getSignedUrl,\n HeadObjectCommand,\n S3Client\n} from \"@webiny/aws-sdk/client-s3\";\nimport type {\n IUrlSigner,\n IUrlSignerSignParams,\n IUrlSignerSignResult\n} from \"./abstractions/UrlSigner\";\n\nconst DEFAULT_TIMEOUT = 3600; // 1 hour\n\nexport interface IUrlSignerParams {\n client: S3Client;\n bucket: string;\n}\n\nexport interface IObjectCommandConstructor {\n new (params: { Bucket: string; Key: string }): GetObjectCommand | HeadObjectCommand;\n}\n\nexport class UrlSigner implements IUrlSigner {\n private readonly client: S3Client;\n private readonly bucket: string;\n\n public constructor(params: IUrlSignerParams) {\n this.client = params.client;\n this.bucket = params.bucket;\n }\n\n public async get(params: IUrlSignerSignParams): Promise<IUrlSignerSignResult> {\n return this.sign(params, GetObjectCommand);\n }\n\n public async head(params: IUrlSignerSignParams): Promise<IUrlSignerSignResult> {\n return this.sign(params, HeadObjectCommand);\n }\n\n private async sign(\n params: IUrlSignerSignParams,\n command: IObjectCommandConstructor\n ): Promise<IUrlSignerSignResult> {\n const expiresIn = params.timeout || DEFAULT_TIMEOUT;\n const expiresOn = new Date(new Date().getTime() + expiresIn * 1000);\n\n const url = await getSignedUrl(\n this.client,\n new command({\n Bucket: this.bucket,\n Key: params.key\n }),\n {\n expiresIn\n }\n );\n\n return {\n url,\n bucket: this.bucket,\n key: params.key,\n expiresOn\n };\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAYA,MAAMC,eAAe,GAAG,IAAI,CAAC,CAAC;;AAWvB,MAAMC,SAAS,CAAuB;EAIlCC,WAAWA,CAACC,MAAwB,EAAE;IACzC,IAAI,CAACC,MAAM,GAAGD,MAAM,CAACC,MAAM;IAC3B,IAAI,CAACC,MAAM,GAAGF,MAAM,CAACE,MAAM;EAC/B;EAEA,MAAaC,GAAGA,CAACH,MAA4B,EAAiC;IAC1E,OAAO,IAAI,CAACI,IAAI,CAACJ,MAAM,EAAEK,yBAAgB,CAAC;EAC9C;EAEA,MAAaC,IAAIA,CAACN,MAA4B,EAAiC;IAC3E,OAAO,IAAI,CAACI,IAAI,CAACJ,MAAM,EAAEO,0BAAiB,CAAC;EAC/C;EAEA,MAAcH,IAAIA,CACdJ,MAA4B,EAC5BQ,OAAkC,EACL;IAC7B,MAAMC,SAAS,GAAGT,MAAM,CAACU,OAAO,IAAIb,eAAe;IACnD,MAAMc,SAAS,GAAG,IAAIC,IAAI,CAAC,IAAIA,IAAI,CAAC,CAAC,CAACC,OAAO,CAAC,CAAC,GAAGJ,SAAS,GAAG,IAAI,CAAC;IAEnE,MAAMK,GAAG,GAAG,MAAM,IAAAC,qBAAY,EAC1B,IAAI,CAACd,MAAM,EACX,IAAIO,OAAO,CAAC;MACRQ,MAAM,EAAE,IAAI,CAACd,MAAM;MACnBe,GAAG,EAAEjB,MAAM,CAACkB;IAChB,CAAC,CAAC,EACF;MACIT;IACJ,CACJ,CAAC;IAED,OAAO;MACHK,GAAG;MACHZ,MAAM,EAAE,IAAI,CAACA,MAAM;MACnBgB,GAAG,EAAElB,MAAM,CAACkB,GAAG;MACfP;IACJ,CAAC;EACL;AACJ;AAACQ,OAAA,CAAArB,SAAA,GAAAA,SAAA","ignoreList":[]}
1
+ {"version":3,"names":["_clientS","require","DEFAULT_TIMEOUT","UrlSigner","constructor","params","client","bucket","get","sign","GetObjectCommand","head","HeadObjectCommand","command","expiresIn","timeout","expiresOn","Date","getTime","url","getSignedUrl","Bucket","Key","key","exports"],"sources":["UrlSigner.ts"],"sourcesContent":["import type { S3Client } from \"@webiny/aws-sdk/client-s3\";\nimport { GetObjectCommand, getSignedUrl, HeadObjectCommand } from \"@webiny/aws-sdk/client-s3\";\nimport type {\n IUrlSigner,\n IUrlSignerSignParams,\n IUrlSignerSignResult\n} from \"./abstractions/UrlSigner\";\n\nconst DEFAULT_TIMEOUT = 3600; // 1 hour\n\nexport interface IUrlSignerParams {\n client: S3Client;\n bucket: string;\n}\n\nexport interface IObjectCommandConstructor {\n new (params: { Bucket: string; Key: string }): GetObjectCommand | HeadObjectCommand;\n}\n\nexport class UrlSigner implements IUrlSigner {\n private readonly client: S3Client;\n private readonly bucket: string;\n\n public constructor(params: IUrlSignerParams) {\n this.client = params.client;\n this.bucket = params.bucket;\n }\n\n public async get(params: IUrlSignerSignParams): Promise<IUrlSignerSignResult> {\n return this.sign(params, GetObjectCommand);\n }\n\n public async head(params: IUrlSignerSignParams): Promise<IUrlSignerSignResult> {\n return this.sign(params, HeadObjectCommand);\n }\n\n private async sign(\n params: IUrlSignerSignParams,\n command: IObjectCommandConstructor\n ): Promise<IUrlSignerSignResult> {\n const expiresIn = params.timeout || DEFAULT_TIMEOUT;\n const expiresOn = new Date(new Date().getTime() + expiresIn * 1000);\n\n const url = await getSignedUrl(\n this.client,\n new command({\n Bucket: this.bucket,\n Key: params.key\n }),\n {\n expiresIn\n }\n );\n\n return {\n url,\n bucket: this.bucket,\n key: params.key,\n expiresOn\n };\n }\n}\n"],"mappings":";;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AAOA,MAAMC,eAAe,GAAG,IAAI,CAAC,CAAC;;AAWvB,MAAMC,SAAS,CAAuB;EAIlCC,WAAWA,CAACC,MAAwB,EAAE;IACzC,IAAI,CAACC,MAAM,GAAGD,MAAM,CAACC,MAAM;IAC3B,IAAI,CAACC,MAAM,GAAGF,MAAM,CAACE,MAAM;EAC/B;EAEA,MAAaC,GAAGA,CAACH,MAA4B,EAAiC;IAC1E,OAAO,IAAI,CAACI,IAAI,CAACJ,MAAM,EAAEK,yBAAgB,CAAC;EAC9C;EAEA,MAAaC,IAAIA,CAACN,MAA4B,EAAiC;IAC3E,OAAO,IAAI,CAACI,IAAI,CAACJ,MAAM,EAAEO,0BAAiB,CAAC;EAC/C;EAEA,MAAcH,IAAIA,CACdJ,MAA4B,EAC5BQ,OAAkC,EACL;IAC7B,MAAMC,SAAS,GAAGT,MAAM,CAACU,OAAO,IAAIb,eAAe;IACnD,MAAMc,SAAS,GAAG,IAAIC,IAAI,CAAC,IAAIA,IAAI,CAAC,CAAC,CAACC,OAAO,CAAC,CAAC,GAAGJ,SAAS,GAAG,IAAI,CAAC;IAEnE,MAAMK,GAAG,GAAG,MAAM,IAAAC,qBAAY,EAC1B,IAAI,CAACd,MAAM,EACX,IAAIO,OAAO,CAAC;MACRQ,MAAM,EAAE,IAAI,CAACd,MAAM;MACnBe,GAAG,EAAEjB,MAAM,CAACkB;IAChB,CAAC,CAAC,EACF;MACIT;IACJ,CACJ,CAAC;IAED,OAAO;MACHK,GAAG;MACHZ,MAAM,EAAE,IAAI,CAACA,MAAM;MACnBgB,GAAG,EAAElB,MAAM,CAACkB,GAAG;MACfP;IACJ,CAAC;EACL;AACJ;AAACQ,OAAA,CAAArB,SAAA,GAAAA,SAAA","ignoreList":[]}