@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.
- package/aws-amplify-cli-internal-gen2-migration-experimental-alpha-0.5.0.tgz +0 -0
- package/lib/commands/gen2-migration/generate/adapters/functions/api-trigger-detector.d.ts +10 -0
- package/lib/commands/gen2-migration/generate/adapters/functions/api-trigger-detector.d.ts.map +1 -0
- package/lib/commands/gen2-migration/generate/adapters/functions/api-trigger-detector.js +43 -0
- package/lib/commands/gen2-migration/generate/adapters/functions/api-trigger-detector.js.map +1 -0
- package/lib/commands/gen2-migration/generate/adapters/functions/api-trigger-detector.test.d.ts +2 -0
- package/lib/commands/gen2-migration/generate/adapters/functions/api-trigger-detector.test.d.ts.map +1 -0
- package/lib/commands/gen2-migration/generate/adapters/functions/api-trigger-detector.test.js +34 -0
- package/lib/commands/gen2-migration/generate/adapters/functions/api-trigger-detector.test.js.map +1 -0
- package/lib/commands/gen2-migration/generate/adapters/functions/index.d.ts +2 -1
- package/lib/commands/gen2-migration/generate/adapters/functions/index.d.ts.map +1 -1
- package/lib/commands/gen2-migration/generate/adapters/functions/index.js +45 -6
- package/lib/commands/gen2-migration/generate/adapters/functions/index.js.map +1 -1
- package/lib/commands/gen2-migration/generate/adapters/storage/gen1_storage_codegen_adapter.d.ts +2 -1
- package/lib/commands/gen2-migration/generate/adapters/storage/gen1_storage_codegen_adapter.d.ts.map +1 -1
- package/lib/commands/gen2-migration/generate/adapters/storage/gen1_storage_codegen_adapter.js +17 -1
- package/lib/commands/gen2-migration/generate/adapters/storage/gen1_storage_codegen_adapter.js.map +1 -1
- package/lib/commands/gen2-migration/generate/adapters/storage/index.d.ts +1 -1
- package/lib/commands/gen2-migration/generate/adapters/storage/index.d.ts.map +1 -1
- package/lib/commands/gen2-migration/generate/adapters/storage/index.js +5 -1
- package/lib/commands/gen2-migration/generate/adapters/storage/index.js.map +1 -1
- package/lib/commands/gen2-migration/generate/adapters/storage/storage_access.d.ts +12 -1
- package/lib/commands/gen2-migration/generate/adapters/storage/storage_access.d.ts.map +1 -1
- package/lib/commands/gen2-migration/generate/adapters/storage/storage_access.js +50 -1
- package/lib/commands/gen2-migration/generate/adapters/storage/storage_access.js.map +1 -1
- package/lib/commands/gen2-migration/generate/adapters/storage/storage_access.test.d.ts +2 -0
- package/lib/commands/gen2-migration/generate/adapters/storage/storage_access.test.d.ts.map +1 -0
- package/lib/commands/gen2-migration/generate/adapters/storage/storage_access.test.js +125 -0
- package/lib/commands/gen2-migration/generate/adapters/storage/storage_access.test.js.map +1 -0
- package/lib/commands/gen2-migration/generate/backend/synthesizer.d.ts +12 -1
- package/lib/commands/gen2-migration/generate/backend/synthesizer.d.ts.map +1 -1
- package/lib/commands/gen2-migration/generate/backend/synthesizer.js +117 -2
- package/lib/commands/gen2-migration/generate/backend/synthesizer.js.map +1 -1
- package/lib/commands/gen2-migration/generate/backend/synthesizer.test.js +33 -0
- package/lib/commands/gen2-migration/generate/backend/synthesizer.test.js.map +1 -1
- package/lib/commands/gen2-migration/generate/codegen-head/api-cfn-access.d.ts +7 -0
- package/lib/commands/gen2-migration/generate/codegen-head/api-cfn-access.d.ts.map +1 -0
- package/lib/commands/gen2-migration/generate/codegen-head/api-cfn-access.js +80 -0
- package/lib/commands/gen2-migration/generate/codegen-head/api-cfn-access.js.map +1 -0
- package/lib/commands/gen2-migration/generate/codegen-head/app_analytics_definition_fetcher.d.ts +3 -3
- package/lib/commands/gen2-migration/generate/codegen-head/app_analytics_definition_fetcher.d.ts.map +1 -1
- package/lib/commands/gen2-migration/generate/codegen-head/app_analytics_definition_fetcher.js +40 -3
- package/lib/commands/gen2-migration/generate/codegen-head/app_analytics_definition_fetcher.js.map +1 -1
- package/lib/commands/gen2-migration/generate/codegen-head/app_functions_definition_fetcher.d.ts +3 -1
- package/lib/commands/gen2-migration/generate/codegen-head/app_functions_definition_fetcher.d.ts.map +1 -1
- package/lib/commands/gen2-migration/generate/codegen-head/app_functions_definition_fetcher.js +4 -2
- package/lib/commands/gen2-migration/generate/codegen-head/app_functions_definition_fetcher.js.map +1 -1
- package/lib/commands/gen2-migration/generate/codegen-head/app_storage_definition_fetcher.d.ts.map +1 -1
- package/lib/commands/gen2-migration/generate/codegen-head/app_storage_definition_fetcher.js +9 -0
- package/lib/commands/gen2-migration/generate/codegen-head/app_storage_definition_fetcher.js.map +1 -1
- package/lib/commands/gen2-migration/generate/codegen-head/auth_access_analyzer.d.ts +12 -0
- package/lib/commands/gen2-migration/generate/codegen-head/auth_access_analyzer.d.ts.map +1 -0
- package/lib/commands/gen2-migration/generate/codegen-head/auth_access_analyzer.js +157 -0
- package/lib/commands/gen2-migration/generate/codegen-head/auth_access_analyzer.js.map +1 -0
- package/lib/commands/gen2-migration/generate/codegen-head/command-handlers.d.ts.map +1 -1
- package/lib/commands/gen2-migration/generate/codegen-head/command-handlers.js +40 -4
- package/lib/commands/gen2-migration/generate/codegen-head/command-handlers.js.map +1 -1
- package/lib/commands/gen2-migration/generate/codegen-head/data_definition_fetcher.d.ts.map +1 -1
- package/lib/commands/gen2-migration/generate/codegen-head/data_definition_fetcher.js +1 -1
- package/lib/commands/gen2-migration/generate/codegen-head/data_definition_fetcher.js.map +1 -1
- package/lib/commands/gen2-migration/generate/codegen-head/data_model_access_parser.d.ts +10 -0
- package/lib/commands/gen2-migration/generate/codegen-head/data_model_access_parser.d.ts.map +1 -0
- package/lib/commands/gen2-migration/generate/codegen-head/data_model_access_parser.js +59 -0
- package/lib/commands/gen2-migration/generate/codegen-head/data_model_access_parser.js.map +1 -0
- package/lib/commands/gen2-migration/generate/codegen-head/data_model_access_parser.test.d.ts +2 -0
- package/lib/commands/gen2-migration/generate/codegen-head/data_model_access_parser.test.d.ts.map +1 -0
- package/lib/commands/gen2-migration/generate/codegen-head/data_model_access_parser.test.js +90 -0
- package/lib/commands/gen2-migration/generate/codegen-head/data_model_access_parser.test.js.map +1 -0
- package/lib/commands/gen2-migration/generate/codegen-head/dynamodb_cfn_access_parser.d.ts +14 -0
- package/lib/commands/gen2-migration/generate/codegen-head/dynamodb_cfn_access_parser.d.ts.map +1 -0
- package/lib/commands/gen2-migration/generate/codegen-head/dynamodb_cfn_access_parser.js +100 -0
- package/lib/commands/gen2-migration/generate/codegen-head/dynamodb_cfn_access_parser.js.map +1 -0
- package/lib/commands/gen2-migration/generate/codegen-head/dynamodb_cfn_access_parser.test.d.ts +2 -0
- package/lib/commands/gen2-migration/generate/codegen-head/dynamodb_cfn_access_parser.test.d.ts.map +1 -0
- package/lib/commands/gen2-migration/generate/codegen-head/dynamodb_cfn_access_parser.test.js +69 -0
- package/lib/commands/gen2-migration/generate/codegen-head/dynamodb_cfn_access_parser.test.js.map +1 -0
- package/lib/commands/gen2-migration/generate/codegen-head/s3_cfn_access_parser.d.ts +13 -0
- package/lib/commands/gen2-migration/generate/codegen-head/s3_cfn_access_parser.d.ts.map +1 -0
- package/lib/commands/gen2-migration/generate/codegen-head/s3_cfn_access_parser.js +66 -0
- package/lib/commands/gen2-migration/generate/codegen-head/s3_cfn_access_parser.js.map +1 -0
- package/lib/commands/gen2-migration/generate/codegen-head/s3_cfn_access_parser.test.d.ts +2 -0
- package/lib/commands/gen2-migration/generate/codegen-head/s3_cfn_access_parser.test.d.ts.map +1 -0
- package/lib/commands/gen2-migration/generate/codegen-head/s3_cfn_access_parser.test.js +97 -0
- package/lib/commands/gen2-migration/generate/codegen-head/s3_cfn_access_parser.test.js.map +1 -0
- package/lib/commands/gen2-migration/generate/core/migration-pipeline.d.ts.map +1 -1
- package/lib/commands/gen2-migration/generate/core/migration-pipeline.js +39 -3
- package/lib/commands/gen2-migration/generate/core/migration-pipeline.js.map +1 -1
- package/lib/commands/gen2-migration/generate/generators/auth/index.d.ts +2 -1
- package/lib/commands/gen2-migration/generate/generators/auth/index.d.ts.map +1 -1
- package/lib/commands/gen2-migration/generate/generators/auth/index.js +28 -1
- package/lib/commands/gen2-migration/generate/generators/auth/index.js.map +1 -1
- package/lib/commands/gen2-migration/generate/generators/auth/index.test.js +129 -0
- package/lib/commands/gen2-migration/generate/generators/auth/index.test.js.map +1 -1
- package/lib/commands/gen2-migration/generate/generators/data/index.d.ts.map +1 -1
- package/lib/commands/gen2-migration/generate/generators/data/index.js +15 -29
- package/lib/commands/gen2-migration/generate/generators/data/index.js.map +1 -1
- package/lib/commands/gen2-migration/generate/generators/data/index.test.js +2 -5
- package/lib/commands/gen2-migration/generate/generators/data/index.test.js.map +1 -1
- package/lib/commands/gen2-migration/generate/generators/functions/index.d.ts +36 -0
- package/lib/commands/gen2-migration/generate/generators/functions/index.d.ts.map +1 -1
- package/lib/commands/gen2-migration/generate/generators/functions/index.js.map +1 -1
- package/lib/commands/gen2-migration/generate/generators/functions/lambda_env_generator.d.ts +3 -0
- package/lib/commands/gen2-migration/generate/generators/functions/lambda_env_generator.d.ts.map +1 -0
- package/lib/commands/gen2-migration/generate/generators/functions/lambda_env_generator.js +106 -0
- package/lib/commands/gen2-migration/generate/generators/functions/lambda_env_generator.js.map +1 -0
- package/lib/commands/gen2-migration/generate/generators/functions/lambda_env_generator.test.d.ts +2 -0
- package/lib/commands/gen2-migration/generate/generators/functions/lambda_env_generator.test.d.ts.map +1 -0
- package/lib/commands/gen2-migration/generate/generators/functions/lambda_env_generator.test.js +120 -0
- package/lib/commands/gen2-migration/generate/generators/functions/lambda_env_generator.test.js.map +1 -0
- package/lib/commands/gen2-migration/generate/generators/storage/access.d.ts.map +1 -1
- package/lib/commands/gen2-migration/generate/generators/storage/access.js +20 -0
- package/lib/commands/gen2-migration/generate/generators/storage/access.js.map +1 -1
- package/lib/commands/gen2-migration/generate/generators/storage/index.d.ts +6 -0
- package/lib/commands/gen2-migration/generate/generators/storage/index.d.ts.map +1 -1
- package/lib/commands/gen2-migration/generate/generators/storage/index.js +17 -5
- package/lib/commands/gen2-migration/generate/generators/storage/index.js.map +1 -1
- package/lib/commands/gen2-migration/generate.d.ts.map +1 -1
- package/lib/commands/gen2-migration/generate.js +6 -1
- package/lib/commands/gen2-migration/generate.js.map +1 -1
- package/lib/commands/gen2-migration/refactor/cfn-stack-updater.js +2 -2
- package/lib/commands/gen2-migration/refactor/cfn-stack-updater.js.map +1 -1
- package/lib/commands/gen2-migration/refactor/generators/category-template-generator.d.ts.map +1 -1
- package/lib/commands/gen2-migration/refactor/generators/category-template-generator.js +9 -0
- package/lib/commands/gen2-migration/refactor/generators/category-template-generator.js.map +1 -1
- package/lib/commands/gen2-migration/refactor/generators/template-generator.d.ts +2 -3
- package/lib/commands/gen2-migration/refactor/generators/template-generator.d.ts.map +1 -1
- package/lib/commands/gen2-migration/refactor/generators/template-generator.js +9 -14
- package/lib/commands/gen2-migration/refactor/generators/template-generator.js.map +1 -1
- package/lib/commands/gen2-migration/refactor/refactor.d.ts.map +1 -1
- package/lib/commands/gen2-migration/refactor/refactor.js +31 -13
- package/lib/commands/gen2-migration/refactor/refactor.js.map +1 -1
- package/lib/commands/gen2-migration/refactor/resolvers/cfn-output-resolver.d.ts.map +1 -1
- package/lib/commands/gen2-migration/refactor/resolvers/cfn-output-resolver.js +4 -0
- package/lib/commands/gen2-migration/refactor/resolvers/cfn-output-resolver.js.map +1 -1
- package/lib/commands/gen2-migration/refactor/types.d.ts +4 -1
- package/lib/commands/gen2-migration/refactor/types.d.ts.map +1 -1
- package/lib/commands/gen2-migration/refactor/types.js +5 -1
- package/lib/commands/gen2-migration/refactor/types.js.map +1 -1
- package/lib/commands/gen2-migration.js +7 -7
- package/lib/commands/gen2-migration.js.map +1 -1
- package/package.json +2 -2
- package/readme.md +8 -1
- 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"}
|
package/lib/commands/gen2-migration/generate/adapters/functions/api-trigger-detector.test.d.ts.map
ADDED
|
@@ -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
|
package/lib/commands/gen2-migration/generate/adapters/functions/api-trigger-detector.test.js.map
ADDED
|
@@ -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;
|
|
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
|
-
|
|
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 ?
|
|
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 =
|
|
67
|
+
funcDef.category = functionCategoryMap.get(functionRecordInMeta[0]) || 'function';
|
|
39
68
|
funcDef.resourceName = functionRecordInMeta[0];
|
|
40
|
-
funcDef.schedule = (
|
|
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":";;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/commands/gen2-migration/generate/adapters/functions/index.ts"],"names":[],"mappings":"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"}
|
package/lib/commands/gen2-migration/generate/adapters/storage/gen1_storage_codegen_adapter.d.ts
CHANGED
|
@@ -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
|
package/lib/commands/gen2-migration/generate/adapters/storage/gen1_storage_codegen_adapter.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/lib/commands/gen2-migration/generate/adapters/storage/gen1_storage_codegen_adapter.js
CHANGED
|
@@ -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
|
};
|
package/lib/commands/gen2-migration/generate/adapters/storage/gen1_storage_codegen_adapter.js.map
CHANGED
|
@@ -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,
|
|
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,
|
|
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,
|
|
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":";;;
|
|
1
|
+
{"version":3,"file":"storage_access.js","sourceRoot":"","sources":["../../../../../../src/commands/gen2-migration/generate/adapters/storage/storage_access.ts"],"names":[],"mappings":"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"}
|
|
@@ -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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"}
|