@aws-amplify/cli-internal-gen2-migration-experimental-alpha 0.3.0 → 0.5.0

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 (143) hide show
  1. package/aws-amplify-cli-internal-gen2-migration-experimental-alpha-0.5.0.tgz +0 -0
  2. package/lib/commands/gen2-migration/generate/adapters/functions/api-trigger-detector.d.ts +10 -0
  3. package/lib/commands/gen2-migration/generate/adapters/functions/api-trigger-detector.d.ts.map +1 -0
  4. package/lib/commands/gen2-migration/generate/adapters/functions/api-trigger-detector.js +43 -0
  5. package/lib/commands/gen2-migration/generate/adapters/functions/api-trigger-detector.js.map +1 -0
  6. package/lib/commands/gen2-migration/generate/adapters/functions/api-trigger-detector.test.d.ts +2 -0
  7. package/lib/commands/gen2-migration/generate/adapters/functions/api-trigger-detector.test.d.ts.map +1 -0
  8. package/lib/commands/gen2-migration/generate/adapters/functions/api-trigger-detector.test.js +34 -0
  9. package/lib/commands/gen2-migration/generate/adapters/functions/api-trigger-detector.test.js.map +1 -0
  10. package/lib/commands/gen2-migration/generate/adapters/functions/index.d.ts +2 -1
  11. package/lib/commands/gen2-migration/generate/adapters/functions/index.d.ts.map +1 -1
  12. package/lib/commands/gen2-migration/generate/adapters/functions/index.js +45 -6
  13. package/lib/commands/gen2-migration/generate/adapters/functions/index.js.map +1 -1
  14. package/lib/commands/gen2-migration/generate/adapters/storage/gen1_storage_codegen_adapter.d.ts +2 -1
  15. package/lib/commands/gen2-migration/generate/adapters/storage/gen1_storage_codegen_adapter.d.ts.map +1 -1
  16. package/lib/commands/gen2-migration/generate/adapters/storage/gen1_storage_codegen_adapter.js +17 -1
  17. package/lib/commands/gen2-migration/generate/adapters/storage/gen1_storage_codegen_adapter.js.map +1 -1
  18. package/lib/commands/gen2-migration/generate/adapters/storage/index.d.ts +1 -1
  19. package/lib/commands/gen2-migration/generate/adapters/storage/index.d.ts.map +1 -1
  20. package/lib/commands/gen2-migration/generate/adapters/storage/index.js +5 -1
  21. package/lib/commands/gen2-migration/generate/adapters/storage/index.js.map +1 -1
  22. package/lib/commands/gen2-migration/generate/adapters/storage/storage_access.d.ts +12 -1
  23. package/lib/commands/gen2-migration/generate/adapters/storage/storage_access.d.ts.map +1 -1
  24. package/lib/commands/gen2-migration/generate/adapters/storage/storage_access.js +50 -1
  25. package/lib/commands/gen2-migration/generate/adapters/storage/storage_access.js.map +1 -1
  26. package/lib/commands/gen2-migration/generate/adapters/storage/storage_access.test.d.ts +2 -0
  27. package/lib/commands/gen2-migration/generate/adapters/storage/storage_access.test.d.ts.map +1 -0
  28. package/lib/commands/gen2-migration/generate/adapters/storage/storage_access.test.js +125 -0
  29. package/lib/commands/gen2-migration/generate/adapters/storage/storage_access.test.js.map +1 -0
  30. package/lib/commands/gen2-migration/generate/backend/synthesizer.d.ts +12 -1
  31. package/lib/commands/gen2-migration/generate/backend/synthesizer.d.ts.map +1 -1
  32. package/lib/commands/gen2-migration/generate/backend/synthesizer.js +117 -2
  33. package/lib/commands/gen2-migration/generate/backend/synthesizer.js.map +1 -1
  34. package/lib/commands/gen2-migration/generate/backend/synthesizer.test.js +33 -0
  35. package/lib/commands/gen2-migration/generate/backend/synthesizer.test.js.map +1 -1
  36. package/lib/commands/gen2-migration/generate/codegen-head/api-cfn-access.d.ts +7 -0
  37. package/lib/commands/gen2-migration/generate/codegen-head/api-cfn-access.d.ts.map +1 -0
  38. package/lib/commands/gen2-migration/generate/codegen-head/api-cfn-access.js +80 -0
  39. package/lib/commands/gen2-migration/generate/codegen-head/api-cfn-access.js.map +1 -0
  40. package/lib/commands/gen2-migration/generate/codegen-head/app_analytics_definition_fetcher.d.ts +3 -3
  41. package/lib/commands/gen2-migration/generate/codegen-head/app_analytics_definition_fetcher.d.ts.map +1 -1
  42. package/lib/commands/gen2-migration/generate/codegen-head/app_analytics_definition_fetcher.js +40 -3
  43. package/lib/commands/gen2-migration/generate/codegen-head/app_analytics_definition_fetcher.js.map +1 -1
  44. package/lib/commands/gen2-migration/generate/codegen-head/app_functions_definition_fetcher.d.ts +3 -1
  45. package/lib/commands/gen2-migration/generate/codegen-head/app_functions_definition_fetcher.d.ts.map +1 -1
  46. package/lib/commands/gen2-migration/generate/codegen-head/app_functions_definition_fetcher.js +4 -2
  47. package/lib/commands/gen2-migration/generate/codegen-head/app_functions_definition_fetcher.js.map +1 -1
  48. package/lib/commands/gen2-migration/generate/codegen-head/app_storage_definition_fetcher.d.ts.map +1 -1
  49. package/lib/commands/gen2-migration/generate/codegen-head/app_storage_definition_fetcher.js +9 -0
  50. package/lib/commands/gen2-migration/generate/codegen-head/app_storage_definition_fetcher.js.map +1 -1
  51. package/lib/commands/gen2-migration/generate/codegen-head/auth_access_analyzer.d.ts +12 -0
  52. package/lib/commands/gen2-migration/generate/codegen-head/auth_access_analyzer.d.ts.map +1 -0
  53. package/lib/commands/gen2-migration/generate/codegen-head/auth_access_analyzer.js +157 -0
  54. package/lib/commands/gen2-migration/generate/codegen-head/auth_access_analyzer.js.map +1 -0
  55. package/lib/commands/gen2-migration/generate/codegen-head/command-handlers.d.ts.map +1 -1
  56. package/lib/commands/gen2-migration/generate/codegen-head/command-handlers.js +40 -4
  57. package/lib/commands/gen2-migration/generate/codegen-head/command-handlers.js.map +1 -1
  58. package/lib/commands/gen2-migration/generate/codegen-head/data_definition_fetcher.d.ts.map +1 -1
  59. package/lib/commands/gen2-migration/generate/codegen-head/data_definition_fetcher.js +1 -1
  60. package/lib/commands/gen2-migration/generate/codegen-head/data_definition_fetcher.js.map +1 -1
  61. package/lib/commands/gen2-migration/generate/codegen-head/data_model_access_parser.d.ts +10 -0
  62. package/lib/commands/gen2-migration/generate/codegen-head/data_model_access_parser.d.ts.map +1 -0
  63. package/lib/commands/gen2-migration/generate/codegen-head/data_model_access_parser.js +59 -0
  64. package/lib/commands/gen2-migration/generate/codegen-head/data_model_access_parser.js.map +1 -0
  65. package/lib/commands/gen2-migration/generate/codegen-head/data_model_access_parser.test.d.ts +2 -0
  66. package/lib/commands/gen2-migration/generate/codegen-head/data_model_access_parser.test.d.ts.map +1 -0
  67. package/lib/commands/gen2-migration/generate/codegen-head/data_model_access_parser.test.js +90 -0
  68. package/lib/commands/gen2-migration/generate/codegen-head/data_model_access_parser.test.js.map +1 -0
  69. package/lib/commands/gen2-migration/generate/codegen-head/dynamodb_cfn_access_parser.d.ts +14 -0
  70. package/lib/commands/gen2-migration/generate/codegen-head/dynamodb_cfn_access_parser.d.ts.map +1 -0
  71. package/lib/commands/gen2-migration/generate/codegen-head/dynamodb_cfn_access_parser.js +100 -0
  72. package/lib/commands/gen2-migration/generate/codegen-head/dynamodb_cfn_access_parser.js.map +1 -0
  73. package/lib/commands/gen2-migration/generate/codegen-head/dynamodb_cfn_access_parser.test.d.ts +2 -0
  74. package/lib/commands/gen2-migration/generate/codegen-head/dynamodb_cfn_access_parser.test.d.ts.map +1 -0
  75. package/lib/commands/gen2-migration/generate/codegen-head/dynamodb_cfn_access_parser.test.js +69 -0
  76. package/lib/commands/gen2-migration/generate/codegen-head/dynamodb_cfn_access_parser.test.js.map +1 -0
  77. package/lib/commands/gen2-migration/generate/codegen-head/s3_cfn_access_parser.d.ts +13 -0
  78. package/lib/commands/gen2-migration/generate/codegen-head/s3_cfn_access_parser.d.ts.map +1 -0
  79. package/lib/commands/gen2-migration/generate/codegen-head/s3_cfn_access_parser.js +66 -0
  80. package/lib/commands/gen2-migration/generate/codegen-head/s3_cfn_access_parser.js.map +1 -0
  81. package/lib/commands/gen2-migration/generate/codegen-head/s3_cfn_access_parser.test.d.ts +2 -0
  82. package/lib/commands/gen2-migration/generate/codegen-head/s3_cfn_access_parser.test.d.ts.map +1 -0
  83. package/lib/commands/gen2-migration/generate/codegen-head/s3_cfn_access_parser.test.js +97 -0
  84. package/lib/commands/gen2-migration/generate/codegen-head/s3_cfn_access_parser.test.js.map +1 -0
  85. package/lib/commands/gen2-migration/generate/core/migration-pipeline.d.ts.map +1 -1
  86. package/lib/commands/gen2-migration/generate/core/migration-pipeline.js +39 -3
  87. package/lib/commands/gen2-migration/generate/core/migration-pipeline.js.map +1 -1
  88. package/lib/commands/gen2-migration/generate/generators/auth/index.d.ts +2 -1
  89. package/lib/commands/gen2-migration/generate/generators/auth/index.d.ts.map +1 -1
  90. package/lib/commands/gen2-migration/generate/generators/auth/index.js +28 -1
  91. package/lib/commands/gen2-migration/generate/generators/auth/index.js.map +1 -1
  92. package/lib/commands/gen2-migration/generate/generators/auth/index.test.js +129 -0
  93. package/lib/commands/gen2-migration/generate/generators/auth/index.test.js.map +1 -1
  94. package/lib/commands/gen2-migration/generate/generators/data/index.d.ts.map +1 -1
  95. package/lib/commands/gen2-migration/generate/generators/data/index.js +15 -29
  96. package/lib/commands/gen2-migration/generate/generators/data/index.js.map +1 -1
  97. package/lib/commands/gen2-migration/generate/generators/data/index.test.js +2 -5
  98. package/lib/commands/gen2-migration/generate/generators/data/index.test.js.map +1 -1
  99. package/lib/commands/gen2-migration/generate/generators/functions/index.d.ts +36 -0
  100. package/lib/commands/gen2-migration/generate/generators/functions/index.d.ts.map +1 -1
  101. package/lib/commands/gen2-migration/generate/generators/functions/index.js.map +1 -1
  102. package/lib/commands/gen2-migration/generate/generators/functions/lambda_env_generator.d.ts +3 -0
  103. package/lib/commands/gen2-migration/generate/generators/functions/lambda_env_generator.d.ts.map +1 -0
  104. package/lib/commands/gen2-migration/generate/generators/functions/lambda_env_generator.js +106 -0
  105. package/lib/commands/gen2-migration/generate/generators/functions/lambda_env_generator.js.map +1 -0
  106. package/lib/commands/gen2-migration/generate/generators/functions/lambda_env_generator.test.d.ts +2 -0
  107. package/lib/commands/gen2-migration/generate/generators/functions/lambda_env_generator.test.d.ts.map +1 -0
  108. package/lib/commands/gen2-migration/generate/generators/functions/lambda_env_generator.test.js +120 -0
  109. package/lib/commands/gen2-migration/generate/generators/functions/lambda_env_generator.test.js.map +1 -0
  110. package/lib/commands/gen2-migration/generate/generators/storage/access.d.ts.map +1 -1
  111. package/lib/commands/gen2-migration/generate/generators/storage/access.js +20 -0
  112. package/lib/commands/gen2-migration/generate/generators/storage/access.js.map +1 -1
  113. package/lib/commands/gen2-migration/generate/generators/storage/index.d.ts +6 -0
  114. package/lib/commands/gen2-migration/generate/generators/storage/index.d.ts.map +1 -1
  115. package/lib/commands/gen2-migration/generate/generators/storage/index.js +17 -5
  116. package/lib/commands/gen2-migration/generate/generators/storage/index.js.map +1 -1
  117. package/lib/commands/gen2-migration/generate.d.ts.map +1 -1
  118. package/lib/commands/gen2-migration/generate.js +6 -1
  119. package/lib/commands/gen2-migration/generate.js.map +1 -1
  120. package/lib/commands/gen2-migration/refactor/cfn-stack-updater.js +2 -2
  121. package/lib/commands/gen2-migration/refactor/cfn-stack-updater.js.map +1 -1
  122. package/lib/commands/gen2-migration/refactor/generators/category-template-generator.d.ts.map +1 -1
  123. package/lib/commands/gen2-migration/refactor/generators/category-template-generator.js +9 -0
  124. package/lib/commands/gen2-migration/refactor/generators/category-template-generator.js.map +1 -1
  125. package/lib/commands/gen2-migration/refactor/generators/template-generator.d.ts +2 -3
  126. package/lib/commands/gen2-migration/refactor/generators/template-generator.d.ts.map +1 -1
  127. package/lib/commands/gen2-migration/refactor/generators/template-generator.js +9 -14
  128. package/lib/commands/gen2-migration/refactor/generators/template-generator.js.map +1 -1
  129. package/lib/commands/gen2-migration/refactor/refactor.d.ts.map +1 -1
  130. package/lib/commands/gen2-migration/refactor/refactor.js +31 -13
  131. package/lib/commands/gen2-migration/refactor/refactor.js.map +1 -1
  132. package/lib/commands/gen2-migration/refactor/resolvers/cfn-output-resolver.d.ts.map +1 -1
  133. package/lib/commands/gen2-migration/refactor/resolvers/cfn-output-resolver.js +4 -0
  134. package/lib/commands/gen2-migration/refactor/resolvers/cfn-output-resolver.js.map +1 -1
  135. package/lib/commands/gen2-migration/refactor/types.d.ts +4 -1
  136. package/lib/commands/gen2-migration/refactor/types.d.ts.map +1 -1
  137. package/lib/commands/gen2-migration/refactor/types.js +5 -1
  138. package/lib/commands/gen2-migration/refactor/types.js.map +1 -1
  139. package/lib/commands/gen2-migration.js +7 -7
  140. package/lib/commands/gen2-migration.js.map +1 -1
  141. package/package.json +2 -2
  142. package/readme.md +8 -1
  143. package/aws-amplify-cli-internal-gen2-migration-experimental-alpha-0.3.0.tgz +0 -0
