@webiny/api-file-manager 6.4.0-beta.2 → 6.4.0-beta.4

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 (125) hide show
  1. package/delivery/index.d.ts +3 -12
  2. package/delivery/index.js +2 -6
  3. package/delivery/setupAssetDelivery.d.ts +1 -2
  4. package/delivery/setupAssetDelivery.js +6 -20
  5. package/delivery/setupAssetDelivery.js.map +1 -1
  6. package/features/assetDelivery/FilesAssetRequestResolver.d.ts +9 -0
  7. package/{delivery/AssetDelivery → features/assetDelivery}/FilesAssetRequestResolver.js +7 -2
  8. package/features/assetDelivery/FilesAssetRequestResolver.js.map +1 -0
  9. package/features/assetDelivery/NullAssetOutputStrategy.d.ts +8 -0
  10. package/features/assetDelivery/NullAssetOutputStrategy.js +14 -0
  11. package/features/assetDelivery/NullAssetOutputStrategy.js.map +1 -0
  12. package/{delivery/AssetDelivery → features/assetDelivery}/NullAssetReply.js +1 -1
  13. package/{delivery/AssetDelivery → features/assetDelivery}/NullAssetReply.js.map +1 -1
  14. package/features/assetDelivery/NullAssetResolver.d.ts +8 -0
  15. package/features/assetDelivery/NullAssetResolver.js +13 -0
  16. package/features/assetDelivery/NullAssetResolver.js.map +1 -0
  17. package/features/assetDelivery/abstractions.d.ts +54 -0
  18. package/features/assetDelivery/abstractions.js +11 -0
  19. package/features/assetDelivery/abstractions.js.map +1 -0
  20. package/features/assetDelivery/feature.d.ts +4 -0
  21. package/features/assetDelivery/feature.js +29 -0
  22. package/features/assetDelivery/feature.js.map +1 -0
  23. package/features/assetDelivery/privateFiles/NotAuthorizedAssetReply.d.ts +4 -0
  24. package/{delivery/AssetDelivery → features/assetDelivery}/privateFiles/NotAuthorizedAssetReply.js +1 -1
  25. package/features/assetDelivery/privateFiles/NotAuthorizedAssetReply.js.map +1 -0
  26. package/features/assetDelivery/privateFiles/NotAuthorizedOutputStrategy.d.ts +5 -0
  27. package/features/assetDelivery/privateFiles/NotAuthorizedOutputStrategy.js.map +1 -0
  28. package/features/assetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.d.ts +11 -0
  29. package/features/assetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.js +26 -0
  30. package/features/assetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.js.map +1 -0
  31. package/features/assetDelivery/privateFiles/PrivateCache.d.ts +8 -0
  32. package/features/assetDelivery/privateFiles/PrivateCache.js.map +1 -0
  33. package/features/assetDelivery/privateFiles/PrivateFileAssetRequestResolver.d.ts +11 -0
  34. package/{delivery/AssetDelivery → features/assetDelivery}/privateFiles/PrivateFileAssetRequestResolver.js +7 -2
  35. package/features/assetDelivery/privateFiles/PrivateFileAssetRequestResolver.js.map +1 -0
  36. package/features/assetDelivery/privateFiles/PrivateFilesAssetProcessor.d.ts +19 -0
  37. package/{delivery/AssetDelivery → features/assetDelivery}/privateFiles/PrivateFilesAssetProcessor.js +17 -8
  38. package/features/assetDelivery/privateFiles/PrivateFilesAssetProcessor.js.map +1 -0
  39. package/features/assetDelivery/privateFiles/PublicCache.d.ts +8 -0
  40. package/features/assetDelivery/privateFiles/PublicCache.js.map +1 -0
  41. package/features/assetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.d.ts +9 -0
  42. package/{delivery/AssetDelivery → features/assetDelivery}/privateFiles/RedirectToPrivateUrlOutputStrategy.js +1 -1
  43. package/features/assetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.js.map +1 -0
  44. package/features/assetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.d.ts +9 -0
  45. package/{delivery/AssetDelivery → features/assetDelivery}/privateFiles/RedirectToPublicUrlOutputStrategy.js +1 -1
  46. package/features/assetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.js.map +1 -0
  47. package/features/assetDelivery/transformation/PassthroughAssetTransformationStrategy.d.ts +9 -0
  48. package/features/assetDelivery/transformation/PassthroughAssetTransformationStrategy.js +13 -0
  49. package/features/assetDelivery/transformation/PassthroughAssetTransformationStrategy.js.map +1 -0
  50. package/features/assetDelivery/transformation/TransformationAssetProcessor.d.ts +11 -0
  51. package/{delivery/AssetDelivery → features/assetDelivery}/transformation/TransformationAssetProcessor.js +8 -1
  52. package/features/assetDelivery/transformation/TransformationAssetProcessor.js.map +1 -0
  53. package/features/settings/SettingsInstaller/SettingsInstaller.js +1 -1
  54. package/features/settings/SettingsInstaller/SettingsInstaller.js.map +1 -1
  55. package/index.d.ts +1 -1
  56. package/index.js +7 -1
  57. package/index.js.map +1 -1
  58. package/package.json +21 -20
  59. package/types.d.ts +1 -1
  60. package/types.js +1 -1
  61. package/delivery/AssetDelivery/AssetDeliveryConfig.d.ts +0 -65
  62. package/delivery/AssetDelivery/AssetDeliveryConfig.js +0 -81
  63. package/delivery/AssetDelivery/AssetDeliveryConfig.js.map +0 -1
  64. package/delivery/AssetDelivery/FilesAssetRequestResolver.d.ts +0 -6
  65. package/delivery/AssetDelivery/FilesAssetRequestResolver.js.map +0 -1
  66. package/delivery/AssetDelivery/NullAssetOutputStrategy.d.ts +0 -4
  67. package/delivery/AssetDelivery/NullAssetOutputStrategy.js +0 -9
  68. package/delivery/AssetDelivery/NullAssetOutputStrategy.js.map +0 -1
  69. package/delivery/AssetDelivery/NullAssetResolver.d.ts +0 -5
  70. package/delivery/AssetDelivery/NullAssetResolver.js +0 -8
  71. package/delivery/AssetDelivery/NullAssetResolver.js.map +0 -1
  72. package/delivery/AssetDelivery/NullRequestResolver.d.ts +0 -4
  73. package/delivery/AssetDelivery/NullRequestResolver.js +0 -8
  74. package/delivery/AssetDelivery/NullRequestResolver.js.map +0 -1
  75. package/delivery/AssetDelivery/SetCacheControlHeaders.d.ts +0 -8
  76. package/delivery/AssetDelivery/SetCacheControlHeaders.js +0 -15
  77. package/delivery/AssetDelivery/SetCacheControlHeaders.js.map +0 -1
  78. package/delivery/AssetDelivery/SetResponseHeaders.d.ts +0 -18
  79. package/delivery/AssetDelivery/SetResponseHeaders.js +0 -19
  80. package/delivery/AssetDelivery/SetResponseHeaders.js.map +0 -1
  81. package/delivery/AssetDelivery/abstractions/AssetContentsReader.d.ts +0 -4
  82. package/delivery/AssetDelivery/abstractions/AssetContentsReader.js +0 -0
  83. package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.d.ts +0 -4
  84. package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.js +0 -0
  85. package/delivery/AssetDelivery/abstractions/AssetProcessor.d.ts +0 -4
  86. package/delivery/AssetDelivery/abstractions/AssetProcessor.js +0 -0
  87. package/delivery/AssetDelivery/abstractions/AssetRequestResolver.d.ts +0 -5
  88. package/delivery/AssetDelivery/abstractions/AssetRequestResolver.js +0 -0
  89. package/delivery/AssetDelivery/abstractions/AssetResolver.d.ts +0 -4
  90. package/delivery/AssetDelivery/abstractions/AssetResolver.js +0 -0
  91. package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.d.ts +0 -4
  92. package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.js +0 -0
  93. package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.d.ts +0 -4
  94. package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.js +0 -0
  95. package/delivery/AssetDelivery/privateFiles/NotAuthorizedAssetReply.d.ts +0 -4
  96. package/delivery/AssetDelivery/privateFiles/NotAuthorizedAssetReply.js.map +0 -1
  97. package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.d.ts +0 -4
  98. package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.js.map +0 -1
  99. package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.d.ts +0 -8
  100. package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.js +0 -18
  101. package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.js.map +0 -1
  102. package/delivery/AssetDelivery/privateFiles/PrivateCache.d.ts +0 -6
  103. package/delivery/AssetDelivery/privateFiles/PrivateCache.js.map +0 -1
  104. package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.d.ts +0 -8
  105. package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.js.map +0 -1
  106. package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.d.ts +0 -13
  107. package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.js.map +0 -1
  108. package/delivery/AssetDelivery/privateFiles/PublicCache.d.ts +0 -6
  109. package/delivery/AssetDelivery/privateFiles/PublicCache.js.map +0 -1
  110. package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.d.ts +0 -7
  111. package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.js.map +0 -1
  112. package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.d.ts +0 -7
  113. package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.js.map +0 -1
  114. package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.d.ts +0 -4
  115. package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.js +0 -8
  116. package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.js.map +0 -1
  117. package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.d.ts +0 -4
  118. package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.js +0 -8
  119. package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.js.map +0 -1
  120. package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.d.ts +0 -6
  121. package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.js.map +0 -1
  122. /package/{delivery/AssetDelivery → features/assetDelivery}/NullAssetReply.d.ts +0 -0
  123. /package/{delivery/AssetDelivery → features/assetDelivery}/privateFiles/NotAuthorizedOutputStrategy.js +0 -0
  124. /package/{delivery/AssetDelivery → features/assetDelivery}/privateFiles/PrivateCache.js +0 -0
  125. /package/{delivery/AssetDelivery → features/assetDelivery}/privateFiles/PublicCache.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/assetDelivery/privateFiles/PrivateFilesAssetProcessor.js","sources":["../../../../src/features/assetDelivery/privateFiles/PrivateFilesAssetProcessor.ts"],"sourcesContent":["import type { File } from \"~/domain/file/types.js\";\nimport type { Asset } from \"~/delivery/AssetDelivery/Asset.js\";\nimport type { AssetRequest } from \"~/delivery/AssetDelivery/AssetRequest.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { GetFileUseCase } from \"~/features/file/GetFile/index.js\";\nimport { NotAuthorizedOutputStrategy } from \"./NotAuthorizedOutputStrategy.js\";\nimport { RedirectToPublicUrlOutputStrategy } from \"./RedirectToPublicUrlOutputStrategy.js\";\nimport { RedirectToPrivateUrlOutputStrategy } from \"./RedirectToPrivateUrlOutputStrategy.js\";\nimport { PrivateCache } from \"./PrivateCache.js\";\nimport { PublicCache } from \"./PublicCache.js\";\nimport {\n AssetProcessor,\n AssetAuthorizer,\n type IAssetProcessor,\n type IAssetAuthorizer\n} from \"../abstractions.js\";\n\ninterface MaybePrivate {\n private?: boolean;\n}\n\nexport class PrivateFilesAssetProcessor implements IAssetProcessor {\n private readonly identityContext: IdentityContext.Interface;\n private readonly getFile: GetFileUseCase.Interface;\n private readonly assetAuthorizer: IAssetAuthorizer;\n private readonly assetProcessor: IAssetProcessor;\n\n constructor(\n identityContext: IdentityContext.Interface,\n getFile: GetFileUseCase.Interface,\n assetAuthorizer: IAssetAuthorizer,\n assetProcessor: IAssetProcessor\n ) {\n this.identityContext = identityContext;\n this.getFile = getFile;\n this.assetAuthorizer = assetAuthorizer;\n this.assetProcessor = assetProcessor;\n }\n\n async process(assetRequest: AssetRequest, asset: Asset): Promise<Asset> {\n const id = asset.getId();\n\n const file = await this.identityContext.withoutAuthorization(async () => {\n const fileResult = await this.getFile.execute(id);\n if (fileResult.isFail()) {\n throw fileResult.error;\n }\n return fileResult.value;\n });\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 {\n asset.setOutputStrategy(new NotAuthorizedOutputStrategy());\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\nexport const PrivateFilesAssetProcessorDecorator = AssetProcessor.createDecorator({\n decorator: PrivateFilesAssetProcessor,\n dependencies: [IdentityContext, GetFileUseCase, AssetAuthorizer]\n});\n"],"names":["PrivateFilesAssetProcessor","identityContext","getFile","assetAuthorizer","assetProcessor","assetRequest","asset","id","file","fileResult","isPrivateFile","RedirectToPublicUrlOutputStrategy","RedirectToPrivateUrlOutputStrategy","NotAuthorizedOutputStrategy","processedAsset","strategy","Error","PrivateCache","PublicCache","PrivateFilesAssetProcessorDecorator","AssetProcessor","IdentityContext","GetFileUseCase","AssetAuthorizer"],"mappings":";;;;;;;;AAqBO,MAAMA;IAMT,YACIC,eAA0C,EAC1CC,OAAiC,EACjCC,eAAiC,EACjCC,cAA+B,CACjC;QACE,IAAI,CAAC,eAAe,GAAGH;QACvB,IAAI,CAAC,OAAO,GAAGC;QACf,IAAI,CAAC,eAAe,GAAGC;QACvB,IAAI,CAAC,cAAc,GAAGC;IAC1B;IAEA,MAAM,QAAQC,YAA0B,EAAEC,KAAY,EAAkB;QACpE,MAAMC,KAAKD,MAAM,KAAK;QAEtB,MAAME,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC;YACzD,MAAMC,aAAa,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAACF;YAC9C,IAAIE,WAAW,MAAM,IACjB,MAAMA,WAAW,KAAK;YAE1B,OAAOA,WAAW,KAAK;QAC3B;QAEA,MAAMC,gBAAgB,IAAI,CAAC,SAAS,CAACF;QAErC,IAAI,CAACE,iBAAiB,IAAI,CAAC,2BAA2B,CAACL,eAAe;YAClEC,MAAM,iBAAiB,CAAC,IAAIK,kCAAkCN;YAC9D,OAAOC;QACX;QAEA,IAAII,iBAAiB,IAAI,CAAC,0BAA0B,CAACL,eAAe;YAChEC,MAAM,iBAAiB,CAAC,IAAIM,mCAAmCP;YAC/D,OAAOC;QACX;QAEA,IAAI;YACA,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAACE;QACzC,EAAE,OAAM;YACJF,MAAM,iBAAiB,CAAC,IAAIO;YAC5B,OAAOP;QACX;QAEA,MAAMQ,iBAAiB,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAACT,cAAcC;QAEvEQ,eAAe,iBAAiB,CAACC,CAAAA;YAC7B,IAAI,CAACA,UACD,MAAMC,MAAM;YAEhB,OAAON,gBAAgB,IAAIO,aAAaF,YAAY,IAAIG,YAAYH;QACxE;QAEA,OAAOD;IACX;IAEQ,UAAUN,IAAU,EAAE;QAC1B,OAAOA,KAAK,aAAa,IAAIA,KAAK,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC;IACpE;IAEQ,4BAA4BH,YAA0B,EAAE;QAC5D,OAAOA,aAAa,UAAU,GAAiB,OAAO;IAC1D;IAEQ,2BAA2BA,YAA0B,EAAE;QAC3D,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAACA;IAC7C;AACJ;AAEO,MAAMc,sCAAsCC,eAAe,eAAe,CAAC;IAC9E,WAAWpB;IACX,cAAc;QAACqB;QAAiBC;QAAgBC;KAAgB;AACpE"}
