@terra-graph/conventions-aws 1.0.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +35 -0
- package/README.md +25 -0
- package/dist/cjs/conventions/dataflow/profiles/base.js +89 -0
- package/dist/cjs/conventions/dataflow/profiles/dot.js +44 -0
- package/dist/cjs/conventions/dataflow/profiles/dot.test.js +147 -0
- package/dist/cjs/conventions/dataflow/rules.js +4 -0
- package/dist/cjs/conventions/dataflow/rules.test.js +11 -0
- package/dist/cjs/conventions/dataflow/rulesets.js +751 -0
- package/dist/cjs/conventions/dataflow/rulesets.test.js +27 -0
- package/dist/cjs/conventions/index.js +7 -0
- package/dist/cjs/conventions/index.test.js +8 -0
- package/dist/cjs/index.js +70 -0
- package/dist/cjs/index.test.js +58 -0
- package/dist/cjs/namespaces.js +14 -0
- package/dist/cjs/namespaces.test.js +17 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/plugins/AwsApiGateway.js +218 -0
- package/dist/cjs/plugins/AwsApiGateway.test.js +427 -0
- package/dist/cjs/plugins/AwsIam.js +432 -0
- package/dist/cjs/plugins/AwsIam.test.js +468 -0
- package/dist/cjs/plugins/AwsS3.js +107 -0
- package/dist/cjs/plugins/AwsS3.test.js +102 -0
- package/dist/cjs/plugins/AwsSns.js +52 -0
- package/dist/cjs/plugins/AwsSns.test.js +55 -0
- package/dist/cjs/plugins/AwsTransferFamily.js +105 -0
- package/dist/cjs/plugins/AwsTransferFamily.test.js +279 -0
- package/dist/cjs/rules/dot.js +36 -0
- package/dist/cjs/rules/dot.test.js +42 -0
- package/dist/cjs/rules/general.js +69 -0
- package/dist/cjs/rules/general.test.js +47 -0
- package/dist/cjs/rulesets/dot.js +25 -0
- package/dist/cjs/rulesets/dot.test.js +48 -0
- package/dist/esm/conventions/dataflow/profiles/base.d.ts +4 -0
- package/dist/esm/conventions/dataflow/profiles/base.js +86 -0
- package/dist/esm/conventions/dataflow/profiles/dot.d.ts +4 -0
- package/dist/esm/conventions/dataflow/profiles/dot.js +38 -0
- package/dist/esm/conventions/dataflow/profiles/dot.test.d.ts +1 -0
- package/dist/esm/conventions/dataflow/profiles/dot.test.js +109 -0
- package/dist/esm/conventions/dataflow/rules.d.ts +3 -0
- package/dist/esm/conventions/dataflow/rules.js +2 -0
- package/dist/esm/conventions/dataflow/rules.test.d.ts +1 -0
- package/dist/esm/conventions/dataflow/rules.test.js +6 -0
- package/dist/esm/conventions/dataflow/rulesets.d.ts +3 -0
- package/dist/esm/conventions/dataflow/rulesets.js +749 -0
- package/dist/esm/conventions/dataflow/rulesets.test.d.ts +1 -0
- package/dist/esm/conventions/dataflow/rulesets.test.js +22 -0
- package/dist/esm/conventions/index.d.ts +3 -0
- package/dist/esm/conventions/index.js +4 -0
- package/dist/esm/conventions/index.test.d.ts +1 -0
- package/dist/esm/conventions/index.test.js +6 -0
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.js +32 -0
- package/dist/esm/index.test.d.ts +1 -0
- package/dist/esm/index.test.js +53 -0
- package/dist/esm/namespaces.d.ts +7 -0
- package/dist/esm/namespaces.js +6 -0
- package/dist/esm/namespaces.test.d.ts +1 -0
- package/dist/esm/namespaces.test.js +15 -0
- package/dist/esm/plugins/AwsApiGateway.d.ts +6 -0
- package/dist/esm/plugins/AwsApiGateway.js +214 -0
- package/dist/esm/plugins/AwsApiGateway.test.d.ts +1 -0
- package/dist/esm/plugins/AwsApiGateway.test.js +425 -0
- package/dist/esm/plugins/AwsIam.d.ts +32 -0
- package/dist/esm/plugins/AwsIam.js +428 -0
- package/dist/esm/plugins/AwsIam.test.d.ts +1 -0
- package/dist/esm/plugins/AwsIam.test.js +466 -0
- package/dist/esm/plugins/AwsS3.d.ts +12 -0
- package/dist/esm/plugins/AwsS3.js +103 -0
- package/dist/esm/plugins/AwsS3.test.d.ts +1 -0
- package/dist/esm/plugins/AwsS3.test.js +100 -0
- package/dist/esm/plugins/AwsSns.d.ts +6 -0
- package/dist/esm/plugins/AwsSns.js +48 -0
- package/dist/esm/plugins/AwsSns.test.d.ts +1 -0
- package/dist/esm/plugins/AwsSns.test.js +53 -0
- package/dist/esm/plugins/AwsTransferFamily.d.ts +6 -0
- package/dist/esm/plugins/AwsTransferFamily.js +101 -0
- package/dist/esm/plugins/AwsTransferFamily.test.d.ts +1 -0
- package/dist/esm/plugins/AwsTransferFamily.test.js +277 -0
- package/dist/esm/rules/dot.d.ts +3 -0
- package/dist/esm/rules/dot.js +34 -0
- package/dist/esm/rules/dot.test.d.ts +1 -0
- package/dist/esm/rules/dot.test.js +37 -0
- package/dist/esm/rules/general.d.ts +3 -0
- package/dist/esm/rules/general.js +67 -0
- package/dist/esm/rules/general.test.d.ts +1 -0
- package/dist/esm/rules/general.test.js +42 -0
- package/dist/esm/rulesets/dot.d.ts +3 -0
- package/dist/esm/rulesets/dot.js +23 -0
- package/dist/esm/rulesets/dot.test.d.ts +1 -0
- package/dist/esm/rulesets/dot.test.js +43 -0
- package/package.json +45 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { ruleName } from '../namespaces.js';
|
|
2
|
+
import generalRules from './general.js';
|
|
3
|
+
const serialize = (name) => {
|
|
4
|
+
return generalRules.resolve(name).serialize();
|
|
5
|
+
};
|
|
6
|
+
describe('general rules', () => {
|
|
7
|
+
it('shoud expose all general named rules', () => {
|
|
8
|
+
expect(generalRules.names().sort()).toStrictEqual([
|
|
9
|
+
ruleName('data.remove'),
|
|
10
|
+
ruleName('lambda.only_event_source_mapping'),
|
|
11
|
+
ruleName('log_groups.only_event_bridge'),
|
|
12
|
+
].sort());
|
|
13
|
+
});
|
|
14
|
+
it('shoud remove data nodes except policy artifacts by default', () => {
|
|
15
|
+
expect(serialize(ruleName('data.remove'))).toStrictEqual({
|
|
16
|
+
id: 'RemoveNode',
|
|
17
|
+
config: {
|
|
18
|
+
node: {
|
|
19
|
+
or: [
|
|
20
|
+
{
|
|
21
|
+
and: [
|
|
22
|
+
{ attr: { key: 'terraform.kind', eq: 'data' } },
|
|
23
|
+
{
|
|
24
|
+
not: {
|
|
25
|
+
attr: {
|
|
26
|
+
key: 'terraform.resource',
|
|
27
|
+
in: ['aws_iam_policy_document', 'aws_iam_policy'],
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
it('shoud remove non-event-bridge log groups and non-core lambda resources by query', () => {
|
|
39
|
+
expect(serialize(ruleName('log_groups.only_event_bridge')).id).toBe('RemoveNode');
|
|
40
|
+
expect(serialize(ruleName('lambda.only_event_source_mapping')).id).toBe('RemoveNode');
|
|
41
|
+
});
|
|
42
|
+
});
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { EdgeLegend, NamedRuleSetRegistry, RuleSet } from '@terra-graph/core';
|
|
2
|
+
import { ruleName, ruleSetName } from '../namespaces.js';
|
|
3
|
+
export default new NamedRuleSetRegistry({
|
|
4
|
+
[ruleSetName('dot.sqs.dlq')]: new RuleSet({
|
|
5
|
+
rules: [
|
|
6
|
+
{ namedRule: ruleName('dot.sqs.dlq.align') },
|
|
7
|
+
new EdgeLegend({
|
|
8
|
+
options: {
|
|
9
|
+
colour: '#c20202',
|
|
10
|
+
title: 'SQS dead letters / failures',
|
|
11
|
+
},
|
|
12
|
+
edge: {
|
|
13
|
+
from: {
|
|
14
|
+
attr: { key: 'terraform.resource', eq: 'aws_sqs_queue' },
|
|
15
|
+
},
|
|
16
|
+
to: {
|
|
17
|
+
attr: { key: 'terraform.resource', eq: 'aws_sqs_queue' },
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
}),
|
|
21
|
+
],
|
|
22
|
+
}),
|
|
23
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { ruleSetName } from '../namespaces.js';
|
|
2
|
+
import dotRules from '../rules/dot.js';
|
|
3
|
+
import dotRuleSet from './dot.js';
|
|
4
|
+
describe('dot rule sets', () => {
|
|
5
|
+
it('shoud expose the SQS dead-letter rule set', () => {
|
|
6
|
+
const name = ruleSetName('dot.sqs.dlq');
|
|
7
|
+
expect(dotRuleSet.names()).toEqual([name]);
|
|
8
|
+
const resolved = dotRuleSet.resolve(name);
|
|
9
|
+
const phases = resolved.resolvePhases(dotRules);
|
|
10
|
+
expect(phases).toHaveLength(1);
|
|
11
|
+
expect(phases[0]).toHaveLength(2);
|
|
12
|
+
expect(phases[0][0].serialize()).toStrictEqual({
|
|
13
|
+
id: 'AlignNodes',
|
|
14
|
+
config: {
|
|
15
|
+
edge: {
|
|
16
|
+
from: {
|
|
17
|
+
attr: { key: 'terraform.resource', eq: 'aws_sqs_queue' },
|
|
18
|
+
},
|
|
19
|
+
to: {
|
|
20
|
+
attr: { key: 'terraform.resource', eq: 'aws_sqs_queue' },
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
expect(phases[0][1]).toMatchObject({
|
|
26
|
+
serialize: expect.any(Function),
|
|
27
|
+
});
|
|
28
|
+
expect(phases[0][1].serialize().id).toBe('EdgeLegend');
|
|
29
|
+
expect(phases[0][1].serialize().config.options).toMatchObject({
|
|
30
|
+
colour: '#c20202',
|
|
31
|
+
title: 'SQS dead letters / failures',
|
|
32
|
+
});
|
|
33
|
+
const edgeLegend = phases[0][1].serialize();
|
|
34
|
+
if (!('edge' in edgeLegend.config)) {
|
|
35
|
+
throw new Error('Expected EdgeLegend to provide an edge config');
|
|
36
|
+
}
|
|
37
|
+
expect(edgeLegend.config.edge).toMatchObject({
|
|
38
|
+
from: {
|
|
39
|
+
attr: { key: 'terraform.resource', eq: 'aws_sqs_queue' },
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
});
|
package/package.json
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@terra-graph/conventions-aws",
|
|
3
|
+
"version": "1.0.0-rc.1",
|
|
4
|
+
"description": "AWS convention assets for terra-graph",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/terra-graph/conventions"
|
|
9
|
+
},
|
|
10
|
+
"main": "./dist/cjs/index.js",
|
|
11
|
+
"module": "./dist/esm/index.js",
|
|
12
|
+
"types": "./dist/esm/index.d.ts",
|
|
13
|
+
"type": "module",
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"CHANGELOG.md",
|
|
17
|
+
"README.md"
|
|
18
|
+
],
|
|
19
|
+
"exports": {
|
|
20
|
+
".": {
|
|
21
|
+
"types": "./dist/esm/index.d.ts",
|
|
22
|
+
"import": "./dist/esm/index.js",
|
|
23
|
+
"require": "./dist/cjs/index.js",
|
|
24
|
+
"default": "./dist/esm/index.js"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"scripts": {
|
|
28
|
+
"prebuild": "yarn workspace @terra-graph/conventions-core build",
|
|
29
|
+
"build": "rm -rf dist && tsc -p tsconfig.json && tsc -p tsconfig-commonjs.json && echo '{\"type\":\"commonjs\"}' > dist/cjs/package.json",
|
|
30
|
+
"test": "jest --config jest.config.cjs --coverage",
|
|
31
|
+
"semantic-release": "semantic-release"
|
|
32
|
+
},
|
|
33
|
+
"peerDependencies": {
|
|
34
|
+
"@terra-graph/core": "^1.0.0-rc.4"
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"@terra-graph/core": "^1.0.0-rc.4"
|
|
38
|
+
},
|
|
39
|
+
"publishConfig": {
|
|
40
|
+
"access": "public"
|
|
41
|
+
},
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"@terra-graph/conventions-core": "^1.0.0-rc.3"
|
|
44
|
+
}
|
|
45
|
+
}
|