@contember/engine-s3-plugin 1.2.1 → 1.3.0-alpha.2

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 (58) hide show
  1. package/dist/src/Config.d.ts +2 -3
  2. package/dist/src/Config.d.ts.map +1 -1
  3. package/dist/src/Config.js.map +1 -1
  4. package/dist/src/S3ConfigProcessor.d.ts +2 -2
  5. package/dist/src/S3ConfigProcessor.d.ts.map +1 -1
  6. package/dist/src/S3ConfigProcessor.js.map +1 -1
  7. package/dist/src/S3ObjectAuthorizator.d.ts +22 -0
  8. package/dist/src/S3ObjectAuthorizator.d.ts.map +1 -0
  9. package/dist/src/S3ObjectAuthorizator.js +48 -0
  10. package/dist/src/S3ObjectAuthorizator.js.map +1 -0
  11. package/dist/src/S3SchemaContributor.d.ts +11 -5
  12. package/dist/src/S3SchemaContributor.d.ts.map +1 -1
  13. package/dist/src/S3SchemaContributor.js +61 -85
  14. package/dist/src/S3SchemaContributor.js.map +1 -1
  15. package/dist/src/S3SchemaTypes.d.ts +21 -0
  16. package/dist/src/S3SchemaTypes.d.ts.map +1 -0
  17. package/dist/src/S3SchemaTypes.js +65 -0
  18. package/dist/src/S3SchemaTypes.js.map +1 -0
  19. package/dist/src/S3Service.d.ts +10 -10
  20. package/dist/src/S3Service.d.ts.map +1 -1
  21. package/dist/src/S3Service.js +40 -37
  22. package/dist/src/S3Service.js.map +1 -1
  23. package/dist/src/S3Signer.d.ts +1 -1
  24. package/dist/src/S3Signer.d.ts.map +1 -1
  25. package/dist/src/S3Signer.js +1 -1
  26. package/dist/src/S3Signer.js.map +1 -1
  27. package/dist/src/index.d.ts +6 -4
  28. package/dist/src/index.d.ts.map +1 -1
  29. package/dist/src/index.js +7 -4
  30. package/dist/src/index.js.map +1 -1
  31. package/dist/src/tsconfig.tsbuildinfo +1 -1
  32. package/dist/tests/cases/authorizator.test.d.ts +2 -0
  33. package/dist/tests/cases/authorizator.test.d.ts.map +1 -0
  34. package/dist/tests/cases/authorizator.test.js +21 -0
  35. package/dist/tests/cases/authorizator.test.js.map +1 -0
  36. package/dist/tests/cases/signRequest.test.js +14 -5
  37. package/dist/tests/cases/signRequest.test.js.map +1 -1
  38. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  39. package/package.json +4 -4
  40. package/src/Config.ts +1 -2
  41. package/src/S3ConfigProcessor.ts +2 -2
  42. package/src/S3ObjectAuthorizator.ts +63 -0
  43. package/src/S3SchemaContributor.ts +51 -109
  44. package/src/S3SchemaTypes.ts +89 -0
  45. package/src/S3Service.ts +51 -43
  46. package/src/S3Signer.ts +2 -2
  47. package/src/index.ts +9 -7
  48. package/src/tsconfig.json +3 -9
  49. package/tests/cases/authorizator.test.ts +22 -0
  50. package/tests/cases/signRequest.test.ts +18 -18
  51. package/tests/tsconfig.json +1 -3
  52. package/tsconfig.json +2 -6
  53. package/dist/src/ObjectKeyVerifier.d.ts +0 -3
  54. package/dist/src/ObjectKeyVerifier.d.ts.map +0 -1
  55. package/dist/src/ObjectKeyVerifier.js +0 -18
  56. package/dist/src/ObjectKeyVerifier.js.map +0 -1
  57. package/src/ObjectKeyVerifier.ts +0 -14
  58. package/types/sign3/index.d.ts +0 -8
@@ -1,4 +1,3 @@
1
- import { ProjectConfig } from '@contember/engine-plugins';
2
1
  import * as Typesafe from '@contember/typesafe';