@@ -0,0 +1,8 @@
1
+ import type { Asset } from "../../../delivery/AssetDelivery/Asset.js";
2
+ import type { AssetReply } from "../../../delivery/AssetDelivery/abstractions/AssetReply.js";
3
+ import type { IAssetOutputStrategy } from "../abstractions.js";
4
+ export declare class PublicCache implements IAssetOutputStrategy {
5
+ private strategy;
6
+ constructor(strategy: IAssetOutputStrategy);
7
+ output(asset: Asset): Promise<AssetReply>;
8
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/assetDelivery/privateFiles/PublicCache.js","sources":["../../../../src/features/assetDelivery/privateFiles/PublicCache.ts"],"sourcesContent":["import { parse, stringify } from \"cache-control-parser\";\nimport type { Asset } from \"~/delivery/AssetDelivery/Asset.js\";\nimport type { AssetReply } from \"~/delivery/AssetDelivery/abstractions/AssetReply.js\";\nimport type { IAssetOutputStrategy } from \"../abstractions.js\";\n\nexport class PublicCache implements IAssetOutputStrategy {\n private strategy: IAssetOutputStrategy;\n\n constructor(strategy: IAssetOutputStrategy) {\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"],"names":["PublicCache","strategy","asset","reply","headers","value","cacheControl","parse","stringify"],"mappings":";AAKO,MAAMA;IAGT,YAAYC,QAA8B,CAAE;QACxC,IAAI,CAAC,QAAQ,GAAGA;IACpB;IAEA,MAAM,OAAOC,KAAY,EAAuB;QAC5C,MAAMC,QAAQ,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAACD;QAEzCC,MAAM,UAAU,CAACC,CAAAA;YACbA,QAAQ,GAAG,CAAC,iBAAiB,CAACC,QAAQ,EAAE;gBACpC,MAAMC,eAAeC,MAAMF;gBAC3BC,YAAY,CAAC,UAAU,GAAG;gBAC1BA,YAAY,CAAC,SAAS,GAAG;gBACzB,OAAOE,UAAUF;YACrB;YACA,OAAOF;QACX;QAEA,OAAOD;IACX;AACJ"}
@@ -0,0 +1,9 @@
1
+ import type { Asset } from "../../../delivery/AssetDelivery/Asset.js";
2
+ import type { AssetRequest } from "../../../delivery/AssetDelivery/AssetRequest.js";
3
+ import { AssetReply } from "../../../delivery/AssetDelivery/abstractions/AssetReply.js";
4
+ import type { IAssetOutputStrategy } from "../abstractions.js";
5
+ export declare class RedirectToPrivateUrlOutputStrategy implements IAssetOutputStrategy {
6
+ private assetRequest;
7
+ constructor(assetRequest: AssetRequest);
8
+ output(asset: Asset): Promise<AssetReply>;
9
+ }
@@ -1,4 +1,4 @@
1
- import { AssetReply } from "../../index.js";
1
+ import { AssetReply } from "../../../delivery/AssetDelivery/abstractions/AssetReply.js";
2
2
  import { ResponseHeaders } from "@webiny/handler";
