@webiny/api-file-manager 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 (102) hide show
  1. package/FileManagerContextSetup.js.map +1 -1
  2. package/README.md +1 -1
  3. package/cmsFileStorage/CmsFilesStorage.d.ts +3 -3
  4. package/cmsFileStorage/CmsFilesStorage.js.map +1 -1
  5. package/cmsFileStorage/ListFilesWhereProcessor.d.ts +2 -2
  6. package/cmsFileStorage/ListFilesWhereProcessor.js.map +1 -1
  7. package/cmsFileStorage/ListTagsWhereProcessor.d.ts +2 -2
  8. package/cmsFileStorage/ListTagsWhereProcessor.js.map +1 -1
  9. package/createFileManager/files.crud.d.ts +1 -1
  10. package/createFileManager/files.crud.js.map +1 -1
  11. package/createFileManager/permissions/FilesPermissions.d.ts +1 -1
  12. package/createFileManager/permissions/FilesPermissions.js.map +1 -1
  13. package/delivery/AssetDelivery/AliasAssetRequestResolver.d.ts +4 -3
  14. package/delivery/AssetDelivery/AliasAssetRequestResolver.js.map +1 -1
  15. package/delivery/AssetDelivery/Asset.d.ts +1 -1
  16. package/delivery/AssetDelivery/Asset.js.map +1 -1
  17. package/delivery/AssetDelivery/AssetDeliveryConfig.d.ts +2 -2
  18. package/delivery/AssetDelivery/AssetDeliveryConfig.js.map +1 -1
  19. package/delivery/AssetDelivery/AssetRequest.d.ts +1 -1
  20. package/delivery/AssetDelivery/AssetRequest.js.map +1 -1
  21. package/delivery/AssetDelivery/FilesAssetRequestResolver.d.ts +2 -2
  22. package/delivery/AssetDelivery/FilesAssetRequestResolver.js.map +1 -1
  23. package/delivery/AssetDelivery/NullAssetOutputStrategy.d.ts +1 -1
  24. package/delivery/AssetDelivery/NullAssetOutputStrategy.js.map +1 -1
  25. package/delivery/AssetDelivery/NullAssetResolver.d.ts +2 -2
  26. package/delivery/AssetDelivery/NullAssetResolver.js.map +1 -1
  27. package/delivery/AssetDelivery/NullRequestResolver.d.ts +1 -1
  28. package/delivery/AssetDelivery/NullRequestResolver.js.map +1 -1
  29. package/delivery/AssetDelivery/SetCacheControlHeaders.d.ts +2 -2
  30. package/delivery/AssetDelivery/SetCacheControlHeaders.js.map +1 -1
  31. package/delivery/AssetDelivery/SetResponseHeaders.d.ts +3 -3
  32. package/delivery/AssetDelivery/SetResponseHeaders.js.map +1 -1
  33. package/delivery/AssetDelivery/abstractions/AssetContentsReader.d.ts +1 -1
  34. package/delivery/AssetDelivery/abstractions/AssetContentsReader.js.map +1 -1
  35. package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.d.ts +1 -1
  36. package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.js.map +1 -1
  37. package/delivery/AssetDelivery/abstractions/AssetProcessor.d.ts +1 -1
  38. package/delivery/AssetDelivery/abstractions/AssetProcessor.js.map +1 -1
  39. package/delivery/AssetDelivery/abstractions/AssetRequestResolver.d.ts +2 -2
  40. package/delivery/AssetDelivery/abstractions/AssetRequestResolver.js.map +1 -1
  41. package/delivery/AssetDelivery/abstractions/AssetResolver.d.ts +1 -1
  42. package/delivery/AssetDelivery/abstractions/AssetResolver.js.map +1 -1
  43. package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.d.ts +1 -1
  44. package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.js.map +1 -1
  45. package/delivery/AssetDelivery/createAssetDeliveryPluginLoader.d.ts +1 -1
  46. package/delivery/AssetDelivery/createAssetDeliveryPluginLoader.js.map +1 -1
  47. package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.d.ts +1 -1
  48. package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.js.map +1 -1
  49. package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.d.ts +1 -1
  50. package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.js.map +1 -1
  51. package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.d.ts +2 -2
  52. package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.js.map +1 -1
  53. package/delivery/AssetDelivery/privateFiles/PrivateCache.d.ts +1 -1
  54. package/delivery/AssetDelivery/privateFiles/PrivateCache.js.map +1 -1
  55. package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.d.ts +3 -2
  56. package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.js.map +1 -1
  57. package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.d.ts +3 -3
  58. package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.js.map +1 -1
  59. package/delivery/AssetDelivery/privateFiles/PublicCache.d.ts +1 -1
  60. package/delivery/AssetDelivery/privateFiles/PublicCache.js.map +1 -1
  61. package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.d.ts +2 -1
  62. package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.js.map +1 -1
  63. package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.d.ts +2 -1
  64. package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.js.map +1 -1
  65. package/delivery/AssetDelivery/privateFiles/internalIdentity.d.ts +1 -1
  66. package/delivery/AssetDelivery/privateFiles/internalIdentity.js.map +1 -1
  67. package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.d.ts +1 -1
  68. package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.js.map +1 -1
  69. package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.d.ts +1 -1
  70. package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.js.map +1 -1
  71. package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.d.ts +1 -1
  72. package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.js.map +1 -1
  73. package/delivery/setupAssetDelivery.d.ts +2 -2
  74. package/delivery/setupAssetDelivery.js.map +1 -1
  75. package/graphql/baseSchema.d.ts +1 -1
  76. package/graphql/baseSchema.js.map +1 -1
  77. package/graphql/createFilesTypeDefs.d.ts +1 -1
  78. package/graphql/createFilesTypeDefs.js.map +1 -1
  79. package/graphql/filesSchema.d.ts +2 -2
  80. package/graphql/filesSchema.js.map +1 -1
  81. package/graphql/getFileByUrl.d.ts +1 -1
  82. package/graphql/getFileByUrl.js.map +1 -1
  83. package/graphql/index.d.ts +1 -1
  84. package/graphql/index.js.map +1 -1
  85. package/graphql/utils.d.ts +1 -1
  86. package/handlers/manage/imageManager.d.ts +1 -1
  87. package/handlers/manage/imageManager.js.map +1 -1
  88. package/index.d.ts +2 -2
  89. package/index.js.map +1 -1
  90. package/modelModifier/CmsModelModifier.d.ts +2 -2
  91. package/modelModifier/CmsModelModifier.js.map +1 -1
  92. package/package.json +17 -17
  93. package/plugins/FilePhysicalStoragePlugin.d.ts +1 -1
  94. package/plugins/FilePhysicalStoragePlugin.js.map +1 -1
  95. package/plugins/FileStorageTransformPlugin.d.ts +1 -1
  96. package/plugins/FileStorageTransformPlugin.js.map +1 -1
  97. package/storage/FileStorage.d.ts +2 -2
  98. package/storage/FileStorage.js.map +1 -1
  99. package/types/file.lifecycle.d.ts +2 -2
  100. package/types/file.lifecycle.js.map +1 -1
  101. package/types.d.ts +10 -10
  102. package/types.js.map +1 -1
