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.
Files changed (100) hide show
  1. package/dist/lib/addons/addon.d.ts +2 -1
  2. package/dist/lib/addons/addon.js.map +1 -1
  3. package/dist/lib/addons/datadog.d.ts +2 -1
  4. package/dist/lib/addons/datadog.js.map +1 -1
  5. package/dist/lib/addons/datadog.test.js +3 -0
  6. package/dist/lib/addons/datadog.test.js.map +1 -1
  7. package/dist/lib/addons/feature-event-formatter-md.d.ts +1 -1
  8. package/dist/lib/addons/feature-event-formatter-md.js +13 -14
  9. package/dist/lib/addons/feature-event-formatter-md.js.map +1 -1
  10. package/dist/lib/addons/slack.d.ts +2 -1
  11. package/dist/lib/addons/slack.js.map +1 -1
  12. package/dist/lib/addons/slack.test.js +6 -0
  13. package/dist/lib/addons/slack.test.js.map +1 -1
  14. package/dist/lib/addons/teams.d.ts +2 -1
  15. package/dist/lib/addons/teams.js.map +1 -1
  16. package/dist/lib/addons/teams.test.js +3 -0
  17. package/dist/lib/addons/teams.test.js.map +1 -1
  18. package/dist/lib/addons/webhook.d.ts +8 -2
  19. package/dist/lib/addons/webhook.js +0 -1
  20. package/dist/lib/addons/webhook.js.map +1 -1
  21. package/dist/lib/addons/webhook.test.js +2 -0
  22. package/dist/lib/addons/webhook.test.js.map +1 -1
  23. package/dist/lib/db/client-metrics-store-v2.js +5 -1
  24. package/dist/lib/db/client-metrics-store-v2.js.map +1 -1
  25. package/dist/lib/db/event-store.d.ts +10 -6
  26. package/dist/lib/db/event-store.js +21 -1
  27. package/dist/lib/db/event-store.js.map +1 -1
  28. package/dist/lib/metrics.js +17 -8
  29. package/dist/lib/metrics.js.map +1 -1
  30. package/dist/lib/metrics.test.js +1 -0
  31. package/dist/lib/metrics.test.js.map +1 -1
  32. package/dist/lib/routes/admin-api/event.d.ts +8 -4
  33. package/dist/lib/routes/admin-api/event.js +8 -10
  34. package/dist/lib/routes/admin-api/event.js.map +1 -1
  35. package/dist/lib/routes/admin-api/state.js +0 -1
  36. package/dist/lib/routes/admin-api/state.js.map +1 -1
  37. package/dist/lib/services/addon-service-test-simple-addon.d.ts +1 -1
  38. package/dist/lib/services/addon-service-test-simple-addon.js.map +1 -1
  39. package/dist/lib/services/client-metrics/index.d.ts +6 -5
  40. package/dist/lib/services/client-metrics/index.js +6 -3
  41. package/dist/lib/services/client-metrics/index.js.map +1 -1
  42. package/dist/lib/services/client-metrics/list.d.ts +19 -16
  43. package/dist/lib/services/client-metrics/list.js +6 -4
  44. package/dist/lib/services/client-metrics/list.js.map +1 -1
  45. package/dist/lib/services/client-metrics/list.test.js +9 -5
  46. package/dist/lib/services/client-metrics/list.test.js.map +1 -1
  47. package/dist/lib/services/client-metrics/ttl-list.d.ts +20 -14
  48. package/dist/lib/services/client-metrics/ttl-list.js +17 -12
  49. package/dist/lib/services/client-metrics/ttl-list.js.map +1 -1
  50. package/dist/lib/services/client-metrics/ttl-list.test.js +14 -10
  51. package/dist/lib/services/client-metrics/ttl-list.test.js.map +1 -1
  52. package/dist/lib/services/event-service.d.ts +1 -1
  53. package/dist/lib/services/event-service.js +1 -1
  54. package/dist/lib/services/event-service.js.map +1 -1
  55. package/dist/lib/services/feature-tag-service.js +7 -11
  56. package/dist/lib/services/feature-tag-service.js.map +1 -1
  57. package/dist/lib/services/feature-toggle-service.d.ts +15 -14
  58. package/dist/lib/services/feature-toggle-service.js +142 -135
  59. package/dist/lib/services/feature-toggle-service.js.map +1 -1
  60. package/dist/lib/services/project-health-service.d.ts +2 -2
  61. package/dist/lib/services/project-health-service.js.map +1 -1
  62. package/dist/lib/services/project-service.d.ts +2 -2
  63. package/dist/lib/services/project-service.js +5 -3
  64. package/dist/lib/services/project-service.js.map +1 -1
  65. package/dist/lib/services/user-service.d.ts +3 -2
  66. package/dist/lib/services/user-service.js +37 -21
  67. package/dist/lib/services/user-service.js.map +1 -1
  68. package/dist/lib/types/events.d.ts +165 -2
  69. package/dist/lib/types/events.js +124 -4
  70. package/dist/lib/types/events.js.map +1 -1
  71. package/dist/lib/types/model.d.ts +0 -12
  72. package/dist/lib/types/model.js.map +1 -1
  73. package/dist/lib/types/stores/event-store.d.ts +4 -3
  74. package/dist/migrations/20211105104316-add-feature-name-column-to-events.d.ts +2 -0
  75. package/dist/migrations/20211105104316-add-feature-name-column-to-events.js +16 -0
  76. package/dist/migrations/20211105104316-add-feature-name-column-to-events.js.map +1 -0
  77. package/dist/migrations/20211105105509-add-predata-column-to-events.d.ts +2 -0
  78. package/dist/migrations/20211105105509-add-predata-column-to-events.js +8 -0
  79. package/dist/migrations/20211105105509-add-predata-column-to-events.js.map +1 -0
  80. package/dist/test/e2e/api/admin/client-metrics.e2e.test.js +16 -12
  81. package/dist/test/e2e/api/admin/client-metrics.e2e.test.js.map +1 -1
  82. package/dist/test/e2e/api/admin/project/features.e2e.test.js +6 -8
  83. package/dist/test/e2e/api/admin/project/features.e2e.test.js.map +1 -1
  84. package/dist/test/e2e/api/admin/user-admin.e2e.test.js +2 -16
  85. package/dist/test/e2e/api/admin/user-admin.e2e.test.js.map +1 -1
  86. package/dist/test/e2e/services/feature-toggle-service-v2.e2e.test.js.map +1 -1
  87. package/dist/test/e2e/services/project-health-service.e2e.test.js.map +1 -1
  88. package/dist/test/e2e/services/project-service.e2e.test.js.map +1 -1
  89. package/dist/test/e2e/stores/event-store.e2e.test.js.map +1 -1
  90. package/dist/test/fixtures/fake-event-store.d.ts +2 -1
  91. package/dist/test/fixtures/fake-event-store.js +3 -0
  92. package/dist/test/fixtures/fake-event-store.js.map +1 -1
  93. package/docs/api/oas/openapi.yaml +35 -55
  94. package/package.json +9 -10
  95. package/dist/lib/event-differ.d.ts +0 -1
  96. package/dist/lib/event-differ.js +0 -117
  97. package/dist/lib/event-differ.js.map +0 -1
  98. package/dist/lib/event-differ.test.d.ts +0 -1
  99. package/dist/lib/event-differ.test.js +0 -142
  100. 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 six event types:
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-created
669
- - strategy-deleted
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: One of the six event types
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-created
1559
- - strategy-deleted
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
- $ref: '#/components/schemas/featureToggleSchema'
1572
- diffs:
1573
- description: |-
1574
- The JSON differences between the current and last version of the Feature Toggle.
1575
- (Uses the [deep-diff Node.js module](https://www.npmjs.com/package/deep-diff))
1576
- externalDocs:
1577
- description: Activation strategies
1578
- url: 'https://www.npmjs.com/package/deep-diff#differences'
1579
- type: array
1580
- items:
1581
- required:
1582
- - kind
1583
- - lhs
1584
- - rhs
1585
- properties:
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.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.13",
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.12",
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.0",
135
- "@typescript-eslint/parser": "5.3.0",
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.1.0",
140
- "eslint-config-airbnb-base": "14.2.1",
141
- "eslint-config-airbnb-typescript": "14.0.1",
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.2",
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;
@@ -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":"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"}
@@ -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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"}