unleash-server 4.2.2 → 4.2.3
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/dist/lib/addons/addon.d.ts +2 -1
- package/dist/lib/addons/addon.js.map +1 -1
- package/dist/lib/addons/datadog.d.ts +2 -1
- package/dist/lib/addons/datadog.js.map +1 -1
- package/dist/lib/addons/datadog.test.js +3 -0
- package/dist/lib/addons/datadog.test.js.map +1 -1
- package/dist/lib/addons/feature-event-formatter-md.d.ts +1 -1
- package/dist/lib/addons/feature-event-formatter-md.js +13 -14
- package/dist/lib/addons/feature-event-formatter-md.js.map +1 -1
- package/dist/lib/addons/slack.d.ts +2 -1
- package/dist/lib/addons/slack.js.map +1 -1
- package/dist/lib/addons/slack.test.js +6 -0
- package/dist/lib/addons/slack.test.js.map +1 -1
- package/dist/lib/addons/teams.d.ts +2 -1
- package/dist/lib/addons/teams.js.map +1 -1
- package/dist/lib/addons/teams.test.js +3 -0
- package/dist/lib/addons/teams.test.js.map +1 -1
- package/dist/lib/addons/webhook.d.ts +8 -2
- package/dist/lib/addons/webhook.js +0 -1
- package/dist/lib/addons/webhook.js.map +1 -1
- package/dist/lib/addons/webhook.test.js +2 -0
- package/dist/lib/addons/webhook.test.js.map +1 -1
- package/dist/lib/db/client-metrics-store-v2.js +5 -1
- package/dist/lib/db/client-metrics-store-v2.js.map +1 -1
- package/dist/lib/db/event-store.d.ts +10 -6
- package/dist/lib/db/event-store.js +21 -1
- package/dist/lib/db/event-store.js.map +1 -1
- package/dist/lib/metrics.js +17 -8
- package/dist/lib/metrics.js.map +1 -1
- package/dist/lib/metrics.test.js +1 -0
- package/dist/lib/metrics.test.js.map +1 -1
- package/dist/lib/routes/admin-api/event.d.ts +8 -4
- package/dist/lib/routes/admin-api/event.js +8 -10
- package/dist/lib/routes/admin-api/event.js.map +1 -1
- package/dist/lib/routes/admin-api/state.js +0 -1
- package/dist/lib/routes/admin-api/state.js.map +1 -1
- package/dist/lib/services/addon-service-test-simple-addon.d.ts +1 -1
- package/dist/lib/services/addon-service-test-simple-addon.js.map +1 -1
- package/dist/lib/services/client-metrics/index.d.ts +6 -5
- package/dist/lib/services/client-metrics/index.js +6 -3
- package/dist/lib/services/client-metrics/index.js.map +1 -1
- package/dist/lib/services/client-metrics/list.d.ts +19 -16
- package/dist/lib/services/client-metrics/list.js +6 -4
- package/dist/lib/services/client-metrics/list.js.map +1 -1
- package/dist/lib/services/client-metrics/list.test.js +9 -5
- package/dist/lib/services/client-metrics/list.test.js.map +1 -1
- package/dist/lib/services/client-metrics/ttl-list.d.ts +20 -14
- package/dist/lib/services/client-metrics/ttl-list.js +17 -12
- package/dist/lib/services/client-metrics/ttl-list.js.map +1 -1
- package/dist/lib/services/client-metrics/ttl-list.test.js +14 -10
- package/dist/lib/services/client-metrics/ttl-list.test.js.map +1 -1
- package/dist/lib/services/event-service.d.ts +1 -1
- package/dist/lib/services/event-service.js +1 -1
- package/dist/lib/services/event-service.js.map +1 -1
- package/dist/lib/services/feature-tag-service.js +7 -11
- package/dist/lib/services/feature-tag-service.js.map +1 -1
- package/dist/lib/services/feature-toggle-service.d.ts +15 -14
- package/dist/lib/services/feature-toggle-service.js +142 -135
- package/dist/lib/services/feature-toggle-service.js.map +1 -1
- package/dist/lib/services/project-health-service.d.ts +2 -2
- package/dist/lib/services/project-health-service.js.map +1 -1
- package/dist/lib/services/project-service.d.ts +2 -2
- package/dist/lib/services/project-service.js +5 -3
- package/dist/lib/services/project-service.js.map +1 -1
- package/dist/lib/services/user-service.d.ts +3 -2
- package/dist/lib/services/user-service.js +37 -21
- package/dist/lib/services/user-service.js.map +1 -1
- package/dist/lib/types/events.d.ts +165 -2
- package/dist/lib/types/events.js +124 -4
- package/dist/lib/types/events.js.map +1 -1
- package/dist/lib/types/model.d.ts +0 -12
- package/dist/lib/types/model.js.map +1 -1
- package/dist/lib/types/stores/event-store.d.ts +4 -3
- package/dist/migrations/20211105104316-add-feature-name-column-to-events.d.ts +2 -0
- package/dist/migrations/20211105104316-add-feature-name-column-to-events.js +16 -0
- package/dist/migrations/20211105104316-add-feature-name-column-to-events.js.map +1 -0
- package/dist/migrations/20211105105509-add-predata-column-to-events.d.ts +2 -0
- package/dist/migrations/20211105105509-add-predata-column-to-events.js +8 -0
- package/dist/migrations/20211105105509-add-predata-column-to-events.js.map +1 -0
- package/dist/test/e2e/api/admin/client-metrics.e2e.test.js +16 -12
- package/dist/test/e2e/api/admin/client-metrics.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/project/features.e2e.test.js +6 -8
- package/dist/test/e2e/api/admin/project/features.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/user-admin.e2e.test.js +2 -16
- package/dist/test/e2e/api/admin/user-admin.e2e.test.js.map +1 -1
- package/dist/test/e2e/services/feature-toggle-service-v2.e2e.test.js.map +1 -1
- package/dist/test/e2e/services/project-health-service.e2e.test.js.map +1 -1
- package/dist/test/e2e/services/project-service.e2e.test.js.map +1 -1
- package/dist/test/e2e/stores/event-store.e2e.test.js.map +1 -1
- package/dist/test/fixtures/fake-event-store.d.ts +2 -1
- package/dist/test/fixtures/fake-event-store.js +3 -0
- package/dist/test/fixtures/fake-event-store.js.map +1 -1
- package/docs/api/oas/openapi.yaml +35 -55
- package/package.json +9 -10
- package/dist/lib/event-differ.d.ts +0 -1
- package/dist/lib/event-differ.js +0 -117
- package/dist/lib/event-differ.js.map +0 -1
- package/dist/lib/event-differ.test.d.ts +0 -1
- package/dist/lib/event-differ.test.js +0 -142
- package/dist/lib/event-differ.test.js.map +0 -1
|
@@ -660,13 +660,19 @@ paths:
|
|
|
660
660
|
operationId: get-admin-events
|
|
661
661
|
summary: Fetch all changes in the Unleash system
|
|
662
662
|
description: |-
|
|
663
|
-
Returns one of the
|
|
663
|
+
Returns one of the twelve event types:
|
|
664
664
|
- feature-created
|
|
665
|
-
- feature-updated
|
|
665
|
+
- feature-metadata-updated
|
|
666
|
+
- feature-project-change
|
|
666
667
|
- feature-archived
|
|
667
668
|
- feature-revived
|
|
668
|
-
- strategy-
|
|
669
|
-
- strategy-
|
|
669
|
+
- feature-strategy-update
|
|
670
|
+
- feature-strategy-add
|
|
671
|
+
- feature-strategy-remove
|
|
672
|
+
- feature-stale-on
|
|
673
|
+
- feature-stale-off
|
|
674
|
+
- feature-environment-enabled
|
|
675
|
+
- feature-environment-disabled
|
|
670
676
|
tags:
|
|
671
677
|
- Events
|
|
672
678
|
responses:
|
|
@@ -1548,15 +1554,21 @@ components:
|
|
|
1548
1554
|
type: number
|
|
1549
1555
|
example: 55
|
|
1550
1556
|
type:
|
|
1551
|
-
description:
|
|
1557
|
+
description: Identifies the event
|
|
1552
1558
|
type: string
|
|
1553
1559
|
enum:
|
|
1554
1560
|
- feature-created
|
|
1555
|
-
- feature-updated
|
|
1561
|
+
- feature-metadata-updated
|
|
1562
|
+
- feature-project-change
|
|
1556
1563
|
- feature-archived
|
|
1557
1564
|
- feature-revived
|
|
1558
|
-
- strategy-
|
|
1559
|
-
- strategy-
|
|
1565
|
+
- feature-strategy-update
|
|
1566
|
+
- feature-strategy-add
|
|
1567
|
+
- feature-strategy-remove
|
|
1568
|
+
- feature-stale-on
|
|
1569
|
+
- feature-stale-off
|
|
1570
|
+
- feature-environment-enabled
|
|
1571
|
+
- feature-environment-disabled
|
|
1560
1572
|
minLength: 1
|
|
1561
1573
|
example: feature-updated
|
|
1562
1574
|
createdBy:
|
|
@@ -1568,53 +1580,21 @@ components:
|
|
|
1568
1580
|
type: string
|
|
1569
1581
|
example: '2016-12-09T14:56:36.730Z'
|
|
1570
1582
|
data:
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
kind:
|
|
1587
|
-
description: |-
|
|
1588
|
-
The kind of change:
|
|
1589
|
-
- **N** - a newly-added property or element
|
|
1590
|
-
- **D** - a property or element was deleted
|
|
1591
|
-
- **E** - a property or element was edited
|
|
1592
|
-
- **A** - a change occurred within an array
|
|
1593
|
-
type: string
|
|
1594
|
-
enum:
|
|
1595
|
-
- 'N'
|
|
1596
|
-
- D
|
|
1597
|
-
- E
|
|
1598
|
-
- A
|
|
1599
|
-
example: E
|
|
1600
|
-
path:
|
|
1601
|
-
type: array
|
|
1602
|
-
items:
|
|
1603
|
-
required:
|
|
1604
|
-
- pathItem
|
|
1605
|
-
properties:
|
|
1606
|
-
pathItem:
|
|
1607
|
-
description: The property path (from the left-hand-side root)
|
|
1608
|
-
type: string
|
|
1609
|
-
example: enabled
|
|
1610
|
-
lhs:
|
|
1611
|
-
description: The value on the left-hand-side of the comparison (*undefined* if **kind** is *N*)
|
|
1612
|
-
type: boolean
|
|
1613
|
-
example: true
|
|
1614
|
-
rhs:
|
|
1615
|
-
description: The value on the right-hand-side of the comparison (*undefined* if **kind** is *D*)
|
|
1616
|
-
type: boolean
|
|
1617
|
-
example: false
|
|
1583
|
+
description: The current state of the updated resource
|
|
1584
|
+
type: object
|
|
1585
|
+
preData:
|
|
1586
|
+
description: The previous state of the updated resource
|
|
1587
|
+
type: object
|
|
1588
|
+
featureName:
|
|
1589
|
+
description: Name of the feature toggle (if event related to a feature toggle)
|
|
1590
|
+
type: string
|
|
1591
|
+
project:
|
|
1592
|
+
description: Name of the project (if event related to a project resource)
|
|
1593
|
+
type: string
|
|
1594
|
+
environment:
|
|
1595
|
+
description: Name of the environment (if event related to a environment resource)
|
|
1596
|
+
type: string
|
|
1597
|
+
|
|
1618
1598
|
x-tags:
|
|
1619
1599
|
- Responses
|
|
1620
1600
|
200export:
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "unleash-server",
|
|
3
3
|
"description": "Unleash is an enterprise ready feature toggles service. It provides different strategies for handling feature toggles.",
|
|
4
|
-
"version": "4.2.
|
|
4
|
+
"version": "4.2.3",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"unleash",
|
|
7
7
|
"feature toggle",
|
|
@@ -85,7 +85,6 @@
|
|
|
85
85
|
"db-migrate": "0.11.12",
|
|
86
86
|
"db-migrate-pg": "1.2.2",
|
|
87
87
|
"db-migrate-shared": "1.2.0",
|
|
88
|
-
"deep-diff": "^1.0.2",
|
|
89
88
|
"deepmerge": "^4.2.2",
|
|
90
89
|
"errorhandler": "^1.5.1",
|
|
91
90
|
"express": "^4.17.1",
|
|
@@ -95,7 +94,7 @@
|
|
|
95
94
|
"helmet": "^4.1.0",
|
|
96
95
|
"joi": "^17.3.0",
|
|
97
96
|
"js-yaml": "^4.1.0",
|
|
98
|
-
"knex": "0.95.
|
|
97
|
+
"knex": "0.95.14",
|
|
99
98
|
"log4js": "^6.0.0",
|
|
100
99
|
"memoizee": "^0.4.15",
|
|
101
100
|
"mime": "^2.4.2",
|
|
@@ -112,7 +111,7 @@
|
|
|
112
111
|
"response-time": "^2.3.2",
|
|
113
112
|
"serve-favicon": "^2.5.0",
|
|
114
113
|
"stoppable": "^1.1.0",
|
|
115
|
-
"unleash-frontend": "4.2.
|
|
114
|
+
"unleash-frontend": "4.2.13",
|
|
116
115
|
"uuid": "^8.3.2"
|
|
117
116
|
},
|
|
118
117
|
"devDependencies": {
|
|
@@ -131,16 +130,16 @@
|
|
|
131
130
|
"@types/stoppable": "1.1.1",
|
|
132
131
|
"@types/supertest": "2.0.11",
|
|
133
132
|
"@types/uuid": "8.3.1",
|
|
134
|
-
"@typescript-eslint/eslint-plugin": "5.3.
|
|
135
|
-
"@typescript-eslint/parser": "5.3.
|
|
133
|
+
"@typescript-eslint/eslint-plugin": "5.3.1",
|
|
134
|
+
"@typescript-eslint/parser": "5.3.1",
|
|
136
135
|
"copyfiles": "2.4.1",
|
|
137
136
|
"coveralls": "3.1.1",
|
|
138
137
|
"del-cli": "4.0.1",
|
|
139
|
-
"eslint": "8.
|
|
140
|
-
"eslint-config-airbnb-base": "
|
|
141
|
-
"eslint-config-airbnb-typescript": "
|
|
138
|
+
"eslint": "8.2.0",
|
|
139
|
+
"eslint-config-airbnb-base": "15.0.0",
|
|
140
|
+
"eslint-config-airbnb-typescript": "15.0.0",
|
|
142
141
|
"eslint-config-prettier": "8.3.0",
|
|
143
|
-
"eslint-plugin-import": "2.25.
|
|
142
|
+
"eslint-plugin-import": "2.25.3",
|
|
144
143
|
"eslint-plugin-prettier": "4.0.0",
|
|
145
144
|
"faker": "5.5.3",
|
|
146
145
|
"fetch-mock": "9.11.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export function addDiffs(events?: any[]): void;
|
package/dist/lib/event-differ.js
DELETED
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
/* eslint-disable no-param-reassign */
|
|
2
|
-
'use strict';
|
|
3
|
-
const { diff } = require('deep-diff');
|
|
4
|
-
const { STRATEGY_CREATED, STRATEGY_DELETED, STRATEGY_UPDATED, STRATEGY_IMPORT, STRATEGY_DEPRECATED, STRATEGY_REACTIVATED, DROP_STRATEGIES, FEATURE_CREATED, FEATURE_UPDATED, FEATURE_ARCHIVED, FEATURE_REVIVED, FEATURE_IMPORT, FEATURE_TAGGED, FEATURE_UNTAGGED, DROP_FEATURES, CONTEXT_FIELD_CREATED, CONTEXT_FIELD_UPDATED, CONTEXT_FIELD_DELETED, PROJECT_CREATED, PROJECT_UPDATED, PROJECT_DELETED, TAG_CREATED, TAG_DELETED, TAG_TYPE_CREATED, TAG_TYPE_DELETED, APPLICATION_CREATED, FEATURE_STALE_ON, FEATURE_STALE_OFF, USER_CREATED, USER_UPDATED, USER_DELETED, } = require('./types/events');
|
|
5
|
-
const strategyTypes = [
|
|
6
|
-
STRATEGY_CREATED,
|
|
7
|
-
STRATEGY_DELETED,
|
|
8
|
-
STRATEGY_UPDATED,
|
|
9
|
-
STRATEGY_IMPORT,
|
|
10
|
-
STRATEGY_DEPRECATED,
|
|
11
|
-
STRATEGY_REACTIVATED,
|
|
12
|
-
DROP_STRATEGIES,
|
|
13
|
-
];
|
|
14
|
-
const featureTypes = [
|
|
15
|
-
FEATURE_CREATED,
|
|
16
|
-
FEATURE_UPDATED,
|
|
17
|
-
FEATURE_ARCHIVED,
|
|
18
|
-
FEATURE_REVIVED,
|
|
19
|
-
FEATURE_IMPORT,
|
|
20
|
-
FEATURE_TAGGED,
|
|
21
|
-
FEATURE_UNTAGGED,
|
|
22
|
-
DROP_FEATURES,
|
|
23
|
-
FEATURE_STALE_ON,
|
|
24
|
-
FEATURE_STALE_OFF,
|
|
25
|
-
];
|
|
26
|
-
const contextTypes = [
|
|
27
|
-
CONTEXT_FIELD_CREATED,
|
|
28
|
-
CONTEXT_FIELD_DELETED,
|
|
29
|
-
CONTEXT_FIELD_UPDATED,
|
|
30
|
-
];
|
|
31
|
-
const userTypes = [USER_CREATED, USER_UPDATED, USER_DELETED];
|
|
32
|
-
const tagTypes = [TAG_CREATED, TAG_DELETED];
|
|
33
|
-
const tagTypeTypes = [TAG_TYPE_CREATED, TAG_TYPE_DELETED];
|
|
34
|
-
const projectTypes = [PROJECT_CREATED, PROJECT_UPDATED, PROJECT_DELETED];
|
|
35
|
-
function baseTypeFor(event) {
|
|
36
|
-
if (featureTypes.indexOf(event.type) !== -1) {
|
|
37
|
-
return 'features';
|
|
38
|
-
}
|
|
39
|
-
if (strategyTypes.indexOf(event.type) !== -1) {
|
|
40
|
-
return 'strategies';
|
|
41
|
-
}
|
|
42
|
-
if (contextTypes.indexOf(event.type) !== -1) {
|
|
43
|
-
return 'context';
|
|
44
|
-
}
|
|
45
|
-
if (projectTypes.indexOf(event.type) !== -1) {
|
|
46
|
-
return 'project';
|
|
47
|
-
}
|
|
48
|
-
if (tagTypes.indexOf(event.type) !== -1) {
|
|
49
|
-
return 'tag';
|
|
50
|
-
}
|
|
51
|
-
if (tagTypeTypes.indexOf(event.type) !== -1) {
|
|
52
|
-
return 'tag-type';
|
|
53
|
-
}
|
|
54
|
-
if (userTypes.indexOf(event.type) !== -1) {
|
|
55
|
-
return 'user';
|
|
56
|
-
}
|
|
57
|
-
if (event.type === APPLICATION_CREATED) {
|
|
58
|
-
return 'application';
|
|
59
|
-
}
|
|
60
|
-
return event.type;
|
|
61
|
-
}
|
|
62
|
-
const uniqueFieldForType = (baseType) => {
|
|
63
|
-
if (baseType === 'user') {
|
|
64
|
-
return 'id';
|
|
65
|
-
}
|
|
66
|
-
return 'name';
|
|
67
|
-
};
|
|
68
|
-
function groupByBaseTypeAndName(events) {
|
|
69
|
-
const groups = {};
|
|
70
|
-
events.forEach((event) => {
|
|
71
|
-
const baseType = baseTypeFor(event);
|
|
72
|
-
const uniqueField = uniqueFieldForType(baseType);
|
|
73
|
-
groups[baseType] = groups[baseType] || {};
|
|
74
|
-
groups[baseType][event.data[uniqueField]] =
|
|
75
|
-
groups[baseType][event.data[uniqueField]] || [];
|
|
76
|
-
groups[baseType][event.data[uniqueField]].push(event);
|
|
77
|
-
});
|
|
78
|
-
return groups;
|
|
79
|
-
}
|
|
80
|
-
function eachConsecutiveEvent(events, callback) {
|
|
81
|
-
const groups = groupByBaseTypeAndName(events);
|
|
82
|
-
Object.keys(groups).forEach((baseType) => {
|
|
83
|
-
const group = groups[baseType];
|
|
84
|
-
Object.keys(group).forEach((name) => {
|
|
85
|
-
const currentEvents = group[name];
|
|
86
|
-
let left;
|
|
87
|
-
let right;
|
|
88
|
-
let i;
|
|
89
|
-
let l;
|
|
90
|
-
for (i = 0, l = currentEvents.length; i < l; i++) {
|
|
91
|
-
left = currentEvents[i];
|
|
92
|
-
right = currentEvents[i + 1];
|
|
93
|
-
callback(left, right);
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
const ignoredProps = ['createdAt', 'lastSeenAt', 'id'];
|
|
99
|
-
const filterProps = (path, key) => {
|
|
100
|
-
return ignoredProps.includes(key);
|
|
101
|
-
};
|
|
102
|
-
function addDiffs(events = []) {
|
|
103
|
-
// TODO: no-param-reassign
|
|
104
|
-
eachConsecutiveEvent(events, (left, right) => {
|
|
105
|
-
if (right) {
|
|
106
|
-
left.diffs = diff(right.data, left.data, filterProps);
|
|
107
|
-
left.diffs = left.diffs || [];
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
left.diffs = null;
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
module.exports = {
|
|
115
|
-
addDiffs,
|
|
116
|
-
};
|
|
117
|
-
//# sourceMappingURL=event-differ.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"event-differ.js","sourceRoot":"","sources":["../../src/lib/event-differ.js"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC,YAAY,CAAC;AAEb,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AACtC,MAAM,EACF,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,eAAe,EACf,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,YAAY,GACf,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAE9B,MAAM,aAAa,GAAG;IAClB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,eAAe;IACf,mBAAmB;IACnB,oBAAoB;IACpB,eAAe;CAClB,CAAC;AAEF,MAAM,YAAY,GAAG;IACjB,eAAe;IACf,eAAe;IACf,gBAAgB;IAChB,eAAe;IACf,cAAc;IACd,cAAc;IACd,gBAAgB;IAChB,aAAa;IACb,gBAAgB;IAChB,iBAAiB;CACpB,CAAC;AAEF,MAAM,YAAY,GAAG;IACjB,qBAAqB;IACrB,qBAAqB;IACrB,qBAAqB;CACxB,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;AAE7D,MAAM,QAAQ,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAE5C,MAAM,YAAY,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;AAE1D,MAAM,YAAY,GAAG,CAAC,eAAe,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;AAEzE,SAAS,WAAW,CAAC,KAAK;IACtB,IAAI,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;QACzC,OAAO,UAAU,CAAC;KACrB;IACD,IAAI,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;QAC1C,OAAO,YAAY,CAAC;KACvB;IACD,IAAI,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;QACzC,OAAO,SAAS,CAAC;KACpB;IACD,IAAI,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;QACzC,OAAO,SAAS,CAAC;KACpB;IACD,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;QACrC,OAAO,KAAK,CAAC;KAChB;IACD,IAAI,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;QACzC,OAAO,UAAU,CAAC;KACrB;IACD,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;QACtC,OAAO,MAAM,CAAC;KACjB;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE;QACpC,OAAO,aAAa,CAAC;KACxB;IACD,OAAO,KAAK,CAAC,IAAI,CAAC;AACtB,CAAC;AAED,MAAM,kBAAkB,GAAG,CAAC,QAAQ,EAAE,EAAE;IACpC,IAAI,QAAQ,KAAK,MAAM,EAAE;QACrB,OAAO,IAAI,CAAC;KACf;IACD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,SAAS,sBAAsB,CAAC,MAAM;IAClC,MAAM,MAAM,GAAG,EAAE,CAAC;IAElB,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACrB,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,WAAW,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAEjD,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC1C,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACrC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;QAEpD,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAM,EAAE,QAAQ;IAC1C,MAAM,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAE9C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAE/B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAChC,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,IAAI,CAAC;YACT,IAAI,KAAK,CAAC;YACV,IAAI,CAAC,CAAC;YACN,IAAI,CAAC,CAAC;YACN,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC9C,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;gBACxB,KAAK,GAAG,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAE7B,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;aACzB;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,WAAW,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;AAEvD,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;IAC9B,OAAO,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF,SAAS,QAAQ,CAAC,MAAM,GAAG,EAAE;IACzB,0BAA0B;IAC1B,oBAAoB,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACzC,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YACtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;SACjC;aAAM;YACH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;SACrB;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,OAAO,GAAG;IACb,QAAQ;CACX,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
const eventDiffer = require('./event-differ');
|
|
3
|
-
const { FEATURE_CREATED, FEATURE_UPDATED } = require('./types/events');
|
|
4
|
-
test('should not fail if events include an unknown event type', () => {
|
|
5
|
-
const events = [
|
|
6
|
-
{ type: FEATURE_CREATED, data: {} },
|
|
7
|
-
{ type: 'unknown-type', data: {} },
|
|
8
|
-
];
|
|
9
|
-
eventDiffer.addDiffs(events);
|
|
10
|
-
expect(true).toBe(true);
|
|
11
|
-
});
|
|
12
|
-
test('diffs a feature-update event', () => {
|
|
13
|
-
const feature = 'foo';
|
|
14
|
-
const desc = 'bar';
|
|
15
|
-
const events = [
|
|
16
|
-
{
|
|
17
|
-
type: FEATURE_UPDATED,
|
|
18
|
-
data: {
|
|
19
|
-
name: feature,
|
|
20
|
-
description: desc,
|
|
21
|
-
strategy: 'default',
|
|
22
|
-
enabled: true,
|
|
23
|
-
parameters: { value: 2 },
|
|
24
|
-
},
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
type: FEATURE_CREATED,
|
|
28
|
-
data: {
|
|
29
|
-
name: feature,
|
|
30
|
-
description: desc,
|
|
31
|
-
strategy: 'default',
|
|
32
|
-
enabled: false,
|
|
33
|
-
parameters: { value: 1 },
|
|
34
|
-
},
|
|
35
|
-
},
|
|
36
|
-
];
|
|
37
|
-
eventDiffer.addDiffs(events);
|
|
38
|
-
const { diffs } = events[0];
|
|
39
|
-
expect(diffs[0].kind === 'E').toBe(true);
|
|
40
|
-
expect(diffs[0].path[0] === 'enabled').toBe(true);
|
|
41
|
-
expect(diffs[0].kind === 'E').toBe(true);
|
|
42
|
-
expect(diffs[0].lhs === false).toBe(true);
|
|
43
|
-
expect(diffs[0].rhs).toBe(true);
|
|
44
|
-
expect(diffs[1].kind === 'E').toBe(true);
|
|
45
|
-
expect(diffs[1].path[0] === 'parameters').toBe(true);
|
|
46
|
-
expect(diffs[1].path[1] === 'value').toBe(true);
|
|
47
|
-
expect(diffs[1].kind === 'E').toBe(true);
|
|
48
|
-
expect(diffs[1].lhs === 1).toBe(true);
|
|
49
|
-
expect(events[1].diffs === null).toBe(true);
|
|
50
|
-
});
|
|
51
|
-
test('diffs only against features with the same name', () => {
|
|
52
|
-
const events = [
|
|
53
|
-
{
|
|
54
|
-
type: FEATURE_UPDATED,
|
|
55
|
-
data: {
|
|
56
|
-
name: 'bar',
|
|
57
|
-
description: 'desc',
|
|
58
|
-
strategy: 'default',
|
|
59
|
-
enabled: true,
|
|
60
|
-
parameters: {},
|
|
61
|
-
},
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
type: FEATURE_UPDATED,
|
|
65
|
-
data: {
|
|
66
|
-
name: 'foo',
|
|
67
|
-
description: 'desc',
|
|
68
|
-
strategy: 'default',
|
|
69
|
-
enabled: false,
|
|
70
|
-
parameters: {},
|
|
71
|
-
},
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
type: FEATURE_CREATED,
|
|
75
|
-
data: {
|
|
76
|
-
name: 'bar',
|
|
77
|
-
description: 'desc',
|
|
78
|
-
strategy: 'default',
|
|
79
|
-
enabled: false,
|
|
80
|
-
parameters: {},
|
|
81
|
-
},
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
type: FEATURE_CREATED,
|
|
85
|
-
data: {
|
|
86
|
-
name: 'foo',
|
|
87
|
-
description: 'desc',
|
|
88
|
-
strategy: 'default',
|
|
89
|
-
enabled: true,
|
|
90
|
-
parameters: {},
|
|
91
|
-
},
|
|
92
|
-
},
|
|
93
|
-
];
|
|
94
|
-
eventDiffer.addDiffs(events);
|
|
95
|
-
expect(events[0].diffs[0].rhs === true).toBe(true);
|
|
96
|
-
expect(events[1].diffs[0].rhs === false).toBe(true);
|
|
97
|
-
expect(events[2].diffs === null).toBe(true);
|
|
98
|
-
expect(events[3].diffs === null).toBe(true);
|
|
99
|
-
});
|
|
100
|
-
test('sets an empty array of diffs if nothing was changed', () => {
|
|
101
|
-
const events = [
|
|
102
|
-
{
|
|
103
|
-
type: FEATURE_UPDATED,
|
|
104
|
-
data: {
|
|
105
|
-
name: 'foo',
|
|
106
|
-
description: 'desc',
|
|
107
|
-
strategy: 'default',
|
|
108
|
-
enabled: true,
|
|
109
|
-
parameters: {},
|
|
110
|
-
},
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
type: FEATURE_CREATED,
|
|
114
|
-
data: {
|
|
115
|
-
name: 'foo',
|
|
116
|
-
description: 'desc',
|
|
117
|
-
strategy: 'default',
|
|
118
|
-
enabled: true,
|
|
119
|
-
parameters: {},
|
|
120
|
-
},
|
|
121
|
-
},
|
|
122
|
-
];
|
|
123
|
-
eventDiffer.addDiffs(events);
|
|
124
|
-
expect(events[0].diffs).toEqual([]);
|
|
125
|
-
});
|
|
126
|
-
test('sets diffs to null if there was nothing to diff against', () => {
|
|
127
|
-
const events = [
|
|
128
|
-
{
|
|
129
|
-
type: FEATURE_UPDATED,
|
|
130
|
-
data: {
|
|
131
|
-
name: 'foo',
|
|
132
|
-
description: 'desc',
|
|
133
|
-
strategy: 'default',
|
|
134
|
-
enabled: true,
|
|
135
|
-
parameters: {},
|
|
136
|
-
},
|
|
137
|
-
},
|
|
138
|
-
];
|
|
139
|
-
eventDiffer.addDiffs(events);
|
|
140
|
-
expect(events[0].diffs === null).toBe(true);
|
|
141
|
-
});
|
|
142
|
-
//# sourceMappingURL=event-differ.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"event-differ.test.js","sourceRoot":"","sources":["../../src/lib/event-differ.test.js"],"names":[],"mappings":"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"}
|