3
3
  class RedirectToPrivateUrlOutputStrategy {
4
4
  constructor(assetRequest){
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/assetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.js","sources":["../../../../src/features/assetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.ts"],"sourcesContent":["import type { Asset } from \"~/delivery/AssetDelivery/Asset.js\";\nimport type { AssetRequest } from \"~/delivery/AssetDelivery/AssetRequest.js\";\nimport { AssetReply } from \"~/delivery/AssetDelivery/abstractions/AssetReply.js\";\nimport { ResponseHeaders } from \"@webiny/handler\";\nimport type { IAssetOutputStrategy } from \"../abstractions.js\";\n\nexport class RedirectToPrivateUrlOutputStrategy implements IAssetOutputStrategy {\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"],"names":["RedirectToPrivateUrlOutputStrategy","assetRequest","asset","requestUrl","AssetReply","ResponseHeaders"],"mappings":";;AAMO,MAAMA;IAGT,YAAYC,YAA0B,CAAE;QACpC,IAAI,CAAC,YAAY,GAAGA;IACxB;IAEA,MAAM,OAAOC,KAAY,EAAuB;QAC5C,MAAMC,aAAa,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,GAAG;QAErD,OAAO,IAAIC,WAAW;YAClB,MAAM;YACN,SAASC,gBAAgB,MAAM,CAAC;gBAC5B,UAAUF,WAAW,OAAO,CAAC,WAAW;gBACxC,gBAAgBD,MAAM,cAAc;gBACpC,iBAAiB;YACrB;QACJ;IACJ;AACJ"}
@@ -0,0 +1,9 @@
1
+ import type { Asset } from "../../../delivery/AssetDelivery/Asset.js";
2
+ import type { AssetRequest } from "../../../delivery/AssetDelivery/AssetRequest.js";
3
+ import { AssetReply } from "../../../delivery/AssetDelivery/abstractions/AssetReply.js";
4
+ import type { IAssetOutputStrategy } from "../abstractions.js";
5
+ export declare class RedirectToPublicUrlOutputStrategy implements IAssetOutputStrategy {
6
+ private assetRequest;
7
+ constructor(assetRequest: AssetRequest);
8
+ output(asset: Asset): Promise<AssetReply>;
9
+ }
@@ -1,4 +1,4 @@
1
- import { AssetReply } from "../../index.js";
1
+ import { AssetReply } from "../../../delivery/AssetDelivery/abstractions/AssetReply.js";
2
2
  import { ResponseHeaders } from "@webiny/handler";