3
2
  export declare enum S3Providers {
4
3
  aws = "aws",
@@ -22,9 +21,9 @@ export declare const s3ConfigSchema: Typesafe.Type<{
22
21
  readonly noAcl?: boolean | undefined;
23
22
  }>;
24
23
  export declare type S3Config = ReturnType<typeof s3ConfigSchema>;
25
- export declare type ProjectWithS3Config = ProjectConfig<{
24
+ export declare type Project3Config = {
26
25
  s3?: S3Config;
27
- }>;
26
+ };
28
27
  export declare const resolveS3Config: (config: S3Config) => S3Config;
29
28
  export declare const resolveS3Endpoint: (config: S3Config) => {
30
29
  endpoint: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AAE/C,oBAAY,WAAW;IACtB,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,IAAI,SAAS;IACb,UAAU,eAAe;IACzB,WAAW,gBAAgB;CAC3B;AAGD,eAAO,MAAM,cAAc;;;;;;;;;;;;;EAgB1B,CAAA;AAED,oBAAY,QAAQ,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;AAExD,oBAAY,mBAAmB,GAAG,aAAa,CAAC;IAAE,EAAE,CAAC,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAA;AAKlE,eAAO,MAAM,eAAe,WAAY,QAAQ,KAAG,QAKlD,CAAA;AAID,eAAO,MAAM,iBAAiB,WACrB,QAAQ;cAEN,MAAM;cACN,MAAM;CAOhB,CAAA;AAED,eAAO,MAAM,sBAAsB,WAAY,QAAQ,KAAG,MAMzD,CAAA"}
1
+ {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AAE/C,oBAAY,WAAW;IACtB,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,IAAI,SAAS;IACb,UAAU,eAAe;IACzB,WAAW,gBAAgB;CAC3B;AAGD,eAAO,MAAM,cAAc;;;;;;;;;;;;;EAgB1B,CAAA;AAED,oBAAY,QAAQ,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;AAExD,oBAAY,cAAc,GAAG;IAAE,EAAE,CAAC,EAAE,QAAQ,CAAA;CAAE,CAAA;AAK9C,eAAO,MAAM,eAAe,WAAY,QAAQ,KAAG,QAKlD,CAAA;AAID,eAAO,MAAM,iBAAiB,WACrB,QAAQ;cAEN,MAAM;cACN,MAAM;CAOhB,CAAA;AAED,eAAO,MAAM,sBAAsB,WAAY,QAAQ,KAAG,MAMzD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"Config.js","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,8DAA+C;AAE/C,IAAY,WAMX;AAND,WAAY,WAAW;IACtB,0BAAW,CAAA;IACX,8BAAe,CAAA;IACf,4BAAa,CAAA;IACb,wCAAyB,CAAA;IACzB,0CAA2B,CAAA;AAC5B,CAAC,EANW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAMtB;AAGY,QAAA,cAAc,GAAG,QAAQ,CAAC,YAAY,CAClD,QAAQ,CAAC,MAAM,CAAC;IACf,MAAM,EAAE,QAAQ,CAAC,MAAM;IACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;IACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;IACvB,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC;QAC5B,GAAG,EAAE,QAAQ,CAAC,MAAM;QACpB,MAAM,EAAE,QAAQ,CAAC,MAAM;KACvB,CAAC;CACF,CAAC,EACF,QAAQ,CAAC,OAAO,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC,MAAM;IACzB,WAAW,EAAE,QAAQ,CAAC,MAAM;IAC5B,QAAQ,EAAE,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC,WAAW,CAAC;IACrI,KAAK,EAAE,QAAQ,CAAC,OAAO;CACvB,CAAC,CACF,CAAA;AAMD,OAAO;AACP,MAAM,wBAAwB,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;AAE7C,MAAM,eAAe,GAAG,CAAC,MAAgB,EAAY,EAAE;IAC7D,OAAO;QACN,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,wBAAwB,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC9E,GAAG,MAAM;KACT,CAAA;AACF,CAAC,CAAA;AALY,QAAA,eAAe,mBAK3B;AAED,MAAM,aAAa,GAAG,WAAW,CAAA;AAE1B,MAAM,iBAAiB,GAAG,CAChC,MAAgB,EAIf,EAAE;IACH,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;IACtE,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,WAAW,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,IAAI,aAAa,gBAAgB,CAAA;IAC3I,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAEzD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAA;AAC9B,CAAC,CAAA;AAXY,QAAA,iBAAiB,qBAW7B;AAEM,MAAM,sBAAsB,GAAG,CAAC,MAAgB,EAAU,EAAE;IAClE,IAAI,MAAM,CAAC,WAAW,EAAE;QACvB,OAAO,MAAM,CAAC,WAAW,CAAA;KACzB;IACD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAA,yBAAiB,EAAC,MAAM,CAAC,CAAA;IACxD,OAAO,QAAQ,GAAG,QAAQ,CAAA;AAC3B,CAAC,CAAA;AANY,QAAA,sBAAsB,0BAMlC"}
1
+ {"version":3,"file":"Config.js","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8DAA+C;AAE/C,IAAY,WAMX;AAND,WAAY,WAAW;IACtB,0BAAW,CAAA;IACX,8BAAe,CAAA;IACf,4BAAa,CAAA;IACb,wCAAyB,CAAA;IACzB,0CAA2B,CAAA;AAC5B,CAAC,EANW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAMtB;AAGY,QAAA,cAAc,GAAG,QAAQ,CAAC,YAAY,CAClD,QAAQ,CAAC,MAAM,CAAC;IACf,MAAM,EAAE,QAAQ,CAAC,MAAM;IACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;IACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;IACvB,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC;QAC5B,GAAG,EAAE,QAAQ,CAAC,MAAM;QACpB,MAAM,EAAE,QAAQ,CAAC,MAAM;KACvB,CAAC;CACF,CAAC,EACF,QAAQ,CAAC,OAAO,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC,MAAM;IACzB,WAAW,EAAE,QAAQ,CAAC,MAAM;IAC5B,QAAQ,EAAE,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC,WAAW,CAAC;IACrI,KAAK,EAAE,QAAQ,CAAC,OAAO;CACvB,CAAC,CACF,CAAA;AAMD,OAAO;AACP,MAAM,wBAAwB,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;AAE7C,MAAM,eAAe,GAAG,CAAC,MAAgB,EAAY,EAAE;IAC7D,OAAO;QACN,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,wBAAwB,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC9E,GAAG,MAAM;KACT,CAAA;AACF,CAAC,CAAA;AALY,QAAA,eAAe,mBAK3B;AAED,MAAM,aAAa,GAAG,WAAW,CAAA;AAE1B,MAAM,iBAAiB,GAAG,CAChC,MAAgB,EAIf,EAAE;IACH,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;IACtE,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,WAAW,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,IAAI,aAAa,gBAAgB,CAAA;IAC3I,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAEzD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAA;AAC9B,CAAC,CAAA;AAXY,QAAA,iBAAiB,qBAW7B;AAEM,MAAM,sBAAsB,GAAG,CAAC,MAAgB,EAAU,EAAE;IAClE,IAAI,MAAM,CAAC,WAAW,EAAE;QACvB,OAAO,MAAM,CAAC,WAAW,CAAA;KACzB;IACD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAA,yBAAiB,EAAC,MAAM,CAAC,CAAA;IACxD,OAAO,QAAQ,GAAG,QAAQ,CAAA;AAC3B,CAAC,CAAA;AANY,QAAA,sBAAsB,0BAMlC"}
@@ -1,7 +1,7 @@
1
1
  import { ConfigProcessor, ConfigTemplate, ConfigTemplateContext } from '@contember/engine-plugins';
2
- import { ProjectWithS3Config } from './Config';
2
+ import { Project3Config } from './Config';
3
3
  import * as Typesafe from '@contember/typesafe';
4
- export declare class S3ConfigProcessor implements ConfigProcessor<ProjectWithS3Config> {
4
+ export declare class S3ConfigProcessor implements ConfigProcessor<Project3Config> {
5
5
  getDefaultEnv(): Record<string, string>;
6
6
  prepareConfigTemplate(template: ConfigTemplate, { env }: ConfigTemplateContext): any;
7
7
  getProjectConfigSchema(slug: string): Typesafe.Type<Record<string, any>>;
@@ -1 +1 @@
1
- {"version":3,"file":"S3ConfigProcessor.d.ts","sourceRoot":"","sources":["../../src/S3ConfigProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAClG,OAAO,EAAE,mBAAmB,EAAkB,MAAM,UAAU,CAAA;AAC9D,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AAE/C,qBAAa,iBAAkB,YAAW,eAAe,CAAC,mBAAmB,CAAC;IAC7E,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAQvC,qBAAqB,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,GAAG,EAAE,EAAE,qBAAqB;IAqB9E,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CASxE"}
1
+ {"version":3,"file":"S3ConfigProcessor.d.ts","sourceRoot":"","sources":["../../src/S3ConfigProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAClG,OAAO,EAAE,cAAc,EAAkB,MAAM,UAAU,CAAA;AACzD,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AAE/C,qBAAa,iBAAkB,YAAW,eAAe,CAAC,cAAc,CAAC;IACxE,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAQvC,qBAAqB,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,GAAG,EAAE,EAAE,qBAAqB;IAqB9E,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CASxE"}
@@ -1 +1 @@
1
- {"version":3,"file":"S3ConfigProcessor.js","sourceRoot":"","sources":["../../src/S3ConfigProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,qCAA8D;AAC9D,8DAA+C;AAE/C,MAAa,iBAAiB;IAC7B,aAAa;QACZ,OAAO;YACN,mBAAmB,EAAE,EAAE;YACvB,iBAAiB,EAAE,WAAW;YAC9B,mBAAmB,EAAE,KAAK;SAC1B,CAAA;IACF,CAAC;IAED,qBAAqB,CAAC,QAAwB,EAAE,EAAE,GAAG,EAAyB;QAC7E,OAAO;YACN,GAAG,QAAQ;YACX,eAAe,EAAE;gBAChB,GAAG,QAAQ,CAAC,eAAe;gBAC3B,EAAE,EAAE;oBACH,MAAM,EAAE,0BAA0B;oBAClC,MAAM,EAAE,wCAAwC;oBAChD,MAAM,EAAE,yBAAyB;oBACjC,QAAQ,EAAE,2BAA2B;oBACrC,WAAW,EAAE,uBAAuB;oBACpC,QAAQ,EAAE,2BAA2B;oBACrC,WAAW,EAAE;wBACZ,GAAG,EAAE,8CAA8C;wBACnD,MAAM,EAAE,oDAAoD;qBAC5D;iBACD;aACD;SACD,CAAA;IACF,CAAC;IAED,sBAAsB,CAAC,IAAY;QAClC,OAAO,QAAQ,CAAC,KAAK,CACpB,CAAC,KAAc,EAAE,OAAsB,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAC5I,QAAQ,CAAC,MAAM,CAAC;YACf,EAAE,EAAE,uBAAc;SAClB,CAAC,CACF,CAAA;IACF,CAAC;CAED;AAvCD,8CAuCC"}
1
+ {"version":3,"file":"S3ConfigProcessor.js","sourceRoot":"","sources":["../../src/S3ConfigProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,qCAAyD;AACzD,8DAA+C;AAE/C,MAAa,iBAAiB;IAC7B,aAAa;QACZ,OAAO;YACN,mBAAmB,EAAE,EAAE;YACvB,iBAAiB,EAAE,WAAW;YAC9B,mBAAmB,EAAE,KAAK;SAC1B,CAAA;IACF,CAAC;IAED,qBAAqB,CAAC,QAAwB,EAAE,EAAE,GAAG,EAAyB;QAC7E,OAAO;YACN,GAAG,QAAQ;YACX,eAAe,EAAE;gBAChB,GAAG,QAAQ,CAAC,eAAe;gBAC3B,EAAE,EAAE;oBACH,MAAM,EAAE,0BAA0B;oBAClC,MAAM,EAAE,wCAAwC;oBAChD,MAAM,EAAE,yBAAyB;oBACjC,QAAQ,EAAE,2BAA2B;oBACrC,WAAW,EAAE,uBAAuB;oBACpC,QAAQ,EAAE,2BAA2B;oBACrC,WAAW,EAAE;wBACZ,GAAG,EAAE,8CAA8C;wBACnD,MAAM,EAAE,oDAAoD;qBAC5D;iBACD;aACD;SACD,CAAA;IACF,CAAC;IAED,sBAAsB,CAAC,IAAY;QAClC,OAAO,QAAQ,CAAC,KAAK,CACpB,CAAC,KAAc,EAAE,OAAsB,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAC5I,QAAQ,CAAC,MAAM,CAAC;YACf,EAAE,EAAE,uBAAc;SAClB,CAAC,CACF,CAAA;IACF,CAAC;CAED;AAvCD,8CAuCC"}
@@ -0,0 +1,22 @@
1
+ export declare type S3ObjectUploadRule = {
2
+ pattern: string;
3
+ maxSize?: number;
4
+ matcher?: (key: string) => boolean;
5
+ };
6
+ export declare type S3ObjectReadRule = {
7
+ pattern: string;
8
+ matcher?: (key: string) => boolean;
9
+ };
10
+ export declare class S3ObjectAuthorizator {
11
+ private readonly uploadRules;
12
+ private readonly readRules;
13
+ constructor(uploadRules: Omit<S3ObjectUploadRule, 'matcher'>[], readRules: Omit<S3ObjectReadRule, 'matcher'>[]);
14
+ verifyReadAccess({ key }: {
15
+ key: string;
16
+ }): void;
17
+ verifyUploadAccess({ key, size }: {
18
+ key: string;
19
+ size: number | null;
20
+ }): void;
21
+ }
22
+ //# sourceMappingURL=S3ObjectAuthorizator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"S3ObjectAuthorizator.d.ts","sourceRoot":"","sources":["../../src/S3ObjectAuthorizator.ts"],"names":[],"mappings":"AAGA,oBAAY,kBAAkB,GAAG;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;CAClC,CAAA;AAED,oBAAY,gBAAgB,GAAG;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;CAClC,CAAA;AAED,qBAAa,oBAAoB;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsB;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;gBAG7C,WAAW,EAAE,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,EAAE,EAClD,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,EAAE;IAMxC,gBAAgB,CAAC,EAAE,GAAG,EAAE,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAYhD,kBAAkB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI;CAwBpF"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.S3ObjectAuthorizator = void 0;
7
+ const picomatch_1 = __importDefault(require("picomatch"));
8
+ const graphql_utils_1 = require("@contember/graphql-utils");
9
+ class S3ObjectAuthorizator {
10
+ constructor(uploadRules, readRules) {
11
+ this.uploadRules = uploadRules;
12
+ this.readRules = readRules;
13
+ }
14
+ verifyReadAccess({ key }) {
15
+ var _a;
16
+ for (const rule of this.readRules) {
17
+ (_a = rule.matcher) !== null && _a !== void 0 ? _a : (rule.matcher = (0, picomatch_1.default)(rule.pattern));
18
+ if (rule.matcher(key)) {
19
+ return;
20
+ }
21
+ }
22
+ throw new graphql_utils_1.ForbiddenError(`Read access forbidden for object key ${key}`);
23
+ }
24
+ verifyUploadAccess({ key, size }) {
25
+ var _a;
26
+ const matchedPatterns = [];
27
+ for (const rule of this.uploadRules) {
28
+ (_a = rule.matcher) !== null && _a !== void 0 ? _a : (rule.matcher = (0, picomatch_1.default)(rule.pattern));
29
+ if (rule.matcher(key)) {
30
+ if (!rule.maxSize || (size !== null && size <= rule.maxSize)) {
31
+ return;
32
+ }
33
+ matchedPatterns.push(rule);
34
+ }
35
+ }
36
+ if (matchedPatterns.length > 0) {
37
+ if (size === null) {
38
+ throw new graphql_utils_1.ForbiddenError('File size must be provided');
39
+ }
40
+ else {
41
+ throw new graphql_utils_1.ForbiddenError('Uploaded file is too large');
42
+ }
43
+ }
44
+ throw new graphql_utils_1.ForbiddenError(`Upload access forbidden for object key ${key}`);
45
+ }
46
+ }
47
+ exports.S3ObjectAuthorizator = S3ObjectAuthorizator;
48
+ //# sourceMappingURL=S3ObjectAuthorizator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"S3ObjectAuthorizator.js","sourceRoot":"","sources":["../../src/S3ObjectAuthorizator.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA0B;AAC1B,4DAAyD;AAazD,MAAa,oBAAoB;IAIhC,YACC,WAAkD,EAClD,SAA8C;QAE9C,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAC9B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC3B,CAAC;IAEM,gBAAgB,CAAC,EAAE,GAAG,EAAmB;;QAC/C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;YAClC,MAAA,IAAI,CAAC,OAAO,oCAAZ,IAAI,CAAC,OAAO,GAAK,IAAA,mBAAE,EAAC,IAAI,CAAC,OAAO,CAAC,EAAA;YAEjC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACtB,OAAM;aACN;SACD;QAED,MAAM,IAAI,8BAAc,CAAC,wCAAwC,GAAG,EAAE,CAAC,CAAA;IACxE,CAAC;IAEM,kBAAkB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAwC;;QAC5E,MAAM,eAAe,GAAyB,EAAE,CAAA;QAEhD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;YACpC,MAAA,IAAI,CAAC,OAAO,oCAAZ,IAAI,CAAC,OAAO,GAAK,IAAA,mBAAE,EAAC,IAAI,CAAC,OAAO,CAAC,EAAA;YAEjC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACtB,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE;oBAC7D,OAAM;iBACN;gBACD,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;aAC1B;SACD;QAED,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/B,IAAI,IAAI,KAAK,IAAI,EAAE;gBAClB,MAAM,IAAI,8BAAc,CAAC,4BAA4B,CAAC,CAAA;aACtD;iBAAM;gBACN,MAAM,IAAI,8BAAc,CAAC,4BAA4B,CAAC,CAAA;aACtD;SACD;QAED,MAAM,IAAI,8BAAc,CAAC,0CAA0C,GAAG,EAAE,CAAC,CAAA;IAC1E,CAAC;CACD;AAhDD,oDAgDC"}
@@ -1,16 +1,22 @@
1
1
  import { GraphQLSchema } from 'graphql';
2
2
  import { S3ServiceFactory } from './S3Service';
3
3
  import { S3Config } from './Config';
4
- import { GraphQLSchemaContributor, SchemaContext } from '@contember/engine-plugins';
5
- import { Providers } from '@contember/engine-plugins';
4
+ import { GraphQLSchemaContributor, Providers, GraphQLSchemaContributorContext } from '@contember/engine-plugins';
5
+ export declare type S3SchemaUploadAcl = boolean | {
6
+ maxSize?: number;
7
+ };
8
+ export declare type S3SchemaAcl = Record<string, // public/*.jpg
9
+ {
10
+ read?: boolean;
11
+ upload?: S3SchemaUploadAcl;
12
+ }>;
6
13
  export declare class S3SchemaContributor implements GraphQLSchemaContributor {
7
14
  private readonly s3Config;
8
15
  private readonly s3Factory;
9
16
  private readonly providers;
10
- private s3HeadersType;
11
17
  constructor(s3Config: S3Config | undefined, s3Factory: S3ServiceFactory, providers: Providers);
12
- getCacheKey(context: SchemaContext): string;
13
- createSchema(context: SchemaContext): GraphQLSchema | undefined;
18
+ getCacheKey(context: GraphQLSchemaContributorContext): string;
19
+ createSchema(context: GraphQLSchemaContributorContext): GraphQLSchema | undefined;
14
20
  private createReadMutation;
15
21
  private createUploadMutation;
16
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"S3SchemaContributor.d.ts","sourceRoot":"","sources":["../../src/S3SchemaContributor.ts"],"names":[],"mappings":"AAAA,OAAO,EAON,aAAa,EAEb,MAAM,SAAS,CAAA;AAChB,OAAO,EAAoB,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,EAAmB,QAAQ,EAAE,MAAM,UAAU,CAAA;AAEpD,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACnF,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAcrD,qBAAa,mBAAoB,YAAW,wBAAwB;IAkBlE,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAnB3B,OAAO,CAAC,aAAa,CAcpB;gBAGiB,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAC9B,SAAS,EAAE,gBAAgB,EAC3B,SAAS,EAAE,SAAS;IAGtC,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM;IAM3C,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,aAAa,GAAG,SAAS;IAuC/D,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,oBAAoB;CAiE5B"}
1
+ {"version":3,"file":"S3SchemaContributor.d.ts","sourceRoot":"","sources":["../../src/S3SchemaContributor.ts"],"names":[],"mappings":"AAAA,OAAO,EAKN,aAAa,EAEb,MAAM,SAAS,CAAA;AAChB,OAAO,EAAa,gBAAgB,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EAAmB,QAAQ,EAAE,MAAM,UAAU,CAAA;AACpD,OAAO,EAAE,wBAAwB,EAAE,SAAS,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAA;AAShH,oBAAY,iBAAiB,GAC1B,OAAO,GACP;IACD,OAAO,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAEF,oBAAY,WAAW,GAAG,MAAM,CAC/B,MAAM,EAAE,eAAe;AACvB;IACC,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAC1B,CACD,CAAA;AAGD,qBAAa,mBAAoB,YAAW,wBAAwB;IAElE,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAFT,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAC9B,SAAS,EAAE,gBAAgB,EAC3B,SAAS,EAAE,SAAS;IAGtC,WAAW,CAAC,OAAO,EAAE,+BAA+B,GAAG,MAAM;IAM7D,YAAY,CAAC,OAAO,EAAE,+BAA+B,GAAG,aAAa,GAAG,SAAS;IA8CjF,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,oBAAoB;CA4B5B"}
@@ -1,24 +1,39 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  Object.defineProperty(exports, "__esModule", { value: true });
3
26
  exports.S3SchemaContributor = void 0;
4
27
  const graphql_1 = require("graphql");
5
- const S3Service_1 = require("./S3Service");
6
28
  const Config_1 = require("./Config");
7
- const ObjectKeyVerifier_1 = require("./ObjectKeyVerifier");
29
+ const types = __importStar(require("./S3SchemaTypes"));
30
+ const S3SchemaTypes_1 = require("./S3SchemaTypes");
31
+ const S3ObjectAuthorizator_1 = require("./S3ObjectAuthorizator");
8
32
  class S3SchemaContributor {
9
33
  constructor(s3Config, s3Factory, providers) {
10
34
  this.s3Config = s3Config;
11
35
  this.s3Factory = s3Factory;
12
36
  this.providers = providers;
13
- this.s3HeadersType = {
14
- type: new graphql_1.GraphQLNonNull(new graphql_1.GraphQLList(new graphql_1.GraphQLNonNull(new graphql_1.GraphQLObjectType({
15
- name: 'S3Header',
16
- fields: {
17
- key: { type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLString) },
18
- value: { type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLString) },
19
- },
20
- })))),
21
- };
22
37
  }
23
38
  getCacheKey(context) {
24
39
  const roles = context.identity.projectRoles;
@@ -30,15 +45,21 @@ class S3SchemaContributor {
30
45
  return undefined;
31
46
  }
32
47
  const rules = context.identity.projectRoles.flatMap(it => { var _a; return Object.entries(((_a = context.schema.acl.roles[it]) === null || _a === void 0 ? void 0 : _a.s3) || {}); });
33
- const allowedUploads = rules.filter(([, it]) => it.upload).map(([it]) => it);
34
- const allowedReads = rules.filter(([, it]) => it.read).map(([it]) => it);
35
- if (allowedUploads.length === 0 && allowedReads.length == 0) {
48
+ const uploadRules = rules.filter(([, it]) => it.upload).map(([it, val]) => ({
49
+ pattern: it,
50
+ ...(typeof val.upload !== 'boolean' ? val.upload : {}),
51
+ }));
52
+ const readRules = rules.filter(([, it]) => it.read).map(([it]) => ({
53
+ pattern: it,
54
+ }));
55
+ if (uploadRules.length === 0 && readRules.length == 0) {
36
56
  return undefined;
37
57
  }
38
58
  const s3Config = (0, Config_1.resolveS3Config)(this.s3Config);
39
- const s3 = this.s3Factory.create(s3Config, this.providers);
40
- const uploadMutation = this.createUploadMutation(s3Config, s3, allowedUploads);
41
- const readMutation = this.createReadMutation(s3, allowedReads);
59
+ const authorizator = new S3ObjectAuthorizator_1.S3ObjectAuthorizator(uploadRules, readRules);
60
+ const s3 = this.s3Factory.create(s3Config, this.providers, authorizator);
61
+ const uploadMutation = this.createUploadMutation(s3);
62
+ const readMutation = this.createReadMutation(s3);
42
63
  const mutation = {
43
64
  generateUploadUrl: uploadMutation,
44
65
  generateReadUrl: readMutation,
@@ -58,22 +79,9 @@ class S3SchemaContributor {
58
79
  }),
59
80
  });
60
81
  }
61
- createReadMutation(s3, allowedKeyPatterns) {
62
- let verifier;
82
+ createReadMutation(s3) {
63
83
  return {
64
- type: new graphql_1.GraphQLNonNull(new graphql_1.GraphQLObjectType({
65
- name: 'S3SignedRead',
66
- fields: {
67
- url: { type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLString) },
68
- headers: this.s3HeadersType,
69
- method: { type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLString) },
70
- objectKey: {
71
- type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLString),
72
- description: `Allowed patterns:\n${allowedKeyPatterns.join('\n')}`,
73
- },
74
- bucket: { type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLString) },
75
- },
76
- })),
84
+ type: new graphql_1.GraphQLNonNull(S3SchemaTypes_1.S3SignedRead),
77
85
  args: {
78
86
  objectKey: {
79
87
  type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLString),
@@ -83,66 +91,34 @@ class S3SchemaContributor {
83
91
  },
84
92
  },
85
93
  resolve: async (parent, args) => {
86
- if (!verifier) {
87
- verifier = (0, ObjectKeyVerifier_1.createObjectKeyVerifier)(allowedKeyPatterns);
88
- }
89
- return s3.getSignedReadUrl(args.objectKey, verifier, args.expiration);
94
+ var _a;
95
+ return s3.getSignedReadUrl({ objectKey: args.objectKey, expiration: (_a = args.expiration) !== null && _a !== void 0 ? _a : null });
90
96
  },
91
97
  };
92
98
  }
93
- createUploadMutation(s3Config, s3, allowedKeyPatterns) {
94
- let verifier;
99
+ createUploadMutation(s3) {
95
100
  return {
96
- type: new graphql_1.GraphQLNonNull(new graphql_1.GraphQLObjectType({
97
- name: 'S3SignedUpload',
98
- fields: {
99
- url: { type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLString) },
100
- headers: this.s3HeadersType,
101
- method: { type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLString) },
102
- objectKey: {
103
- type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLString),
104
- description: `Allowed patterns:\n${allowedKeyPatterns.join('\n')}`,
105
- },
106
- bucket: { type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLString) },
107
- publicUrl: { type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLString) },
108
- },
109
- })),
101
+ type: new graphql_1.GraphQLNonNull(S3SchemaTypes_1.S3SignedUpload),
110
102
  args: {
111
- contentType: {
112
- type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLString),
113
- },
114
- expiration: {
115
- type: graphql_1.GraphQLInt,
116
- },
117
- prefix: {
118
- type: graphql_1.GraphQLString,
119
- },
120
- ...(s3Config.noAcl
121
- ? {}
122
- : {
123
- acl: {
124
- type: new graphql_1.GraphQLEnumType({
125
- name: 'S3Acl',
126
- values: {
127
- PUBLIC_READ: {},
128
- PRIVATE: {},
129
- NONE: {},
130
- },
131
- }),
132
- },
133
- }),
103
+ input: { type: types.S3GenerateSignedUploadInput },
104
+ contentType: { type: graphql_1.GraphQLString, deprecationReason: 'Use input.contentType' },
105
+ expiration: { type: graphql_1.GraphQLInt, deprecationReason: 'Use input.expiration' },
106
+ prefix: { type: graphql_1.GraphQLString, deprecationReason: 'Use input.prefix' },
107
+ acl: { type: types.S3Acl, deprecationReason: 'Use input.acl' },
134
108
  },
