unleash-server 4.2.2 → 4.3.0-beta.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/README.md +1 -0
- 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/create-config.js +5 -15
- package/dist/lib/create-config.js.map +1 -1
- package/dist/lib/create-config.test.js +0 -37
- package/dist/lib/create-config.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/db/feature-strategy-store.js +1 -0
- package/dist/lib/db/feature-strategy-store.js.map +1 -1
- package/dist/lib/db/feature-toggle-store.d.ts +4 -1
- package/dist/lib/db/feature-toggle-store.js +27 -2
- package/dist/lib/db/feature-toggle-store.js.map +1 -1
- package/dist/lib/db/index.js +2 -0
- package/dist/lib/db/index.js.map +1 -1
- package/dist/lib/db/user-splash-store.d.ts +19 -0
- package/dist/lib/db/user-splash-store.js +70 -0
- package/dist/lib/db/user-splash-store.js.map +1 -0
- package/dist/lib/error/operation-denied-error.d.ts +4 -0
- package/dist/lib/error/operation-denied-error.js +24 -0
- package/dist/lib/error/operation-denied-error.js.map +1 -0
- 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/feature.js +1 -1
- package/dist/lib/routes/admin-api/feature.js.map +1 -1
- package/dist/lib/routes/admin-api/index.js +2 -0
- package/dist/lib/routes/admin-api/index.js.map +1 -1
- package/dist/lib/routes/admin-api/project/index.js +2 -0
- package/dist/lib/routes/admin-api/project/index.js.map +1 -1
- package/dist/lib/routes/admin-api/project/variants.d.ts +21 -0
- package/dist/lib/routes/admin-api/project/variants.js +41 -0
- package/dist/lib/routes/admin-api/project/variants.js.map +1 -0
- package/dist/lib/routes/admin-api/state.js +0 -1
- package/dist/lib/routes/admin-api/state.js.map +1 -1
- package/dist/lib/routes/admin-api/user-splash-controller.d.ts +10 -0
- package/dist/lib/routes/admin-api/user-splash-controller.js +28 -0
- package/dist/lib/routes/admin-api/user-splash-controller.js.map +1 -0
- package/dist/lib/routes/admin-api/user.d.ts +2 -1
- package/dist/lib/routes/admin-api/user.js +7 -2
- package/dist/lib/routes/admin-api/user.js.map +1 -1
- package/dist/lib/routes/client-api/metrics.d.ts +0 -1
- package/dist/lib/routes/client-api/metrics.js +2 -10
- package/dist/lib/routes/client-api/metrics.js.map +1 -1
- package/dist/lib/routes/util.js +18 -16
- package/dist/lib/routes/util.js.map +1 -1
- package/dist/lib/schema/feature-schema.d.ts +1 -0
- package/dist/lib/schema/feature-schema.js +6 -7
- package/dist/lib/schema/feature-schema.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/client-metrics-service-v2.js +3 -3
- package/dist/lib/services/client-metrics/client-metrics-service-v2.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 +25 -15
- package/dist/lib/services/feature-toggle-service.js +198 -136
- package/dist/lib/services/feature-toggle-service.js.map +1 -1
- package/dist/lib/services/index.js +3 -0
- package/dist/lib/services/index.js.map +1 -1
- package/dist/lib/services/project-health-service.d.ts +2 -2
- package/dist/lib/services/project-health-service.js +1 -0
- package/dist/lib/services/project-health-service.js.map +1 -1
- package/dist/lib/services/project-service.d.ts +2 -3
- package/dist/lib/services/project-service.js +12 -18
- 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/services/user-splash-service.d.ts +12 -0
- package/dist/lib/services/user-splash-service.js +33 -0
- package/dist/lib/services/user-splash-service.js.map +1 -0
- 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 +4 -12
- package/dist/lib/types/model.js +6 -1
- package/dist/lib/types/model.js.map +1 -1
- package/dist/lib/types/services.d.ts +2 -0
- package/dist/lib/types/stores/event-store.d.ts +4 -3
- package/dist/lib/types/stores/feature-toggle-store.d.ts +3 -1
- package/dist/lib/types/stores/user-splash-store.d.ts +15 -0
- package/dist/lib/types/stores/user-splash-store.js +3 -0
- package/dist/lib/types/stores/user-splash-store.js.map +1 -0
- package/dist/lib/types/stores.d.ts +2 -0
- 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/migrations/20211108130333-create-user-splash-table.d.ts +2 -0
- package/dist/migrations/20211108130333-create-user-splash-table.js +18 -0
- package/dist/migrations/20211108130333-create-user-splash-table.js.map +1 -0
- package/dist/migrations/20211109103930-add-splash-entry-for-users.d.ts +2 -0
- package/dist/migrations/20211109103930-add-splash-entry-for-users.js +7 -0
- package/dist/migrations/20211109103930-add-splash-entry-for-users.js.map +1 -0
- package/dist/migrations/20211126112551-disable-default-environment.d.ts +2 -0
- package/dist/migrations/20211126112551-disable-default-environment.js +24 -0
- package/dist/migrations/20211126112551-disable-default-environment.js.map +1 -0
- package/dist/test/e2e/api/admin/client-metrics.e2e.test.js +18 -14
- package/dist/test/e2e/api/admin/client-metrics.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/feature.e2e.test.js +24 -18
- package/dist/test/e2e/api/admin/feature.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/project/features.e2e.test.js +31 -8
- package/dist/test/e2e/api/admin/project/features.e2e.test.js.map +1 -1
- package/dist/test/e2e/api/admin/project/project.health.e2e.test.js +60 -0
- package/dist/test/e2e/api/admin/project/project.health.e2e.test.js.map +1 -1
- package/dist/{lib/event-differ.test.d.ts → test/e2e/api/admin/project/variants.e2e.test.d.ts} +0 -0
- package/dist/test/e2e/api/admin/project/variants.e2e.test.js +727 -0
- package/dist/test/e2e/api/admin/project/variants.e2e.test.js.map +1 -0
- package/dist/test/e2e/api/admin/splash.e2e.test.d.ts +1 -0
- package/dist/test/e2e/api/admin/splash.e2e.test.js +51 -0
- package/dist/test/e2e/api/admin/splash.e2e.test.js.map +1 -0
- 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 +0 -30
- 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/e2e/stores/user-splash-store.e2e.test.d.ts +1 -0
- package/dist/test/e2e/stores/user-splash-store.e2e.test.js +74 -0
- package/dist/test/e2e/stores/user-splash-store.e2e.test.js.map +1 -0
- 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/dist/test/fixtures/fake-feature-toggle-store.d.ts +3 -1
- package/dist/test/fixtures/fake-feature-toggle-store.js +9 -0
- package/dist/test/fixtures/fake-feature-toggle-store.js.map +1 -1
- package/dist/test/fixtures/fake-user-splash-store.d.ts +12 -0
- package/dist/test/fixtures/fake-user-splash-store.js +40 -0
- package/dist/test/fixtures/fake-user-splash-store.js.map +1 -0
- package/dist/test/fixtures/store.js +2 -0
- package/dist/test/fixtures/store.js.map +1 -1
- package/docs/api/oas/openapi.yaml +35 -55
- package/package.json +16 -17
- 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.js +0 -142
- package/dist/lib/event-differ.test.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fake-feature-toggle-store.js","sourceRoot":"","sources":["../../../src/test/fixtures/fake-feature-toggle-store.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"fake-feature-toggle-store.js","sourceRoot":"","sources":["../../../src/test/fixtures/fake-feature-toggle-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { IUserSplashKey, IUserSplash, IUserSplashStore } from '../../lib/types/stores/user-splash-store';
|
|
2
|
+
export default class FakeUserSplashStore implements IUserSplashStore {
|
|
3
|
+
getAllUserSplashs(userId: number): Promise<IUserSplash[]>;
|
|
4
|
+
getSplash(userId: number, splashId: string): Promise<IUserSplash>;
|
|
5
|
+
updateSplash(splash: IUserSplash): Promise<IUserSplash>;
|
|
6
|
+
exists(key: IUserSplashKey): Promise<boolean>;
|
|
7
|
+
get(key: IUserSplashKey): Promise<IUserSplash>;
|
|
8
|
+
getAll(): Promise<IUserSplash[]>;
|
|
9
|
+
delete(key: IUserSplashKey): Promise<void>;
|
|
10
|
+
deleteAll(): Promise<void>;
|
|
11
|
+
destroy(): void;
|
|
12
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
class FakeUserSplashStore {
|
|
4
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5
|
+
getAllUserSplashs(userId) {
|
|
6
|
+
return Promise.resolve([]);
|
|
7
|
+
}
|
|
8
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
9
|
+
getSplash(userId, splashId) {
|
|
10
|
+
return Promise.resolve(undefined);
|
|
11
|
+
}
|
|
12
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
13
|
+
updateSplash(splash) {
|
|
14
|
+
return Promise.resolve(undefined);
|
|
15
|
+
}
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
17
|
+
exists(key) {
|
|
18
|
+
return Promise.resolve(false);
|
|
19
|
+
}
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
21
|
+
get(key) {
|
|
22
|
+
return Promise.resolve(undefined);
|
|
23
|
+
}
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
25
|
+
getAll() {
|
|
26
|
+
return Promise.resolve([]);
|
|
27
|
+
}
|
|
28
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
29
|
+
delete(key) {
|
|
30
|
+
return Promise.resolve(undefined);
|
|
31
|
+
}
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
33
|
+
deleteAll() {
|
|
34
|
+
return Promise.resolve(undefined);
|
|
35
|
+
}
|
|
36
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
37
|
+
destroy() { }
|
|
38
|
+
}
|
|
39
|
+
exports.default = FakeUserSplashStore;
|
|
40
|
+
//# sourceMappingURL=fake-user-splash-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fake-user-splash-store.js","sourceRoot":"","sources":["../../../src/test/fixtures/fake-user-splash-store.ts"],"names":[],"mappings":";;AAMA,MAAqB,mBAAmB;IACpC,6DAA6D;IAC7D,iBAAiB,CAAC,MAAc;QAC5B,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,6DAA6D;IAC7D,SAAS,CAAC,MAAc,EAAE,QAAgB;QACtC,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,6DAA6D;IAC7D,YAAY,CAAC,MAAmB;QAC5B,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,6DAA6D;IAC7D,MAAM,CAAC,GAAmB;QACtB,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,6DAA6D;IAC7D,GAAG,CAAC,GAAmB;QACnB,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,6DAA6D;IAC7D,MAAM;QACF,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,6DAA6D;IAC7D,MAAM,CAAC,GAAmB;QACtB,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,6DAA6D;IAC7D,SAAS;QACL,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,6DAA6D;IAC7D,OAAO,KAAU,CAAC;CACrB;AA3CD,sCA2CC"}
|
|
@@ -28,6 +28,7 @@ const fake_feature_type_store_1 = __importDefault(require("./fake-feature-type-s
|
|
|
28
28
|
const fake_reset_token_store_1 = __importDefault(require("./fake-reset-token-store"));
|
|
29
29
|
const fake_feature_toggle_client_store_1 = __importDefault(require("./fake-feature-toggle-client-store"));
|
|
30
30
|
const fake_client_metrics_store_v2_1 = __importDefault(require("./fake-client-metrics-store-v2"));
|
|
31
|
+
const fake_user_splash_store_1 = __importDefault(require("./fake-user-splash-store"));
|
|
31
32
|
const createStores = () => {
|
|
32
33
|
const db = {
|
|
33
34
|
select: () => ({
|
|
@@ -61,6 +62,7 @@ const createStores = () => {
|
|
|
61
62
|
featureTypeStore: new fake_feature_type_store_1.default(),
|
|
62
63
|
resetTokenStore: new fake_reset_token_store_1.default(),
|
|
63
64
|
sessionStore: new fake_session_store_1.default(),
|
|
65
|
+
userSplashStore: new fake_user_splash_store_1.default(),
|
|
64
66
|
};
|
|
65
67
|
};
|
|
66
68
|
exports.default = createStores;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/test/fixtures/store.ts"],"names":[],"mappings":";;;;;AAAA,oGAAyE;AACzE,4FAAiE;AACjE,8FAAmE;AACnE,sGAA2E;AAC3E,4FAAiE;AACjE,sEAA4C;AAC5C,gFAAqD;AACrD,0EAAgD;AAChD,0FAA+D;AAC/D,8EAAoD;AACpD,0EAAgD;AAChD,8EAAoD;AACpD,wEAA8C;AAC9C,4EAAkD;AAClD,0FAA+D;AAC/D,sFAA2D;AAC3D,sFAA4D;AAC5D,oFAA0D;AAE1D,8EAAoD;AACpD,sGAA2E;AAC3E,kFAAuD;AACvD,wFAA6D;AAC7D,sFAA2D;AAC3D,0GAA8E;AAC9E,kGAAsE;
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/test/fixtures/store.ts"],"names":[],"mappings":";;;;;AAAA,oGAAyE;AACzE,4FAAiE;AACjE,8FAAmE;AACnE,sGAA2E;AAC3E,4FAAiE;AACjE,sEAA4C;AAC5C,gFAAqD;AACrD,0EAAgD;AAChD,0FAA+D;AAC/D,8EAAoD;AACpD,0EAAgD;AAChD,8EAAoD;AACpD,wEAA8C;AAC9C,4EAAkD;AAClD,0FAA+D;AAC/D,sFAA2D;AAC3D,sFAA4D;AAC5D,oFAA0D;AAE1D,8EAAoD;AACpD,sGAA2E;AAC3E,kFAAuD;AACvD,wFAA6D;AAC7D,sFAA2D;AAC3D,0GAA8E;AAC9E,kGAAsE;AACtE,sFAA2D;AAE3D,MAAM,YAAY,GAAyB,GAAG,EAAE;IAC5C,MAAM,EAAE,GAAG;QACP,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YACX,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;SAChC,CAAC;KACL,CAAC;IAEF,OAAO;QACH,EAAE;QACF,uBAAuB,EAAE,IAAI,wCAA2B,EAAE;QAC1D,kBAAkB,EAAE,IAAI,mCAAsB,EAAE;QAChD,oBAAoB,EAAE,IAAI,sCAAwB,EAAE;QACpD,mBAAmB,EAAE,IAAI,oCAAuB,EAAE;QAClD,kBAAkB,EAAE,IAAI,mCAAsB,EAAE;QAChD,wBAAwB,EAAE,IAAI,0CAA4B,EAAE;QAC5D,QAAQ,EAAE,IAAI,wBAAY,EAAE;QAC5B,YAAY,EAAE,IAAI,6BAAgB,EAAE;QACpC,UAAU,EAAE,IAAI,0BAAc,EAAE;QAChC,aAAa,EAAE,IAAI,+BAAmB,EAAE;QACxC,iBAAiB,EAAE,IAAI,kCAAqB,EAAE;QAC9C,YAAY,EAAE,IAAI,4BAAgB,EAAE;QACpC,UAAU,EAAE,IAAI,0BAAc,EAAE;QAChC,YAAY,EAAE,IAAI,4BAAgB,EAAE;QACpC,SAAS,EAAE,IAAI,yBAAa,EAAE;QAC9B,WAAW,EAAE,IAAI,2BAAe,EAAE;QAClC,iBAAiB,EAAE,IAAI,kCAAqB,EAAE;QAC9C,sBAAsB,EAAE,IAAI,uCAA0B,EAAE;QACxD,eAAe,EAAE,IAAI,gCAAmB,EAAE;QAC1C,gBAAgB,EAAE,IAAI,gCAAoB,EAAE;QAC5C,uBAAuB,EAAE,IAAI,wCAA2B,EAAE;QAC1D,aAAa,EAAE,IAAI,8BAAiB,EAAE;QACtC,gBAAgB,EAAE,IAAI,iCAAoB,EAAE;QAC5C,eAAe,EAAE,IAAI,gCAAmB,EAAE;QAC1C,YAAY,EAAE,IAAI,4BAAgB,EAAE;QACpC,eAAe,EAAE,IAAI,gCAAmB,EAAE;KAC7C,CAAC;AACN,CAAC,CAAC;AAEF,kBAAe,YAAY,CAAC"}
|
|
@@ -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.
|
|
4
|
+
"version": "4.3.0-beta.3",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"unleash",
|
|
7
7
|
"feature toggle",
|
|
@@ -82,10 +82,9 @@
|
|
|
82
82
|
"cookie-session": "^2.0.0-rc.1",
|
|
83
83
|
"cors": "^2.8.5",
|
|
84
84
|
"date-fns": "^2.25.0",
|
|
85
|
-
"db-migrate": "0.11.
|
|
85
|
+
"db-migrate": "0.11.13",
|
|
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.
|
|
114
|
+
"unleash-frontend": "4.3.0-beta.3",
|
|
116
115
|
"uuid": "^8.3.2"
|
|
117
116
|
},
|
|
118
117
|
"devDependencies": {
|
|
@@ -120,8 +119,8 @@
|
|
|
120
119
|
"@types/express": "4.17.13",
|
|
121
120
|
"@types/express-session": "1.17.4",
|
|
122
121
|
"@types/faker": "5.5.9",
|
|
123
|
-
"@types/jest": "27.0.
|
|
124
|
-
"@types/js-yaml": "4.0.
|
|
122
|
+
"@types/jest": "27.0.3",
|
|
123
|
+
"@types/js-yaml": "4.0.5",
|
|
125
124
|
"@types/memoizee": "0.4.6",
|
|
126
125
|
"@types/mime": "2.0.3",
|
|
127
126
|
"@types/node": "16.6.1",
|
|
@@ -130,17 +129,17 @@
|
|
|
130
129
|
"@types/owasp-password-strength-test": "1.3.0",
|
|
131
130
|
"@types/stoppable": "1.1.1",
|
|
132
131
|
"@types/supertest": "2.0.11",
|
|
133
|
-
"@types/uuid": "8.3.
|
|
134
|
-
"@typescript-eslint/eslint-plugin": "5.
|
|
135
|
-
"@typescript-eslint/parser": "5.
|
|
132
|
+
"@types/uuid": "8.3.3",
|
|
133
|
+
"@typescript-eslint/eslint-plugin": "5.4.0",
|
|
134
|
+
"@typescript-eslint/parser": "5.4.0",
|
|
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.3.0",
|
|
139
|
+
"eslint-config-airbnb-base": "15.0.0",
|
|
140
|
+
"eslint-config-airbnb-typescript": "16.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",
|
|
@@ -148,15 +147,15 @@
|
|
|
148
147
|
"jest": "27.3.1",
|
|
149
148
|
"jest-fetch-mock": "3.0.3",
|
|
150
149
|
"lint-staged": "11.2.6",
|
|
151
|
-
"prettier": "2.
|
|
150
|
+
"prettier": "2.5.0",
|
|
152
151
|
"proxyquire": "2.1.3",
|
|
153
|
-
"source-map-support": "0.5.
|
|
152
|
+
"source-map-support": "0.5.21",
|
|
154
153
|
"superagent": "6.1.0",
|
|
155
154
|
"supertest": "6.1.6",
|
|
156
155
|
"ts-jest": "27.0.7",
|
|
157
156
|
"ts-node": "10.4.0",
|
|
158
157
|
"tsc-watch": "4.5.0",
|
|
159
|
-
"typescript": "4.
|
|
158
|
+
"typescript": "4.5.2"
|
|
160
159
|
},
|
|
161
160
|
"resolutions": {
|
|
162
161
|
"db-migrate/rc/minimist": "^1.2.5",
|
|
@@ -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,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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"}
|