3
3
  class RedirectToPublicUrlOutputStrategy {
4
4
  constructor(assetRequest){
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/assetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.js","sources":["../../../../src/features/assetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.ts"],"sourcesContent":["import type { Asset } from \"~/delivery/AssetDelivery/Asset.js\";\nimport type { AssetRequest } from \"~/delivery/AssetDelivery/AssetRequest.js\";\nimport { AssetReply } from \"~/delivery/AssetDelivery/abstractions/AssetReply.js\";\nimport { ResponseHeaders } from \"@webiny/handler\";\nimport type { IAssetOutputStrategy } from \"../abstractions.js\";\n\nexport class RedirectToPublicUrlOutputStrategy implements IAssetOutputStrategy {\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"],"names":["RedirectToPublicUrlOutputStrategy","assetRequest","asset","requestUrl","AssetReply","ResponseHeaders"],"mappings":";;AAMO,MAAMA;IAGT,YAAYC,YAA0B,CAAE;QACpC,IAAI,CAAC,YAAY,GAAGA;IACxB;IAEA,MAAM,OAAOC,KAAY,EAAuB;QAC5C,MAAMC,aAAa,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,GAAG;QAErD,OAAO,IAAIC,WAAW;YAClB,MAAM;YACN,SAASC,gBAAgB,MAAM,CAAC;gBAC5B,UAAUF,WAAW,OAAO,CAAC,aAAa;gBAC1C,gBAAgBD,MAAM,cAAc;gBACpC,iBAAiB;YACrB;QACJ;IACJ;AACJ"}
@@ -0,0 +1,9 @@
1
+ import type { Asset } from "../../../delivery/AssetDelivery/Asset.js";
2
+ import type { AssetRequest } from "../../../delivery/AssetDelivery/AssetRequest.js";
3
+ import { type IAssetTransformationStrategy } from "../abstractions.js";
4
+ export declare class PassthroughAssetTransformationStrategy implements IAssetTransformationStrategy {
5
+ transform(assetRequest: AssetRequest, asset: Asset): Promise<Asset>;
6
+ }
7
+ export declare const PassthroughAssetTransformationStrategyImpl: typeof PassthroughAssetTransformationStrategy & {
8
+ __abstraction: import("@webiny/di").Abstraction<IAssetTransformationStrategy>;
9
+ };
@@ -0,0 +1,13 @@
1
+ import { AssetTransformationStrategy } from "../abstractions.js";
2
+ class PassthroughAssetTransformationStrategy {
3
+ transform(assetRequest, asset) {
4
+ return Promise.resolve(asset);
5
+ }
6
+ }
7
+ const PassthroughAssetTransformationStrategyImpl = AssetTransformationStrategy.createImplementation({
8
+ implementation: PassthroughAssetTransformationStrategy,
9
+ dependencies: []
10
+ });
11
+ export { PassthroughAssetTransformationStrategy, PassthroughAssetTransformationStrategyImpl };
12
+
13
+ //# sourceMappingURL=PassthroughAssetTransformationStrategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/assetDelivery/transformation/PassthroughAssetTransformationStrategy.js","sources":["../../../../src/features/assetDelivery/transformation/PassthroughAssetTransformationStrategy.ts"],"sourcesContent":["import type { Asset } from \"~/delivery/AssetDelivery/Asset.js\";\nimport type { AssetRequest } from \"~/delivery/AssetDelivery/AssetRequest.js\";\nimport { AssetTransformationStrategy, type IAssetTransformationStrategy } from \"../abstractions.js\";\n\nexport class PassthroughAssetTransformationStrategy implements IAssetTransformationStrategy {\n transform(assetRequest: AssetRequest, asset: Asset): Promise<Asset> {\n return Promise.resolve(asset);\n }\n}\n\nexport const PassthroughAssetTransformationStrategyImpl =\n AssetTransformationStrategy.createImplementation({\n implementation: PassthroughAssetTransformationStrategy,\n dependencies: []\n });\n"],"names":["PassthroughAssetTransformationStrategy","assetRequest","asset","Promise","PassthroughAssetTransformationStrategyImpl","AssetTransformationStrategy"],"mappings":";AAIO,MAAMA;IACT,UAAUC,YAA0B,EAAEC,KAAY,EAAkB;QAChE,OAAOC,QAAQ,OAAO,CAACD;IAC3B;AACJ;AAEO,MAAME,6CACTC,4BAA4B,oBAAoB,CAAC;IAC7C,gBAAgBL;IAChB,cAAc,EAAE;AACpB"}
@@ -0,0 +1,11 @@
1
+ import type { Asset } from "../../../delivery/AssetDelivery/Asset.js";
2
+ import type { AssetRequest } from "../../../delivery/AssetDelivery/AssetRequest.js";
3
+ import { type IAssetProcessor, type IAssetTransformationStrategy } from "../abstractions.js";
4
+ export declare class TransformationAssetProcessor implements IAssetProcessor {
5
+ private strategy;
6
+ constructor(strategy: IAssetTransformationStrategy);
7
+ process(assetRequest: AssetRequest, asset: Asset): Promise<Asset>;
8
+ }
9
+ export declare const TransformationAssetProcessorImpl: typeof TransformationAssetProcessor & {
10
+ __abstraction: import("@webiny/di").Abstraction<IAssetProcessor>;
11
+ };
@@ -1,3 +1,4 @@
1
+ import { AssetProcessor, AssetTransformationStrategy } from "../abstractions.js";
1
2
  class TransformationAssetProcessor {
2
3
  constructor(strategy){
3
4
  this.strategy = strategy;
@@ -11,6 +12,12 @@ class TransformationAssetProcessor {
11
12
  return this.strategy.transform(assetRequest, asset);
12
13
  }
13
14
  }
14
- export { TransformationAssetProcessor };
15
+ const TransformationAssetProcessorImpl = AssetProcessor.createImplementation({
16
+ implementation: TransformationAssetProcessor,
17
+ dependencies: [
18
+ AssetTransformationStrategy
19
+ ]
20
+ });
21
+ export { TransformationAssetProcessor, TransformationAssetProcessorImpl };
15
22
 
16
23
  //# sourceMappingURL=TransformationAssetProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/assetDelivery/transformation/TransformationAssetProcessor.js","sources":["../../../../src/features/assetDelivery/transformation/TransformationAssetProcessor.ts"],"sourcesContent":["import type { Asset } from \"~/delivery/AssetDelivery/Asset.js\";\nimport type { AssetRequest } from \"~/delivery/AssetDelivery/AssetRequest.js\";\nimport {\n AssetProcessor,\n AssetTransformationStrategy,\n type IAssetProcessor,\n type IAssetTransformationStrategy\n} from \"../abstractions.js\";\n\nexport class TransformationAssetProcessor implements IAssetProcessor {\n private strategy: IAssetTransformationStrategy;\n\n constructor(strategy: IAssetTransformationStrategy) {\n this.strategy = strategy;\n }\n\n async process(assetRequest: AssetRequest, asset: Asset): Promise<Asset> {\n const { original } = assetRequest.getOptions();\n\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\nexport const TransformationAssetProcessorImpl = AssetProcessor.createImplementation({\n implementation: TransformationAssetProcessor,\n dependencies: [AssetTransformationStrategy]\n});\n"],"names":["TransformationAssetProcessor","strategy","assetRequest","asset","original","console","TransformationAssetProcessorImpl","AssetProcessor","AssetTransformationStrategy"],"mappings":";AASO,MAAMA;IAGT,YAAYC,QAAsC,CAAE;QAChD,IAAI,CAAC,QAAQ,GAAGA;IACpB;IAEA,MAAM,QAAQC,YAA0B,EAAEC,KAAY,EAAkB;QACpE,MAAM,EAAEC,QAAQ,EAAE,GAAGF,aAAa,UAAU;QAE5C,IAAIE,UAAU;YACVC,QAAQ,GAAG,CAAC;YACZ,OAAOF;QACX;QAEA,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAACD,cAAcC;IACjD;AACJ;AAEO,MAAMG,mCAAmCC,eAAe,oBAAoB,CAAC;IAChF,gBAAgBP;IAChB,cAAc;QAACQ;KAA4B;AAC/C"}
@@ -14,7 +14,7 @@ class SettingsInstallerImpl {
14
14
  }
15
15
  async install() {
16
16
  const manifest = await ServiceDiscovery.load();
17
- const { domain } = manifest?.api.cloudfront;
17
+ const domain = manifest?.api?.cloudfront.domain;
18
18
  await this.updateSettings.execute({
19
19
  srcPrefix: `${domain}/files`
20
20
  });
@@ -1 +1 @@
1
- {"version":3,"file":"features/settings/SettingsInstaller/SettingsInstaller.js","sources":["../../../../src/features/settings/SettingsInstaller/SettingsInstaller.ts"],"sourcesContent":["import { ServiceDiscovery } from \"@webiny/api\";\nimport { createImplementation } from \"@webiny/feature/api\";\nimport { AppInstaller } from \"@webiny/api-core/features/tenancy/InstallTenant/index.js\";\nimport { FILE_MANAGER_GENERAL_SETTINGS } from \"~/domain/settings/constants.js\";\nimport { UpdateSettingsUseCase } from \"~/features/settings/UpdateSettings/abstractions.js\";\nimport { KeyValueStore } from \"@webiny/api-core/features/keyValueStore/index.js\";\n\nclass SettingsInstallerImpl implements AppInstaller.Interface {\n readonly alwaysRun = true;\n readonly appName = \"FileManager\";\n readonly dependsOn = [];\n\n constructor(\n private updateSettings: UpdateSettingsUseCase.Interface,\n private keyValueStore: KeyValueStore.Interface\n ) {}\n\n async install(): Promise<void> {\n // TODO: move this to api-core with a proper abstraction\n const manifest = await ServiceDiscovery.load();\n const { domain } = manifest?.api.cloudfront;\n\n await this.updateSettings.execute({\n srcPrefix: `${domain}/files`\n });\n }\n\n async uninstall(): Promise<void> {\n await this.keyValueStore.delete(FILE_MANAGER_GENERAL_SETTINGS);\n }\n}\n\nexport const SettingsInstaller = createImplementation({\n abstraction: AppInstaller,\n implementation: SettingsInstallerImpl,\n dependencies: [UpdateSettingsUseCase, KeyValueStore]\n});\n"],"names":["SettingsInstallerImpl","updateSettings","keyValueStore","manifest","ServiceDiscovery","domain","FILE_MANAGER_GENERAL_SETTINGS","SettingsInstaller","createImplementation","AppInstaller","UpdateSettingsUseCase","KeyValueStore"],"mappings":";;;;;;AAOA,MAAMA;IAKF,YACYC,cAA+C,EAC/CC,aAAsC,CAChD;aAFUD,cAAc,GAAdA;aACAC,aAAa,GAAbA;aANH,SAAS,GAAG;aACZ,OAAO,GAAG;aACV,SAAS,GAAG,EAAE;IAKpB;IAEH,MAAM,UAAyB;QAE3B,MAAMC,WAAW,MAAMC,iBAAiB,IAAI;QAC5C,MAAM,EAAEC,MAAM,EAAE,GAAGF,UAAU,IAAI;QAEjC,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YAC9B,WAAW,GAAGE,OAAO,MAAM,CAAC;QAChC;IACJ;IAEA,MAAM,YAA2B;QAC7B,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAACC;IACpC;AACJ;AAEO,MAAMC,oBAAoBC,qBAAqB;IAClD,aAAaC;IACb,gBAAgBT;IAChB,cAAc;QAACU;QAAuBC;KAAc;AACxD"}
1
+ {"version":3,"file":"features/settings/SettingsInstaller/SettingsInstaller.js","sources":["../../../../src/features/settings/SettingsInstaller/SettingsInstaller.ts"],"sourcesContent":["import { ServiceDiscovery } from \"@webiny/api\";\nimport { createImplementation } from \"@webiny/feature/api\";\nimport { AppInstaller } from \"@webiny/api-core/features/tenancy/InstallTenant/index.js\";\nimport { FILE_MANAGER_GENERAL_SETTINGS } from \"~/domain/settings/constants.js\";\nimport { UpdateSettingsUseCase } from \"~/features/settings/UpdateSettings/abstractions.js\";\nimport { KeyValueStore } from \"@webiny/api-core/features/keyValueStore/index.js\";\n\nclass SettingsInstallerImpl implements AppInstaller.Interface {\n readonly alwaysRun = true;\n readonly appName = \"FileManager\";\n readonly dependsOn = [];\n\n constructor(\n private updateSettings: UpdateSettingsUseCase.Interface,\n private keyValueStore: KeyValueStore.Interface\n ) {}\n\n async install(): Promise<void> {\n // TODO: move this to api-core with a proper abstraction\n const manifest = await ServiceDiscovery.load();\n\n // If no records in the database, `manifest` object is empty POJO.\n // That's why the heavy `?.` usage.\n const domain = manifest?.api?.cloudfront.domain;\n\n await this.updateSettings.execute({\n srcPrefix: `${domain}/files`\n });\n }\n\n async uninstall(): Promise<void> {\n await this.keyValueStore.delete(FILE_MANAGER_GENERAL_SETTINGS);\n }\n}\n\nexport const SettingsInstaller = createImplementation({\n abstraction: AppInstaller,\n implementation: SettingsInstallerImpl,\n dependencies: [UpdateSettingsUseCase, KeyValueStore]\n});\n"],"names":["SettingsInstallerImpl","updateSettings","keyValueStore","manifest","ServiceDiscovery","domain","FILE_MANAGER_GENERAL_SETTINGS","SettingsInstaller","createImplementation","AppInstaller","UpdateSettingsUseCase","KeyValueStore"],"mappings":";;;;;;AAOA,MAAMA;IAKF,YACYC,cAA+C,EAC/CC,aAAsC,CAChD;aAFUD,cAAc,GAAdA;aACAC,aAAa,GAAbA;aANH,SAAS,GAAG;aACZ,OAAO,GAAG;aACV,SAAS,GAAG,EAAE;IAKpB;IAEH,MAAM,UAAyB;QAE3B,MAAMC,WAAW,MAAMC,iBAAiB,IAAI;QAI5C,MAAMC,SAASF,UAAU,KAAK,WAAW;QAEzC,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YAC9B,WAAW,GAAGE,OAAO,MAAM,CAAC;QAChC;IACJ;IAEA,MAAM,YAA2B;QAC7B,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAACC;IACpC;AACJ;AAEO,MAAMC,oBAAoBC,qBAAqB;IAClD,aAAaC;IACb,gBAAgBT;IAChB,cAAc;QAACU;QAAuBC;KAAc;AACxD"}
package/index.d.ts CHANGED
@@ -4,4 +4,4 @@ export * from "./modelModifier/CmsModelModifier.js";
4
4
  export * from "./delivery/index.js";
5
5
  export declare const createFileManagerContext: () => (ContextPlugin<ApiCoreContext> | import("@webiny/handler").RegisterExtensionPlugin<import("@webiny/handler/types.js").Context>)[];
6
6
  export declare const createFileManagerGraphQL: () => (import("@webiny/handler-graphql/index.js").GraphQLSchemaPlugin<ApiCoreContext> | ContextPlugin<ApiCoreContext>)[];
7
- export declare const createAssetDelivery: () => (import("./index.js").AssetDeliveryConfigModifierPlugin | import("@webiny/handler").ModifyFastifyPlugin)[];
7
+ export declare const createAssetDelivery: () => (import("@webiny/handler").ModifyFastifyPlugin | import("@webiny/handler").RegisterExtensionPlugin<import("@webiny/handler/types.js").Context>)[];
package/index.js CHANGED
@@ -8,6 +8,7 @@ import { FileModel } from "./domain/file/abstractions.js";
8
8
  import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
9
9
  import { FILE_MODEL_ID, FileModel as file_model_js_FileModel } from "./domain/file/file.model.js";
10
10
  import { createRegisterExtensionPlugin } from "@webiny/handler";
11
+ import { AssetDeliveryFeature } from "./features/assetDelivery/feature.js";
11
12
  export * from "./modelModifier/CmsModelModifier.js";
12
13
  export * from "./delivery/index.js";
13
14
  const createFileManagerContext = ()=>{
@@ -32,7 +33,12 @@ const createFileManagerContext = ()=>{
32
33
  ];
33
34
  };
34
35
  const createFileManagerGraphQL = ()=>createGraphQLSchemaPlugin();
35
- const createAssetDelivery = ()=>setupAssetDelivery();
36
+ const createAssetDelivery = ()=>[
37
+ createRegisterExtensionPlugin((context)=>{
38
+ AssetDeliveryFeature.register(context.container);
39
+ }),
40
+ ...setupAssetDelivery()
41
+ ];
36
42
  export { createAssetDelivery, createFileManagerContext, createFileManagerGraphQL };
37
43
 
38
44
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import type { ApiCoreContext } from \"@webiny/api-core/types/core.js\";\nimport { ContextPlugin } from \"@webiny/api\";\nimport { setupAssetDelivery } from \"./delivery/setupAssetDelivery.js\";\nimport { createGraphQLSchemaPlugin } from \"./graphql/index.js\";\nimport { FileManagerFeature } from \"~/features/FileManagerFeature.js\";\nimport { FmPermissionsFeature } from \"~/features/permissions/feature.js\";\nimport { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel/index.js\";\nimport { FileModel as FileModelAbstraction } from \"~/domain/file/abstractions.js\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { FileModel, FILE_MODEL_ID } from \"~/domain/file/file.model.js\";\nimport { createRegisterExtensionPlugin } from \"@webiny/handler\";\n\nexport * from \"./modelModifier/CmsModelModifier.js\";\nexport * from \"./delivery/index.js\";\n\nexport const createFileManagerContext = () => {\n const fileManagerContextPlugin = new ContextPlugin<ApiCoreContext>(async context => {\n const tenantContext = context.container.resolve(TenantContext);\n const getModel = context.container.resolve(GetModelUseCase);\n\n if (!tenantContext.getTenant()) {\n return;\n }\n\n await context.security.withoutAuthorization(async () => {\n const fileModel = await getModel.execute(FILE_MODEL_ID);\n context.container.registerInstance(FileModelAbstraction, fileModel.value);\n });\n\n FmPermissionsFeature.register(context.container);\n FileManagerFeature.register(context.container);\n });\n\n fileManagerContextPlugin.name = \"file-manager.createContext\";\n\n const modelsPlugin = createRegisterExtensionPlugin(context => {\n context.container.register(FileModel);\n });\n\n return [fileManagerContextPlugin, modelsPlugin];\n};\n\nexport const createFileManagerGraphQL = () => {\n return createGraphQLSchemaPlugin();\n};\n\nexport const createAssetDelivery = () => {\n return setupAssetDelivery();\n};\n"],"names":["createFileManagerContext","fileManagerContextPlugin","ContextPlugin","context","tenantContext","TenantContext","getModel","GetModelUseCase","fileModel","FILE_MODEL_ID","FileModelAbstraction","FmPermissionsFeature","FileManagerFeature","modelsPlugin","createRegisterExtensionPlugin","FileModel","createFileManagerGraphQL","createGraphQLSchemaPlugin","createAssetDelivery","setupAssetDelivery"],"mappings":";;;;;;;;;;;;AAeO,MAAMA,2BAA2B;IACpC,MAAMC,2BAA2B,IAAIC,cAA8B,OAAMC;QACrE,MAAMC,gBAAgBD,QAAQ,SAAS,CAAC,OAAO,CAACE;QAChD,MAAMC,WAAWH,QAAQ,SAAS,CAAC,OAAO,CAACI;QAE3C,IAAI,CAACH,cAAc,SAAS,IACxB;QAGJ,MAAMD,QAAQ,QAAQ,CAAC,oBAAoB,CAAC;YACxC,MAAMK,YAAY,MAAMF,SAAS,OAAO,CAACG;YACzCN,QAAQ,SAAS,CAAC,gBAAgB,CAACO,WAAsBF,UAAU,KAAK;QAC5E;QAEAG,qBAAqB,QAAQ,CAACR,QAAQ,SAAS;QAC/CS,mBAAmB,QAAQ,CAACT,QAAQ,SAAS;IACjD;IAEAF,yBAAyB,IAAI,GAAG;IAEhC,MAAMY,eAAeC,8BAA8BX,CAAAA;QAC/CA,QAAQ,SAAS,CAAC,QAAQ,CAACY;IAC/B;IAEA,OAAO;QAACd;QAA0BY;KAAa;AACnD;AAEO,MAAMG,2BAA2B,IAC7BC;AAGJ,MAAMC,sBAAsB,IACxBC"}
1
+ {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import type { ApiCoreContext } from \"@webiny/api-core/types/core.js\";\nimport { ContextPlugin } from \"@webiny/api\";\nimport { setupAssetDelivery } from \"./delivery/setupAssetDelivery.js\";\nimport { createGraphQLSchemaPlugin } from \"./graphql/index.js\";\nimport { FileManagerFeature } from \"~/features/FileManagerFeature.js\";\nimport { FmPermissionsFeature } from \"~/features/permissions/feature.js\";\nimport { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel/index.js\";\nimport { FileModel as FileModelAbstraction } from \"~/domain/file/abstractions.js\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { FileModel, FILE_MODEL_ID } from \"~/domain/file/file.model.js\";\nimport { createRegisterExtensionPlugin } from \"@webiny/handler\";\nimport { AssetDeliveryFeature } from \"~/features/assetDelivery/feature.js\";\n\nexport * from \"./modelModifier/CmsModelModifier.js\";\nexport * from \"./delivery/index.js\";\n\nexport const createFileManagerContext = () => {\n const fileManagerContextPlugin = new ContextPlugin<ApiCoreContext>(async context => {\n const tenantContext = context.container.resolve(TenantContext);\n const getModel = context.container.resolve(GetModelUseCase);\n\n if (!tenantContext.getTenant()) {\n return;\n }\n\n await context.security.withoutAuthorization(async () => {\n const fileModel = await getModel.execute(FILE_MODEL_ID);\n context.container.registerInstance(FileModelAbstraction, fileModel.value);\n });\n\n FmPermissionsFeature.register(context.container);\n FileManagerFeature.register(context.container);\n });\n\n fileManagerContextPlugin.name = \"file-manager.createContext\";\n\n const modelsPlugin = createRegisterExtensionPlugin(context => {\n context.container.register(FileModel);\n });\n\n return [fileManagerContextPlugin, modelsPlugin];\n};\n\nexport const createFileManagerGraphQL = () => {\n return createGraphQLSchemaPlugin();\n};\n\nexport const createAssetDelivery = () => {\n return [\n createRegisterExtensionPlugin(context => {\n AssetDeliveryFeature.register(context.container);\n }),\n ...setupAssetDelivery()\n ];\n};\n"],"names":["createFileManagerContext","fileManagerContextPlugin","ContextPlugin","context","tenantContext","TenantContext","getModel","GetModelUseCase","fileModel","FILE_MODEL_ID","FileModelAbstraction","FmPermissionsFeature","FileManagerFeature","modelsPlugin","createRegisterExtensionPlugin","FileModel","createFileManagerGraphQL","createGraphQLSchemaPlugin","createAssetDelivery","AssetDeliveryFeature","setupAssetDelivery"],"mappings":";;;;;;;;;;;;;AAgBO,MAAMA,2BAA2B;IACpC,MAAMC,2BAA2B,IAAIC,cAA8B,OAAMC;QACrE,MAAMC,gBAAgBD,QAAQ,SAAS,CAAC,OAAO,CAACE;QAChD,MAAMC,WAAWH,QAAQ,SAAS,CAAC,OAAO,CAACI;QAE3C,IAAI,CAACH,cAAc,SAAS,IACxB;QAGJ,MAAMD,QAAQ,QAAQ,CAAC,oBAAoB,CAAC;YACxC,MAAMK,YAAY,MAAMF,SAAS,OAAO,CAACG;YACzCN,QAAQ,SAAS,CAAC,gBAAgB,CAACO,WAAsBF,UAAU,KAAK;QAC5E;QAEAG,qBAAqB,QAAQ,CAACR,QAAQ,SAAS;QAC/CS,mBAAmB,QAAQ,CAACT,QAAQ,SAAS;IACjD;IAEAF,yBAAyB,IAAI,GAAG;IAEhC,MAAMY,eAAeC,8BAA8BX,CAAAA;QAC/CA,QAAQ,SAAS,CAAC,QAAQ,CAACY;IAC/B;IAEA,OAAO;QAACd;QAA0BY;KAAa;AACnD;AAEO,MAAMG,2BAA2B,IAC7BC;AAGJ,MAAMC,sBAAsB,IACxB;QACHJ,8BAA8BX,CAAAA;YAC1BgB,qBAAqB,QAAQ,CAAChB,QAAQ,SAAS;QACnD;WACGiB;KACN"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-file-manager",
3
- "version": "6.4.0-beta.2",
3
+ "version": "6.4.0-beta.4",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./index.js",
@@ -22,33 +22,31 @@
22
22
  ],