135
109
  resolve: async (parent, args) => {
136
- if (!verifier) {
137
- verifier = (0, ObjectKeyVerifier_1.createObjectKeyVerifier)(allowedKeyPatterns);
138
- }
139
- const aclMapping = {
140
- PUBLIC_READ: S3Service_1.S3Acl.PublicRead,
141
- PRIVATE: S3Service_1.S3Acl.Private,
142
- NONE: S3Service_1.S3Acl.None,
143
- };
144
- const acl = args.acl ? aclMapping[args.acl] || undefined : undefined;
145
- return s3.getSignedUploadUrl(args.contentType, verifier, acl, args.expiration, args.prefix);
110
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;
111
+ return s3.getSignedUploadUrl({
112
+ acl: (_c = (_b = (_a = args.input) === null || _a === void 0 ? void 0 : _a.acl) !== null && _b !== void 0 ? _b : args.acl) !== null && _c !== void 0 ? _c : null,
113
+ contentDisposition: (_e = (_d = args.input) === null || _d === void 0 ? void 0 : _d.contentDisposition) !== null && _e !== void 0 ? _e : null,
114
+ contentType: (_h = (_g = (_f = args.input) === null || _f === void 0 ? void 0 : _f.contentType) !== null && _g !== void 0 ? _g : args.contentType) !== null && _h !== void 0 ? _h : null,
115
+ expiration: (_l = (_k = (_j = args.input) === null || _j === void 0 ? void 0 : _j.expiration) !== null && _k !== void 0 ? _k : args.expiration) !== null && _l !== void 0 ? _l : null,
116
+ extension: (_o = (_m = args.input) === null || _m === void 0 ? void 0 : _m.extension) !== null && _o !== void 0 ? _o : null,
117
+ fileName: (_q = (_p = args.input) === null || _p === void 0 ? void 0 : _p.fileName) !== null && _q !== void 0 ? _q : null,
118
+ prefix: (_t = (_s = (_r = args.input) === null || _r === void 0 ? void 0 : _r.prefix) !== null && _s !== void 0 ? _s : args.prefix) !== null && _t !== void 0 ? _t : null,
119
+ suffix: (_v = (_u = args.input) === null || _u === void 0 ? void 0 : _u.suffix) !== null && _v !== void 0 ? _v : null,
120
+ size: (_x = (_w = args.input) === null || _w === void 0 ? void 0 : _w.size) !== null && _x !== void 0 ? _x : null,
121
+ });
146
122
  },