@@ -1,6 +1,6 @@
1
- import { AssetOutputStrategy, Asset, AssetReply, AssetRequest, AssetOutputStrategyDecoratorParams } from "..";
2
- import { FileManagerContext } from "../../types";
3
- import { ResponseHeaders } from "@webiny/handler";
1
+ import type { AssetOutputStrategy, Asset, AssetReply, AssetRequest, AssetOutputStrategyDecoratorParams } from "..";
2
+ import type { FileManagerContext } from "../../types";
3
+ import type { ResponseHeaders } from "@webiny/handler";
4
4
  export interface ResponseHeadersParams {
5
5
  headers: ResponseHeaders;
6
6
  context: FileManagerContext;
@@ -1 +1 @@
1
- {"version":3,"names":["SetResponseHeaders","constructor","setter","strategyDecoratorParams","output","asset","reply","assetOutputStrategy","assetRequest","context","headers","getHeaders","exports"],"sources":["SetResponseHeaders.ts"],"sourcesContent":["import {\n AssetOutputStrategy,\n Asset,\n AssetReply,\n AssetRequest,\n AssetOutputStrategyDecoratorParams\n} from \"~/delivery\";\nimport { FileManagerContext } from \"~/types\";\nimport { ResponseHeaders } from \"@webiny/handler\";\n\nexport interface ResponseHeadersParams {\n headers: ResponseHeaders;\n context: FileManagerContext;\n assetRequest: AssetRequest;\n asset: Asset;\n}\n\nexport interface ResponseHeadersSetter {\n (params: ResponseHeadersParams): Promise<void> | void;\n}\n\nexport class SetResponseHeaders implements AssetOutputStrategy {\n private readonly setter: ResponseHeadersSetter;\n private strategyDecoratorParams: AssetOutputStrategyDecoratorParams;\n\n constructor(\n setter: ResponseHeadersSetter,\n strategyDecoratorParams: AssetOutputStrategyDecoratorParams\n ) {\n this.strategyDecoratorParams = strategyDecoratorParams;\n this.setter = setter;\n }\n\n async output(asset: Asset): Promise<AssetReply> {\n const reply = await this.strategyDecoratorParams.assetOutputStrategy.output(asset);\n\n await this.setter({\n asset: this.strategyDecoratorParams.asset,\n assetRequest: this.strategyDecoratorParams.assetRequest,\n context: this.strategyDecoratorParams.context,\n headers: reply.getHeaders()\n });\n\n return reply;\n }\n}\n"],"mappings":";;;;;;AAqBO,MAAMA,kBAAkB,CAAgC;EAI3DC,WAAWA,CACPC,MAA6B,EAC7BC,uBAA2D,EAC7D;IACE,IAAI,CAACA,uBAAuB,GAAGA,uBAAuB;IACtD,IAAI,CAACD,MAAM,GAAGA,MAAM;EACxB;EAEA,MAAME,MAAMA,CAACC,KAAY,EAAuB;IAC5C,MAAMC,KAAK,GAAG,MAAM,IAAI,CAACH,uBAAuB,CAACI,mBAAmB,CAACH,MAAM,CAACC,KAAK,CAAC;IAElF,MAAM,IAAI,CAACH,MAAM,CAAC;MACdG,KAAK,EAAE,IAAI,CAACF,uBAAuB,CAACE,KAAK;MACzCG,YAAY,EAAE,IAAI,CAACL,uBAAuB,CAACK,YAAY;MACvDC,OAAO,EAAE,IAAI,CAACN,uBAAuB,CAACM,OAAO;MAC7CC,OAAO,EAAEJ,KAAK,CAACK,UAAU,CAAC;IAC9B,CAAC,CAAC;IAEF,OAAOL,KAAK;EAChB;AACJ;AAACM,OAAA,CAAAZ,kBAAA,GAAAA,kBAAA","ignoreList":[]}
1
+ {"version":3,"names":["SetResponseHeaders","constructor","setter","strategyDecoratorParams","output","asset","reply","assetOutputStrategy","assetRequest","context","headers","getHeaders","exports"],"sources":["SetResponseHeaders.ts"],"sourcesContent":["import type {\n AssetOutputStrategy,\n Asset,\n AssetReply,\n AssetRequest,\n AssetOutputStrategyDecoratorParams\n} from \"~/delivery\";\nimport type { FileManagerContext } from \"~/types\";\nimport type { ResponseHeaders } from \"@webiny/handler\";\n\nexport interface ResponseHeadersParams {\n headers: ResponseHeaders;\n context: FileManagerContext;\n assetRequest: AssetRequest;\n asset: Asset;\n}\n\nexport interface ResponseHeadersSetter {\n (params: ResponseHeadersParams): Promise<void> | void;\n}\n\nexport class SetResponseHeaders implements AssetOutputStrategy {\n private readonly setter: ResponseHeadersSetter;\n private strategyDecoratorParams: AssetOutputStrategyDecoratorParams;\n\n constructor(\n setter: ResponseHeadersSetter,\n strategyDecoratorParams: AssetOutputStrategyDecoratorParams\n ) {\n this.strategyDecoratorParams = strategyDecoratorParams;\n this.setter = setter;\n }\n\n async output(asset: Asset): Promise<AssetReply> {\n const reply = await this.strategyDecoratorParams.assetOutputStrategy.output(asset);\n\n await this.setter({\n asset: this.strategyDecoratorParams.asset,\n assetRequest: this.strategyDecoratorParams.assetRequest,\n context: this.strategyDecoratorParams.context,\n headers: reply.getHeaders()\n });\n\n return reply;\n }\n}\n"],"mappings":";;;;;;AAqBO,MAAMA,kBAAkB,CAAgC;EAI3DC,WAAWA,CACPC,MAA6B,EAC7BC,uBAA2D,EAC7D;IACE,IAAI,CAACA,uBAAuB,GAAGA,uBAAuB;IACtD,IAAI,CAACD,MAAM,GAAGA,MAAM;EACxB;EAEA,MAAME,MAAMA,CAACC,KAAY,EAAuB;IAC5C,MAAMC,KAAK,GAAG,MAAM,IAAI,CAACH,uBAAuB,CAACI,mBAAmB,CAACH,MAAM,CAACC,KAAK,CAAC;IAElF,MAAM,IAAI,CAACH,MAAM,CAAC;MACdG,KAAK,EAAE,IAAI,CAACF,uBAAuB,CAACE,KAAK;MACzCG,YAAY,EAAE,IAAI,CAACL,uBAAuB,CAACK,YAAY;MACvDC,OAAO,EAAE,IAAI,CAACN,uBAAuB,CAACM,OAAO;MAC7CC,OAAO,EAAEJ,KAAK,CAACK,UAAU,CAAC;IAC9B,CAAC,CAAC;IAEF,OAAOL,KAAK;EAChB;AACJ;AAACM,OAAA,CAAAZ,kBAAA,GAAAA,kBAAA","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  /// <reference types="node" />
2
2
  /// <reference types="node" />
3
- import { Asset } from "../..";
3
+ import type { Asset } from "../..";
4
4
  export interface AssetContentsReader {
5
5
  read(asset: Asset): Promise<Buffer>;
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["AssetContentsReader.ts"],"sourcesContent":["import { Asset } from \"~/delivery\";\n\nexport interface AssetContentsReader {\n read(asset: Asset): Promise<Buffer>;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["AssetContentsReader.ts"],"sourcesContent":["import type { Asset } from \"~/delivery\";\n\nexport interface AssetContentsReader {\n read(asset: Asset): Promise<Buffer>;\n}\n"],"mappings":"","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { Asset, AssetReply } from "../..";
1
+ import type { Asset, AssetReply } from "../..";
2
2
  export interface AssetOutputStrategy {
3
3
  output(asset: Asset): Promise<AssetReply>;
4
4
  }
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["AssetOutputStrategy.ts"],"sourcesContent":["import { Asset, AssetReply } from \"~/delivery\";\n\nexport interface AssetOutputStrategy {\n output(asset: Asset): Promise<AssetReply>;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["AssetOutputStrategy.ts"],"sourcesContent":["import type { Asset, AssetReply } from \"~/delivery\";\n\nexport interface AssetOutputStrategy {\n output(asset: Asset): Promise<AssetReply>;\n}\n"],"mappings":"","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { Asset, AssetRequest } from "../..";
1
+ import type { Asset, AssetRequest } from "../..";
2
2
  export interface AssetProcessor {
3
3
  process(assetRequest: AssetRequest, asset: Asset): Promise<Asset>;
4
4
  }
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["AssetProcessor.ts"],"sourcesContent":["import { Asset, AssetRequest } from \"~/delivery\";\n\nexport interface AssetProcessor {\n process(assetRequest: AssetRequest, asset: Asset): Promise<Asset>;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["AssetProcessor.ts"],"sourcesContent":["import type { Asset, AssetRequest } from \"~/delivery\";\n\nexport interface AssetProcessor {\n process(assetRequest: AssetRequest, asset: Asset): Promise<Asset>;\n}\n"],"mappings":"","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import { Request } from "@webiny/handler/types";
2
- import { AssetRequest } from "../..";
1
+ import type { Request } from "@webiny/handler/types";
2
+ import type { AssetRequest } from "../..";
3
3
  export interface AssetRequestResolver {
4
4
  resolve(request: Request): Promise<AssetRequest | undefined>;
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["AssetRequestResolver.ts"],"sourcesContent":["import { Request } from \"@webiny/handler/types\";\nimport { AssetRequest } from \"~/delivery\";\n\nexport interface AssetRequestResolver {\n resolve(request: Request): Promise<AssetRequest | undefined>;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["AssetRequestResolver.ts"],"sourcesContent":["import type { Request } from \"@webiny/handler/types\";\nimport type { AssetRequest } from \"~/delivery\";\n\nexport interface AssetRequestResolver {\n resolve(request: Request): Promise<AssetRequest | undefined>;\n}\n"],"mappings":"","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { Asset, AssetRequest } from "../..";
1
+ import type { Asset, AssetRequest } from "../..";
2
2
  export interface AssetResolver {
3
3
  resolve(request: AssetRequest): Promise<Asset | undefined>;
4
4
  }
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["AssetResolver.ts"],"sourcesContent":["import { Asset, AssetRequest } from \"~/delivery\";\n\nexport interface AssetResolver {\n resolve(request: AssetRequest): Promise<Asset | undefined>;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["AssetResolver.ts"],"sourcesContent":["import type { Asset, AssetRequest } from \"~/delivery\";\n\nexport interface AssetResolver {\n resolve(request: AssetRequest): Promise<Asset | undefined>;\n}\n"],"mappings":"","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { Asset, AssetRequest } from "../..";
1
+ import type { Asset, AssetRequest } from "../..";
2
2
  export interface AssetTransformationStrategy {
3
3
  transform(assetRequest: AssetRequest, asset: Asset): Promise<Asset>;
4
4
  }
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["AssetTransformationStrategy.ts"],"sourcesContent":["import { Asset, AssetRequest } from \"~/delivery\";\n\nexport interface AssetTransformationStrategy {\n transform(assetRequest: AssetRequest, asset: Asset): Promise<Asset>;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["AssetTransformationStrategy.ts"],"sourcesContent":["import type { Asset, AssetRequest } from \"~/delivery\";\n\nexport interface AssetTransformationStrategy {\n transform(assetRequest: AssetRequest, asset: Asset): Promise<Asset>;\n}\n"],"mappings":"","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import { PluginFactory } from "@webiny/plugins/types";
1
+ import type { PluginFactory } from "@webiny/plugins/types";
2
2
  export declare const createAssetDeliveryPluginLoader: (cb: PluginFactory) => PluginFactory;
@@ -1 +1 @@
1
- {"version":3,"names":["createAssetDeliveryPluginLoader","cb","process","env","WEBINY_FUNCTION_TYPE","Promise","resolve","exports"],"sources":["createAssetDeliveryPluginLoader.ts"],"sourcesContent":["import { PluginFactory } from \"@webiny/plugins/types\";\n\nexport const createAssetDeliveryPluginLoader = (cb: PluginFactory): PluginFactory => {\n if (process.env.WEBINY_FUNCTION_TYPE === \"asset-delivery\") {\n return () => cb();\n }\n\n return () => Promise.resolve([]);\n};\n"],"mappings":";;;;;;AAEO,MAAMA,+BAA+B,GAAIC,EAAiB,IAAoB;EACjF,IAAIC,OAAO,CAACC,GAAG,CAACC,oBAAoB,KAAK,gBAAgB,EAAE;IACvD,OAAO,MAAMH,EAAE,CAAC,CAAC;EACrB;EAEA,OAAO,MAAMI,OAAO,CAACC,OAAO,CAAC,EAAE,CAAC;AACpC,CAAC;AAACC,OAAA,CAAAP,+BAAA,GAAAA,+BAAA","ignoreList":[]}
1
+ {"version":3,"names":["createAssetDeliveryPluginLoader","cb","process","env","WEBINY_FUNCTION_TYPE","Promise","resolve","exports"],"sources":["createAssetDeliveryPluginLoader.ts"],"sourcesContent":["import type { PluginFactory } from \"@webiny/plugins/types\";\n\nexport const createAssetDeliveryPluginLoader = (cb: PluginFactory): PluginFactory => {\n if (process.env.WEBINY_FUNCTION_TYPE === \"asset-delivery\") {\n return () => cb();\n }\n\n return () => Promise.resolve([]);\n};\n"],"mappings":";;;;;;AAEO,MAAMA,+BAA+B,GAAIC,EAAiB,IAAoB;EACjF,IAAIC,OAAO,CAACC,GAAG,CAACC,oBAAoB,KAAK,gBAAgB,EAAE;IACvD,OAAO,MAAMH,EAAE,CAAC,CAAC;EACrB;EAEA,OAAO,MAAMI,OAAO,CAACC,OAAO,CAAC,EAAE,CAAC;AACpC,CAAC;AAACC,OAAA,CAAAP,+BAAA,GAAAA,+BAAA","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { File } from "../../../types";
1
+ import type { File } from "../../../types";
2
2
  export interface AssetAuthorizer {
3
3
  authorize(file: File): Promise<void>;
4
4
  }
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["AssetAuthorizer.ts"],"sourcesContent":["import { File } from \"~/types\";\n\nexport interface AssetAuthorizer {\n authorize(file: File): Promise<void>;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["AssetAuthorizer.ts"],"sourcesContent":["import type { File } from \"~/types\";\n\nexport interface AssetAuthorizer {\n authorize(file: File): Promise<void>;\n}\n"],"mappings":"","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { AssetOutputStrategy, AssetReply } from "../..";
1
+ import type { AssetOutputStrategy, AssetReply } from "../..";
2
2
  export declare class NotAuthorizedOutputStrategy implements AssetOutputStrategy {
3
3
  output(): Promise<AssetReply>;
4
4
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_NotAuthorizedAssetReply","require","NotAuthorizedOutputStrategy","output","NotAuthorizedAssetReply","exports"],"sources":["NotAuthorizedOutputStrategy.ts"],"sourcesContent":["import { AssetOutputStrategy, AssetReply } from \"~/delivery\";\nimport { NotAuthorizedAssetReply } from \"./NotAuthorizedAssetReply\";\n\nexport class NotAuthorizedOutputStrategy implements AssetOutputStrategy {\n async output(): Promise<AssetReply> {\n return new NotAuthorizedAssetReply();\n }\n}\n"],"mappings":";;;;;;AACA,IAAAA,wBAAA,GAAAC,OAAA;AAEO,MAAMC,2BAA2B,CAAgC;EACpE,MAAMC,MAAMA,CAAA,EAAwB;IAChC,OAAO,IAAIC,gDAAuB,CAAC,CAAC;EACxC;AACJ;AAACC,OAAA,CAAAH,2BAAA,GAAAA,2BAAA","ignoreList":[]}
1
+ {"version":3,"names":["_NotAuthorizedAssetReply","require","NotAuthorizedOutputStrategy","output","NotAuthorizedAssetReply","exports"],"sources":["NotAuthorizedOutputStrategy.ts"],"sourcesContent":["import type { AssetOutputStrategy, AssetReply } from \"~/delivery\";\nimport { NotAuthorizedAssetReply } from \"./NotAuthorizedAssetReply\";\n\nexport class NotAuthorizedOutputStrategy implements AssetOutputStrategy {\n async output(): Promise<AssetReply> {\n return new NotAuthorizedAssetReply();\n }\n}\n"],"mappings":";;;;;;AACA,IAAAA,wBAAA,GAAAC,OAAA;AAEO,MAAMC,2BAA2B,CAAgC;EACpE,MAAMC,MAAMA,CAAA,EAAwB;IAChC,OAAO,IAAIC,gDAAuB,CAAC,CAAC;EACxC;AACJ;AAACC,OAAA,CAAAH,2BAAA,GAAAA,2BAAA","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import { File, FileManagerContext } from "../../../types";
2
- import { AssetAuthorizer } from "./AssetAuthorizer";
1
+ import type { File, FileManagerContext } from "../../../types";
2
+ import type { AssetAuthorizer } from "./AssetAuthorizer";
3
3
  export declare class PrivateAuthenticatedAuthorizer implements AssetAuthorizer {
4
4
  private context;
5
5
  constructor(context: FileManagerContext);
@@ -1 +1 @@
1
- {"version":3,"names":["_error","_interopRequireDefault","require","PrivateAuthenticatedAuthorizer","constructor","context","authorize","file","accessControl","type","identity","security","getIdentity","Error","code","message","exports"],"sources":["PrivateAuthenticatedAuthorizer.ts"],"sourcesContent":["import Error from \"@webiny/error\";\nimport { File, FileManagerContext } from \"~/types\";\nimport { AssetAuthorizer } from \"./AssetAuthorizer\";\n\nexport class PrivateAuthenticatedAuthorizer implements AssetAuthorizer {\n private context: FileManagerContext;\n\n constructor(context: FileManagerContext) {\n this.context = context;\n }\n\n async authorize(file: File) {\n if (file.accessControl && file.accessControl.type === \"private-authenticated\") {\n // Make sure there's a valid identity!\n const identity = this.context.security.getIdentity();\n\n if (!identity) {\n throw new Error({\n code: \"NOT_AUTHORIZED\",\n message: \"You're not authorized to access this asset!\"\n });\n }\n }\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAIO,MAAMC,8BAA8B,CAA4B;EAGnEC,WAAWA,CAACC,OAA2B,EAAE;IACrC,IAAI,CAACA,OAAO,GAAGA,OAAO;EAC1B;EAEA,MAAMC,SAASA,CAACC,IAAU,EAAE;IACxB,IAAIA,IAAI,CAACC,aAAa,IAAID,IAAI,CAACC,aAAa,CAACC,IAAI,KAAK,uBAAuB,EAAE;MAC3E;MACA,MAAMC,QAAQ,GAAG,IAAI,CAACL,OAAO,CAACM,QAAQ,CAACC,WAAW,CAAC,CAAC;MAEpD,IAAI,CAACF,QAAQ,EAAE;QACX,MAAM,IAAIG,cAAK,CAAC;UACZC,IAAI,EAAE,gBAAgB;UACtBC,OAAO,EAAE;QACb,CAAC,CAAC;MACN;IACJ;EACJ;AACJ;AAACC,OAAA,CAAAb,8BAAA,GAAAA,8BAAA","ignoreList":[]}
1
+ {"version":3,"names":["_error","_interopRequireDefault","require","PrivateAuthenticatedAuthorizer","constructor","context","authorize","file","accessControl","type","identity","security","getIdentity","Error","code","message","exports"],"sources":["PrivateAuthenticatedAuthorizer.ts"],"sourcesContent":["import Error from \"@webiny/error\";\nimport type { File, FileManagerContext } from \"~/types\";\nimport type { AssetAuthorizer } from \"./AssetAuthorizer\";\n\nexport class PrivateAuthenticatedAuthorizer implements AssetAuthorizer {\n private context: FileManagerContext;\n\n constructor(context: FileManagerContext) {\n this.context = context;\n }\n\n async authorize(file: File) {\n if (file.accessControl && file.accessControl.type === \"private-authenticated\") {\n // Make sure there's a valid identity!\n const identity = this.context.security.getIdentity();\n\n if (!identity) {\n throw new Error({\n code: \"NOT_AUTHORIZED\",\n message: \"You're not authorized to access this asset!\"\n });\n }\n }\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAIO,MAAMC,8BAA8B,CAA4B;EAGnEC,WAAWA,CAACC,OAA2B,EAAE;IACrC,IAAI,CAACA,OAAO,GAAGA,OAAO;EAC1B;EAEA,MAAMC,SAASA,CAACC,IAAU,EAAE;IACxB,IAAIA,IAAI,CAACC,aAAa,IAAID,IAAI,CAACC,aAAa,CAACC,IAAI,KAAK,uBAAuB,EAAE;MAC3E;MACA,MAAMC,QAAQ,GAAG,IAAI,CAACL,OAAO,CAACM,QAAQ,CAACC,WAAW,CAAC,CAAC;MAEpD,IAAI,CAACF,QAAQ,EAAE;QACX,MAAM,IAAIG,cAAK,CAAC;UACZC,IAAI,EAAE,gBAAgB;UACtBC,OAAO,EAAE;QACb,CAAC,CAAC;MACN;IACJ;EACJ;AACJ;AAACC,OAAA,CAAAb,8BAAA,GAAAA,8BAAA","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { Asset, AssetOutputStrategy, AssetReply } from "../..";
1
+ import type { Asset, AssetOutputStrategy, AssetReply } from "../..";
2
2
  export declare class PrivateCache implements AssetOutputStrategy {
3
3
  private strategy;
4
4
  constructor(strategy: AssetOutputStrategy);
@@ -1 +1 @@
1
- {"version":3,"names":["_cacheControlParser","require","PrivateCache","constructor","strategy","output","asset","reply","setHeaders","headers","set","value","cacheControl","parse","stringify","exports"],"sources":["PrivateCache.ts"],"sourcesContent":["import { parse, stringify } from \"cache-control-parser\";\nimport { Asset, AssetOutputStrategy, AssetReply } from \"~/delivery\";\n\nexport class PrivateCache implements AssetOutputStrategy {\n private strategy: AssetOutputStrategy;\n\n constructor(strategy: AssetOutputStrategy) {\n this.strategy = strategy;\n }\n\n async output(asset: Asset): Promise<AssetReply> {\n const reply = await this.strategy.output(asset);\n\n reply.setHeaders(headers => {\n headers.set(\"cache-control\", (value = \"\") => {\n const cacheControl = parse(value);\n cacheControl[\"private\"] = true;\n cacheControl[\"public\"] = false;\n return stringify(cacheControl);\n });\n return headers;\n });\n\n return reply;\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,mBAAA,GAAAC,OAAA;AAGO,MAAMC,YAAY,CAAgC;EAGrDC,WAAWA,CAACC,QAA6B,EAAE;IACvC,IAAI,CAACA,QAAQ,GAAGA,QAAQ;EAC5B;EAEA,MAAMC,MAAMA,CAACC,KAAY,EAAuB;IAC5C,MAAMC,KAAK,GAAG,MAAM,IAAI,CAACH,QAAQ,CAACC,MAAM,CAACC,KAAK,CAAC;IAE/CC,KAAK,CAACC,UAAU,CAACC,OAAO,IAAI;MACxBA,OAAO,CAACC,GAAG,CAAC,eAAe,EAAE,CAACC,KAAK,GAAG,EAAE,KAAK;QACzC,MAAMC,YAAY,GAAG,IAAAC,yBAAK,EAACF,KAAK,CAAC;QACjCC,YAAY,CAAC,SAAS,CAAC,GAAG,IAAI;QAC9BA,YAAY,CAAC,QAAQ,CAAC,GAAG,KAAK;QAC9B,OAAO,IAAAE,6BAAS,EAACF,YAAY,CAAC;MAClC,CAAC,CAAC;MACF,OAAOH,OAAO;IAClB,CAAC,CAAC;IAEF,OAAOF,KAAK;EAChB;AACJ;AAACQ,OAAA,CAAAb,YAAA,GAAAA,YAAA","ignoreList":[]}
1
+ {"version":3,"names":["_cacheControlParser","require","PrivateCache","constructor","strategy","output","asset","reply","setHeaders","headers","set","value","cacheControl","parse","stringify","exports"],"sources":["PrivateCache.ts"],"sourcesContent":["import { parse, stringify } from \"cache-control-parser\";\nimport type { Asset, AssetOutputStrategy, AssetReply } from \"~/delivery\";\n\nexport class PrivateCache implements AssetOutputStrategy {\n private strategy: AssetOutputStrategy;\n\n constructor(strategy: AssetOutputStrategy) {\n this.strategy = strategy;\n }\n\n async output(asset: Asset): Promise<AssetReply> {\n const reply = await this.strategy.output(asset);\n\n reply.setHeaders(headers => {\n headers.set(\"cache-control\", (value = \"\") => {\n const cacheControl = parse(value);\n cacheControl[\"private\"] = true;\n cacheControl[\"public\"] = false;\n return stringify(cacheControl);\n });\n return headers;\n });\n\n return reply;\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,mBAAA,GAAAC,OAAA;AAGO,MAAMC,YAAY,CAAgC;EAGrDC,WAAWA,CAACC,QAA6B,EAAE;IACvC,IAAI,CAACA,QAAQ,GAAGA,QAAQ;EAC5B;EAEA,MAAMC,MAAMA,CAACC,KAAY,EAAuB;IAC5C,MAAMC,KAAK,GAAG,MAAM,IAAI,CAACH,QAAQ,CAACC,MAAM,CAACC,KAAK,CAAC;IAE/CC,KAAK,CAACC,UAAU,CAACC,OAAO,IAAI;MACxBA,OAAO,CAACC,GAAG,CAAC,eAAe,EAAE,CAACC,KAAK,GAAG,EAAE,KAAK;QACzC,MAAMC,YAAY,GAAG,IAAAC,yBAAK,EAACF,KAAK,CAAC;QACjCC,YAAY,CAAC,SAAS,CAAC,GAAG,IAAI;QAC9BA,YAAY,CAAC,QAAQ,CAAC,GAAG,KAAK;QAC9B,OAAO,IAAAE,6BAAS,EAACF,YAAY,CAAC;MAClC,CAAC,CAAC;MACF,OAAOH,OAAO;IAClB,CAAC,CAAC;IAEF,OAAOF,KAAK;EAChB;AACJ;AAACQ,OAAA,CAAAb,YAAA,GAAAA,YAAA","ignoreList":[]}
@@ -1,5 +1,6 @@
1
- import { AssetRequest, AssetRequestResolver } from "../..";
2
- import { Request } from "@webiny/handler/types";
1
+ import type { AssetRequestResolver } from "../..";
2
+ import { AssetRequest } from "../..";
3
+ import type { Request } from "@webiny/handler/types";
3
4
  export declare class PrivateFileAssetRequestResolver implements AssetRequestResolver {
4
5
  private readonly resolver;
5
6
  constructor(resolver: AssetRequestResolver);
@@ -1 +1 @@
1
- {"version":3,"names":["_","require","PrivateFileAssetRequestResolver","constructor","resolver","resolve","request","url","startsWith","params","query","path","AssetRequest","key","decodeURI","replace","context","private","options","width","parseInt","undefined","exports"],"sources":["PrivateFileAssetRequestResolver.ts"],"sourcesContent":["import { AssetRequest, AssetRequestResolver } from \"~/delivery\";\nimport { Request } from \"@webiny/handler/types\";\n\nexport class PrivateFileAssetRequestResolver implements AssetRequestResolver {\n private readonly resolver: AssetRequestResolver;\n\n constructor(resolver: AssetRequestResolver) {\n this.resolver = resolver;\n }\n\n async resolve(request: Request): Promise<AssetRequest | undefined> {\n // Example: /private/65722cb5c7824a0008d05963/image-48.jpg?width=300\n if (!request.url.startsWith(\"/private/\")) {\n return this.resolver.resolve(request);\n }\n\n const params = (request.params ?? {}) as Record<string, any>;\n const query = (request.query ?? {}) as Record<string, any>;\n\n // Example: { '*': '/private/65722cb5c7824a0008d05963/image-48.jpg' },\n const path = params[\"*\"];\n\n return new AssetRequest({\n key: decodeURI(path).replace(\"/private/\", \"\"),\n context: {\n url: request.url,\n private: true\n },\n options: {\n ...query,\n width: query.width ? parseInt(query.width) : undefined\n }\n });\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,CAAA,GAAAC,OAAA;AAGO,MAAMC,+BAA+B,CAAiC;EAGzEC,WAAWA,CAACC,QAA8B,EAAE;IACxC,IAAI,CAACA,QAAQ,GAAGA,QAAQ;EAC5B;EAEA,MAAMC,OAAOA,CAACC,OAAgB,EAAqC;IAC/D;IACA,IAAI,CAACA,OAAO,CAACC,GAAG,CAACC,UAAU,CAAC,WAAW,CAAC,EAAE;MACtC,OAAO,IAAI,CAACJ,QAAQ,CAACC,OAAO,CAACC,OAAO,CAAC;IACzC;IAEA,MAAMG,MAAM,GAAIH,OAAO,CAACG,MAAM,IAAI,CAAC,CAAyB;IAC5D,MAAMC,KAAK,GAAIJ,OAAO,CAACI,KAAK,IAAI,CAAC,CAAyB;;IAE1D;IACA,MAAMC,IAAI,GAAGF,MAAM,CAAC,GAAG,CAAC;IAExB,OAAO,IAAIG,cAAY,CAAC;MACpBC,GAAG,EAAEC,SAAS,CAACH,IAAI,CAAC,CAACI,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;MAC7CC,OAAO,EAAE;QACLT,GAAG,EAAED,OAAO,CAACC,GAAG;QAChBU,OAAO,EAAE;MACb,CAAC;MACDC,OAAO,EAAE;QACL,GAAGR,KAAK;QACRS,KAAK,EAAET,KAAK,CAACS,KAAK,GAAGC,QAAQ,CAACV,KAAK,CAACS,KAAK,CAAC,GAAGE;MACjD;IACJ,CAAC,CAAC;EACN;AACJ;AAACC,OAAA,CAAApB,+BAAA,GAAAA,+BAAA","ignoreList":[]}
1
+ {"version":3,"names":["_","require","PrivateFileAssetRequestResolver","constructor","resolver","resolve","request","url","startsWith","params","query","path","AssetRequest","key","decodeURI","replace","context","private","options","width","parseInt","undefined","exports"],"sources":["PrivateFileAssetRequestResolver.ts"],"sourcesContent":["import type { AssetRequestResolver } from \"~/delivery\";\nimport { AssetRequest } from \"~/delivery\";\nimport type { Request } from \"@webiny/handler/types\";\n\nexport class PrivateFileAssetRequestResolver implements AssetRequestResolver {\n private readonly resolver: AssetRequestResolver;\n\n constructor(resolver: AssetRequestResolver) {\n this.resolver = resolver;\n }\n\n async resolve(request: Request): Promise<AssetRequest | undefined> {\n // Example: /private/65722cb5c7824a0008d05963/image-48.jpg?width=300\n if (!request.url.startsWith(\"/private/\")) {\n return this.resolver.resolve(request);\n }\n\n const params = (request.params ?? {}) as Record<string, any>;\n const query = (request.query ?? {}) as Record<string, any>;\n\n // Example: { '*': '/private/65722cb5c7824a0008d05963/image-48.jpg' },\n const path = params[\"*\"];\n\n return new AssetRequest({\n key: decodeURI(path).replace(\"/private/\", \"\"),\n context: {\n url: request.url,\n private: true\n },\n options: {\n ...query,\n width: query.width ? parseInt(query.width) : undefined\n }\n });\n }\n}\n"],"mappings":";;;;;;AACA,IAAAA,CAAA,GAAAC,OAAA;AAGO,MAAMC,+BAA+B,CAAiC;EAGzEC,WAAWA,CAACC,QAA8B,EAAE;IACxC,IAAI,CAACA,QAAQ,GAAGA,QAAQ;EAC5B;EAEA,MAAMC,OAAOA,CAACC,OAAgB,EAAqC;IAC/D;IACA,IAAI,CAACA,OAAO,CAACC,GAAG,CAACC,UAAU,CAAC,WAAW,CAAC,EAAE;MACtC,OAAO,IAAI,CAACJ,QAAQ,CAACC,OAAO,CAACC,OAAO,CAAC;IACzC;IAEA,MAAMG,MAAM,GAAIH,OAAO,CAACG,MAAM,IAAI,CAAC,CAAyB;IAC5D,MAAMC,KAAK,GAAIJ,OAAO,CAACI,KAAK,IAAI,CAAC,CAAyB;;IAE1D;IACA,MAAMC,IAAI,GAAGF,MAAM,CAAC,GAAG,CAAC;IAExB,OAAO,IAAIG,cAAY,CAAC;MACpBC,GAAG,EAAEC,SAAS,CAACH,IAAI,CAAC,CAACI,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;MAC7CC,OAAO,EAAE;QACLT,GAAG,EAAED,OAAO,CAACC,GAAG;QAChBU,OAAO,EAAE;MACb,CAAC;MACDC,OAAO,EAAE;QACL,GAAGR,KAAK;QACRS,KAAK,EAAET,KAAK,CAACS,KAAK,GAAGC,QAAQ,CAACV,KAAK,CAACS,KAAK,CAAC,GAAGE;MACjD;IACJ,CAAC,CAAC;EACN;AACJ;AAACC,OAAA,CAAApB,+BAAA,GAAAA,+BAAA","ignoreList":[]}
@@ -1,6 +1,6 @@
1
- import { FileManagerContext } from "../../../types";
2
- import { Asset, AssetProcessor, AssetRequest } from "../..";
3
- import { AssetAuthorizer } from "./AssetAuthorizer";
1
+ import type { FileManagerContext } from "../../../types";
2
+ import type { Asset, AssetProcessor, AssetRequest } from "../..";
3
+ import type { AssetAuthorizer } from "./AssetAuthorizer";
4
4
  export declare class PrivateFilesAssetProcessor implements AssetProcessor {
5
5
  private readonly context;
6
6
  private assetProcessor;
@@ -1 +1 @@
1
- {"version":3,"names":["_NotAuthorizedOutputStrategy","require","_RedirectToPublicUrlOutputStrategy","_RedirectToPrivateUrlOutputStrategy","_PrivateCache","_PublicCache","PrivateFilesAssetProcessor","constructor","context","assetAuthorizer","assetProcessor","process","assetRequest","asset","id","getId","security","fileManager","file","withoutAuthorization","getFile","isPrivateFile","isPrivate","requestedViaPrivateEndpoint","setOutputStrategy","RedirectToPublicUrlOutputStrategy","requestedViaPublicEndpoint","RedirectToPrivateUrlOutputStrategy","authorize","error","NotAuthorizedOutputStrategy","processedAsset","strategy","Error","PrivateCache","PublicCache","accessControl","type","startsWith","getContext","private","exports"],"sources":["PrivateFilesAssetProcessor.ts"],"sourcesContent":["import { File, FileManagerContext } from \"~/types\";\nimport { Asset, AssetProcessor, AssetRequest } from \"~/delivery\";\nimport { AssetAuthorizer } from \"./AssetAuthorizer\";\nimport { NotAuthorizedOutputStrategy } from \"./NotAuthorizedOutputStrategy\";\nimport { RedirectToPublicUrlOutputStrategy } from \"./RedirectToPublicUrlOutputStrategy\";\nimport { RedirectToPrivateUrlOutputStrategy } from \"./RedirectToPrivateUrlOutputStrategy\";\nimport { PrivateCache } from \"./PrivateCache\";\nimport { PublicCache } from \"./PublicCache\";\n\ninterface MaybePrivate {\n private?: boolean;\n}\n\nexport class PrivateFilesAssetProcessor implements AssetProcessor {\n private readonly context: FileManagerContext;\n private assetProcessor: AssetProcessor;\n private assetAuthorizer: AssetAuthorizer;\n\n constructor(\n context: FileManagerContext,\n assetAuthorizer: AssetAuthorizer,\n assetProcessor: AssetProcessor\n ) {\n this.assetAuthorizer = assetAuthorizer;\n this.context = context;\n this.assetProcessor = assetProcessor;\n }\n\n async process(assetRequest: AssetRequest, asset: Asset): Promise<Asset> {\n const id = asset.getId();\n const { security, fileManager } = this.context;\n\n // Get file from File Manager by `id`.\n const file = await security.withoutAuthorization(() => fileManager.getFile(id));\n\n const isPrivateFile = this.isPrivate(file);\n\n if (!isPrivateFile && this.requestedViaPrivateEndpoint(assetRequest)) {\n asset.setOutputStrategy(new RedirectToPublicUrlOutputStrategy(assetRequest));\n return asset;\n }\n\n if (isPrivateFile && this.requestedViaPublicEndpoint(assetRequest)) {\n asset.setOutputStrategy(new RedirectToPrivateUrlOutputStrategy(assetRequest));\n return asset;\n }\n\n try {\n await this.assetAuthorizer.authorize(file);\n } catch (error) {\n asset.setOutputStrategy(new NotAuthorizedOutputStrategy());\n\n return asset;\n }\n\n const processedAsset = await this.assetProcessor.process(assetRequest, asset);\n\n processedAsset.setOutputStrategy(strategy => {\n if (!strategy) {\n throw Error(`No asset output strategy is configured!`);\n }\n return isPrivateFile ? new PrivateCache(strategy) : new PublicCache(strategy);\n });\n\n return processedAsset;\n }\n\n private isPrivate(file: File) {\n return file.accessControl && file.accessControl.type.startsWith(\"private-\");\n }\n\n private requestedViaPrivateEndpoint(assetRequest: AssetRequest) {\n return assetRequest.getContext<MaybePrivate>().private;\n }\n\n private requestedViaPublicEndpoint(assetRequest: AssetRequest) {\n return !this.requestedViaPrivateEndpoint(assetRequest);\n }\n}\n"],"mappings":";;;;;;AAGA,IAAAA,4BAAA,GAAAC,OAAA;AACA,IAAAC,kCAAA,GAAAD,OAAA;AACA,IAAAE,mCAAA,GAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AACA,IAAAI,YAAA,GAAAJ,OAAA;AAMO,MAAMK,0BAA0B,CAA2B;EAK9DC,WAAWA,CACPC,OAA2B,EAC3BC,eAAgC,EAChCC,cAA8B,EAChC;IACE,IAAI,CAACD,eAAe,GAAGA,eAAe;IACtC,IAAI,CAACD,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACE,cAAc,GAAGA,cAAc;EACxC;EAEA,MAAMC,OAAOA,CAACC,YAA0B,EAAEC,KAAY,EAAkB;IACpE,MAAMC,EAAE,GAAGD,KAAK,CAACE,KAAK,CAAC,CAAC;IACxB,MAAM;MAAEC,QAAQ;MAAEC;IAAY,CAAC,GAAG,IAAI,CAACT,OAAO;;IAE9C;IACA,MAAMU,IAAI,GAAG,MAAMF,QAAQ,CAACG,oBAAoB,CAAC,MAAMF,WAAW,CAACG,OAAO,CAACN,EAAE,CAAC,CAAC;IAE/E,MAAMO,aAAa,GAAG,IAAI,CAACC,SAAS,CAACJ,IAAI,CAAC;IAE1C,IAAI,CAACG,aAAa,IAAI,IAAI,CAACE,2BAA2B,CAACX,YAAY,CAAC,EAAE;MAClEC,KAAK,CAACW,iBAAiB,CAAC,IAAIC,oEAAiC,CAACb,YAAY,CAAC,CAAC;MAC5E,OAAOC,KAAK;IAChB;IAEA,IAAIQ,aAAa,IAAI,IAAI,CAACK,0BAA0B,CAACd,YAAY,CAAC,EAAE;MAChEC,KAAK,CAACW,iBAAiB,CAAC,IAAIG,sEAAkC,CAACf,YAAY,CAAC,CAAC;MAC7E,OAAOC,KAAK;IAChB;IAEA,IAAI;MACA,MAAM,IAAI,CAACJ,eAAe,CAACmB,SAAS,CAACV,IAAI,CAAC;IAC9C,CAAC,CAAC,OAAOW,KAAK,EAAE;MACZhB,KAAK,CAACW,iBAAiB,CAAC,IAAIM,wDAA2B,CAAC,CAAC,CAAC;MAE1D,OAAOjB,KAAK;IAChB;IAEA,MAAMkB,cAAc,GAAG,MAAM,IAAI,CAACrB,cAAc,CAACC,OAAO,CAACC,YAAY,EAAEC,KAAK,CAAC;IAE7EkB,cAAc,CAACP,iBAAiB,CAACQ,QAAQ,IAAI;MACzC,IAAI,CAACA,QAAQ,EAAE;QACX,MAAMC,KAAK,CAAC,yCAAyC,CAAC;MAC1D;MACA,OAAOZ,aAAa,GAAG,IAAIa,0BAAY,CAACF,QAAQ,CAAC,GAAG,IAAIG,wBAAW,CAACH,QAAQ,CAAC;IACjF,CAAC,CAAC;IAEF,OAAOD,cAAc;EACzB;EAEQT,SAASA,CAACJ,IAAU,EAAE;IAC1B,OAAOA,IAAI,CAACkB,aAAa,IAAIlB,IAAI,CAACkB,aAAa,CAACC,IAAI,CAACC,UAAU,CAAC,UAAU,CAAC;EAC/E;EAEQf,2BAA2BA,CAACX,YAA0B,EAAE;IAC5D,OAAOA,YAAY,CAAC2B,UAAU,CAAe,CAAC,CAACC,OAAO;EAC1D;EAEQd,0BAA0BA,CAACd,YAA0B,EAAE;IAC3D,OAAO,CAAC,IAAI,CAACW,2BAA2B,CAACX,YAAY,CAAC;EAC1D;AACJ;AAAC6B,OAAA,CAAAnC,0BAAA,GAAAA,0BAAA","ignoreList":[]}
1
+ {"version":3,"names":["_NotAuthorizedOutputStrategy","require","_RedirectToPublicUrlOutputStrategy","_RedirectToPrivateUrlOutputStrategy","_PrivateCache","_PublicCache","PrivateFilesAssetProcessor","constructor","context","assetAuthorizer","assetProcessor","process","assetRequest","asset","id","getId","security","fileManager","file","withoutAuthorization","getFile","isPrivateFile","isPrivate","requestedViaPrivateEndpoint","setOutputStrategy","RedirectToPublicUrlOutputStrategy","requestedViaPublicEndpoint","RedirectToPrivateUrlOutputStrategy","authorize","error","NotAuthorizedOutputStrategy","processedAsset","strategy","Error","PrivateCache","PublicCache","accessControl","type","startsWith","getContext","private","exports"],"sources":["PrivateFilesAssetProcessor.ts"],"sourcesContent":["import type { File, FileManagerContext } from \"~/types\";\nimport type { Asset, AssetProcessor, AssetRequest } from \"~/delivery\";\nimport type { AssetAuthorizer } from \"./AssetAuthorizer\";\nimport { NotAuthorizedOutputStrategy } from \"./NotAuthorizedOutputStrategy\";\nimport { RedirectToPublicUrlOutputStrategy } from \"./RedirectToPublicUrlOutputStrategy\";\nimport { RedirectToPrivateUrlOutputStrategy } from \"./RedirectToPrivateUrlOutputStrategy\";\nimport { PrivateCache } from \"./PrivateCache\";\nimport { PublicCache } from \"./PublicCache\";\n\ninterface MaybePrivate {\n private?: boolean;\n}\n\nexport class PrivateFilesAssetProcessor implements AssetProcessor {\n private readonly context: FileManagerContext;\n private assetProcessor: AssetProcessor;\n private assetAuthorizer: AssetAuthorizer;\n\n constructor(\n context: FileManagerContext,\n assetAuthorizer: AssetAuthorizer,\n assetProcessor: AssetProcessor\n ) {\n this.assetAuthorizer = assetAuthorizer;\n this.context = context;\n this.assetProcessor = assetProcessor;\n }\n\n async process(assetRequest: AssetRequest, asset: Asset): Promise<Asset> {\n const id = asset.getId();\n const { security, fileManager } = this.context;\n\n // Get file from File Manager by `id`.\n const file = await security.withoutAuthorization(() => fileManager.getFile(id));\n\n const isPrivateFile = this.isPrivate(file);\n\n if (!isPrivateFile && this.requestedViaPrivateEndpoint(assetRequest)) {\n asset.setOutputStrategy(new RedirectToPublicUrlOutputStrategy(assetRequest));\n return asset;\n }\n\n if (isPrivateFile && this.requestedViaPublicEndpoint(assetRequest)) {\n asset.setOutputStrategy(new RedirectToPrivateUrlOutputStrategy(assetRequest));\n return asset;\n }\n\n try {\n await this.assetAuthorizer.authorize(file);\n } catch (error) {\n asset.setOutputStrategy(new NotAuthorizedOutputStrategy());\n\n return asset;\n }\n\n const processedAsset = await this.assetProcessor.process(assetRequest, asset);\n\n processedAsset.setOutputStrategy(strategy => {\n if (!strategy) {\n throw Error(`No asset output strategy is configured!`);\n }\n return isPrivateFile ? new PrivateCache(strategy) : new PublicCache(strategy);\n });\n\n return processedAsset;\n }\n\n private isPrivate(file: File) {\n return file.accessControl && file.accessControl.type.startsWith(\"private-\");\n }\n\n private requestedViaPrivateEndpoint(assetRequest: AssetRequest) {\n return assetRequest.getContext<MaybePrivate>().private;\n }\n\n private requestedViaPublicEndpoint(assetRequest: AssetRequest) {\n return !this.requestedViaPrivateEndpoint(assetRequest);\n }\n}\n"],"mappings":";;;;;;AAGA,IAAAA,4BAAA,GAAAC,OAAA;AACA,IAAAC,kCAAA,GAAAD,OAAA;AACA,IAAAE,mCAAA,GAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AACA,IAAAI,YAAA,GAAAJ,OAAA;AAMO,MAAMK,0BAA0B,CAA2B;EAK9DC,WAAWA,CACPC,OAA2B,EAC3BC,eAAgC,EAChCC,cAA8B,EAChC;IACE,IAAI,CAACD,eAAe,GAAGA,eAAe;IACtC,IAAI,CAACD,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACE,cAAc,GAAGA,cAAc;EACxC;EAEA,MAAMC,OAAOA,CAACC,YAA0B,EAAEC,KAAY,EAAkB;IACpE,MAAMC,EAAE,GAAGD,KAAK,CAACE,KAAK,CAAC,CAAC;IACxB,MAAM;MAAEC,QAAQ;MAAEC;IAAY,CAAC,GAAG,IAAI,CAACT,OAAO;;IAE9C;IACA,MAAMU,IAAI,GAAG,MAAMF,QAAQ,CAACG,oBAAoB,CAAC,MAAMF,WAAW,CAACG,OAAO,CAACN,EAAE,CAAC,CAAC;IAE/E,MAAMO,aAAa,GAAG,IAAI,CAACC,SAAS,CAACJ,IAAI,CAAC;IAE1C,IAAI,CAACG,aAAa,IAAI,IAAI,CAACE,2BAA2B,CAACX,YAAY,CAAC,EAAE;MAClEC,KAAK,CAACW,iBAAiB,CAAC,IAAIC,oEAAiC,CAACb,YAAY,CAAC,CAAC;MAC5E,OAAOC,KAAK;IAChB;IAEA,IAAIQ,aAAa,IAAI,IAAI,CAACK,0BAA0B,CAACd,YAAY,CAAC,EAAE;MAChEC,KAAK,CAACW,iBAAiB,CAAC,IAAIG,sEAAkC,CAACf,YAAY,CAAC,CAAC;MAC7E,OAAOC,KAAK;IAChB;IAEA,IAAI;MACA,MAAM,IAAI,CAACJ,eAAe,CAACmB,SAAS,CAACV,IAAI,CAAC;IAC9C,CAAC,CAAC,OAAOW,KAAK,EAAE;MACZhB,KAAK,CAACW,iBAAiB,CAAC,IAAIM,wDAA2B,CAAC,CAAC,CAAC;MAE1D,OAAOjB,KAAK;IAChB;IAEA,MAAMkB,cAAc,GAAG,MAAM,IAAI,CAACrB,cAAc,CAACC,OAAO,CAACC,YAAY,EAAEC,KAAK,CAAC;IAE7EkB,cAAc,CAACP,iBAAiB,CAACQ,QAAQ,IAAI;MACzC,IAAI,CAACA,QAAQ,EAAE;QACX,MAAMC,KAAK,CAAC,yCAAyC,CAAC;MAC1D;MACA,OAAOZ,aAAa,GAAG,IAAIa,0BAAY,CAACF,QAAQ,CAAC,GAAG,IAAIG,wBAAW,CAACH,QAAQ,CAAC;IACjF,CAAC,CAAC;IAEF,OAAOD,cAAc;EACzB;EAEQT,SAASA,CAACJ,IAAU,EAAE;IAC1B,OAAOA,IAAI,CAACkB,aAAa,IAAIlB,IAAI,CAACkB,aAAa,CAACC,IAAI,CAACC,UAAU,CAAC,UAAU,CAAC;EAC/E;EAEQf,2BAA2BA,CAACX,YAA0B,EAAE;IAC5D,OAAOA,YAAY,CAAC2B,UAAU,CAAe,CAAC,CAACC,OAAO;EAC1D;EAEQd,0BAA0BA,CAACd,YAA0B,EAAE;IAC3D,OAAO,CAAC,IAAI,CAACW,2BAA2B,CAACX,YAAY,CAAC;EAC1D;AACJ;AAAC6B,OAAA,CAAAnC,0BAAA,GAAAA,0BAAA","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { Asset, AssetOutputStrategy, AssetReply } from "../..";
1
+ import type { Asset, AssetOutputStrategy, AssetReply } from "../..";
2
2
  export declare class PublicCache implements AssetOutputStrategy {
3
3
  private strategy;
4
4
  constructor(strategy: AssetOutputStrategy);
@@ -1 +1 @@
1
- {"version":3,"names":["_cacheControlParser","require","PublicCache","constructor","strategy","output","asset","reply","setHeaders","headers","set","value","cacheControl","parse","stringify","exports"],"sources":["PublicCache.ts"],"sourcesContent":["import { parse, stringify } from \"cache-control-parser\";\nimport { Asset, AssetOutputStrategy, AssetReply } from \"~/delivery\";\n\nexport class PublicCache implements AssetOutputStrategy {\n private strategy: AssetOutputStrategy;\n\n constructor(strategy: AssetOutputStrategy) {\n this.strategy = strategy;\n }\n\n async output(asset: Asset): Promise<AssetReply> {\n const reply = await this.strategy.output(asset);\n\n reply.setHeaders(headers => {\n headers.set(\"cache-control\", (value = \"\") => {\n const cacheControl = parse(value);\n cacheControl[\"private\"] = false;\n cacheControl[\"public\"] = true;\n return stringify(cacheControl);\n });\n return headers;\n });\n\n return reply;\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,mBAAA,GAAAC,OAAA;AAGO,MAAMC,WAAW,CAAgC;EAGpDC,WAAWA,CAACC,QAA6B,EAAE;IACvC,IAAI,CAACA,QAAQ,GAAGA,QAAQ;EAC5B;EAEA,MAAMC,MAAMA,CAACC,KAAY,EAAuB;IAC5C,MAAMC,KAAK,GAAG,MAAM,IAAI,CAACH,QAAQ,CAACC,MAAM,CAACC,KAAK,CAAC;IAE/CC,KAAK,CAACC,UAAU,CAACC,OAAO,IAAI;MACxBA,OAAO,CAACC,GAAG,CAAC,eAAe,EAAE,CAACC,KAAK,GAAG,EAAE,KAAK;QACzC,MAAMC,YAAY,GAAG,IAAAC,yBAAK,EAACF,KAAK,CAAC;QACjCC,YAAY,CAAC,SAAS,CAAC,GAAG,KAAK;QAC/BA,YAAY,CAAC,QAAQ,CAAC,GAAG,IAAI;QAC7B,OAAO,IAAAE,6BAAS,EAACF,YAAY,CAAC;MAClC,CAAC,CAAC;MACF,OAAOH,OAAO;IAClB,CAAC,CAAC;IAEF,OAAOF,KAAK;EAChB;AACJ;AAACQ,OAAA,CAAAb,WAAA,GAAAA,WAAA","ignoreList":[]}
1
+ {"version":3,"names":["_cacheControlParser","require","PublicCache","constructor","strategy","output","asset","reply","setHeaders","headers","set","value","cacheControl","parse","stringify","exports"],"sources":["PublicCache.ts"],"sourcesContent":["import { parse, stringify } from \"cache-control-parser\";\nimport type { Asset, AssetOutputStrategy, AssetReply } from \"~/delivery\";\n\nexport class PublicCache implements AssetOutputStrategy {\n private strategy: AssetOutputStrategy;\n\n constructor(strategy: AssetOutputStrategy) {\n this.strategy = strategy;\n }\n\n async output(asset: Asset): Promise<AssetReply> {\n const reply = await this.strategy.output(asset);\n\n reply.setHeaders(headers => {\n headers.set(\"cache-control\", (value = \"\") => {\n const cacheControl = parse(value);\n cacheControl[\"private\"] = false;\n cacheControl[\"public\"] = true;\n return stringify(cacheControl);\n });\n return headers;\n });\n\n return reply;\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,mBAAA,GAAAC,OAAA;AAGO,MAAMC,WAAW,CAAgC;EAGpDC,WAAWA,CAACC,QAA6B,EAAE;IACvC,IAAI,CAACA,QAAQ,GAAGA,QAAQ;EAC5B;EAEA,MAAMC,MAAMA,CAACC,KAAY,EAAuB;IAC5C,MAAMC,KAAK,GAAG,MAAM,IAAI,CAACH,QAAQ,CAACC,MAAM,CAACC,KAAK,CAAC;IAE/CC,KAAK,CAACC,UAAU,CAACC,OAAO,IAAI;MACxBA,OAAO,CAACC,GAAG,CAAC,eAAe,EAAE,CAACC,KAAK,GAAG,EAAE,KAAK;QACzC,MAAMC,YAAY,GAAG,IAAAC,yBAAK,EAACF,KAAK,CAAC;QACjCC,YAAY,CAAC,SAAS,CAAC,GAAG,KAAK;QAC/BA,YAAY,CAAC,QAAQ,CAAC,GAAG,IAAI;QAC7B,OAAO,IAAAE,6BAAS,EAACF,YAAY,CAAC;MAClC,CAAC,CAAC;MACF,OAAOH,OAAO;IAClB,CAAC,CAAC;IAEF,OAAOF,KAAK;EAChB;AACJ;AAACQ,OAAA,CAAAb,WAAA,GAAAA,WAAA","ignoreList":[]}
@@ -1,4 +1,5 @@
1
- import { Asset, AssetOutputStrategy, AssetReply, AssetRequest } from "../..";
1
+ import type { Asset, AssetOutputStrategy, AssetRequest } from "../..";
2
+ import { AssetReply } from "../..";
2
3
  export declare class RedirectToPrivateUrlOutputStrategy implements AssetOutputStrategy {
3
4
  private assetRequest;
4
5
  constructor(assetRequest: AssetRequest);
@@ -1 +1 @@
1
- {"version":3,"names":["_","require","_handler","RedirectToPrivateUrlOutputStrategy","constructor","assetRequest","output","asset","requestUrl","getContext","url","AssetReply","code","headers","ResponseHeaders","create","location","replace","getContentType","exports"],"sources":["RedirectToPrivateUrlOutputStrategy.ts"],"sourcesContent":["import { Asset, AssetOutputStrategy, AssetReply, AssetRequest } from \"~/delivery\";\nimport { ResponseHeaders } from \"@webiny/handler\";\n\nexport class RedirectToPrivateUrlOutputStrategy implements AssetOutputStrategy {\n private assetRequest: AssetRequest;\n\n constructor(assetRequest: AssetRequest) {\n this.assetRequest = assetRequest;\n }\n\n async output(asset: Asset): Promise<AssetReply> {\n const requestUrl = this.assetRequest.getContext().url;\n\n return new AssetReply({\n code: 301,\n headers: ResponseHeaders.create({\n location: requestUrl.replace(\"/files/\", \"/private/\"),\n \"content-type\": asset.getContentType(),\n \"cache-control\": `public, max-age=${86400 * 30}`\n })\n });\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,CAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAEO,MAAME,kCAAkC,CAAgC;EAG3EC,WAAWA,CAACC,YAA0B,EAAE;IACpC,IAAI,CAACA,YAAY,GAAGA,YAAY;EACpC;EAEA,MAAMC,MAAMA,CAACC,KAAY,EAAuB;IAC5C,MAAMC,UAAU,GAAG,IAAI,CAACH,YAAY,CAACI,UAAU,CAAC,CAAC,CAACC,GAAG;IAErD,OAAO,IAAIC,YAAU,CAAC;MAClBC,IAAI,EAAE,GAAG;MACTC,OAAO,EAAEC,wBAAe,CAACC,MAAM,CAAC;QAC5BC,QAAQ,EAAER,UAAU,CAACS,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC;QACpD,cAAc,EAAEV,KAAK,CAACW,cAAc,CAAC,CAAC;QACtC,eAAe,EAAE,mBAAmB,KAAK,GAAG,EAAE;MAClD,CAAC;IACL,CAAC,CAAC;EACN;AACJ;AAACC,OAAA,CAAAhB,kCAAA,GAAAA,kCAAA","ignoreList":[]}
1
+ {"version":3,"names":["_","require","_handler","RedirectToPrivateUrlOutputStrategy","constructor","assetRequest","output","asset","requestUrl","getContext","url","AssetReply","code","headers","ResponseHeaders","create","location","replace","getContentType","exports"],"sources":["RedirectToPrivateUrlOutputStrategy.ts"],"sourcesContent":["import type { Asset, AssetOutputStrategy, AssetRequest } from \"~/delivery\";\nimport { AssetReply } from \"~/delivery\";\nimport { ResponseHeaders } from \"@webiny/handler\";\n\nexport class RedirectToPrivateUrlOutputStrategy implements AssetOutputStrategy {\n private assetRequest: AssetRequest;\n\n constructor(assetRequest: AssetRequest) {\n this.assetRequest = assetRequest;\n }\n\n async output(asset: Asset): Promise<AssetReply> {\n const requestUrl = this.assetRequest.getContext().url;\n\n return new AssetReply({\n code: 301,\n headers: ResponseHeaders.create({\n location: requestUrl.replace(\"/files/\", \"/private/\"),\n \"content-type\": asset.getContentType(),\n \"cache-control\": `public, max-age=${86400 * 30}`\n })\n });\n }\n}\n"],"mappings":";;;;;;AACA,IAAAA,CAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAEO,MAAME,kCAAkC,CAAgC;EAG3EC,WAAWA,CAACC,YAA0B,EAAE;IACpC,IAAI,CAACA,YAAY,GAAGA,YAAY;EACpC;EAEA,MAAMC,MAAMA,CAACC,KAAY,EAAuB;IAC5C,MAAMC,UAAU,GAAG,IAAI,CAACH,YAAY,CAACI,UAAU,CAAC,CAAC,CAACC,GAAG;IAErD,OAAO,IAAIC,YAAU,CAAC;MAClBC,IAAI,EAAE,GAAG;MACTC,OAAO,EAAEC,wBAAe,CAACC,MAAM,CAAC;QAC5BC,QAAQ,EAAER,UAAU,CAACS,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC;QACpD,cAAc,EAAEV,KAAK,CAACW,cAAc,CAAC,CAAC;QACtC,eAAe,EAAE,mBAAmB,KAAK,GAAG,EAAE;MAClD,CAAC;IACL,CAAC,CAAC;EACN;AACJ;AAACC,OAAA,CAAAhB,kCAAA,GAAAA,kCAAA","ignoreList":[]}
@@ -1,4 +1,5 @@
1
- import { Asset, AssetOutputStrategy, AssetReply, AssetRequest } from "../..";
1
+ import type { Asset, AssetOutputStrategy, AssetRequest } from "../..";
2
+ import { AssetReply } from "../..";
2
3
  export declare class RedirectToPublicUrlOutputStrategy implements AssetOutputStrategy {
3
4
  private assetRequest;
4
5
  constructor(assetRequest: AssetRequest);
@@ -1 +1 @@
1
- {"version":3,"names":["_","require","_handler","RedirectToPublicUrlOutputStrategy","constructor","assetRequest","output","asset","requestUrl","getContext","url","AssetReply","code","headers","ResponseHeaders","create","location","replace","getContentType","exports"],"sources":["RedirectToPublicUrlOutputStrategy.ts"],"sourcesContent":["import { Asset, AssetOutputStrategy, AssetReply, AssetRequest } from \"~/delivery\";\nimport { ResponseHeaders } from \"@webiny/handler\";\n\nexport class RedirectToPublicUrlOutputStrategy implements AssetOutputStrategy {\n private assetRequest: AssetRequest;\n\n constructor(assetRequest: AssetRequest) {\n this.assetRequest = assetRequest;\n }\n\n async output(asset: Asset): Promise<AssetReply> {\n const requestUrl = this.assetRequest.getContext().url;\n\n return new AssetReply({\n code: 301,\n headers: ResponseHeaders.create({\n location: requestUrl.replace(\"/private/\", \"/files/\"),\n \"content-type\": asset.getContentType(),\n \"cache-control\": `public, max-age=${86400 * 30}`\n })\n });\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,CAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAEO,MAAME,iCAAiC,CAAgC;EAG1EC,WAAWA,CAACC,YAA0B,EAAE;IACpC,IAAI,CAACA,YAAY,GAAGA,YAAY;EACpC;EAEA,MAAMC,MAAMA,CAACC,KAAY,EAAuB;IAC5C,MAAMC,UAAU,GAAG,IAAI,CAACH,YAAY,CAACI,UAAU,CAAC,CAAC,CAACC,GAAG;IAErD,OAAO,IAAIC,YAAU,CAAC;MAClBC,IAAI,EAAE,GAAG;MACTC,OAAO,EAAEC,wBAAe,CAACC,MAAM,CAAC;QAC5BC,QAAQ,EAAER,UAAU,CAACS,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC;QACpD,cAAc,EAAEV,KAAK,CAACW,cAAc,CAAC,CAAC;QACtC,eAAe,EAAE,mBAAmB,KAAK,GAAG,EAAE;MAClD,CAAC;IACL,CAAC,CAAC;EACN;AACJ;AAACC,OAAA,CAAAhB,iCAAA,GAAAA,iCAAA","ignoreList":[]}
1
+ {"version":3,"names":["_","require","_handler","RedirectToPublicUrlOutputStrategy","constructor","assetRequest","output","asset","requestUrl","getContext","url","AssetReply","code","headers","ResponseHeaders","create","location","replace","getContentType","exports"],"sources":["RedirectToPublicUrlOutputStrategy.ts"],"sourcesContent":["import type { Asset, AssetOutputStrategy, AssetRequest } from \"~/delivery\";\nimport { AssetReply } from \"~/delivery\";\nimport { ResponseHeaders } from \"@webiny/handler\";\n\nexport class RedirectToPublicUrlOutputStrategy implements AssetOutputStrategy {\n private assetRequest: AssetRequest;\n\n constructor(assetRequest: AssetRequest) {\n this.assetRequest = assetRequest;\n }\n\n async output(asset: Asset): Promise<AssetReply> {\n const requestUrl = this.assetRequest.getContext().url;\n\n return new AssetReply({\n code: 301,\n headers: ResponseHeaders.create({\n location: requestUrl.replace(\"/private/\", \"/files/\"),\n \"content-type\": asset.getContentType(),\n \"cache-control\": `public, max-age=${86400 * 30}`\n })\n });\n }\n}\n"],"mappings":";;;;;;AACA,IAAAA,CAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAEO,MAAME,iCAAiC,CAAgC;EAG1EC,WAAWA,CAACC,YAA0B,EAAE;IACpC,IAAI,CAACA,YAAY,GAAGA,YAAY;EACpC;EAEA,MAAMC,MAAMA,CAACC,KAAY,EAAuB;IAC5C,MAAMC,UAAU,GAAG,IAAI,CAACH,YAAY,CAACI,UAAU,CAAC,CAAC,CAACC,GAAG;IAErD,OAAO,IAAIC,YAAU,CAAC;MAClBC,IAAI,EAAE,GAAG;MACTC,OAAO,EAAEC,wBAAe,CAACC,MAAM,CAAC;QAC5BC,QAAQ,EAAER,UAAU,CAACS,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC;QACpD,cAAc,EAAEV,KAAK,CAACW,cAAc,CAAC,CAAC;QACtC,eAAe,EAAE,mBAAmB,KAAK,GAAG,EAAE;MAClD,CAAC;IACL,CAAC,CAAC;EACN;AACJ;AAACC,OAAA,CAAAhB,iCAAA,GAAAA,iCAAA","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { SecurityIdentity } from "@webiny/api-security/types";
1
+ import type { SecurityIdentity } from "@webiny/api-security/types";
2
2
  /**
3
3
  * This identity is used to bypass the current behavior of FLP. Even when using `withoutAuthorization`,
4
4
  * FLP will complain, if the identity is `undefined`. Using this mock identity and `security.withIdentity`,
@@ -1 +1 @@
1
- {"version":3,"names":["internalIdentity","exports","id","type","displayName"],"sources":["internalIdentity.ts"],"sourcesContent":["import { SecurityIdentity } from \"@webiny/api-security/types\";\n\n/**\n * This identity is used to bypass the current behavior of FLP. Even when using `withoutAuthorization`,\n * FLP will complain, if the identity is `undefined`. Using this mock identity and `security.withIdentity`,\n * we set this temporary identity for the duration of the callback execution, and FLP is happy.\n */\nexport const internalIdentity: SecurityIdentity = {\n id: \"asset-delivery\",\n type: \"asset-delivery\",\n displayName: \"\"\n};\n"],"mappings":";;;;;;AAEA;AACA;AACA;AACA;AACA;AACO,MAAMA,gBAAkC,GAAAC,OAAA,CAAAD,gBAAA,GAAG;EAC9CE,EAAE,EAAE,gBAAgB;EACpBC,IAAI,EAAE,gBAAgB;EACtBC,WAAW,EAAE;AACjB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["internalIdentity","exports","id","type","displayName"],"sources":["internalIdentity.ts"],"sourcesContent":["import type { SecurityIdentity } from \"@webiny/api-security/types\";\n\n/**\n * This identity is used to bypass the current behavior of FLP. Even when using `withoutAuthorization`,\n * FLP will complain, if the identity is `undefined`. Using this mock identity and `security.withIdentity`,\n * we set this temporary identity for the duration of the callback execution, and FLP is happy.\n */\nexport const internalIdentity: SecurityIdentity = {\n id: \"asset-delivery\",\n type: \"asset-delivery\",\n displayName: \"\"\n};\n"],"mappings":";;;;;;AAEA;AACA;AACA;AACA;AACA;AACO,MAAMA,gBAAkC,GAAAC,OAAA,CAAAD,gBAAA,GAAG;EAC9CE,EAAE,EAAE,gBAAgB;EACpBC,IAAI,EAAE,gBAAgB;EACtBC,WAAW,EAAE;AACjB,CAAC","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { Asset, AssetProcessor, AssetRequest } from "../..";
1
+ import type { Asset, AssetProcessor, AssetRequest } from "../..";
2
2
  export declare class PassthroughAssetProcessor implements AssetProcessor {
3
3
  process(assetRequest: AssetRequest, asset: Asset): Promise<Asset>;
4
4
  }
@@ -1 +1 @@
1
- {"version":3,"names":["PassthroughAssetProcessor","process","assetRequest","asset","Promise","resolve","exports"],"sources":["PassthroughAssetProcessor.ts"],"sourcesContent":["import { Asset, AssetProcessor, AssetRequest } from \"~/delivery\";\n\nexport class PassthroughAssetProcessor implements AssetProcessor {\n process(assetRequest: AssetRequest, asset: Asset): Promise<Asset> {\n return Promise.resolve(asset);\n }\n}\n"],"mappings":";;;;;;AAEO,MAAMA,yBAAyB,CAA2B;EAC7DC,OAAOA,CAACC,YAA0B,EAAEC,KAAY,EAAkB;IAC9D,OAAOC,OAAO,CAACC,OAAO,CAACF,KAAK,CAAC;EACjC;AACJ;AAACG,OAAA,CAAAN,yBAAA,GAAAA,yBAAA","ignoreList":[]}
1
+ {"version":3,"names":["PassthroughAssetProcessor","process","assetRequest","asset","Promise","resolve","exports"],"sources":["PassthroughAssetProcessor.ts"],"sourcesContent":["import type { Asset, AssetProcessor, AssetRequest } from \"~/delivery\";\n\nexport class PassthroughAssetProcessor implements AssetProcessor {\n process(assetRequest: AssetRequest, asset: Asset): Promise<Asset> {\n return Promise.resolve(asset);\n }\n}\n"],"mappings":";;;;;;AAEO,MAAMA,yBAAyB,CAA2B;EAC7DC,OAAOA,CAACC,YAA0B,EAAEC,KAAY,EAAkB;IAC9D,OAAOC,OAAO,CAACC,OAAO,CAACF,KAAK,CAAC;EACjC;AACJ;AAACG,OAAA,CAAAN,yBAAA,GAAAA,yBAAA","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { Asset, AssetTransformationStrategy, AssetRequest } from "../..";
1
+ import type { Asset, AssetTransformationStrategy, AssetRequest } from "../..";
2
2
  export declare class PassthroughAssetTransformationStrategy implements AssetTransformationStrategy {
3
3
  transform(assetRequest: AssetRequest, asset: Asset): Promise<Asset>;
4
4
  }
@@ -1 +1 @@
1
- {"version":3,"names":["PassthroughAssetTransformationStrategy","transform","assetRequest","asset","Promise","resolve","exports"],"sources":["PassthroughAssetTransformationStrategy.ts"],"sourcesContent":["import { Asset, AssetTransformationStrategy, AssetRequest } from \"~/delivery\";\n\nexport class PassthroughAssetTransformationStrategy implements AssetTransformationStrategy {\n transform(assetRequest: AssetRequest, asset: Asset): Promise<Asset> {\n return Promise.resolve(asset);\n }\n}\n"],"mappings":";;;;;;AAEO,MAAMA,sCAAsC,CAAwC;EACvFC,SAASA,CAACC,YAA0B,EAAEC,KAAY,EAAkB;IAChE,OAAOC,OAAO,CAACC,OAAO,CAACF,KAAK,CAAC;EACjC;AACJ;AAACG,OAAA,CAAAN,sCAAA,GAAAA,sCAAA","ignoreList":[]}
1
+ {"version":3,"names":["PassthroughAssetTransformationStrategy","transform","assetRequest","asset","Promise","resolve","exports"],"sources":["PassthroughAssetTransformationStrategy.ts"],"sourcesContent":["import type { Asset, AssetTransformationStrategy, AssetRequest } from \"~/delivery\";\n\nexport class PassthroughAssetTransformationStrategy implements AssetTransformationStrategy {\n transform(assetRequest: AssetRequest, asset: Asset): Promise<Asset> {\n return Promise.resolve(asset);\n }\n}\n"],"mappings":";;;;;;AAEO,MAAMA,sCAAsC,CAAwC;EACvFC,SAASA,CAACC,YAA0B,EAAEC,KAAY,EAAkB;IAChE,OAAOC,OAAO,CAACC,OAAO,CAACF,KAAK,CAAC;EACjC;AACJ;AAACG,OAAA,CAAAN,sCAAA,GAAAA,sCAAA","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { Asset, AssetProcessor, AssetRequest, AssetTransformationStrategy } from "../..";
1
+ import type { Asset, AssetProcessor, AssetRequest, AssetTransformationStrategy } from "../..";
2
2
  export declare class TransformationAssetProcessor implements AssetProcessor {
3
3
  private strategy;
4
4
  constructor(strategy: AssetTransformationStrategy);
@@ -1 +1 @@
1
- {"version":3,"names":["TransformationAssetProcessor","constructor","strategy","process","assetRequest","asset","original","getOptions","console","log","transform","exports"],"sources":["TransformationAssetProcessor.ts"],"sourcesContent":["import { Asset, AssetProcessor, AssetRequest, AssetTransformationStrategy } from \"~/delivery\";\n\nexport class TransformationAssetProcessor implements AssetProcessor {\n private strategy: AssetTransformationStrategy;\n\n constructor(strategy: AssetTransformationStrategy) {\n this.strategy = strategy;\n }\n\n async process(assetRequest: AssetRequest, asset: Asset): Promise<Asset> {\n const { original } = assetRequest.getOptions();\n\n // If the `original` image was requested, we skip all transformations.\n if (original) {\n console.log(\"Skip transformations; original asset was requested.\");\n return asset;\n }\n\n return this.strategy.transform(assetRequest, asset);\n }\n}\n"],"mappings":";;;;;;AAEO,MAAMA,4BAA4B,CAA2B;EAGhEC,WAAWA,CAACC,QAAqC,EAAE;IAC/C,IAAI,CAACA,QAAQ,GAAGA,QAAQ;EAC5B;EAEA,MAAMC,OAAOA,CAACC,YAA0B,EAAEC,KAAY,EAAkB;IACpE,MAAM;MAAEC;IAAS,CAAC,GAAGF,YAAY,CAACG,UAAU,CAAC,CAAC;;IAE9C;IACA,IAAID,QAAQ,EAAE;MACVE,OAAO,CAACC,GAAG,CAAC,qDAAqD,CAAC;MAClE,OAAOJ,KAAK;IAChB;IAEA,OAAO,IAAI,CAACH,QAAQ,CAACQ,SAAS,CAACN,YAAY,EAAEC,KAAK,CAAC;EACvD;AACJ;AAACM,OAAA,CAAAX,4BAAA,GAAAA,4BAAA","ignoreList":[]}
1
+ {"version":3,"names":["TransformationAssetProcessor","constructor","strategy","process","assetRequest","asset","original","getOptions","console","log","transform","exports"],"sources":["TransformationAssetProcessor.ts"],"sourcesContent":["import type { Asset, AssetProcessor, AssetRequest, AssetTransformationStrategy } from \"~/delivery\";\n\nexport class TransformationAssetProcessor implements AssetProcessor {\n private strategy: AssetTransformationStrategy;\n\n constructor(strategy: AssetTransformationStrategy) {\n this.strategy = strategy;\n }\n\n async process(assetRequest: AssetRequest, asset: Asset): Promise<Asset> {\n const { original } = assetRequest.getOptions();\n\n // If the `original` image was requested, we skip all transformations.\n if (original) {\n console.log(\"Skip transformations; original asset was requested.\");\n return asset;\n }\n\n return this.strategy.transform(assetRequest, asset);\n }\n}\n"],"mappings":";;;;;;AAEO,MAAMA,4BAA4B,CAA2B;EAGhEC,WAAWA,CAACC,QAAqC,EAAE;IAC/C,IAAI,CAACA,QAAQ,GAAGA,QAAQ;EAC5B;EAEA,MAAMC,OAAOA,CAACC,YAA0B,EAAEC,KAAY,EAAkB;IACpE,MAAM;MAAEC;IAAS,CAAC,GAAGF,YAAY,CAACG,UAAU,CAAC,CAAC;;IAE9C;IACA,IAAID,QAAQ,EAAE;MACVE,OAAO,CAACC,GAAG,CAAC,qDAAqD,CAAC;MAClE,OAAOJ,KAAK;IAChB;IAEA,OAAO,IAAI,CAACH,QAAQ,CAACQ,SAAS,CAACN,YAAY,EAAEC,KAAK,CAAC;EACvD;AACJ;AAACM,OAAA,CAAAX,4BAAA,GAAAA,4BAAA","ignoreList":[]}
@@ -1,6 +1,6 @@
1
- import { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb";
1
+ import type { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb";
2
2
  import { AssetDeliveryConfigModifierPlugin } from "./index";
3
3
  export interface AssetDeliveryParams {
4
4
  documentClient: DynamoDBDocument;
5
5
  }
6
- export declare const setupAssetDelivery: (params: AssetDeliveryParams) => (AssetDeliveryConfigModifierPlugin | import("@webiny/handler").ModifyFastifyPlugin)[];
6
+ export declare const setupAssetDelivery: (params: AssetDeliveryParams) => (import("@webiny/handler").ModifyFastifyPlugin | AssetDeliveryConfigModifierPlugin)[];
@@ -1 +1 @@
1
- {"version":3,"names":["_handler","require","_PrivateFilesAssetProcessor","_PrivateAuthenticatedAuthorizer","_PrivateFileAssetRequestResolver","_index","noCacheHeaders","ResponseHeaders","create","assertAssetRequestWasResolved","request","undefined","Error","assertAssetWasResolved","asset","setupAssetDelivery","params","outputAsset","reply","assetReply","output","headers","getHeaders","set","code","getCode","send","getBody","createModifyFastifyPlugin","app","configBuilder","AssetDeliveryConfigBuilder","configPlugins","webiny","plugins","byType","AssetDeliveryConfigModifierPlugin","type","forEach","configPlugin","buildConfig","resolvedRequest","resolvedAsset","handlerOnRequest","createHandlerOnRequest","requestResolver","getAssetRequestResolver","resolve","error","hijack","assetResolver","getAssetResolver","assetLocale","getLocale","getTenant","deliveryRoute","createRoute","onGet","context","_","wcp","canUsePrivateFiles","decorateAssetProcessor","assetProcessor","assetAuthorizer","PrivateAuthenticatedAuthorizer","PrivateFilesAssetProcessor","outputStrategy","getAssetOutputStrategy","setOutputStrategy","getAssetProcessor","processedAsset","process","console","log","getSize","override","register","createAssetDeliveryConfig","config","decorateAssetRequestResolver","FilesAssetRequestResolver","assetRequestResolver","AliasAssetRequestResolver","documentClient","PrivateFileAssetRequestResolver","exports"],"sources":["setupAssetDelivery.ts"],"sourcesContent":["import { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb\";\nimport {\n createHandlerOnRequest,\n createModifyFastifyPlugin,\n createRoute,\n ResponseHeaders\n} from \"@webiny/handler\";\nimport { FileManagerContext } from \"~/types\";\nimport { PrivateFilesAssetProcessor } from \"./AssetDelivery/privateFiles/PrivateFilesAssetProcessor\";\nimport { PrivateAuthenticatedAuthorizer } from \"./AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer\";\nimport { PrivateFileAssetRequestResolver } from \"./AssetDelivery/privateFiles/PrivateFileAssetRequestResolver\";\nimport {\n Asset,\n AssetDeliveryConfigBuilder,\n AssetDeliveryConfigModifierPlugin,\n AssetRequest,\n AliasAssetRequestResolver,\n FilesAssetRequestResolver,\n createAssetDeliveryConfig\n} from \"./index\";\nimport { Reply } from \"@webiny/handler/types\";\n\nconst noCacheHeaders = ResponseHeaders.create({\n \"content-type\": \"application/json\",\n \"cache-control\": \"no-cache, no-store, must-revalidate\"\n});\n\nfunction assertAssetRequestWasResolved(request: any): asserts request is AssetRequest {\n if (request === undefined) {\n throw new Error(\"Not an AssetRequest!\");\n }\n}\n\nfunction assertAssetWasResolved(asset: Asset | undefined): asserts asset is Asset {\n if (asset === undefined) {\n throw new Error(\"Not an Asset!\");\n }\n}\n\nexport interface AssetDeliveryParams {\n documentClient: DynamoDBDocument;\n}\n\nexport const setupAssetDelivery = (params: AssetDeliveryParams) => {\n const outputAsset = async (reply: Reply, asset: Asset) => {\n const assetReply = await asset.output();\n const headers = assetReply.getHeaders();\n\n // Set default headers.\n headers.set(\"x-webiny-base64-encoded\", \"true\");\n\n reply.code(assetReply.getCode());\n reply.headers(headers.getHeaders());\n return reply.send(await assetReply.getBody());\n };\n\n return [\n createModifyFastifyPlugin(app => {\n // Config builder allows config modification via plugins.\n const configBuilder = new AssetDeliveryConfigBuilder();\n\n // Apply config modifications.\n const configPlugins = app.webiny.plugins.byType<AssetDeliveryConfigModifierPlugin>(\n AssetDeliveryConfigModifierPlugin.type\n );\n\n configPlugins.forEach(configPlugin => configPlugin.buildConfig(configBuilder));\n\n let resolvedRequest: AssetRequest | undefined;\n let resolvedAsset: Asset | undefined;\n\n // Create a `HandlerOnRequest` plugin to resolve `tenant` and `locale`, and allow the system to bootstrap.\n const handlerOnRequest = createHandlerOnRequest(async (request, reply) => {\n const requestResolver = configBuilder.getAssetRequestResolver();\n resolvedRequest = await requestResolver.resolve(request);\n\n if (!resolvedRequest) {\n reply\n .code(404)\n .headers(noCacheHeaders.getHeaders())\n .send({ error: \"Unable to resolve the request!\" })\n .hijack();\n\n return false;\n }\n\n const assetResolver = configBuilder.getAssetResolver();\n\n resolvedAsset = await assetResolver.resolve(resolvedRequest);\n\n if (!resolvedAsset) {\n reply\n .code(404)\n .headers(noCacheHeaders.getHeaders())\n .send({ error: \"Asset not found!\" })\n .hijack();\n\n return false;\n }\n\n const assetLocale = resolvedAsset.getLocale();\n\n request.headers = {\n ...request.headers,\n \"x-tenant\": resolvedAsset.getTenant(),\n \"x-i18n-locale\": `default:${assetLocale};content:${assetLocale};`\n };\n\n return;\n });\n\n // Create the `Route` plugin, to handle all GET requests, and output the resolved asset.\n const deliveryRoute = createRoute<FileManagerContext>(({ onGet, context }) => {\n onGet(\n \"*\",\n async (_, reply) => {\n assertAssetRequestWasResolved(resolvedRequest);\n assertAssetWasResolved(resolvedAsset);\n\n if (context.wcp.canUsePrivateFiles()) {\n configBuilder.decorateAssetProcessor(({ assetProcessor, context }) => {\n // Currently, we only have one authorizer.\n const assetAuthorizer = new PrivateAuthenticatedAuthorizer(context);\n\n return new PrivateFilesAssetProcessor(\n context,\n assetAuthorizer,\n assetProcessor\n );\n });\n }\n\n const outputStrategy = configBuilder.getAssetOutputStrategy(\n context,\n resolvedRequest,\n resolvedAsset\n );\n\n resolvedAsset.setOutputStrategy(outputStrategy);\n\n const assetProcessor = configBuilder.getAssetProcessor(context);\n\n const processedAsset = await assetProcessor.process(\n resolvedRequest,\n resolvedAsset\n );\n\n // Get reply object (runs the output strategy under the hood).\n console.log(`Output asset (size: ${processedAsset.getSize()} bytes).`);\n return outputAsset(reply, processedAsset);\n },\n { override: true }\n );\n });\n\n app.webiny.plugins.register(handlerOnRequest, deliveryRoute);\n }),\n // Create the default configuration\n createAssetDeliveryConfig(config => {\n config.decorateAssetRequestResolver(() => {\n // This resolver works with `/files/*` requests.\n return new FilesAssetRequestResolver();\n });\n\n config.decorateAssetRequestResolver(({ assetRequestResolver }) => {\n // This resolver tries to resolve the request using aliases.\n return new AliasAssetRequestResolver(params.documentClient, assetRequestResolver);\n });\n\n config.decorateAssetRequestResolver(({ assetRequestResolver }) => {\n // This resolver works with `/private/*` requests.\n return new PrivateFileAssetRequestResolver(assetRequestResolver);\n });\n })\n ];\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_handler","require","_PrivateFilesAssetProcessor","_PrivateAuthenticatedAuthorizer","_PrivateFileAssetRequestResolver","_index","noCacheHeaders","ResponseHeaders","create","assertAssetRequestWasResolved","request","undefined","Error","assertAssetWasResolved","asset","setupAssetDelivery","params","outputAsset","reply","assetReply","output","headers","getHeaders","set","code","getCode","send","getBody","createModifyFastifyPlugin","app","configBuilder","AssetDeliveryConfigBuilder","configPlugins","webiny","plugins","byType","AssetDeliveryConfigModifierPlugin","type","forEach","configPlugin","buildConfig","resolvedRequest","resolvedAsset","handlerOnRequest","createHandlerOnRequest","requestResolver","getAssetRequestResolver","resolve","error","hijack","assetResolver","getAssetResolver","assetLocale","getLocale","getTenant","deliveryRoute","createRoute","onGet","context","_","wcp","canUsePrivateFiles","decorateAssetProcessor","assetProcessor","assetAuthorizer","PrivateAuthenticatedAuthorizer","PrivateFilesAssetProcessor","outputStrategy","getAssetOutputStrategy","setOutputStrategy","getAssetProcessor","processedAsset","process","console","log","getSize","override","register","createAssetDeliveryConfig","config","decorateAssetRequestResolver","FilesAssetRequestResolver","assetRequestResolver","AliasAssetRequestResolver","documentClient","PrivateFileAssetRequestResolver","exports"],"sources":["setupAssetDelivery.ts"],"sourcesContent":["import type { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb\";\nimport {\n createHandlerOnRequest,\n createModifyFastifyPlugin,\n createRoute,\n ResponseHeaders\n} from \"@webiny/handler\";\nimport type { FileManagerContext } from \"~/types\";\nimport { PrivateFilesAssetProcessor } from \"./AssetDelivery/privateFiles/PrivateFilesAssetProcessor\";\nimport { PrivateAuthenticatedAuthorizer } from \"./AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer\";\nimport { PrivateFileAssetRequestResolver } from \"./AssetDelivery/privateFiles/PrivateFileAssetRequestResolver\";\nimport type { Asset, AssetRequest } from \"./index\";\nimport {\n AssetDeliveryConfigBuilder,\n AssetDeliveryConfigModifierPlugin,\n AliasAssetRequestResolver,\n FilesAssetRequestResolver,\n createAssetDeliveryConfig\n} from \"./index\";\nimport type { Reply } from \"@webiny/handler/types\";\n\nconst noCacheHeaders = ResponseHeaders.create({\n \"content-type\": \"application/json\",\n \"cache-control\": \"no-cache, no-store, must-revalidate\"\n});\n\nfunction assertAssetRequestWasResolved(request: any): asserts request is AssetRequest {\n if (request === undefined) {\n throw new Error(\"Not an AssetRequest!\");\n }\n}\n\nfunction assertAssetWasResolved(asset: Asset | undefined): asserts asset is Asset {\n if (asset === undefined) {\n throw new Error(\"Not an Asset!\");\n }\n}\n\nexport interface AssetDeliveryParams {\n documentClient: DynamoDBDocument;\n}\n\nexport const setupAssetDelivery = (params: AssetDeliveryParams) => {\n const outputAsset = async (reply: Reply, asset: Asset) => {\n const assetReply = await asset.output();\n const headers = assetReply.getHeaders();\n\n // Set default headers.\n headers.set(\"x-webiny-base64-encoded\", \"true\");\n\n reply.code(assetReply.getCode());\n reply.headers(headers.getHeaders());\n return reply.send(await assetReply.getBody());\n };\n\n return [\n createModifyFastifyPlugin(app => {\n // Config builder allows config modification via plugins.\n const configBuilder = new AssetDeliveryConfigBuilder();\n\n // Apply config modifications.\n const configPlugins = app.webiny.plugins.byType<AssetDeliveryConfigModifierPlugin>(\n AssetDeliveryConfigModifierPlugin.type\n );\n\n configPlugins.forEach(configPlugin => configPlugin.buildConfig(configBuilder));\n\n let resolvedRequest: AssetRequest | undefined;\n let resolvedAsset: Asset | undefined;\n\n // Create a `HandlerOnRequest` plugin to resolve `tenant` and `locale`, and allow the system to bootstrap.\n const handlerOnRequest = createHandlerOnRequest(async (request, reply) => {\n const requestResolver = configBuilder.getAssetRequestResolver();\n resolvedRequest = await requestResolver.resolve(request);\n\n if (!resolvedRequest) {\n reply\n .code(404)\n .headers(noCacheHeaders.getHeaders())\n .send({ error: \"Unable to resolve the request!\" })\n .hijack();\n\n return false;\n }\n\n const assetResolver = configBuilder.getAssetResolver();\n\n resolvedAsset = await assetResolver.resolve(resolvedRequest);\n\n if (!resolvedAsset) {\n reply\n .code(404)\n .headers(noCacheHeaders.getHeaders())\n .send({ error: \"Asset not found!\" })\n .hijack();\n\n return false;\n }\n\n const assetLocale = resolvedAsset.getLocale();\n\n request.headers = {\n ...request.headers,\n \"x-tenant\": resolvedAsset.getTenant(),\n \"x-i18n-locale\": `default:${assetLocale};content:${assetLocale};`\n };\n\n return;\n });\n\n // Create the `Route` plugin, to handle all GET requests, and output the resolved asset.\n const deliveryRoute = createRoute<FileManagerContext>(({ onGet, context }) => {\n onGet(\n \"*\",\n async (_, reply) => {\n assertAssetRequestWasResolved(resolvedRequest);\n assertAssetWasResolved(resolvedAsset);\n\n if (context.wcp.canUsePrivateFiles()) {\n configBuilder.decorateAssetProcessor(({ assetProcessor, context }) => {\n // Currently, we only have one authorizer.\n const assetAuthorizer = new PrivateAuthenticatedAuthorizer(context);\n\n return new PrivateFilesAssetProcessor(\n context,\n assetAuthorizer,\n assetProcessor\n );\n });\n }\n\n const outputStrategy = configBuilder.getAssetOutputStrategy(\n context,\n resolvedRequest,\n resolvedAsset\n );\n\n resolvedAsset.setOutputStrategy(outputStrategy);\n\n const assetProcessor = configBuilder.getAssetProcessor(context);\n\n const processedAsset = await assetProcessor.process(\n resolvedRequest,\n resolvedAsset\n );\n\n // Get reply object (runs the output strategy under the hood).\n console.log(`Output asset (size: ${processedAsset.getSize()} bytes).`);\n return outputAsset(reply, processedAsset);\n },\n { override: true }\n );\n });\n\n app.webiny.plugins.register(handlerOnRequest, deliveryRoute);\n }),\n // Create the default configuration\n createAssetDeliveryConfig(config => {\n config.decorateAssetRequestResolver(() => {\n // This resolver works with `/files/*` requests.\n return new FilesAssetRequestResolver();\n });\n\n config.decorateAssetRequestResolver(({ assetRequestResolver }) => {\n // This resolver tries to resolve the request using aliases.\n return new AliasAssetRequestResolver(params.documentClient, assetRequestResolver);\n });\n\n config.decorateAssetRequestResolver(({ assetRequestResolver }) => {\n // This resolver works with `/private/*` requests.\n return new PrivateFileAssetRequestResolver(assetRequestResolver);\n });\n })\n ];\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,3 +1,3 @@
1
1
  import { GraphQLSchemaPlugin } from "@webiny/handler-graphql";
2
- import { FileManagerContext } from "../types";
2
+ import type { FileManagerContext } from "../types";
3
3
  export declare const createBaseSchema: () => GraphQLSchemaPlugin<FileManagerContext>;
@@ -1 +1 @@
1
- {"version":3,"names":["_handlerGraphql","require","_utils","createBaseSchema","fileManagerGraphQL","GraphQLSchemaPlugin","typeDefs","resolvers","Query","fileManager","emptyResolver","Mutation","FmQuery","version","_","__","context","i18n","tenancy","getCurrentTenant","getContentLocale","getVersion","getSettings","resolve","FmMutation","install","args","srcPrefix","updateSettings","data","name","exports"],"sources":["baseSchema.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql\";\nimport { FileManagerContext } from \"~/types\";\nimport { emptyResolver, resolve } from \"./utils\";\n\nexport const createBaseSchema = () => {\n const fileManagerGraphQL = new GraphQLSchemaPlugin<FileManagerContext>({\n typeDefs: /* GraphQL */ `\n type FmError {\n code: String\n message: String\n data: JSON\n stack: String\n }\n\n type FmCreatedBy {\n id: ID\n displayName: String\n type: String\n }\n\n type FmListMeta {\n cursor: String\n totalCount: Int\n hasMoreItems: Boolean\n }\n\n type FmBooleanResponse {\n data: Boolean\n error: FmError\n }\n\n type FmSettings {\n uploadMinFileSize: Number\n uploadMaxFileSize: Number\n srcPrefix: String\n }\n\n input FmSettingsInput {\n uploadMinFileSize: Number\n uploadMaxFileSize: Number\n srcPrefix: String\n }\n\n type FmSettingsResponse {\n data: FmSettings\n error: FmError\n }\n\n type FmQuery {\n version: String\n getSettings: FmSettingsResponse\n }\n\n type FmDeleteResponse {\n data: Boolean\n error: FmError\n }\n\n type FmMutation {\n install(srcPrefix: String): FmBooleanResponse\n updateSettings(data: FmSettingsInput): FmSettingsResponse\n }\n\n input FmInstallInput {\n srcPrefix: String!\n }\n\n extend type Query {\n fileManager: FmQuery\n }\n\n extend type Mutation {\n fileManager: FmMutation\n }\n `,\n resolvers: {\n Query: {\n fileManager: emptyResolver\n },\n Mutation: {\n fileManager: emptyResolver\n },\n FmQuery: {\n async version(_, __, context) {\n const { i18n, tenancy, fileManager } = context;\n if (!tenancy.getCurrentTenant() || !i18n.getContentLocale()) {\n return null;\n }\n\n const version = await fileManager.getVersion();\n return version ? \"true\" : null;\n },\n async getSettings(_, __, context) {\n return resolve(() => context.fileManager.getSettings());\n }\n },\n FmMutation: {\n async install(_, args: any, context) {\n return resolve(() =>\n context.fileManager.install({ srcPrefix: args.srcPrefix })\n );\n },\n async updateSettings(_, args: any, context) {\n return resolve(() => context.fileManager.updateSettings(args.data));\n }\n }\n }\n });\n fileManagerGraphQL.name = \"fm.graphql.base\";\n\n return fileManagerGraphQL;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AAEO,MAAME,gBAAgB,GAAGA,CAAA,KAAM;EAClC,MAAMC,kBAAkB,GAAG,IAAIC,mCAAmB,CAAqB;IACnEC,QAAQ,EAAE,aAAc;AAChC;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,SAAS;IACDC,SAAS,EAAE;MACPC,KAAK,EAAE;QACHC,WAAW,EAAEC;MACjB,CAAC;MACDC,QAAQ,EAAE;QACNF,WAAW,EAAEC;MACjB,CAAC;MACDE,OAAO,EAAE;QACL,MAAMC,OAAOA,CAACC,CAAC,EAAEC,EAAE,EAAEC,OAAO,EAAE;UAC1B,MAAM;YAAEC,IAAI;YAAEC,OAAO;YAAET;UAAY,CAAC,GAAGO,OAAO;UAC9C,IAAI,CAACE,OAAO,CAACC,gBAAgB,CAAC,CAAC,IAAI,CAACF,IAAI,CAACG,gBAAgB,CAAC,CAAC,EAAE;YACzD,OAAO,IAAI;UACf;UAEA,MAAMP,OAAO,GAAG,MAAMJ,WAAW,CAACY,UAAU,CAAC,CAAC;UAC9C,OAAOR,OAAO,GAAG,MAAM,GAAG,IAAI;QAClC,CAAC;QACD,MAAMS,WAAWA,CAACR,CAAC,EAAEC,EAAE,EAAEC,OAAO,EAAE;UAC9B,OAAO,IAAAO,cAAO,EAAC,MAAMP,OAAO,CAACP,WAAW,CAACa,WAAW,CAAC,CAAC,CAAC;QAC3D;MACJ,CAAC;MACDE,UAAU,EAAE;QACR,MAAMC,OAAOA,CAACX,CAAC,EAAEY,IAAS,EAAEV,OAAO,EAAE;UACjC,OAAO,IAAAO,cAAO,EAAC,MACXP,OAAO,CAACP,WAAW,CAACgB,OAAO,CAAC;YAAEE,SAAS,EAAED,IAAI,CAACC;UAAU,CAAC,CAC7D,CAAC;QACL,CAAC;QACD,MAAMC,cAAcA,CAACd,CAAC,EAAEY,IAAS,EAAEV,OAAO,EAAE;UACxC,OAAO,IAAAO,cAAO,EAAC,MAAMP,OAAO,CAACP,WAAW,CAACmB,cAAc,CAACF,IAAI,CAACG,IAAI,CAAC,CAAC;QACvE;MACJ;IACJ;EACJ,CAAC,CAAC;EACFzB,kBAAkB,CAAC0B,IAAI,GAAG,iBAAiB;EAE3C,OAAO1B,kBAAkB;AAC7B,CAAC;AAAC2B,OAAA,CAAA5B,gBAAA,GAAAA,gBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_handlerGraphql","require","_utils","createBaseSchema","fileManagerGraphQL","GraphQLSchemaPlugin","typeDefs","resolvers","Query","fileManager","emptyResolver","Mutation","FmQuery","version","_","__","context","i18n","tenancy","getCurrentTenant","getContentLocale","getVersion","getSettings","resolve","FmMutation","install","args","srcPrefix","updateSettings","data","name","exports"],"sources":["baseSchema.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql\";\nimport type { FileManagerContext } from \"~/types\";\nimport { emptyResolver, resolve } from \"./utils\";\n\nexport const createBaseSchema = () => {\n const fileManagerGraphQL = new GraphQLSchemaPlugin<FileManagerContext>({\n typeDefs: /* GraphQL */ `\n type FmError {\n code: String\n message: String\n data: JSON\n stack: String\n }\n\n type FmCreatedBy {\n id: ID\n displayName: String\n type: String\n }\n\n type FmListMeta {\n cursor: String\n totalCount: Int\n hasMoreItems: Boolean\n }\n\n type FmBooleanResponse {\n data: Boolean\n error: FmError\n }\n\n type FmSettings {\n uploadMinFileSize: Number\n uploadMaxFileSize: Number\n srcPrefix: String\n }\n\n input FmSettingsInput {\n uploadMinFileSize: Number\n uploadMaxFileSize: Number\n srcPrefix: String\n }\n\n type FmSettingsResponse {\n data: FmSettings\n error: FmError\n }\n\n type FmQuery {\n version: String\n getSettings: FmSettingsResponse\n }\n\n type FmDeleteResponse {\n data: Boolean\n error: FmError\n }\n\n type FmMutation {\n install(srcPrefix: String): FmBooleanResponse\n updateSettings(data: FmSettingsInput): FmSettingsResponse\n }\n\n input FmInstallInput {\n srcPrefix: String!\n }\n\n extend type Query {\n fileManager: FmQuery\n }\n\n extend type Mutation {\n fileManager: FmMutation\n }\n `,\n resolvers: {\n Query: {\n fileManager: emptyResolver\n },\n Mutation: {\n fileManager: emptyResolver\n },\n FmQuery: {\n async version(_, __, context) {\n const { i18n, tenancy, fileManager } = context;\n if (!tenancy.getCurrentTenant() || !i18n.getContentLocale()) {\n return null;\n }\n\n const version = await fileManager.getVersion();\n return version ? \"true\" : null;\n },\n async getSettings(_, __, context) {\n return resolve(() => context.fileManager.getSettings());\n }\n },\n FmMutation: {\n async install(_, args: any, context) {\n return resolve(() =>\n context.fileManager.install({ srcPrefix: args.srcPrefix })\n );\n },\n async updateSettings(_, args: any, context) {\n return resolve(() => context.fileManager.updateSettings(args.data));\n }\n }\n }\n });\n fileManagerGraphQL.name = \"fm.graphql.base\";\n\n return fileManagerGraphQL;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AAEO,MAAME,gBAAgB,GAAGA,CAAA,KAAM;EAClC,MAAMC,kBAAkB,GAAG,IAAIC,mCAAmB,CAAqB;IACnEC,QAAQ,EAAE,aAAc;AAChC;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,SAAS;IACDC,SAAS,EAAE;MACPC,KAAK,EAAE;QACHC,WAAW,EAAEC;MACjB,CAAC;MACDC,QAAQ,EAAE;QACNF,WAAW,EAAEC;MACjB,CAAC;MACDE,OAAO,EAAE;QACL,MAAMC,OAAOA,CAACC,CAAC,EAAEC,EAAE,EAAEC,OAAO,EAAE;UAC1B,MAAM;YAAEC,IAAI;YAAEC,OAAO;YAAET;UAAY,CAAC,GAAGO,OAAO;UAC9C,IAAI,CAACE,OAAO,CAACC,gBAAgB,CAAC,CAAC,IAAI,CAACF,IAAI,CAACG,gBAAgB,CAAC,CAAC,EAAE;YACzD,OAAO,IAAI;UACf;UAEA,MAAMP,OAAO,GAAG,MAAMJ,WAAW,CAACY,UAAU,CAAC,CAAC;UAC9C,OAAOR,OAAO,GAAG,MAAM,GAAG,IAAI;QAClC,CAAC;QACD,MAAMS,WAAWA,CAACR,CAAC,EAAEC,EAAE,EAAEC,OAAO,EAAE;UAC9B,OAAO,IAAAO,cAAO,EAAC,MAAMP,OAAO,CAACP,WAAW,CAACa,WAAW,CAAC,CAAC,CAAC;QAC3D;MACJ,CAAC;MACDE,UAAU,EAAE;QACR,MAAMC,OAAOA,CAACX,CAAC,EAAEY,IAAS,EAAEV,OAAO,EAAE;UACjC,OAAO,IAAAO,cAAO,EAAC,MACXP,OAAO,CAACP,WAAW,CAACgB,OAAO,CAAC;YAAEE,SAAS,EAAED,IAAI,CAACC;UAAU,CAAC,CAC7D,CAAC;QACL,CAAC;QACD,MAAMC,cAAcA,CAACd,CAAC,EAAEY,IAAS,EAAEV,OAAO,EAAE;UACxC,OAAO,IAAAO,cAAO,EAAC,MAAMP,OAAO,CAACP,WAAW,CAACmB,cAAc,CAACF,IAAI,CAACG,IAAI,CAAC,CAAC;QACvE;MACJ;IACJ;EACJ,CAAC,CAAC;EACFzB,kBAAkB,CAAC0B,IAAI,GAAG,iBAAiB;EAE3C,OAAO1B,kBAAkB;AAC7B,CAAC;AAAC2B,OAAA,CAAA5B,gBAAA,GAAAA,gBAAA","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { CmsFieldTypePlugins, CmsModel } from "@webiny/api-headless-cms/types";
1
+ import type { CmsFieldTypePlugins, CmsModel } from "@webiny/api-headless-cms/types";
2
2
  export interface CreateFilesTypeDefsParams {
3
3
  model: CmsModel;
4
4
  models: CmsModel[];
@@ -1 +1 @@
1
- {"version":3,"names":["_renderFields","require","_renderInputFields","_renderListFilterFields","_renderSortEnum","removeFieldRequiredValidation","field","validation","filter","name","listValidation","v","createUpdateFields","fields","reduce","collection","push","createFilesTypeDefs","params","model","models","plugins","fieldTypePlugins","fieldTypes","renderFields","type","inputCreateFields","renderInputFields","inputUpdateFields","listFilterFieldsRender","renderListFilterFields","excludeFields","excludeFromSorterts","sortEnumRender","renderSortEnum","includes","fieldId","sorterPlugins","map","f","typeDefs","join","exports"],"sources":["createFilesTypeDefs.ts"],"sourcesContent":["import { CmsFieldTypePlugins, CmsModel, CmsModelField } from \"@webiny/api-headless-cms/types\";\nimport { renderFields } from \"@webiny/api-headless-cms/utils/renderFields\";\nimport { renderInputFields } from \"@webiny/api-headless-cms/utils/renderInputFields\";\nimport { renderListFilterFields } from \"@webiny/api-headless-cms/utils/renderListFilterFields\";\nimport { renderSortEnum } from \"@webiny/api-headless-cms/utils/renderSortEnum\";\n\nexport interface CreateFilesTypeDefsParams {\n model: CmsModel;\n models: CmsModel[];\n plugins: CmsFieldTypePlugins;\n}\n\nconst removeFieldRequiredValidation = (field: CmsModelField) => {\n if (field.validation) {\n field.validation = field.validation.filter(validation => validation.name !== \"required\");\n }\n if (field.listValidation) {\n field.listValidation = field.listValidation.filter(v => v.name !== \"required\");\n }\n return field;\n};\n\nconst createUpdateFields = (fields: CmsModelField[]): CmsModelField[] => {\n return fields.reduce<CmsModelField[]>((collection, field) => {\n collection.push(removeFieldRequiredValidation({ ...field }));\n return collection;\n }, []);\n};\n\nexport const createFilesTypeDefs = (params: CreateFilesTypeDefsParams): string => {\n const { model, models, plugins: fieldTypePlugins } = params;\n const { fields } = model;\n\n const fieldTypes = renderFields({\n models,\n model,\n fields,\n type: \"manage\",\n fieldTypePlugins\n });\n const inputCreateFields = renderInputFields({\n models,\n model,\n fields,\n fieldTypePlugins\n });\n const inputUpdateFields = renderInputFields({\n models,\n model,\n fields: createUpdateFields(fields),\n fieldTypePlugins\n });\n const listFilterFieldsRender = renderListFilterFields({\n model,\n fields: model.fields,\n type: \"manage\",\n fieldTypePlugins,\n excludeFields: [\"entryId\", \"status\"]\n });\n\n const excludeFromSorterts = [\"tags\", \"aliases\"];\n\n const sortEnumRender = renderSortEnum({\n model,\n fields: model.fields.filter(field => !excludeFromSorterts.includes(field.fieldId)),\n fieldTypePlugins,\n sorterPlugins: []\n });\n\n return /* GraphQL */ `\n ${fieldTypes.map(f => f.typeDefs).join(\"\\n\")}\n\n type FmFile {\n id: ID!\n createdOn: DateTime!\n modifiedOn: DateTime\n savedOn: DateTime!\n createdBy: FmCreatedBy!\n modifiedBy: FmCreatedBy\n savedBy: FmCreatedBy!\n src: String\n ${fieldTypes.map(f => f.fields).join(\"\\n\")}\n }\n\n ${inputCreateFields.map(f => f.typeDefs).join(\"\\n\")}\n \n input FmCreatedByInput {\n id: ID!\n displayName: String!\n type: String!\n }\n\n input FmFileCreateInput {\n id: ID!\n createdOn: DateTime\n modifiedOn: DateTime\n savedOn: DateTime\n createdBy: FmCreatedByInput\n modifiedBy: FmCreatedByInput\n savedBy: FmCreatedByInput\n ${inputCreateFields.map(f => f.fields).join(\"\\n\")}\n }\n\n input FmFileUpdateInput {\n createdOn: DateTime\n modifiedOn: DateTime\n savedOn: DateTime\n createdBy: FmCreatedByInput\n modifiedBy: FmCreatedByInput\n savedBy: FmCreatedByInput\n ${inputUpdateFields.map(f => f.fields).join(\"\\n\")}\n }\n\n type FmFileResponse {\n data: FmFile\n error: FmError\n }\n\n input FmFileListWhereInput {\n ${listFilterFieldsRender}\n AND: [FmFileListWhereInput!]\n OR: [FmFileListWhereInput!]\n }\n\n type FmFileListResponse {\n data: [FmFile!]\n error: FmError\n meta: FmListMeta\n }\n\n enum FmFileListSorter {\n ${sortEnumRender}\n }\n\n input FmTagsListWhereInput {\n createdBy: String\n tags_startsWith: String\n tags_not_startsWith: String\n }\n\n type FmTag {\n tag: String!\n count: Number!\n }\n\n type FmTagsListResponse {\n data: [FmTag!]\n error: FmError\n }\n\n type FmCreateFilesResponse {\n data: [FmFile!]\n error: FmError\n }\n \n type FmFileModelResponse {\n data: JSON\n error: FmError\n }\n\n extend type FmQuery {\n getFileModel: FmFileModelResponse!\n getFile(id: ID!): FmFileResponse!\n listFiles(\n search: String\n where: FmFileListWhereInput\n limit: Int\n after: String\n sort: [FmFileListSorter!]\n ): FmFileListResponse!\n listTags(where: FmTagsListWhereInput): FmTagsListResponse!\n }\n\n extend type FmMutation {\n createFile(data: FmFileCreateInput!): FmFileResponse!\n createFiles(data: [FmFileCreateInput!]!): FmCreateFilesResponse!\n updateFile(id: ID!, data: FmFileUpdateInput!): FmFileResponse!\n deleteFile(id: ID!): FmBooleanResponse!\n }\n `;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_renderFields","require","_renderInputFields","_renderListFilterFields","_renderSortEnum","removeFieldRequiredValidation","field","validation","filter","name","listValidation","v","createUpdateFields","fields","reduce","collection","push","createFilesTypeDefs","params","model","models","plugins","fieldTypePlugins","fieldTypes","renderFields","type","inputCreateFields","renderInputFields","inputUpdateFields","listFilterFieldsRender","renderListFilterFields","excludeFields","excludeFromSorterts","sortEnumRender","renderSortEnum","includes","fieldId","sorterPlugins","map","f","typeDefs","join","exports"],"sources":["createFilesTypeDefs.ts"],"sourcesContent":["import type { CmsFieldTypePlugins, CmsModel, CmsModelField } from \"@webiny/api-headless-cms/types\";\nimport { renderFields } from \"@webiny/api-headless-cms/utils/renderFields\";\nimport { renderInputFields } from \"@webiny/api-headless-cms/utils/renderInputFields\";\nimport { renderListFilterFields } from \"@webiny/api-headless-cms/utils/renderListFilterFields\";\nimport { renderSortEnum } from \"@webiny/api-headless-cms/utils/renderSortEnum\";\n\nexport interface CreateFilesTypeDefsParams {\n model: CmsModel;\n models: CmsModel[];\n plugins: CmsFieldTypePlugins;\n}\n\nconst removeFieldRequiredValidation = (field: CmsModelField) => {\n if (field.validation) {\n field.validation = field.validation.filter(validation => validation.name !== \"required\");\n }\n if (field.listValidation) {\n field.listValidation = field.listValidation.filter(v => v.name !== \"required\");\n }\n return field;\n};\n\nconst createUpdateFields = (fields: CmsModelField[]): CmsModelField[] => {\n return fields.reduce<CmsModelField[]>((collection, field) => {\n collection.push(removeFieldRequiredValidation({ ...field }));\n return collection;\n }, []);\n};\n\nexport const createFilesTypeDefs = (params: CreateFilesTypeDefsParams): string => {\n const { model, models, plugins: fieldTypePlugins } = params;\n const { fields } = model;\n\n const fieldTypes = renderFields({\n models,\n model,\n fields,\n type: \"manage\",\n fieldTypePlugins\n });\n const inputCreateFields = renderInputFields({\n models,\n model,\n fields,\n fieldTypePlugins\n });\n const inputUpdateFields = renderInputFields({\n models,\n model,\n fields: createUpdateFields(fields),\n fieldTypePlugins\n });\n const listFilterFieldsRender = renderListFilterFields({\n model,\n fields: model.fields,\n type: \"manage\",\n fieldTypePlugins,\n excludeFields: [\"entryId\", \"status\"]\n });\n\n const excludeFromSorterts = [\"tags\", \"aliases\"];\n\n const sortEnumRender = renderSortEnum({\n model,\n fields: model.fields.filter(field => !excludeFromSorterts.includes(field.fieldId)),\n fieldTypePlugins,\n sorterPlugins: []\n });\n\n return /* GraphQL */ `\n ${fieldTypes.map(f => f.typeDefs).join(\"\\n\")}\n\n type FmFile {\n id: ID!\n createdOn: DateTime!\n modifiedOn: DateTime\n savedOn: DateTime!\n createdBy: FmCreatedBy!\n modifiedBy: FmCreatedBy\n savedBy: FmCreatedBy!\n src: String\n ${fieldTypes.map(f => f.fields).join(\"\\n\")}\n }\n\n ${inputCreateFields.map(f => f.typeDefs).join(\"\\n\")}\n \n input FmCreatedByInput {\n id: ID!\n displayName: String!\n type: String!\n }\n\n input FmFileCreateInput {\n id: ID!\n createdOn: DateTime\n modifiedOn: DateTime\n savedOn: DateTime\n createdBy: FmCreatedByInput\n modifiedBy: FmCreatedByInput\n savedBy: FmCreatedByInput\n ${inputCreateFields.map(f => f.fields).join(\"\\n\")}\n }\n\n input FmFileUpdateInput {\n createdOn: DateTime\n modifiedOn: DateTime\n savedOn: DateTime\n createdBy: FmCreatedByInput\n modifiedBy: FmCreatedByInput\n savedBy: FmCreatedByInput\n ${inputUpdateFields.map(f => f.fields).join(\"\\n\")}\n }\n\n type FmFileResponse {\n data: FmFile\n error: FmError\n }\n\n input FmFileListWhereInput {\n ${listFilterFieldsRender}\n AND: [FmFileListWhereInput!]\n OR: [FmFileListWhereInput!]\n }\n\n type FmFileListResponse {\n data: [FmFile!]\n error: FmError\n meta: FmListMeta\n }\n\n enum FmFileListSorter {\n ${sortEnumRender}\n }\n\n input FmTagsListWhereInput {\n createdBy: String\n tags_startsWith: String\n tags_not_startsWith: String\n }\n\n type FmTag {\n tag: String!\n count: Number!\n }\n\n type FmTagsListResponse {\n data: [FmTag!]\n error: FmError\n }\n\n type FmCreateFilesResponse {\n data: [FmFile!]\n error: FmError\n }\n \n type FmFileModelResponse {\n data: JSON\n error: FmError\n }\n\n extend type FmQuery {\n getFileModel: FmFileModelResponse!\n getFile(id: ID!): FmFileResponse!\n listFiles(\n search: String\n where: FmFileListWhereInput\n limit: Int\n after: String\n sort: [FmFileListSorter!]\n ): FmFileListResponse!\n listTags(where: FmTagsListWhereInput): FmTagsListResponse!\n }\n\n extend type FmMutation {\n createFile(data: FmFileCreateInput!): FmFileResponse!\n createFiles(data: [FmFileCreateInput!]!): FmCreateFilesResponse!\n updateFile(id: ID!, data: FmFileUpdateInput!): FmFileResponse!\n deleteFile(id: ID!): FmBooleanResponse!\n }\n `;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
1
  import { GraphQLSchemaPlugin } from "@webiny/handler-graphql";
2
- import { FileManagerContext } from "../types";
3
- import { CreateFilesTypeDefsParams } from "./createFilesTypeDefs";
2
+ import type { FileManagerContext } from "../types";
3
+ import type { CreateFilesTypeDefsParams } from "./createFilesTypeDefs";
4
4
  export declare const createFilesSchema: (params: CreateFilesTypeDefsParams) => GraphQLSchemaPlugin<FileManagerContext>;