@@ -0,0 +1,10 @@
1
+ import { FunctionDefinition } from '../../core/migration-pipeline';
2
+ export interface DynamoTriggerInfo {
3
+ functionName: string;
4
+ models: string[];
5
+ }
6
+ export declare class ApiTriggerDetector {
7
+ static detectDynamoTriggers(functions: FunctionDefinition[]): DynamoTriggerInfo[];
8
+ private static extractTriggeredModels;
9
+ }
10
+ //# sourceMappingURL=api-trigger-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-trigger-detector.d.ts","sourceRoot":"","sources":["../../../../../../src/commands/gen2-migration/generate/adapters/functions/api-trigger-detector.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,qBAAa,kBAAkB;IAI7B,MAAM,CAAC,oBAAoB,CAAC,SAAS,EAAE,kBAAkB,EAAE,GAAG,iBAAiB,EAAE;IAwBjF,OAAO,CAAC,MAAM,CAAC,sBAAsB;CAwBtC"}
@@ -0,0 +1,43 @@
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.ApiTriggerDetector = void 0;
7
+ const amplify_cli_core_1 = require("@aws-amplify/amplify-cli-core");
8
+ const path_1 = __importDefault(require("path"));
9
+ class ApiTriggerDetector {
10
+ static detectDynamoTriggers(functions) {
11
+ const triggers = [];
12
+ for (const func of functions) {
13
+ if (func.resourceName) {
14
+ const models = this.extractTriggeredModels(func.resourceName);
15
+ if (models.length > 0) {
16
+ triggers.push({ functionName: func.resourceName, models });
17
+ }
18
+ }
19
+ }
20
+ return triggers;
21
+ }
22
+ static extractTriggeredModels(functionName) {
23
+ var _a, _b;
24
+ const templatePath = path_1.default.join('amplify', 'backend', 'function', functionName, `${functionName}-cloudformation-template.json`);
25
+ const { cfnTemplate } = (0, amplify_cli_core_1.readCFNTemplate)(templatePath);
26
+ const models = [];
27
+ for (const [, resource] of Object.entries(cfnTemplate.Resources || {})) {
28
+ if (resource.Type === 'AWS::Lambda::EventSourceMapping' && ((_a = resource.Properties) === null || _a === void 0 ? void 0 : _a.EventSourceArn)) {
29
+ const eventSourceArn = resource.Properties.EventSourceArn;
30
+ if ((_b = eventSourceArn['Fn::ImportValue']) === null || _b === void 0 ? void 0 : _b['Fn::Sub']) {
31
+ const importValue = eventSourceArn['Fn::ImportValue']['Fn::Sub'];
32
+ const match = importValue.match(/:GetAtt:(\w+)Table:StreamArn/);
33
+ if (match) {
34
+ models.push(match[1]);
35
+ }
36
+ }
37
+ }
38
+ }
39
+ return models;
40
+ }
41
+ }
42
+ exports.ApiTriggerDetector = ApiTriggerDetector;
43
+ //# sourceMappingURL=api-trigger-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-trigger-detector.js","sourceRoot":"","sources":["../../../../../../src/commands/gen2-migration/generate/adapters/functions/api-trigger-detector.ts"],"names":[],"mappings":";;;;;;AAAA,oEAAgE;AAChE,gDAAwB;AAQxB,MAAa,kBAAkB;IAI7B,MAAM,CAAC,oBAAoB,CAAC,SAA+B;QACzD,MAAM,QAAQ,GAAwB,EAAE,CAAC;QAEzC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC9D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC7D,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAWO,MAAM,CAAC,sBAAsB,CAAC,YAAoB;;QACxD,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,YAAY,+BAA+B,CAAC,CAAC;QAC/H,MAAM,EAAE,WAAW,EAAE,GAAG,IAAA,kCAAe,EAAC,YAAY,CAAC,CAAC;QACtD,MAAM,MAAM,GAAa,EAAE,CAAC;QAG5B,KAAK,MAAM,CAAC,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC;YACvE,IAAI,QAAQ,CAAC,IAAI,KAAK,iCAAiC,KAAI,MAAA,QAAQ,CAAC,UAAU,0CAAE,cAAc,CAAA,EAAE,CAAC;gBAC/F,MAAM,cAAc,GAAG,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC;gBAG1D,IAAI,MAAA,cAAc,CAAC,iBAAiB,CAAC,0CAAG,SAAS,CAAC,EAAE,CAAC;oBACnD,MAAM,WAAW,GAAG,cAAc,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,CAAC;oBAEjE,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;oBAChE,IAAI,KAAK,EAAE,CAAC;wBACV,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBACxB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AApDD,gDAoDC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=api-trigger-detector.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-trigger-detector.test.d.ts","sourceRoot":"","sources":["../../../../../../src/commands/gen2-migration/generate/adapters/functions/api-trigger-detector.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const api_trigger_detector_1 = require("./api-trigger-detector");
4
+ const amplify_cli_core_1 = require("@aws-amplify/amplify-cli-core");
5
+ jest.mock('@aws-amplify/amplify-cli-core');
6
+ const mockReadCFNTemplate = amplify_cli_core_1.readCFNTemplate;
7
+ describe('ApiTriggerDetector', () => {
8
+ it('should return empty array when no functions', () => {
9
+ expect(api_trigger_detector_1.ApiTriggerDetector.detectDynamoTriggers([])).toEqual([]);
10
+ });
11
+ it('should detect DynamoDB trigger', () => {
12
+ const functions = [{ resourceName: 'testFunc' }];
13
+ mockReadCFNTemplate.mockReturnValue({
14
+ templateFormat: amplify_cli_core_1.CFNTemplateFormat.JSON,
15
+ cfnTemplate: {
16
+ Resources: {
17
+ LambdaEventSourceMappingPost: {
18
+ Type: 'AWS::Lambda::EventSourceMapping',
19
+ Properties: {
20
+ EventSourceArn: {
21
+ 'Fn::ImportValue': {
22
+ 'Fn::Sub': '${apidiscussionsfinalGraphQLAPIIdOutput}:GetAtt:PostTable:StreamArn',
23
+ },
24
+ },
25
+ },
26
+ },
27
+ },
28
+ },
29
+ });
30
+ const result = api_trigger_detector_1.ApiTriggerDetector.detectDynamoTriggers(functions);
31
+ expect(result).toEqual([{ functionName: 'testFunc', models: ['Post'] }]);
32
+ });
33
+ });
34
+ //# sourceMappingURL=api-trigger-detector.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-trigger-detector.test.js","sourceRoot":"","sources":["../../../../../../src/commands/gen2-migration/generate/adapters/functions/api-trigger-detector.test.ts"],"names":[],"mappings":";;AAAA,iEAA4D;AAE5D,oEAAmF;AAEnF,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;AAC3C,MAAM,mBAAmB,GAAG,kCAA8D,CAAC;AAE3F,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,CAAC,yCAAkB,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,SAAS,GAAyB,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC;QAEvE,mBAAmB,CAAC,eAAe,CAAC;YAClC,cAAc,EAAE,oCAAiB,CAAC,IAAI;YACtC,WAAW,EAAE;gBACX,SAAS,EAAE;oBACT,4BAA4B,EAAE;wBAC5B,IAAI,EAAE,iCAAiC;wBACvC,UAAU,EAAE;4BACV,cAAc,EAAE;gCACd,iBAAiB,EAAE;oCACjB,SAAS,EAAE,qEAAqE;iCACjF;6BACF;yBACF;qBACF;iBACF;aACF;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,yCAAkB,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAClE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { FunctionDefinition } from '../../core/migration-pipeline';
2
2
  import { FunctionConfiguration } from '@aws-sdk/client-lambda';