147
123
  };
148
124
  }
@@ -1 +1 @@
1
- {"version":3,"file":"S3SchemaContributor.js","sourceRoot":"","sources":["../../src/S3SchemaContributor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"S3SchemaContributor.js","sourceRoot":"","sources":["../../src/S3SchemaContributor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { GraphQLEnumType, GraphQLInputObjectType, GraphQLObjectType } from 'graphql';
2
+ export declare const S3Header: GraphQLObjectType<any, any>;
3
+ export declare const S3ContentDisposition: GraphQLEnumType;
4
+ export declare type S3ContentDisposition = 'ATTACHMENT' | 'INLINE';
5
+ export declare const S3SignedRead: GraphQLObjectType<any, any>;
6
+ export declare const S3SignedUpload: GraphQLObjectType<any, any>;
7
+ export declare const S3Acl: GraphQLEnumType;
8
+ export declare type S3Acl = 'PUBLIC_READ' | 'PRIVATE' | 'NONE';
9
+ export declare const S3GenerateSignedUploadInput: GraphQLInputObjectType;
10
+ export interface S3GenerateSignedUploadInput {
11
+ contentType: null | string;
12
+ extension: null | string;
13
+ expiration: null | number;
14
+ size: null | number;
15
+ prefix: null | string;
16
+ suffix: null | string;
17
+ fileName: null | string;
18
+ contentDisposition: null | S3ContentDisposition;
19
+ acl: null | S3Acl;
20
+ }
21
+ //# sourceMappingURL=S3SchemaTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"S3SchemaTypes.d.ts","sourceRoot":"","sources":["../../src/S3SchemaTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,eAAe,EACf,sBAAsB,EAItB,iBAAiB,EAEjB,MAAM,SAAS,CAAA;AAEhB,eAAO,MAAM,QAAQ,6BAMnB,CAAA;AAEF,eAAO,MAAM,oBAAoB,iBAK/B,CAAA;AACF,oBAAY,oBAAoB,GAAG,YAAY,GAAG,QAAQ,CAAA;AAE1D,eAAO,MAAM,YAAY,6BAWvB,CAAA;AAEF,eAAO,MAAM,cAAc,6BAYzB,CAAA;AAEF,eAAO,MAAM,KAAK,iBAOhB,CAAA;AAEF,oBAAY,KAAK,GAAG,aAAa,GAAG,SAAS,GAAG,MAAM,CAAA;AAEtD,eAAO,MAAM,2BAA2B,wBAatC,CAAA;AACF,MAAM,WAAW,2BAA2B;IAC3C,WAAW,EAAE,IAAI,GAAG,MAAM,CAAA;IAC1B,SAAS,EAAE,IAAI,GAAG,MAAM,CAAA;IACxB,UAAU,EAAE,IAAI,GAAG,MAAM,CAAA;IACzB,IAAI,EAAE,IAAI,GAAG,MAAM,CAAA;IACnB,MAAM,EAAE,IAAI,GAAG,MAAM,CAAA;IACrB,MAAM,EAAE,IAAI,GAAG,MAAM,CAAA;IACrB,QAAQ,EAAE,IAAI,GAAG,MAAM,CAAA;IACvB,kBAAkB,EAAE,IAAI,GAAG,oBAAoB,CAAA;IAC/C,GAAG,EAAE,IAAI,GAAG,KAAK,CAAA;CACjB"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.S3GenerateSignedUploadInput = exports.S3Acl = exports.S3SignedUpload = exports.S3SignedRead = exports.S3ContentDisposition = exports.S3Header = void 0;
4
+ const graphql_1 = require("graphql");
5
+ exports.S3Header = new graphql_1.GraphQLObjectType({
6
+ name: 'S3Header',
7
+ fields: {
8
+ key: { type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLString) },
9
+ value: { type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLString) },
10
+ },
11
+ });
12
+ exports.S3ContentDisposition = new graphql_1.GraphQLEnumType({
13
+ name: 'S33ContentDisposition', values: {
14
+ ATTACHMENT: {},
15
+ INLINE: {},
16
+ },
17
+ });
18
+ exports.S3SignedRead = new graphql_1.GraphQLObjectType({
19
+ name: 'S3SignedRead',
20
+ fields: {
21
+ url: { type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLString) },
22
+ headers: {
23
+ type: new graphql_1.GraphQLNonNull(new graphql_1.GraphQLList(new graphql_1.GraphQLNonNull(exports.S3Header))),
24
+ },
25
+ method: { type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLString) },
26
+ objectKey: { type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLString) },
27
+ bucket: { type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLString) },
28
+ },
29
+ });
30
+ exports.S3SignedUpload = new graphql_1.GraphQLObjectType({
31
+ name: 'S3SignedUpload',
32
+ fields: {
33
+ url: { type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLString) },
34
+ headers: {
35
+ type: new graphql_1.GraphQLNonNull(new graphql_1.GraphQLList(new graphql_1.GraphQLNonNull(exports.S3Header))),
36
+ },
37
+ method: { type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLString) },
38
+ objectKey: { type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLString) },
39
+ bucket: { type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLString) },
40
+ publicUrl: { type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLString) },
41
+ },
42
+ });
43
+ exports.S3Acl = new graphql_1.GraphQLEnumType({
44
+ name: 'S3Acl',
45
+ values: {
46
+ PUBLIC_READ: {},
47
+ PRIVATE: {},
48
+ NONE: {},
49
+ },
50
+ });
51
+ exports.S3GenerateSignedUploadInput = new graphql_1.GraphQLInputObjectType({
52
+ name: 'S3GenerateSignedUploadInput',
53
+ fields: {
54
+ contentType: { type: graphql_1.GraphQLString },
55
+ extension: { type: graphql_1.GraphQLString, description: 'If not provided, extension is detected from a content-type.' },
56
+ expiration: { type: graphql_1.GraphQLInt, description: 'Signed URL expiration.' },
57
+ size: { type: graphql_1.GraphQLInt, description: 'Uploaded file size. Required when you enable ACL size limits.' },
58
+ prefix: { type: graphql_1.GraphQLString, description: 'Can be used as a "directory".' },
59
+ suffix: { type: graphql_1.GraphQLString, description: 'Suffix after generated id and before the extension.' },
60
+ fileName: { type: graphql_1.GraphQLString, description: 'This only affects Content-disposition header. Does not affect actual object key.' },
61
+ contentDisposition: { type: exports.S3ContentDisposition },
62
+ acl: { type: exports.S3Acl, description: 'If not supported by S3 provider, an error is thrown.' },
63
+ },
64
+ });
65
+ //# sourceMappingURL=S3SchemaTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"S3SchemaTypes.js","sourceRoot":"","sources":["../../src/S3SchemaTypes.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,7 @@
1
1
  import { S3Config } from './Config';