23
23
  "license": "MIT",
24
24
  "dependencies": {
25
- "@webiny/api": "6.4.0-beta.2",
26
- "@webiny/api-core": "6.4.0-beta.2",
27
- "@webiny/api-headless-cms": "6.4.0-beta.2",
28
- "@webiny/build-tools": "6.4.0-beta.2",
29
- "@webiny/di": "1.0.1",
30
- "@webiny/error": "6.4.0-beta.2",
31
- "@webiny/feature": "6.4.0-beta.2",
32
- "@webiny/handler": "6.4.0-beta.2",
33
- "@webiny/handler-graphql": "6.4.0-beta.2",
34
- "@webiny/plugins": "6.4.0-beta.2",
35
- "@webiny/tasks": "6.4.0-beta.2",
36
- "@webiny/wcp": "6.4.0-beta.2",
25
+ "@webiny/api": "6.4.0-beta.4",
26
+ "@webiny/api-core": "6.4.0-beta.4",
27
+ "@webiny/api-headless-cms": "6.4.0-beta.4",
28
+ "@webiny/background-tasks": "6.4.0-beta.4",
29
+ "@webiny/build-tools": "6.4.0-beta.4",
30
+ "@webiny/error": "6.4.0-beta.4",
31
+ "@webiny/feature": "6.4.0-beta.4",
32
+ "@webiny/handler": "6.4.0-beta.4",
33
+ "@webiny/handler-graphql": "6.4.0-beta.4",
34
+ "@webiny/plugins": "6.4.0-beta.4",
35
+ "@webiny/wcp": "6.4.0-beta.4",
37
36
  "cache-control-parser": "2.2.0",
38
37
  "zod": "4.4.3"
39
38
  },
40
39
  "devDependencies": {
41
40
  "@types/object-hash": "3.0.6",
42
- "@webiny/handler-aws": "6.4.0-beta.2",
43
- "@webiny/project-utils": "6.4.0-beta.2",
44
- "@webiny/utils": "6.4.0-beta.2",
45
- "@webiny/wcp": "0.0.0",
41
+ "@webiny/handler-aws": "6.4.0-beta.4",
42
+ "@webiny/project-utils": "6.4.0-beta.4",
43
+ "@webiny/utils": "6.4.0-beta.4",
44
+ "@webiny/wcp": "6.4.0-beta.4",
46
45
  "rimraf": "6.1.3",
47
46
  "typescript": "6.0.3"
48
47
  },