3
+ import { AuthAccess } from '../../generators/functions/index';
3
4
  export type AmplifyMetaFunction = {
4
5
  service: string;
5
6
  providerPlugin: 'awscloudformation';
@@ -12,6 +13,6 @@ type FunctionSchedule = {
12
13
  export type AmplifyMetaWithFunction = {
13
14
  function: Record<string, AmplifyMetaFunction>;
14
15
  };
15
- export declare const getFunctionDefinition: (functionConfigurations: FunctionConfiguration[], functionSchedules: FunctionSchedule[], functionCategoryMap: Map<string, string>, meta: AmplifyMetaWithFunction) => FunctionDefinition[];
16
+ export declare const getFunctionDefinition: (functionConfigurations: FunctionConfiguration[], functionSchedules: FunctionSchedule[], functionCategoryMap: Map<string, string>, meta: AmplifyMetaWithFunction, functionAuthAccess?: Map<string, AuthAccess>) => FunctionDefinition[];
16
17
  export {};
17
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/commands/gen2-migration/generate/adapters/functions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAG/D,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,mBAAmB,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAC/C,CAAC;AAuBF,eAAO,MAAM,qBAAqB,GAChC,wBAAwB,qBAAqB,EAAE,EAC/C,mBAAmB,gBAAgB,EAAE,EACrC,qBAAqB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACxC,MAAM,uBAAuB,KAC5B,kBAAkB,EAoCpB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/commands/gen2-migration/generate/adapters/functions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAK9D,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,mBAAmB,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAC/C,CAAC;AAuBF,eAAO,MAAM,qBAAqB,GAChC,wBAAwB,qBAAqB,EAAE,EAC/C,mBAAmB,gBAAgB,EAAE,EACrC,qBAAqB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACxC,MAAM,uBAAuB,EAC7B,qBAAqB,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,KAC3C,kBAAkB,EAyFpB,CAAC"}
@@ -4,6 +4,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getFunctionDefinition = void 0;
7
+ const api_cfn_access_1 = require("../../codegen-head/api-cfn-access");
8
+ const data_model_access_parser_1 = require("../../codegen-head/data_model_access_parser");
7
9
  const node_assert_1 = __importDefault(require("node:assert"));
8
10
  const extractFilePathFromHandler = (handler) => {
9
11
  const lastDotIndex = handler.lastIndexOf('.');
@@ -13,8 +15,8 @@ const extractFilePathFromHandler = (handler) => {
13
15
  const filePath = handler.substring(0, lastDotIndex);
14
16
  return `./${filePath}.js`;
15
17
  };
16
- const getFunctionDefinition = (functionConfigurations, functionSchedules, functionCategoryMap, meta) => {
17
- var _a, _b, _c, _d, _e, _f;
18
+ const getFunctionDefinition = (functionConfigurations, functionSchedules, functionCategoryMap, meta, functionAuthAccess) => {
19
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1;
18
20
  const funcDefList = [];
19
21
  for (const configuration of functionConfigurations) {
20
22
  const funcDef = {};
@@ -22,22 +24,59 @@ const getFunctionDefinition = (functionConfigurations, functionSchedules, functi
22
24
  funcDef.name = configuration === null || configuration === void 0 ? void 0 : configuration.FunctionName;
23
25
  funcDef.timeoutSeconds = configuration === null || configuration === void 0 ? void 0 : configuration.Timeout;
24
26
  funcDef.memoryMB = configuration === null || configuration === void 0 ? void 0 : configuration.MemorySize;
25
- for (const envSuffix of ['GRAPHQLAPIKEYOUTPUT', 'GRAPHQLAPIENDPOINTOUTPUT', 'GRAPHQLAPIIDOUTPUT']) {
27
+ const filteredEnvVars = {};
28
+ for (const envSuffix of ['GRAPHQLAPIKEYOUTPUT', 'GRAPHQLAPIENDPOINTOUTPUT', 'GRAPHQLAPIIDOUTPUT', 'TABLE_ARN', 'TABLE_NAME']) {
26
29
  for (const variable of Object.keys((_c = (_b = configuration.Environment) === null || _b === void 0 ? void 0 : _b.Variables) !== null && _c !== void 0 ? _c : {})) {
27
30
  if (variable.startsWith('API_') && variable.endsWith(envSuffix)) {
28
- (_d = configuration.Environment) === null || _d === void 0 ? true : delete _d.Variables[variable];
31
+ filteredEnvVars[variable] = (_f = (_e = (_d = configuration.Environment) === null || _d === void 0 ? void 0 : _d.Variables) === null || _e === void 0 ? void 0 : _e[variable]) !== null && _f !== void 0 ? _f : '';
32
+ (_g = configuration.Environment) === null || _g === void 0 ? true : delete _g.Variables[variable];
33
+ }
34
+ }
35
+ }
36
+ for (const envSuffix of ['ARN', 'NAME', 'STREAMARN']) {
37
+ for (const variable of Object.keys((_j = (_h = configuration.Environment) === null || _h === void 0 ? void 0 : _h.Variables) !== null && _j !== void 0 ? _j : {})) {
38
+ if (variable.startsWith('STORAGE_') && variable.endsWith(envSuffix)) {
39
+ filteredEnvVars[variable] = (_m = (_l = (_k = configuration.Environment) === null || _k === void 0 ? void 0 : _k.Variables) === null || _l === void 0 ? void 0 : _l[variable]) !== null && _m !== void 0 ? _m : '';
40
+ (_o = configuration.Environment) === null || _o === void 0 ? true : delete _o.Variables[variable];
41
+ }
42
+ }
43
+ }
44
+ for (const envSuffix of ['BUCKETNAME']) {
45
+ for (const variable of Object.keys((_q = (_p = configuration.Environment) === null || _p === void 0 ? void 0 : _p.Variables) !== null && _q !== void 0 ? _q : {})) {
46
+ if (variable.startsWith('STORAGE_') && variable.endsWith(envSuffix)) {
47
+ filteredEnvVars[variable] = (_t = (_s = (_r = configuration.Environment) === null || _r === void 0 ? void 0 : _r.Variables) === null || _s === void 0 ? void 0 : _s[variable]) !== null && _t !== void 0 ? _t : '';
48
+ (_u = configuration.Environment) === null || _u === void 0 ? true : delete _u.Variables[variable];
49
+ }
50
+ }
51
+ }
52
+ for (const envSuffix of ['USERPOOLID']) {
53
+ for (const variable of Object.keys((_w = (_v = configuration.Environment) === null || _v === void 0 ? void 0 : _v.Variables) !== null && _w !== void 0 ? _w : {})) {
54
+ if (variable.startsWith('AUTH_') && variable.endsWith(envSuffix)) {
55
+ filteredEnvVars[variable] = (_z = (_y = (_x = configuration.Environment) === null || _x === void 0 ? void 0 : _x.Variables) === null || _y === void 0 ? void 0 : _y[variable]) !== null && _z !== void 0 ? _z : '';
56
+ (_0 = configuration.Environment) === null || _0 === void 0 ? true : delete _0.Variables[variable];
29
57
  }
30
58
  }
31
59
  }
32
60
  funcDef.environment = configuration === null || configuration === void 0 ? void 0 : configuration.Environment;
61
+ funcDef.filteredEnvironmentVariables = filteredEnvVars;
33
62
  funcDef.runtime = configuration === null || configuration === void 0 ? void 0 : configuration.Runtime;
34
63
  const functionName = configuration === null || configuration === void 0 ? void 0 : configuration.FunctionName;
35
64
  (0, node_assert_1.default)(functionName);
36
65
  const functionRecordInMeta = Object.entries(meta.function).find(([, value]) => value.output.Name === functionName);
37
66
  (0, node_assert_1.default)(functionRecordInMeta);
38
- funcDef.category = (_e = functionCategoryMap.get(functionRecordInMeta[0])) !== null && _e !== void 0 ? _e : 'function';
67
+ funcDef.category = functionCategoryMap.get(functionRecordInMeta[0]) || 'function';
39
68
  funcDef.resourceName = functionRecordInMeta[0];
40
- funcDef.schedule = (_f = functionSchedules.find((schedule) => schedule.functionName === functionName)) === null || _f === void 0 ? void 0 : _f.scheduleExpression;
69
+ funcDef.schedule = (_1 = functionSchedules.find((schedule) => schedule.functionName === functionName)) === null || _1 === void 0 ? void 0 : _1.scheduleExpression;
70
+ if (functionAuthAccess === null || functionAuthAccess === void 0 ? void 0 : functionAuthAccess.has(functionRecordInMeta[0])) {
71
+ funcDef.authAccess = functionAuthAccess.get(functionRecordInMeta[0]);
72
+ }
73
+ if (funcDef.resourceName) {
74
+ funcDef.apiPermissions = (0, api_cfn_access_1.analyzeApiPermissionsFromCfn)(funcDef.resourceName);
75
+ const dataModelAccess = data_model_access_parser_1.DataModelAccessParser.extractFunctionDataModelAccess([funcDef.resourceName]);
76
+ if (dataModelAccess.length > 0) {
77
+ funcDef.dataModelAccess = dataModelAccess;
78
+ }
79
+ }
41
80
  funcDefList.push(funcDef);
42
81
  }
43
82
  return funcDefList;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/commands/gen2-migration/generate/adapters/functions/index.ts"],"names":[],"mappings":";;;;;;AAEA,8DAAiC;AAyBjC,MAAM,0BAA0B,GAAG,CAAC,OAAe,EAAU,EAAE;IAE7D,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9C,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;QAExB,OAAO,KAAK,OAAO,KAAK,CAAC;IAC3B,CAAC;IAGD,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IACpD,OAAO,KAAK,QAAQ,KAAK,CAAC;AAC5B,CAAC,CAAC;AAEK,MAAM,qBAAqB,GAAG,CACnC,sBAA+C,EAC/C,iBAAqC,EACrC,mBAAwC,EACxC,IAA6B,EACP,EAAE;;IACxB,MAAM,WAAW,GAAyB,EAAE,CAAC;IAE7C,KAAK,MAAM,aAAa,IAAI,sBAAsB,EAAE,CAAC;QACnD,MAAM,OAAO,GAAuB,EAAE,CAAC;QACvC,OAAO,CAAC,KAAK,GAAG,0BAA0B,CAAC,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,mCAAI,UAAU,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,YAAY,CAAC;QAC3C,OAAO,CAAC,cAAc,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,CAAC;QAChD,OAAO,CAAC,QAAQ,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,UAAU,CAAC;QAM7C,KAAK,MAAM,SAAS,IAAI,CAAC,qBAAqB,EAAE,0BAA0B,EAAE,oBAAoB,CAAC,EAAE,CAAC;YAClG,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAA,MAAA,aAAa,CAAC,WAAW,0CAAE,SAAS,mCAAI,EAAE,CAAC,EAAE,CAAC;gBAC/E,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBACzD,MAAA,aAAa,CAAC,WAAW,+CAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,CAAC,WAAW,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,WAAW,CAAC;QACjD,OAAO,CAAC,OAAO,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,CAAC;QACzC,MAAM,YAAY,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,YAAY,CAAC;QACjD,IAAA,qBAAM,EAAC,YAAY,CAAC,CAAC;QACrB,MAAM,oBAAoB,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;QACnH,IAAA,qBAAM,EAAC,oBAAoB,CAAC,CAAC;QAC7B,OAAO,CAAC,QAAQ,GAAG,MAAA,mBAAmB,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,mCAAI,UAAU,CAAC;QAClF,OAAO,CAAC,YAAY,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,QAAQ,GAAG,MAAA,iBAAiB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY,KAAK,YAAY,CAAC,0CAAE,kBAAkB,CAAC;QAEpH,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAzCW,QAAA,qBAAqB,yBAyChC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/commands/gen2-migration/generate/adapters/functions/index.ts"],"names":[],"mappings":";;;;;;AAGA,sEAAiF;AACjF,0FAAoF;AACpF,8DAAiC;AAyBjC,MAAM,0BAA0B,GAAG,CAAC,OAAe,EAAU,EAAE;IAE7D,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9C,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;QAExB,OAAO,KAAK,OAAO,KAAK,CAAC;IAC3B,CAAC;IAGD,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IACpD,OAAO,KAAK,QAAQ,KAAK,CAAC;AAC5B,CAAC,CAAC;AAEK,MAAM,qBAAqB,GAAG,CACnC,sBAA+C,EAC/C,iBAAqC,EACrC,mBAAwC,EACxC,IAA6B,EAC7B,kBAA4C,EACtB,EAAE;;IACxB,MAAM,WAAW,GAAyB,EAAE,CAAC;IAE7C,KAAK,MAAM,aAAa,IAAI,sBAAsB,EAAE,CAAC;QACnD,MAAM,OAAO,GAAuB,EAAE,CAAC;QACvC,OAAO,CAAC,KAAK,GAAG,0BAA0B,CAAC,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,mCAAI,UAAU,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,YAAY,CAAC;QAC3C,OAAO,CAAC,cAAc,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,CAAC;QAChD,OAAO,CAAC,QAAQ,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,UAAU,CAAC;QAG7C,MAAM,eAAe,GAA2B,EAAE,CAAC;QAQnD,KAAK,MAAM,SAAS,IAAI,CAAC,qBAAqB,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE,CAAC;YAC7H,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAA,MAAA,aAAa,CAAC,WAAW,0CAAE,SAAS,mCAAI,EAAE,CAAC,EAAE,CAAC;gBAC/E,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBAChE,eAAe,CAAC,QAAQ,CAAC,GAAG,MAAA,MAAA,MAAA,aAAa,CAAC,WAAW,0CAAE,SAAS,0CAAG,QAAQ,CAAC,mCAAI,EAAE,CAAC;oBAC5E,MAAA,aAAa,CAAC,WAAW,+CAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC;QACH,CAAC;QAGD,KAAK,MAAM,SAAS,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC;YACrD,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAA,MAAA,aAAa,CAAC,WAAW,0CAAE,SAAS,mCAAI,EAAE,CAAC,EAAE,CAAC;gBAC/E,IAAI,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBACpE,eAAe,CAAC,QAAQ,CAAC,GAAG,MAAA,MAAA,MAAA,aAAa,CAAC,WAAW,0CAAE,SAAS,0CAAG,QAAQ,CAAC,mCAAI,EAAE,CAAC;oBAC5E,MAAA,aAAa,CAAC,WAAW,+CAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC;QACH,CAAC;QAGD,KAAK,MAAM,SAAS,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACvC,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAA,MAAA,aAAa,CAAC,WAAW,0CAAE,SAAS,mCAAI,EAAE,CAAC,EAAE,CAAC;gBAC/E,IAAI,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBACpE,eAAe,CAAC,QAAQ,CAAC,GAAG,MAAA,MAAA,MAAA,aAAa,CAAC,WAAW,0CAAE,SAAS,0CAAG,QAAQ,CAAC,mCAAI,EAAE,CAAC;oBAC5E,MAAA,aAAa,CAAC,WAAW,+CAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC;QACH,CAAC;QAGD,KAAK,MAAM,SAAS,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACvC,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAA,MAAA,aAAa,CAAC,WAAW,0CAAE,SAAS,mCAAI,EAAE,CAAC,EAAE,CAAC;gBAC/E,IAAI,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBACjE,eAAe,CAAC,QAAQ,CAAC,GAAG,MAAA,MAAA,MAAA,aAAa,CAAC,WAAW,0CAAE,SAAS,0CAAG,QAAQ,CAAC,mCAAI,EAAE,CAAC;oBAC5E,MAAA,aAAa,CAAC,WAAW,+CAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,CAAC,WAAW,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,WAAW,CAAC;QACjD,OAAO,CAAC,4BAA4B,GAAG,eAAe,CAAC;QACvD,OAAO,CAAC,OAAO,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,CAAC;QACzC,MAAM,YAAY,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,YAAY,CAAC;QACjD,IAAA,qBAAM,EAAC,YAAY,CAAC,CAAC;QACrB,MAAM,oBAAoB,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;QACnH,IAAA,qBAAM,EAAC,oBAAoB,CAAC,CAAC;QAC7B,OAAO,CAAC,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC;QAClF,OAAO,CAAC,YAAY,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,QAAQ,GAAG,MAAA,iBAAiB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY,KAAK,YAAY,CAAC,0CAAE,kBAAkB,CAAC;QAGpH,IAAI,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,OAAO,CAAC,UAAU,GAAG,kBAAkB,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC;QAGD,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,OAAO,CAAC,cAAc,GAAG,IAAA,6CAA4B,EAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAG5E,MAAM,eAAe,GAAG,gDAAqB,CAAC,8BAA8B,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;YACrG,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/B,OAAO,CAAC,eAAe,GAAG,eAAe,CAAC;YAC5C,CAAC;QACH,CAAC;QAED,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AA/FW,QAAA,qBAAqB,yBA+FhC"}
@@ -25,6 +25,7 @@ export type StorageInputs = {
25
25
  cliInputs?: StorageCLIInputsJSON;
26
26
  triggers?: Partial<Record<StorageTriggerEvent, Lambda>>;
27
27
  dynamoTables?: DynamoDBTableDefinition[];
28
+ functionNames?: string[];
28
29
  };
29
- export declare const getStorageDefinition: ({ bucketName, cliInputs, triggers, dynamoTables }: StorageInputs) => StorageRenderParameters;
30
+ export declare const getStorageDefinition: ({ bucketName, cliInputs, triggers, dynamoTables, functionNames, }: StorageInputs) => StorageRenderParameters;
30
31
  //# sourceMappingURL=gen1_storage_codegen_adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gen1_storage_codegen_adapter.d.ts","sourceRoot":"","sources":["../../../../../../src/commands/gen2-migration/generate/adapters/storage/gen1_storage_codegen_adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACrG,OAAO,EAAE,oBAAoB,EAAoB,MAAM,kBAAkB,CAAC;AAE1E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,iBAAiB,CAAC;IAChC,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,iBAAiB,CAAC;IAChC,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,aAAa,GAAG,iBAAiB,CAAC;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,oBAAoB,CAAC;CACjF,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,YAAY,CAAC,EAAE,uBAAuB,EAAE,CAAC;CAC1C,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,mDAAmD,aAAa,KAAG,uBAcvG,CAAC"}
1
+ {"version":3,"file":"gen1_storage_codegen_adapter.d.ts","sourceRoot":"","sources":["../../../../../../src/commands/gen2-migration/generate/adapters/storage/gen1_storage_codegen_adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACrG,OAAO,EAAE,oBAAoB,EAA4E,MAAM,kBAAkB,CAAC;AAElI,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,iBAAiB,CAAC;IAChC,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,iBAAiB,CAAC;IAChC,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,aAAa,GAAG,iBAAiB,CAAC;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,oBAAoB,CAAC;CACjF,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,YAAY,CAAC,EAAE,uBAAuB,EAAE,CAAC;IAEzC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,mEAMlC,aAAa,KAAG,uBAgClB,CAAC"}
@@ -2,15 +2,31 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getStorageDefinition = void 0;
4
4
  const storage_access_1 = require("./storage_access");
5
- const getStorageDefinition = ({ bucketName, cliInputs, triggers, dynamoTables }) => {
5
+ const getStorageDefinition = ({ bucketName, cliInputs, triggers, dynamoTables, functionNames, }) => {
6
6
  const result = {};
7
7
  if (bucketName && cliInputs) {
8
8
  result.accessPatterns = (0, storage_access_1.getStorageAccess)(cliInputs);
9
9
  result.storageIdentifier = bucketName;
10
10
  result.triggers = triggers !== null && triggers !== void 0 ? triggers : {};
11
+ if (functionNames && functionNames.length > 0) {
12
+ const functionAccess = (0, storage_access_1.extractFunctionS3Access)(functionNames);
13
+ if (functionAccess.length > 0) {
14
+ if (!result.accessPatterns) {
15
+ result.accessPatterns = {};
16
+ }
17
+ result.accessPatterns.functions = functionAccess;
18
+ }
19
+ }
11
20
  }
12
21
  if (dynamoTables) {
13
22
  result.dynamoTables = dynamoTables;
23
+ if (functionNames && functionNames.length > 0) {
24
+ const tableNames = dynamoTables.map((table) => table.tableName);
25
+ const dynamoFunctionAccess = (0, storage_access_1.extractFunctionDynamoDBAccess)(functionNames, tableNames);
26
+ if (dynamoFunctionAccess.length > 0) {
27
+ result.dynamoFunctionAccess = dynamoFunctionAccess;
28
+ }
29
+ }
14
30
  }
15
31
  return result;
16
32
  };
@@ -1 +1 @@
1
- {"version":3,"file":"gen1_storage_codegen_adapter.js","sourceRoot":"","sources":["../../../../../../src/commands/gen2-migration/generate/adapters/storage/gen1_storage_codegen_adapter.ts"],"names":[],"mappings":";;;AACA,qDAA0E;AAgCnE,MAAM,oBAAoB,GAAG,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAiB,EAA2B,EAAE;IAChI,MAAM,MAAM,GAA4B,EAAE,CAAC;IAE3C,IAAI,UAAU,IAAI,SAAS,EAAE,CAAC;QAC5B,MAAM,CAAC,cAAc,GAAG,IAAA,iCAAgB,EAAC,SAAS,CAAC,CAAC;QACpD,MAAM,CAAC,iBAAiB,GAAG,UAAU,CAAC;QACtC,MAAM,CAAC,QAAQ,GAAG,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,CAAC;IACnC,CAAC;IAED,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC;IACrC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAdW,QAAA,oBAAoB,wBAc/B"}
1
+ {"version":3,"file":"gen1_storage_codegen_adapter.js","sourceRoot":"","sources":["../../../../../../src/commands/gen2-migration/generate/adapters/storage/gen1_storage_codegen_adapter.ts"],"names":[],"mappings":";;;AACA,qDAAkI;AAkC3H,MAAM,oBAAoB,GAAG,CAAC,EACnC,UAAU,EACV,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,aAAa,GACC,EAA2B,EAAE;IAC3C,MAAM,MAAM,GAA4B,EAAE,CAAC;IAE3C,IAAI,UAAU,IAAI,SAAS,EAAE,CAAC;QAC5B,MAAM,CAAC,cAAc,GAAG,IAAA,iCAAgB,EAAC,SAAS,CAAC,CAAC;QACpD,MAAM,CAAC,iBAAiB,GAAG,UAAU,CAAC;QACtC,MAAM,CAAC,QAAQ,GAAG,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,CAAC;QAEjC,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,cAAc,GAAG,IAAA,wCAAuB,EAAC,aAAa,CAAC,CAAC;YAC9D,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;oBAC3B,MAAM,CAAC,cAAc,GAAG,EAAE,CAAC;gBAC7B,CAAC;gBACD,MAAM,CAAC,cAAc,CAAC,SAAS,GAAG,cAAc,CAAC;YACnD,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC;QAEnC,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAChE,MAAM,oBAAoB,GAAG,IAAA,8CAA6B,EAAC,aAAa,EAAE,UAAU,CAAC,CAAC;YACtF,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,MAAM,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;YACrD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAtCW,QAAA,oBAAoB,wBAsC/B"}
@@ -1,3 +1,3 @@
1
1
  export { getStorageDefinition, StorageInputs, DynamoDBTableDefinition, DynamoDBAttribute, DynamoDBGSI, } from './gen1_storage_codegen_adapter';
2
- export { StorageCLIInputsJSON, CLIV1Permission } from './storage_access';
2
+ export { StorageCLIInputsJSON, CLIV1Permission, getStorageAccess, extractFunctionS3Access, FunctionS3Access, extractFunctionDynamoDBAccess, FunctionDynamoDBAccess, } from './storage_access';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/commands/gen2-migration/generate/adapters/storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,uBAAuB,EACvB,iBAAiB,EACjB,WAAW,GACZ,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/commands/gen2-migration/generate/adapters/storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,uBAAuB,EACvB,iBAAiB,EACjB,WAAW,GACZ,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EACvB,gBAAgB,EAChB,6BAA6B,EAC7B,sBAAsB,GACvB,MAAM,kBAAkB,CAAC"}
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getStorageDefinition = void 0;
3
+ exports.extractFunctionDynamoDBAccess = exports.extractFunctionS3Access = exports.getStorageAccess = exports.getStorageDefinition = void 0;
4
4
  var gen1_storage_codegen_adapter_1 = require("./gen1_storage_codegen_adapter");
5
5
  Object.defineProperty(exports, "getStorageDefinition", { enumerable: true, get: function () { return gen1_storage_codegen_adapter_1.getStorageDefinition; } });
6
+ var storage_access_1 = require("./storage_access");
7
+ Object.defineProperty(exports, "getStorageAccess", { enumerable: true, get: function () { return storage_access_1.getStorageAccess; } });
8
+ Object.defineProperty(exports, "extractFunctionS3Access", { enumerable: true, get: function () { return storage_access_1.extractFunctionS3Access; } });
9
+ Object.defineProperty(exports, "extractFunctionDynamoDBAccess", { enumerable: true, get: function () { return storage_access_1.extractFunctionDynamoDBAccess; } });
6
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/commands/gen2-migration/generate/adapters/storage/index.ts"],"names":[],"mappings":";;;AAAA,+EAMwC;AALtC,oIAAA,oBAAoB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/commands/gen2-migration/generate/adapters/storage/index.ts"],"names":[],"mappings":";;;AAAA,+EAMwC;AALtC,oIAAA,oBAAoB,OAAA;AAMtB,mDAQ0B;AALxB,kHAAA,gBAAgB,OAAA;AAChB,yHAAA,uBAAuB,OAAA;AAEvB,+HAAA,6BAA6B,OAAA"}
@@ -1,4 +1,4 @@
1
- import { AccessPatterns } from '../../core/migration-pipeline';
1
+ import { Permission, AccessPatterns } from '../../core/migration-pipeline';
2
2
  export type CLIV1Permission = 'READ' | 'CREATE_AND_UPDATE' | 'DELETE';
3
3
  export type StorageCLIInputsJSON = {
4
4
  resourceName?: string;
@@ -10,5 +10,16 @@ export type StorageCLIInputsJSON = {
10
10
  triggerFunction?: string;
11
11
  groupAccess?: Record<string, CLIV1Permission[]>;
12
12
  };
13
+ export interface FunctionS3Access {
14
+ functionName: string;
15
+ permissions: Permission[];
16
+ }
17
+ export interface FunctionDynamoDBAccess {
18
+ functionName: string;
19
+ tableResource: string;
20
+ actions: string[];
21
+ }
22
+ export declare const extractFunctionS3Access: (functionNames: string[]) => FunctionS3Access[];
23
+ export declare const extractFunctionDynamoDBAccess: (functionNames: string[], tableNames?: string[]) => FunctionDynamoDBAccess[];
13
24
  export declare const getStorageAccess: (input: StorageCLIInputsJSON) => AccessPatterns;
14
25
  //# sourceMappingURL=storage_access.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage_access.d.ts","sourceRoot":"","sources":["../../../../../../src/commands/gen2-migration/generate/adapters/storage/storage_access.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE3E,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,mBAAmB,GAAG,QAAQ,CAAC;AACtE,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;CACjD,CAAC;AAUF,eAAO,MAAM,gBAAgB,GAAI,OAAO,oBAAoB,KAAG,cAa9D,CAAC"}
1
+ {"version":3,"file":"storage_access.d.ts","sourceRoot":"","sources":["../../../../../../src/commands/gen2-migration/generate/adapters/storage/storage_access.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAI3E,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,mBAAmB,GAAG,QAAQ,CAAC;AACtE,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;CACjD,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,CAAC;IAErB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAUD,eAAO,MAAM,uBAAuB,GAAI,eAAe,MAAM,EAAE,KAAG,gBAAgB,EAoBjF,CAAC;AAEF,eAAO,MAAM,6BAA6B,GAAI,eAAe,MAAM,EAAE,EAAE,aAAa,MAAM,EAAE,KAAG,sBAAsB,EAiCpH,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,OAAO,oBAAoB,KAAG,cAa9D,CAAC"}
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getStorageAccess = void 0;
3
+ exports.getStorageAccess = exports.extractFunctionDynamoDBAccess = exports.extractFunctionS3Access = void 0;
4
+ const s3_cfn_access_parser_1 = require("../../codegen-head/s3_cfn_access_parser");
5
+ const dynamodb_cfn_access_parser_1 = require("../../codegen-head/dynamodb_cfn_access_parser");
4
6
  const PERMISSION_MAP = {
5
7
  READ: ['read'],
6
8
  DELETE: ['delete'],
@@ -9,6 +11,53 @@ const PERMISSION_MAP = {
9
11
  const getGen2Permissions = (permissions) => {
10
12
  return permissions.flatMap((p) => PERMISSION_MAP[p]);
11
13
  };
14
+ const extractFunctionS3Access = (functionNames) => {
15
+ const functionAccess = [];
16
+ for (const functionName of functionNames) {
17
+ const templatePath = s3_cfn_access_parser_1.S3CloudFormationAccessParser.findFunctionCloudFormationTemplate(functionName);
18
+ const s3Permissions = s3_cfn_access_parser_1.S3CloudFormationAccessParser.parseTemplateFile(templatePath);
19
+ for (const permission of s3Permissions) {
20
+ const gen2Permissions = s3_cfn_access_parser_1.S3CloudFormationAccessParser.mapS3ActionsToGen2Permissions(permission.actions);
21
+ if (gen2Permissions.length > 0) {
22
+ functionAccess.push({
23
+ functionName,
24
+ permissions: gen2Permissions,
25
+ });
26
+ }
27
+ }
28
+ }
29
+ return functionAccess;
30
+ };
31
+ exports.extractFunctionS3Access = extractFunctionS3Access;
32
+ const extractFunctionDynamoDBAccess = (functionNames, tableNames) => {
33
+ const functionAccess = [];
34
+ for (const functionName of functionNames) {
35
+ const templatePath = dynamodb_cfn_access_parser_1.DynamoDBCloudFormationAccessParser.findFunctionCloudFormationTemplate(functionName);
36
+ const dynamoPermissions = dynamodb_cfn_access_parser_1.DynamoDBCloudFormationAccessParser.parseTemplateFile(templatePath);
37
+ for (const permission of dynamoPermissions) {
38
+ if (tableNames && tableNames.length > 0) {
39
+ const matchesTable = tableNames.some((tableName) => {
40
+ const baseTableName = tableName.split('-')[0];
41
+ const tableRefPattern = new RegExp(`storage${baseTableName.replace(/[^a-zA-Z0-9]/g, '')}(Name|Arn)`, 'i');
42
+ const matches = permission.tableResource === tableName || tableRefPattern.test(permission.tableResource);
43
+ return matches;
44
+ });
45
+ if (!matchesTable) {
46
+ continue;
47
+ }
48
+ }
49
+ if (permission.actions.length > 0) {
50
+ functionAccess.push({
51
+ functionName,
52
+ tableResource: permission.tableResource,
53
+ actions: permission.actions,
54
+ });
55
+ }
56
+ }
57
+ }
58
+ return functionAccess;
59
+ };
60
+ exports.extractFunctionDynamoDBAccess = extractFunctionDynamoDBAccess;
12
61
  const getStorageAccess = (input) => {
13
62
  let groups;
14
63
  if (input.groupAccess && Object.keys(input.groupAccess).length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"storage_access.js","sourceRoot":"","sources":["../../../../../../src/commands/gen2-migration/generate/adapters/storage/storage_access.ts"],"names":[],"mappings":";;;AAcA,MAAM,cAAc,GAA0C;IAC5D,IAAI,EAAE,CAAC,MAAM,CAAC;IACd,MAAM,EAAE,CAAC,QAAQ,CAAC;IAClB,iBAAiB,EAAE,CAAC,OAAO,CAAC;CAC7B,CAAC;AACF,MAAM,kBAAkB,GAAG,CAAC,WAA8B,EAAgB,EAAE;IAC1E,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC,CAAC;AACK,MAAM,gBAAgB,GAAG,CAAC,KAA2B,EAAkB,EAAE;IAC9E,IAAI,MAA4C,CAAC;IACjD,IAAI,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YACtE,GAAG,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACrC,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAA2C,CAAC,CAAC;IAClD,CAAC;IACD,OAAO;QACL,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC;QAC5C,IAAI,EAAE,kBAAkB,CAAC,KAAK,CAAC,UAAU,CAAC;QAC1C,MAAM;KACP,CAAC;AACJ,CAAC,CAAC;AAbW,QAAA,gBAAgB,oBAa3B"}
1
+ {"version":3,"file":"storage_access.js","sourceRoot":"","sources":["../../../../../../src/commands/gen2-migration/generate/adapters/storage/storage_access.ts"],"names":[],"mappings":";;;AACA,kFAAuF;AACvF,8FAAmG;AA0BnG,MAAM,cAAc,GAA0C;IAC5D,IAAI,EAAE,CAAC,MAAM,CAAC;IACd,MAAM,EAAE,CAAC,QAAQ,CAAC;IAClB,iBAAiB,EAAE,CAAC,OAAO,CAAC;CAC7B,CAAC;AACF,MAAM,kBAAkB,GAAG,CAAC,WAA8B,EAAgB,EAAE;IAC1E,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC,CAAC;AACK,MAAM,uBAAuB,GAAG,CAAC,aAAuB,EAAsB,EAAE;IACrF,MAAM,cAAc,GAAuB,EAAE,CAAC;IAE9C,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACzC,MAAM,YAAY,GAAG,mDAA4B,CAAC,kCAAkC,CAAC,YAAY,CAAC,CAAC;QACnG,MAAM,aAAa,GAAG,mDAA4B,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAEnF,KAAK,MAAM,UAAU,IAAI,aAAa,EAAE,CAAC;YACvC,MAAM,eAAe,GAAG,mDAA4B,CAAC,6BAA6B,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAEvG,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/B,cAAc,CAAC,IAAI,CAAC;oBAClB,YAAY;oBACZ,WAAW,EAAE,eAA+B;iBAC7C,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;AApBW,QAAA,uBAAuB,2BAoBlC;AAEK,MAAM,6BAA6B,GAAG,CAAC,aAAuB,EAAE,UAAqB,EAA4B,EAAE;IACxH,MAAM,cAAc,GAA6B,EAAE,CAAC;IAEpD,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACzC,MAAM,YAAY,GAAG,+DAAkC,CAAC,kCAAkC,CAAC,YAAY,CAAC,CAAC;QACzG,MAAM,iBAAiB,GAAG,+DAAkC,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAE7F,KAAK,MAAM,UAAU,IAAI,iBAAiB,EAAE,CAAC;YAC3C,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;oBAEjD,MAAM,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAE9C,MAAM,eAAe,GAAG,IAAI,MAAM,CAAC,UAAU,aAAa,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;oBAC1G,MAAM,OAAO,GAAG,UAAU,CAAC,aAAa,KAAK,SAAS,IAAI,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;oBACzG,OAAO,OAAO,CAAC;gBACjB,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,SAAS;gBACX,CAAC;YACH,CAAC;YAED,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,cAAc,CAAC,IAAI,CAAC;oBAClB,YAAY;oBACZ,aAAa,EAAE,UAAU,CAAC,aAAa;oBACvC,OAAO,EAAE,UAAU,CAAC,OAAO;iBAC5B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;AAjCW,QAAA,6BAA6B,iCAiCxC;AAEK,MAAM,gBAAgB,GAAG,CAAC,KAA2B,EAAkB,EAAE;IAC9E,IAAI,MAA4C,CAAC;IACjD,IAAI,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YACtE,GAAG,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACrC,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAA2C,CAAC,CAAC;IAClD,CAAC;IACD,OAAO;QACL,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC;QAC5C,IAAI,EAAE,kBAAkB,CAAC,KAAK,CAAC,UAAU,CAAC;QAC1C,MAAM;KACP,CAAC;AACJ,CAAC,CAAC;AAbW,QAAA,gBAAgB,oBAa3B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=storage_access.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage_access.test.d.ts","sourceRoot":"","sources":["../../../../../../src/commands/gen2-migration/generate/adapters/storage/storage_access.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const storage_access_1 = require("./storage_access");
4
+ const s3_cfn_access_parser_1 = require("../../codegen-head/s3_cfn_access_parser");
5
+ const dynamodb_cfn_access_parser_1 = require("../../codegen-head/dynamodb_cfn_access_parser");
6
+ const storage_1 = require("../../generators/storage");
7
+ jest.mock('../../codegen-head/s3_cfn_access_parser');
8
+ jest.mock('../../codegen-head/dynamodb_cfn_access_parser');
9
+ const mockS3Parser = s3_cfn_access_parser_1.S3CloudFormationAccessParser;
10
+ const mockDynamoParser = dynamodb_cfn_access_parser_1.DynamoDBCloudFormationAccessParser;
11
+ describe('Storage Access with S3 Function Support', () => {
12
+ beforeEach(() => {
13
+ jest.clearAllMocks();
14
+ });
15
+ describe('extractFunctionS3Access', () => {
16
+ it('should extract function access patterns from CloudFormation templates', () => {
17
+ mockS3Parser.findFunctionCloudFormationTemplate.mockReturnValue('amplify/backend/function/generateReports/generateReports-cloudformation-template.json');
18
+ mockS3Parser.parseTemplateFile.mockReturnValue([
19
+ {
20
+ actions: ['s3:PutObject', 's3:GetObject', 's3:DeleteObject'],
21
+ },
22
+ ]);
23
+ mockS3Parser.mapS3ActionsToGen2Permissions.mockReturnValue(['read', 'write', 'delete']);
24
+ const result = (0, storage_access_1.extractFunctionS3Access)(['generateReports']);
25
+ expect(result).toHaveLength(1);
26
+ expect(result[0]).toEqual({
27
+ functionName: 'generateReports',
28
+ permissions: ['read', 'write', 'delete'],
29
+ });
30
+ });
31
+ it('should return empty array when no S3 actions found', () => {
32
+ mockS3Parser.findFunctionCloudFormationTemplate.mockReturnValue('amplify/backend/function/processImages/processImages-cloudformation-template.json');
33
+ mockS3Parser.parseTemplateFile.mockReturnValue([]);
34
+ const result = (0, storage_access_1.extractFunctionS3Access)(['processImages']);
35
+ expect(result).toHaveLength(0);
36
+ });
37
+ });
38
+ describe('extractFunctionDynamoDBAccess', () => {
39
+ it('should extract DynamoDB access patterns from CloudFormation templates', () => {
40
+ mockDynamoParser.findFunctionCloudFormationTemplate.mockReturnValue('amplify/backend/function/dataProcessor/dataProcessor-cloudformation-template.json');
41
+ mockDynamoParser.parseTemplateFile.mockReturnValue([
42
+ {
43
+ tableResource: 'storagecountsTableName',
44
+ actions: ['dynamodb:PutItem', 'dynamodb:GetItem', 'dynamodb:Query'],
45
+ },
46
+ ]);
47
+ const result = (0, storage_access_1.extractFunctionDynamoDBAccess)(['dataProcessor'], ['countsTable']);
48
+ expect(result).toHaveLength(1);
49
+ expect(result[0]).toEqual({
50
+ functionName: 'dataProcessor',
51
+ tableResource: 'storagecountsTableName',
52
+ actions: ['dynamodb:PutItem', 'dynamodb:GetItem', 'dynamodb:Query'],
53
+ });
54
+ });
55
+ });
56
+ describe('getStorageAccess', () => {
57
+ it('should maintain existing functionality for CLI inputs', () => {
58
+ const cliInputs = {
59
+ guestAccess: ['READ'],
60
+ authAccess: ['READ', 'CREATE_AND_UPDATE'],
61
+ groupAccess: {
62
+ Admins: ['READ', 'CREATE_AND_UPDATE', 'DELETE'],
63
+ },
64
+ };
65
+ const result = (0, storage_access_1.getStorageAccess)(cliInputs);
66
+ expect(result).toEqual({
67
+ guest: ['read'],
68
+ auth: ['read', 'write'],
69
+ groups: {
70
+ Admins: ['read', 'write', 'delete'],
71
+ },
72
+ });
73
+ });
74
+ });
75
+ describe('renderStorage snapshot', () => {
76
+ it('should generate storage resource with function access patterns', () => {
77
+ const storageParams = {
78
+ storageIdentifier: 'fitnessappstorage-dev',
79
+ accessPatterns: {
80
+ guest: ['read'],
81
+ auth: ['read', 'write'],
82
+ functions: [
83
+ {
84
+ functionName: 'generateReports',
85
+ permissions: ['read', 'write', 'delete'],
86
+ },
87
+ ],
88
+ },
89
+ };
90
+ const result = (0, storage_1.renderStorage)(storageParams);
91
+ expect(result).toMatchSnapshot();
92
+ });
93
+ it('should generate backend with DynamoDB function access escape hatch', () => {
94
+ const mockBackendSynthesizer = {
95
+ render: jest
96
+ .fn()
97
+ .mockReturnValue([
98
+ 'backend.dataProcessor.resources.lambda.addToRolePolicy(',
99
+ ' new PolicyStatement({',
100
+ ' actions: ["dynamodb:PutItem", "dynamodb:GetItem", "dynamodb:Query"],',
101
+ ' resources: [',
102
+ ' "arn:aws:dynamodb:*:*:table/storagecountsTableName",',
103
+ ' "arn:aws:dynamodb:*:*:table/storagecountsTableName/index/*"',
104
+ ' ]',
105
+ ' })',
106
+ ');',
107
+ ]),
108
+ };
109
+ const renderArgs = {
110
+ storage: {
111
+ dynamoFunctionAccess: [
112
+ {
113
+ functionName: 'dataProcessor',
114
+ tableResource: 'storagecountsTableName',
115
+ actions: ['dynamodb:PutItem', 'dynamodb:GetItem', 'dynamodb:Query'],
116
+ },
117
+ ],
118
+ },
119
+ };
120
+ const result = mockBackendSynthesizer.render(renderArgs);
121
+ expect(result).toMatchSnapshot();
122
+ });
123
+ });
124
+ });
125
+ //# sourceMappingURL=storage_access.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage_access.test.js","sourceRoot":"","sources":["../../../../../../src/commands/gen2-migration/generate/adapters/storage/storage_access.test.ts"],"names":[],"mappings":"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"}