@friggframework/devtools 2.0.0--canary.657.ebe5c60.0 → 2.0.0--canary.656.7302a64.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/infrastructure/domains/scheduler/scheduler-builder.js +2 -9
- package/infrastructure/domains/scheduler/scheduler-builder.test.js +0 -55
- package/infrastructure/domains/shared/utilities/base-definition-factory.js +0 -1
- package/infrastructure/domains/shared/utilities/base-definition-factory.test.js +0 -12
- package/package.json +7 -7
|
@@ -19,11 +19,6 @@ const {
|
|
|
19
19
|
getAdminFunctionNames,
|
|
20
20
|
} = require('../shared/function-environments');
|
|
21
21
|
|
|
22
|
-
const declaresRateLimit = (integration) =>
|
|
23
|
-
Object.values(integration?.Definition?.modules ?? {}).some((module) =>
|
|
24
|
-
Boolean(module?.definition?.API?.rateLimit)
|
|
25
|
-
);
|
|
26
|
-
|
|
27
22
|
class SchedulerBuilder extends InfrastructureBuilder {
|
|
28
23
|
constructor() {
|
|
29
24
|
super();
|
|
@@ -37,14 +32,12 @@ class SchedulerBuilder extends InfrastructureBuilder {
|
|
|
37
32
|
return true;
|
|
38
33
|
}
|
|
39
34
|
|
|
40
|
-
// Check if any integration has webhooks enabled
|
|
41
|
-
// declares a rate limit (the queue worker schedules a deferred message)
|
|
35
|
+
// Check if any integration has webhooks enabled
|
|
42
36
|
if (Array.isArray(appDefinition.integrations)) {
|
|
43
37
|
return appDefinition.integrations.some(
|
|
44
38
|
(integration) =>
|
|
45
39
|
integration?.Definition?.webhooks?.enabled === true ||
|
|
46
|
-
integration?.Definition?.webhooks === true
|
|
47
|
-
declaresRateLimit(integration)
|
|
40
|
+
integration?.Definition?.webhooks === true
|
|
48
41
|
);
|
|
49
42
|
}
|
|
50
43
|
|
|
@@ -38,61 +38,6 @@ describe('SchedulerBuilder', () => {
|
|
|
38
38
|
).toBe(true);
|
|
39
39
|
});
|
|
40
40
|
|
|
41
|
-
it('runs when any module declares a rate limit', () => {
|
|
42
|
-
class Api {
|
|
43
|
-
static rateLimit = { minRetryAfterMs: 1_000 };
|
|
44
|
-
}
|
|
45
|
-
expect(
|
|
46
|
-
schedulerBuilder.shouldExecute({
|
|
47
|
-
integrations: [
|
|
48
|
-
{ Definition: { name: 'a' } },
|
|
49
|
-
{
|
|
50
|
-
Definition: {
|
|
51
|
-
name: 'b',
|
|
52
|
-
modules: { crm: { definition: { API: Api } } },
|
|
53
|
-
},
|
|
54
|
-
},
|
|
55
|
-
],
|
|
56
|
-
})
|
|
57
|
-
).toBe(true);
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
it('skips a module whose API declares no rate limit', () => {
|
|
61
|
-
class Api {}
|
|
62
|
-
expect(
|
|
63
|
-
schedulerBuilder.shouldExecute({
|
|
64
|
-
integrations: [
|
|
65
|
-
{
|
|
66
|
-
Definition: {
|
|
67
|
-
name: 'a',
|
|
68
|
-
modules: { crm: { definition: { API: Api } } },
|
|
69
|
-
},
|
|
70
|
-
},
|
|
71
|
-
],
|
|
72
|
-
})
|
|
73
|
-
).toBe(false);
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
it.each([
|
|
77
|
-
['no modules', { name: 'a' }],
|
|
78
|
-
['an empty modules object', { name: 'a', modules: {} }],
|
|
79
|
-
[
|
|
80
|
-
'a module with no definition',
|
|
81
|
-
{ name: 'a', modules: { crm: {} } },
|
|
82
|
-
],
|
|
83
|
-
['a null module', { name: 'a', modules: { crm: null } }],
|
|
84
|
-
[
|
|
85
|
-
'a definition with no API',
|
|
86
|
-
{ name: 'a', modules: { crm: { definition: {} } } },
|
|
87
|
-
],
|
|
88
|
-
])('skips an integration with %s', (_label, Definition) => {
|
|
89
|
-
expect(
|
|
90
|
-
schedulerBuilder.shouldExecute({
|
|
91
|
-
integrations: [{ Definition }],
|
|
92
|
-
})
|
|
93
|
-
).toBe(false);
|
|
94
|
-
});
|
|
95
|
-
|
|
96
41
|
it('skips otherwise', () => {
|
|
97
42
|
expect(
|
|
98
43
|
schedulerBuilder.shouldExecute({
|
|
@@ -135,18 +135,6 @@ describe('Base Definition Factory', () => {
|
|
|
135
135
|
expect(sqsPermission).toBeDefined();
|
|
136
136
|
});
|
|
137
137
|
|
|
138
|
-
it('should let a function extend the visibility timeout of a message on an integration queue', () => {
|
|
139
|
-
const result = createBaseDefinition({}, {}, {});
|
|
140
|
-
|
|
141
|
-
const sqsPermission = result.provider.iamRoleStatements.find(
|
|
142
|
-
(stmt) => stmt.Action.includes('sqs:SendMessage')
|
|
143
|
-
);
|
|
144
|
-
expect(sqsPermission.Action).toContain(
|
|
145
|
-
'sqs:ChangeMessageVisibility'
|
|
146
|
-
);
|
|
147
|
-
expect(JSON.stringify(sqsPermission.Resource)).toContain('*Queue');
|
|
148
|
-
});
|
|
149
|
-
|
|
150
138
|
it('should include required plugins', () => {
|
|
151
139
|
const result = createBaseDefinition({}, {}, {});
|
|
152
140
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@friggframework/devtools",
|
|
3
3
|
"prettier": "@friggframework/prettier-config",
|
|
4
|
-
"version": "2.0.0--canary.
|
|
4
|
+
"version": "2.0.0--canary.656.7302a64.0",
|
|
5
5
|
"bin": {
|
|
6
6
|
"frigg": "./frigg-cli/index.js"
|
|
7
7
|
},
|
|
@@ -26,9 +26,9 @@
|
|
|
26
26
|
"@babel/eslint-parser": "^7.18.9",
|
|
27
27
|
"@babel/parser": "^7.25.3",
|
|
28
28
|
"@babel/traverse": "^7.25.3",
|
|
29
|
-
"@friggframework/core": "2.0.0--canary.
|
|
30
|
-
"@friggframework/schemas": "2.0.0--canary.
|
|
31
|
-
"@friggframework/test": "2.0.0--canary.
|
|
29
|
+
"@friggframework/core": "2.0.0--canary.656.7302a64.0",
|
|
30
|
+
"@friggframework/schemas": "2.0.0--canary.656.7302a64.0",
|
|
31
|
+
"@friggframework/test": "2.0.0--canary.656.7302a64.0",
|
|
32
32
|
"@hapi/boom": "^10.0.1",
|
|
33
33
|
"@inquirer/prompts": "^5.3.8",
|
|
34
34
|
"axios": "^1.18.0",
|
|
@@ -56,8 +56,8 @@
|
|
|
56
56
|
"validate-npm-package-name": "^5.0.0"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
|
-
"@friggframework/eslint-config": "2.0.0--canary.
|
|
60
|
-
"@friggframework/prettier-config": "2.0.0--canary.
|
|
59
|
+
"@friggframework/eslint-config": "2.0.0--canary.656.7302a64.0",
|
|
60
|
+
"@friggframework/prettier-config": "2.0.0--canary.656.7302a64.0",
|
|
61
61
|
"aws-sdk-client-mock": "^4.1.0",
|
|
62
62
|
"aws-sdk-client-mock-jest": "^4.1.0",
|
|
63
63
|
"jest": "^30.1.3",
|
|
@@ -89,5 +89,5 @@
|
|
|
89
89
|
"publishConfig": {
|
|
90
90
|
"access": "public"
|
|
91
91
|
},
|
|
92
|
-
"gitHead": "
|
|
92
|
+
"gitHead": "7302a64c61c7eb20e0b42a972c0406f75b1f347b"
|
|
93
93
|
}
|