49
48
  "publishConfig": {
50
- "access": "public",
51
- "directory": "dist"
49
+ "access": "public"
52
50
  },
53
51
  "adio": {
54
52
  "ignoreDirs": [
@@ -63,5 +61,8 @@
63
61
  ]
64
62
  }
65
63
  },
66
- "gitHead": "872f9f50baa1ff6915a5f338216f84bf0b6dfd24"
64
+ "gitHead": "8476da73b653c89cc1474d968baf55c1b0ae0e5f",
65
+ "webiny": {
66
+ "publishFrom": "dist"
67
+ }
67
68
  }
package/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import "@webiny/tasks/features/TaskController/augmentation.js";
1
+ import "@webiny/background-tasks/api/features/TaskController/augmentation.js";
2
2
  import type { SecurityPermission } from "@webiny/api-core/types/security.js";
3
3
  export interface FilePermission extends SecurityPermission {
4
4
  name: "fm.file";
package/types.js CHANGED
@@ -1 +1 @@
1
- import "@webiny/tasks/features/TaskController/augmentation.js";
1
+ import "@webiny/background-tasks/api/features/TaskController/augmentation.js";
@@ -1,65 +0,0 @@
1
- import { Plugin } from "@webiny/plugins";
2
- import type { AssetRequestResolver, AssetResolver, AssetProcessor, AssetOutputStrategy, AssetRequest, Asset, AssetTransformationStrategy, ResponseHeadersSetter } from "../../delivery/index.js";
3
- import type { ApiCoreContext } from "@webiny/api-core/types/core.js";
4
- import { Container } from "@webiny/di";
5
- type Setter<TParams, TReturn> = (params: TParams) => TReturn;
6
- export type AssetRequestResolverDecorator = Setter<{
7
- assetRequestResolver: AssetRequestResolver;
8
- }, AssetRequestResolver>;
9
- export type AssetResolverDecorator = Setter<{
10
- assetResolver: AssetResolver;
11
- container: Container;
12
- }, AssetResolver>;
13
- export type AssetProcessorDecorator = Setter<{
14
- context: ApiCoreContext;
15
- assetProcessor: AssetProcessor;
16
- }, AssetProcessor>;
17
- export type AssetTransformationDecorator = Setter<{
18
- context: ApiCoreContext;
19
- assetTransformationStrategy: AssetTransformationStrategy;
20
- }, AssetTransformationStrategy>;
21
- export interface AssetOutputStrategyDecoratorParams {
22
- context: ApiCoreContext;
23
- assetRequest: AssetRequest;
24
- asset: Asset;
25
- assetOutputStrategy: AssetOutputStrategy;
26
- }
27
- export type AssetOutputStrategyDecorator = Setter<AssetOutputStrategyDecoratorParams, AssetOutputStrategy>;
28
- export declare class AssetDeliveryConfigBuilder {
29
- private assetRequestResolverDecorators;
30
- private assetResolverDecorators;
31
- private assetProcessorDecorators;
32
- private assetTransformationStrategyDecorators;
33
- private assetOutputStrategyDecorators;
34
- setResponseHeaders(setter: ResponseHeadersSetter): void;
35
- decorateAssetRequestResolver(decorator: AssetRequestResolverDecorator): void;
36
- decorateAssetResolver(decorator: AssetResolverDecorator): void;
37
- decorateAssetProcessor(decorator: AssetProcessorDecorator): void;
38
- decorateAssetTransformationStrategy(decorator: AssetTransformationDecorator): void;
39
- decorateAssetOutputStrategy(decorator: AssetOutputStrategyDecorator): void;
40
- /**
41
- * @internal
42
- */
43
- getAssetRequestResolver(): AssetRequestResolver;
44
- /**
45
- * @internal
46
- */
47
- getAssetResolver(container: Container): AssetResolver;
48
- /**
49
- * @internal
50
- */
51
- getAssetProcessor(context: ApiCoreContext): AssetProcessor;
52
- getAssetOutputStrategy(context: ApiCoreContext, assetRequest: AssetRequest, asset: Asset): AssetOutputStrategy;
53
- getAssetTransformationStrategy(context: ApiCoreContext): AssetTransformationStrategy;
54
- }
55
- export interface AssetDeliveryConfigModifier {
56
- (config: AssetDeliveryConfigBuilder): Promise<void> | void;
57
- }
58
- export declare class AssetDeliveryConfigModifierPlugin extends Plugin {
59
- static type: string;
60
- private readonly cb;
61
- constructor(cb: AssetDeliveryConfigModifier);
62
- buildConfig(configBuilder: AssetDeliveryConfigBuilder): Promise<void>;
63
- }
64
- export declare const createAssetDeliveryConfig: (cb: AssetDeliveryConfigModifier) => AssetDeliveryConfigModifierPlugin;
65
- export {};
@@ -1,81 +0,0 @@
1
- import { Plugin } from "@webiny/plugins";
2
- import { SetResponseHeaders } from "../index.js";
3
- import { NullRequestResolver } from "./NullRequestResolver.js";
4
- import { NullAssetResolver } from "./NullAssetResolver.js";
5
- import { NullAssetOutputStrategy } from "./NullAssetOutputStrategy.js";
6
- import { TransformationAssetProcessor } from "./transformation/TransformationAssetProcessor.js";
7
- import { PassthroughAssetTransformationStrategy } from "./transformation/PassthroughAssetTransformationStrategy.js";
8
- class AssetDeliveryConfigBuilder {
9
- setResponseHeaders(setter) {
10
- this.decorateAssetOutputStrategy((params)=>new SetResponseHeaders(setter, params));
11
- }
12
- decorateAssetRequestResolver(decorator) {
13
- this.assetRequestResolverDecorators.push(decorator);
14
- }
15
- decorateAssetResolver(decorator) {
16
- this.assetResolverDecorators.push(decorator);
17
- }
18
- decorateAssetProcessor(decorator) {
19
- this.assetProcessorDecorators.push(decorator);
20
- }
21
- decorateAssetTransformationStrategy(decorator) {
22
- this.assetTransformationStrategyDecorators.push(decorator);
23
- }
24
- decorateAssetOutputStrategy(decorator) {
25
- this.assetOutputStrategyDecorators.push(decorator);
26
- }
27
- getAssetRequestResolver() {
28
- return this.assetRequestResolverDecorators.reduce((value, decorator)=>decorator({
29
- assetRequestResolver: value
30
- }), new NullRequestResolver());
31
- }
32
- getAssetResolver(container) {
33
- return this.assetResolverDecorators.reduce((value, decorator)=>decorator({
34
- container,
35
- assetResolver: value
36
- }), new NullAssetResolver());
37
- }
38
- getAssetProcessor(context) {
39
- return this.assetProcessorDecorators.reduce((value, decorator)=>decorator({
40
- assetProcessor: value,
41
- context
42
- }), new TransformationAssetProcessor(this.getAssetTransformationStrategy(context)));
43
- }
44
- getAssetOutputStrategy(context, assetRequest, asset) {
45
- return this.assetOutputStrategyDecorators.reduce((value, decorator)=>decorator({
46
- context,
47
- assetRequest,
48
- asset,
49
- assetOutputStrategy: value
50
- }), new NullAssetOutputStrategy());
51
- }
52
- getAssetTransformationStrategy(context) {
53
- return this.assetTransformationStrategyDecorators.reduce((value, decorator)=>decorator({
54
- context,
55
- assetTransformationStrategy: value
56
- }), new PassthroughAssetTransformationStrategy());
57
- }
58
- constructor(){
59
- this.assetRequestResolverDecorators = [];
60
- this.assetResolverDecorators = [];
61
- this.assetProcessorDecorators = [];
62
- this.assetTransformationStrategyDecorators = [];
63
- this.assetOutputStrategyDecorators = [];
64
- }
65
- }
66
- class AssetDeliveryConfigModifierPlugin extends Plugin {
67
- static{
68
- this.type = "fm.config-modifier";
69
- }
70
- constructor(cb){
71
- super();
72
- this.cb = cb;
73
- }
74
- async buildConfig(configBuilder) {
75
- await this.cb(configBuilder);
76
- }
77
- }
78
- const createAssetDeliveryConfig = (cb)=>new AssetDeliveryConfigModifierPlugin(cb);
79
- export { AssetDeliveryConfigBuilder, AssetDeliveryConfigModifierPlugin, createAssetDeliveryConfig };
80
-
81
- //# sourceMappingURL=AssetDeliveryConfig.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"delivery/AssetDelivery/AssetDeliveryConfig.js","sources":["../../../src/delivery/AssetDelivery/AssetDeliveryConfig.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport type {\n AssetRequestResolver,\n AssetResolver,\n AssetProcessor,\n AssetOutputStrategy,\n AssetRequest,\n Asset,\n AssetTransformationStrategy,\n ResponseHeadersSetter\n} from \"~/delivery/index.js\";\nimport { SetResponseHeaders } from \"~/delivery/index.js\";\nimport { NullRequestResolver } from \"~/delivery/AssetDelivery/NullRequestResolver.js\";\nimport { NullAssetResolver } from \"~/delivery/AssetDelivery/NullAssetResolver.js\";\nimport { NullAssetOutputStrategy } from \"./NullAssetOutputStrategy.js\";\nimport { TransformationAssetProcessor } from \"./transformation/TransformationAssetProcessor.js\";\nimport { PassthroughAssetTransformationStrategy } from \"./transformation/PassthroughAssetTransformationStrategy.js\";\nimport type { ApiCoreContext } from \"@webiny/api-core/types/core.js\";\nimport { Container } from \"@webiny/di\";\n\ntype Setter<TParams, TReturn> = (params: TParams) => TReturn;\n\nexport type AssetRequestResolverDecorator = Setter<\n { assetRequestResolver: AssetRequestResolver },\n AssetRequestResolver\n>;\n\nexport type AssetResolverDecorator = Setter<\n { assetResolver: AssetResolver; container: Container },\n AssetResolver\n>;\n\nexport type AssetProcessorDecorator = Setter<\n { context: ApiCoreContext; assetProcessor: AssetProcessor },\n AssetProcessor\n>;\n\nexport type AssetTransformationDecorator = Setter<\n { context: ApiCoreContext; assetTransformationStrategy: AssetTransformationStrategy },\n AssetTransformationStrategy\n>;\n\nexport interface AssetOutputStrategyDecoratorParams {\n context: ApiCoreContext;\n assetRequest: AssetRequest;\n asset: Asset;\n assetOutputStrategy: AssetOutputStrategy;\n}\n\nexport type AssetOutputStrategyDecorator = Setter<\n AssetOutputStrategyDecoratorParams,\n AssetOutputStrategy\n>;\n\nexport class AssetDeliveryConfigBuilder {\n private assetRequestResolverDecorators: AssetRequestResolverDecorator[] = [];\n private assetResolverDecorators: AssetResolverDecorator[] = [];\n private assetProcessorDecorators: AssetProcessorDecorator[] = [];\n private assetTransformationStrategyDecorators: AssetTransformationDecorator[] = [];\n private assetOutputStrategyDecorators: AssetOutputStrategyDecorator[] = [];\n\n setResponseHeaders(setter: ResponseHeadersSetter) {\n this.decorateAssetOutputStrategy(params => {\n return new SetResponseHeaders(setter, params);\n });\n }\n\n decorateAssetRequestResolver(decorator: AssetRequestResolverDecorator) {\n this.assetRequestResolverDecorators.push(decorator);\n }\n\n decorateAssetResolver(decorator: AssetResolverDecorator) {\n this.assetResolverDecorators.push(decorator);\n }\n\n decorateAssetProcessor(decorator: AssetProcessorDecorator) {\n this.assetProcessorDecorators.push(decorator);\n }\n\n decorateAssetTransformationStrategy(decorator: AssetTransformationDecorator) {\n this.assetTransformationStrategyDecorators.push(decorator);\n }\n\n decorateAssetOutputStrategy(decorator: AssetOutputStrategyDecorator) {\n this.assetOutputStrategyDecorators.push(decorator);\n }\n\n /**\n * @internal\n */\n getAssetRequestResolver() {\n return this.assetRequestResolverDecorators.reduce<AssetRequestResolver>(\n (value, decorator) => decorator({ assetRequestResolver: value }),\n new NullRequestResolver()\n );\n }\n\n /**\n * @internal\n */\n getAssetResolver(container: Container) {\n return this.assetResolverDecorators.reduce<AssetResolver>(\n (value, decorator) => decorator({ container, assetResolver: value }),\n new NullAssetResolver()\n );\n }\n\n /**\n * @internal\n */\n getAssetProcessor(context: ApiCoreContext) {\n return this.assetProcessorDecorators.reduce<AssetProcessor>(\n (value, decorator) => decorator({ assetProcessor: value, context }),\n new TransformationAssetProcessor(this.getAssetTransformationStrategy(context))\n );\n }\n\n getAssetOutputStrategy(context: ApiCoreContext, assetRequest: AssetRequest, asset: Asset) {\n return this.assetOutputStrategyDecorators.reduce<AssetOutputStrategy>(\n (value, decorator) => {\n return decorator({ context, assetRequest, asset, assetOutputStrategy: value });\n },\n new NullAssetOutputStrategy()\n );\n }\n\n getAssetTransformationStrategy(context: ApiCoreContext) {\n return this.assetTransformationStrategyDecorators.reduce<AssetTransformationStrategy>(\n (value, decorator) => decorator({ context, assetTransformationStrategy: value }),\n new PassthroughAssetTransformationStrategy()\n );\n }\n}\n\nexport interface AssetDeliveryConfigModifier {\n (config: AssetDeliveryConfigBuilder): Promise<void> | void;\n}\n\nexport class AssetDeliveryConfigModifierPlugin extends Plugin {\n public static override type = \"fm.config-modifier\";\n private readonly cb: AssetDeliveryConfigModifier;\n\n constructor(cb: AssetDeliveryConfigModifier) {\n super();\n this.cb = cb;\n }\n\n async buildConfig(configBuilder: AssetDeliveryConfigBuilder): Promise<void> {\n await this.cb(configBuilder);\n }\n}\n\nexport const createAssetDeliveryConfig = (cb: AssetDeliveryConfigModifier) => {\n return new AssetDeliveryConfigModifierPlugin(cb);\n};\n"],"names":["AssetDeliveryConfigBuilder","setter","params","SetResponseHeaders","decorator","value","NullRequestResolver","container","NullAssetResolver","context","TransformationAssetProcessor","assetRequest","asset","NullAssetOutputStrategy","PassthroughAssetTransformationStrategy","AssetDeliveryConfigModifierPlugin","Plugin","cb","configBuilder","createAssetDeliveryConfig"],"mappings":";;;;;;;AAsDO,MAAMA;IAOT,mBAAmBC,MAA6B,EAAE;QAC9C,IAAI,CAAC,2BAA2B,CAACC,CAAAA,SACtB,IAAIC,mBAAmBF,QAAQC;IAE9C;IAEA,6BAA6BE,SAAwC,EAAE;QACnE,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAACA;IAC7C;IAEA,sBAAsBA,SAAiC,EAAE;QACrD,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAACA;IACtC;IAEA,uBAAuBA,SAAkC,EAAE;QACvD,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAACA;IACvC;IAEA,oCAAoCA,SAAuC,EAAE;QACzE,IAAI,CAAC,qCAAqC,CAAC,IAAI,CAACA;IACpD;IAEA,4BAA4BA,SAAuC,EAAE;QACjE,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAACA;IAC5C;IAKA,0BAA0B;QACtB,OAAO,IAAI,CAAC,8BAA8B,CAAC,MAAM,CAC7C,CAACC,OAAOD,YAAcA,UAAU;gBAAE,sBAAsBC;YAAM,IAC9D,IAAIC;IAEZ;IAKA,iBAAiBC,SAAoB,EAAE;QACnC,OAAO,IAAI,CAAC,uBAAuB,CAAC,MAAM,CACtC,CAACF,OAAOD,YAAcA,UAAU;gBAAEG;gBAAW,eAAeF;YAAM,IAClE,IAAIG;IAEZ;IAKA,kBAAkBC,OAAuB,EAAE;QACvC,OAAO,IAAI,CAAC,wBAAwB,CAAC,MAAM,CACvC,CAACJ,OAAOD,YAAcA,UAAU;gBAAE,gBAAgBC;gBAAOI;YAAQ,IACjE,IAAIC,6BAA6B,IAAI,CAAC,8BAA8B,CAACD;IAE7E;IAEA,uBAAuBA,OAAuB,EAAEE,YAA0B,EAAEC,KAAY,EAAE;QACtF,OAAO,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAC5C,CAACP,OAAOD,YACGA,UAAU;gBAAEK;gBAASE;gBAAcC;gBAAO,qBAAqBP;YAAM,IAEhF,IAAIQ;IAEZ;IAEA,+BAA+BJ,OAAuB,EAAE;QACpD,OAAO,IAAI,CAAC,qCAAqC,CAAC,MAAM,CACpD,CAACJ,OAAOD,YAAcA,UAAU;gBAAEK;gBAAS,6BAA6BJ;YAAM,IAC9E,IAAIS;IAEZ;;aA5EQ,8BAA8B,GAAoC,EAAE;aACpE,uBAAuB,GAA6B,EAAE;aACtD,wBAAwB,GAA8B,EAAE;aACxD,qCAAqC,GAAmC,EAAE;aAC1E,6BAA6B,GAAmC,EAAE;;AAyE9E;AAMO,MAAMC,0CAA0CC;;aAC5B,IAAI,GAAG;;IAG9B,YAAYC,EAA+B,CAAE;QACzC,KAAK;QACL,IAAI,CAAC,EAAE,GAAGA;IACd;IAEA,MAAM,YAAYC,aAAyC,EAAiB;QACxE,MAAM,IAAI,CAAC,EAAE,CAACA;IAClB;AACJ;AAEO,MAAMC,4BAA4B,CAACF,KAC/B,IAAIF,kCAAkCE"}
@@ -1,6 +0,0 @@
1
- import type { Request } from "@webiny/handler/types.js";
2
- import type { AssetRequestResolver } from "./abstractions/AssetRequestResolver.js";
3
- import { AssetRequest } from "./AssetRequest.js";
4
- export declare class FilesAssetRequestResolver implements AssetRequestResolver {
5
- resolve(request: Request): Promise<AssetRequest | undefined>;
6
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"delivery/AssetDelivery/FilesAssetRequestResolver.js","sources":["../../../src/delivery/AssetDelivery/FilesAssetRequestResolver.ts"],"sourcesContent":["import type { Request } from \"@webiny/handler/types.js\";\nimport type { AssetRequestResolver } from \"./abstractions/AssetRequestResolver.js\";\nimport type { AssetRequestOptions } from \"./AssetRequest.js\";\nimport { AssetRequest } from \"./AssetRequest.js\";\n\nexport class FilesAssetRequestResolver implements AssetRequestResolver {\n async resolve(request: Request): Promise<AssetRequest | undefined> {\n // Example: /files/65722cb5c7824a0008d05963/image-48.jpg?width=300\n if (!request.url.startsWith(\"/files/\")) {\n return undefined;\n }\n\n const params = (request.params as Record<string, any>) ?? {};\n const query = (request.query as Record<string, any>) ?? {};\n\n // Example: { '*': '/files/65722cb5c7824a0008d05963/image-48.jpg' },\n const path = params[\"*\"];\n\n const options: AssetRequestOptions = {\n ...query,\n original: \"original\" in query\n };\n\n if (query.width) {\n options.width = parseInt(query.width);\n }\n\n return new AssetRequest({\n key: decodeURI(path).replace(\"/files/\", \"\"),\n context: {\n url: request.url\n },\n options\n });\n }\n}\n"],"names":["FilesAssetRequestResolver","request","params","query","path","options","parseInt","AssetRequest","decodeURI"],"mappings":";AAKO,MAAMA;IACT,MAAM,QAAQC,OAAgB,EAAqC;QAE/D,IAAI,CAACA,QAAQ,GAAG,CAAC,UAAU,CAAC,YACxB;QAGJ,MAAMC,SAAUD,QAAQ,MAAM,IAA4B,CAAC;QAC3D,MAAME,QAASF,QAAQ,KAAK,IAA4B,CAAC;QAGzD,MAAMG,OAAOF,MAAM,CAAC,IAAI;QAExB,MAAMG,UAA+B;YACjC,GAAGF,KAAK;YACR,UAAU,cAAcA;QAC5B;QAEA,IAAIA,MAAM,KAAK,EACXE,QAAQ,KAAK,GAAGC,SAASH,MAAM,KAAK;QAGxC,OAAO,IAAII,aAAa;YACpB,KAAKC,UAAUJ,MAAM,OAAO,CAAC,WAAW;YACxC,SAAS;gBACL,KAAKH,QAAQ,GAAG;YACpB;YACAI;QACJ;IACJ;AACJ"}
@@ -1,4 +0,0 @@
1
- import type { AssetOutputStrategy, AssetReply } from "../../delivery/index.js";
2
- export declare class NullAssetOutputStrategy implements AssetOutputStrategy {
3
- output(): Promise<AssetReply>;
4
- }
@@ -1,9 +0,0 @@
1
- import { NullAssetReply } from "./NullAssetReply.js";
2
- class NullAssetOutputStrategy {
3
- async output() {
4
- return new NullAssetReply();
5
- }
6
- }
7
- export { NullAssetOutputStrategy };
8
-
9
- //# sourceMappingURL=NullAssetOutputStrategy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"delivery/AssetDelivery/NullAssetOutputStrategy.js","sources":["../../../src/delivery/AssetDelivery/NullAssetOutputStrategy.ts"],"sourcesContent":["import type { AssetOutputStrategy, AssetReply } from \"~/delivery/index.js\";\nimport { NullAssetReply } from \"./NullAssetReply.js\";\n\nexport class NullAssetOutputStrategy implements AssetOutputStrategy {\n async output(): Promise<AssetReply> {\n return new NullAssetReply();\n }\n}\n"],"names":["NullAssetOutputStrategy","NullAssetReply"],"mappings":";AAGO,MAAMA;IACT,MAAM,SAA8B;QAChC,OAAO,IAAIC;IACf;AACJ"}
@@ -1,5 +0,0 @@
1
- import type { AssetResolver } from "./abstractions/AssetResolver.js";
2
- import type { Asset } from "./Asset.js";
3
- export declare class NullAssetResolver implements AssetResolver {
4
- resolve(): Promise<Asset | undefined>;
5
- }
@@ -1,8 +0,0 @@
1
- class NullAssetResolver {
2
- resolve() {
3
- return Promise.resolve(void 0);
4
- }
5
- }
6
- export { NullAssetResolver };
7
-
8
- //# sourceMappingURL=NullAssetResolver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"delivery/AssetDelivery/NullAssetResolver.js","sources":["../../../src/delivery/AssetDelivery/NullAssetResolver.ts"],"sourcesContent":["import type { AssetResolver } from \"./abstractions/AssetResolver.js\";\nimport type { Asset } from \"./Asset.js\";\n\nexport class NullAssetResolver implements AssetResolver {\n resolve(): Promise<Asset | undefined> {\n return Promise.resolve(undefined);\n }\n}\n"],"names":["NullAssetResolver","Promise","undefined"],"mappings":"AAGO,MAAMA;IACT,UAAsC;QAClC,OAAOC,QAAQ,OAAO,CAACC;IAC3B;AACJ"}
@@ -1,4 +0,0 @@
1
- import type { AssetRequest, AssetRequestResolver } from "../../delivery/index.js";
2
- export declare class NullRequestResolver implements AssetRequestResolver {
3
- resolve(): Promise<AssetRequest | undefined>;
4
- }
@@ -1,8 +0,0 @@
1
- class NullRequestResolver {
2
- resolve() {
3
- return Promise.resolve(void 0);
4
- }
5
- }
6
- export { NullRequestResolver };
7
-
8
- //# sourceMappingURL=NullRequestResolver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"delivery/AssetDelivery/NullRequestResolver.js","sources":["../../../src/delivery/AssetDelivery/NullRequestResolver.ts"],"sourcesContent":["import type { AssetRequest, AssetRequestResolver } from \"~/delivery/index.js\";\n\nexport class NullRequestResolver implements AssetRequestResolver {\n resolve(): Promise<AssetRequest | undefined> {\n return Promise.resolve(undefined);\n }\n}\n"],"names":["NullRequestResolver","Promise","undefined"],"mappings":"AAEO,MAAMA;IACT,UAA6C;QACzC,OAAOC,QAAQ,OAAO,CAACC;IAC3B;AACJ"}
@@ -1,8 +0,0 @@
1
- import type { ResponseHeaders } from "@webiny/handler";
2
- import type { Asset, AssetOutputStrategy, AssetReply } from "../../delivery/index.js";
3
- export declare class SetCacheControlHeaders implements AssetOutputStrategy {
4
- private readonly strategy;
5
- private readonly headers;
6
- constructor(headers: ResponseHeaders, strategy: AssetOutputStrategy | undefined);
7
- output(asset: Asset): Promise<AssetReply>;
8
- }
@@ -1,15 +0,0 @@
1
- class SetCacheControlHeaders {
2
- constructor(headers, strategy){
3
- this.headers = headers;
4
- this.strategy = strategy;
5
- }
6
- async output(asset) {
7
- if (!this.strategy) throw Error("No asset output strategy is configured!");
8
- const reply = await this.strategy.output(asset);
9
- reply.setHeaders((headers)=>headers.merge(this.headers));
10
- return reply;
11
- }
12
- }
13
- export { SetCacheControlHeaders };
14
-
15
- //# sourceMappingURL=SetCacheControlHeaders.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"delivery/AssetDelivery/SetCacheControlHeaders.js","sources":["../../../src/delivery/AssetDelivery/SetCacheControlHeaders.ts"],"sourcesContent":["import type { ResponseHeaders } from \"@webiny/handler\";\nimport type { Asset, AssetOutputStrategy, AssetReply } from \"~/delivery/index.js\";\n\nexport class SetCacheControlHeaders implements AssetOutputStrategy {\n private readonly strategy: AssetOutputStrategy | undefined;\n private readonly headers: ResponseHeaders;\n\n constructor(headers: ResponseHeaders, strategy: AssetOutputStrategy | undefined) {\n this.headers = headers;\n this.strategy = strategy;\n }\n\n async output(asset: Asset): Promise<AssetReply> {\n if (!this.strategy) {\n throw Error(`No asset output strategy is configured!`);\n }\n\n const reply = await this.strategy.output(asset);\n\n reply.setHeaders(headers => {\n return headers.merge(this.headers);\n });\n\n return reply;\n }\n}\n"],"names":["SetCacheControlHeaders","headers","strategy","asset","Error","reply"],"mappings":"AAGO,MAAMA;IAIT,YAAYC,OAAwB,EAAEC,QAAyC,CAAE;QAC7E,IAAI,CAAC,OAAO,GAAGD;QACf,IAAI,CAAC,QAAQ,GAAGC;IACpB;IAEA,MAAM,OAAOC,KAAY,EAAuB;QAC5C,IAAI,CAAC,IAAI,CAAC,QAAQ,EACd,MAAMC,MAAM;QAGhB,MAAMC,QAAQ,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAACF;QAEzCE,MAAM,UAAU,CAACJ,CAAAA,UACNA,QAAQ,KAAK,CAAC,IAAI,CAAC,OAAO;QAGrC,OAAOI;IACX;AACJ"}
@@ -1,18 +0,0 @@
1
- import type { AssetOutputStrategy, Asset, AssetReply, AssetRequest, AssetOutputStrategyDecoratorParams } from "../../delivery/index.js";
2
- import type { ResponseHeaders } from "@webiny/handler";
3
- import type { ApiCoreContext } from "@webiny/api-core/types/core.js";
4
- export interface ResponseHeadersParams {
5
- headers: ResponseHeaders;
6
- context: ApiCoreContext;
7
- assetRequest: AssetRequest;
8
- asset: Asset;
9
- }
10
- export interface ResponseHeadersSetter {
11
- (params: ResponseHeadersParams): Promise<void> | void;
12
- }
13
- export declare class SetResponseHeaders implements AssetOutputStrategy {
14
- private readonly setter;
15
- private strategyDecoratorParams;
16
- constructor(setter: ResponseHeadersSetter, strategyDecoratorParams: AssetOutputStrategyDecoratorParams);
17
- output(asset: Asset): Promise<AssetReply>;
18
- }