2
- import { ObjectKeyVerifier } from './ObjectKeyVerifier';
3
2
  import { Providers } from '@contember/engine-plugins';
4
- export declare enum S3Acl {
5
- None = "none",
6
- PublicRead = "public-read",
7
- Private = "private"
8
- }
3
+ import { S3GenerateSignedUploadInput } from './S3SchemaTypes';
4
+ import { S3ObjectAuthorizator } from './S3ObjectAuthorizator';
9
5
  declare type SignedReadUrl = {
10
6
  url: string;
11
7
  bucket: string;
@@ -30,15 +26,19 @@ declare type SignedUploadUrl = {
30
26
  export declare class S3Service {
31
27
  readonly config: S3Config;
32
28
  private readonly providers;
29
+ private readonly authorizator;
33
30
  private readonly publicBaseUrl;
34
31
  private readonly signer;
35
- constructor(config: S3Config, providers: Providers);
36
- getSignedUploadUrl(contentType: string, verifyKey: ObjectKeyVerifier, acl?: S3Acl, expiration?: number, prefix?: string): SignedUploadUrl;
37
- getSignedReadUrl(objectKey: string, verifyKey: ObjectKeyVerifier, expiration?: number): SignedReadUrl;
32
+ constructor(config: S3Config, providers: Pick<Providers, 'uuid' | 'now'>, authorizator: S3ObjectAuthorizator);
33
+ getSignedUploadUrl({ acl, contentDisposition, contentType, expiration, prefix, suffix, fileName, extension, size }: S3GenerateSignedUploadInput): SignedUploadUrl;
34
+ getSignedReadUrl({ objectKey, expiration }: {
35
+ objectKey: string;
36
+ expiration: number | null;
37
+ }): SignedReadUrl;
38
38
  formatPublicUrl(key: string): string;
39
39
  }
40
40
  export declare class S3ServiceFactory {
41
- create(config: S3Config, providers: Providers): S3Service;
41
+ create(config: S3Config, providers: Providers, authorizator: S3ObjectAuthorizator): S3Service;
42
42
  }
43
43
  export {};
44
44
  //# sourceMappingURL=S3Service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"S3Service.d.ts","sourceRoot":"","sources":["../../src/S3Service.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,QAAQ,EAAE,MAAM,UAAU,CAAA;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAGrD,oBAAY,KAAK;IAChB,IAAI,SAAS;IACb,UAAU,gBAAgB;IAC1B,OAAO,YAAY;CACnB;AAED,aAAK,aAAa,GAAG;IACpB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACzC,MAAM,EAAE,MAAM,CAAA;CACd,CAAA;AAED,aAAK,eAAe,GAAG;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACzC,MAAM,EAAE,MAAM,CAAA;CACd,CAAA;AAGD,qBAAa,SAAS;aAKO,MAAM,EAAE,QAAQ;IAAE,OAAO,CAAC,QAAQ,CAAC,SAAS;IAJxE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IAEtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;gBAEL,MAAM,EAAE,QAAQ,EAAmB,SAAS,EAAE,SAAS;IAK5E,kBAAkB,CACxB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,iBAAiB,EAC5B,GAAG,CAAC,EAAE,KAAK,EACX,UAAU,CAAC,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,GACb,eAAe;IA4CX,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa;IA8BrG,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAG3C;AAED,qBAAa,gBAAgB;IACrB,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS;CAGpD"}
1
+ {"version":3,"file":"S3Service.d.ts","sourceRoot":"","sources":["../../src/S3Service.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,QAAQ,EAAE,MAAM,UAAU,CAAA;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAErD,OAAO,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAA;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAE7D,aAAK,aAAa,GAAG;IACpB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACzC,MAAM,EAAE,MAAM,CAAA;CACd,CAAA;AAED,aAAK,eAAe,GAAG;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACzC,MAAM,EAAE,MAAM,CAAA;CACd,CAAA;AAGD,qBAAa,SAAS;aAMJ,MAAM,EAAE,QAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAP9B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IAEtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;gBAGhB,MAAM,EAAE,QAAQ,EACf,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,EAC1C,YAAY,EAAE,oBAAoB;IAM7C,kBAAkB,CACxB,EAAE,GAAG,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,2BAA2B,GAC1H,eAAe;IAwDX,gBAAgB,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;KAAC,GAAG,aAAa;IA+B3G,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAG3C;AAED,qBAAa,gBAAgB;IACrB,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,oBAAoB;CAGxF"}