@ninetailed/experience.js-utils-contentful 2.0.0-beta.4 → 2.0.0-beta.40
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/package.json +1 -1
- package/src/index.d.ts +1 -1
- package/src/index.js +2 -1
- package/src/index.js.map +1 -1
- package/src/lib/ExperienceMapper.d.ts +5 -6
- package/src/lib/ExperienceMapper.js +25 -11
- package/src/lib/ExperienceMapper.js.map +1 -1
- package/src/lib/index.d.ts +1 -0
- package/src/lib/index.js +3 -1
- package/src/lib/index.js.map +1 -1
- package/src/lib/isEntry.d.ts +2 -0
- package/src/lib/isEntry.js +8 -0
- package/src/lib/isEntry.js.map +1 -0
- package/src/types/ExperienceEntry.d.ts +4 -4
package/package.json
CHANGED
package/src/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export * from './types';
|
|
2
|
-
export { AudienceMapper, ExperienceMapper } from './lib';
|
|
2
|
+
export { AudienceMapper, ExperienceMapper, isEntry } from './lib';
|
package/src/index.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ExperienceMapper = exports.AudienceMapper = void 0;
|
|
3
|
+
exports.isEntry = exports.ExperienceMapper = exports.AudienceMapper = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
(0, tslib_1.__exportStar)(require("./types"), exports);
|
|
6
6
|
var lib_1 = require("./lib");
|
|
7
7
|
Object.defineProperty(exports, "AudienceMapper", { enumerable: true, get: function () { return lib_1.AudienceMapper; } });
|
|
8
8
|
Object.defineProperty(exports, "ExperienceMapper", { enumerable: true, get: function () { return lib_1.ExperienceMapper; } });
|
|
9
|
+
Object.defineProperty(exports, "isEntry", { enumerable: true, get: function () { return lib_1.isEntry; } });
|
|
9
10
|
//# sourceMappingURL=index.js.map
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/utils/contentful/src/index.ts"],"names":[],"mappings":";;;;AAAA,uDAAwB;AACxB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/utils/contentful/src/index.ts"],"names":[],"mappings":";;;;AAAA,uDAAwB;AACxB,6BAAkE;AAAzD,qGAAA,cAAc,OAAA;AAAE,uGAAA,gBAAgB,OAAA;AAAE,8FAAA,OAAO,OAAA"}
|
|
@@ -1,17 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Variant, ExperienceConfiguration } from '@ninetailed/experience.js';
|
|
2
2
|
import { Entry } from 'contentful';
|
|
3
3
|
import { ExperienceEntry } from '../types';
|
|
4
4
|
import { BaselineWithExperiencesEntry } from '../types/BaselineWithExperiencesEntry';
|
|
5
5
|
declare type MapVariantOptions = {
|
|
6
6
|
hidden: boolean;
|
|
7
7
|
};
|
|
8
|
-
declare type
|
|
9
|
-
declare type MapExperienceOptions<
|
|
10
|
-
|
|
11
|
-
mapVariant?: (variant: unknown, options: MapVariantOptions) => Variant;
|
|
8
|
+
declare type MapVariant<VariantType = Entry<unknown>> = (variant: VariantType, options: MapVariantOptions) => Variant;
|
|
9
|
+
declare type MapExperienceOptions<VariantType = Entry<unknown>> = {
|
|
10
|
+
mapVariant?: MapVariant<VariantType>;
|
|
12
11
|
};
|
|
13
12
|
export declare class ExperienceMapper {
|
|
14
|
-
static mapExperience
|
|
13
|
+
static mapExperience(entry: ExperienceEntry, options?: MapExperienceOptions): ExperienceConfiguration;
|
|
15
14
|
static mapExperiment(entry: ExperienceEntry): ExperienceConfiguration;
|
|
16
15
|
static mapBaselineWithExperiences(entry: BaselineWithExperiencesEntry): ExperienceConfiguration[];
|
|
17
16
|
}
|
|
@@ -2,22 +2,35 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ExperienceMapper = void 0;
|
|
4
4
|
const AudienceMapper_1 = require("./AudienceMapper");
|
|
5
|
+
const isEntry_1 = require("./isEntry");
|
|
6
|
+
const defaultMapVariant = (variant, { hidden }) => (Object.assign(Object.assign({}, variant), { id: variant.sys.id, hidden: hidden }));
|
|
5
7
|
class ExperienceMapper {
|
|
6
|
-
static mapExperience(entry,
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
static mapExperience(entry, options) {
|
|
9
|
+
const _mapVariant = (options === null || options === void 0 ? void 0 : options.mapVariant) || defaultMapVariant;
|
|
10
|
+
const config = Object.assign({ traffic: 0, distribution: [0.5, 0.5], components: [
|
|
11
|
+
{
|
|
12
|
+
baseline: { id: '' },
|
|
13
|
+
variants: [{ id: '', hidden: false }],
|
|
14
|
+
},
|
|
15
|
+
] }, entry.fields.nt_config);
|
|
16
|
+
const variantReferences = (entry.fields.nt_variants || []).filter((variantReference) => !!variantReference);
|
|
11
17
|
return Object.assign(Object.assign({ id: entry.sys.id, type: entry.fields.nt_type }, (entry.fields.nt_audience
|
|
12
18
|
? {
|
|
13
19
|
audience: AudienceMapper_1.AudienceMapper.mapAudience(entry.fields.nt_audience),
|
|
14
20
|
}
|
|
15
|
-
: {})), { trafficAllocation:
|
|
21
|
+
: {})), { trafficAllocation: config.traffic, distribution: config.distribution.map((percentage, index) => ({
|
|
22
|
+
index,
|
|
23
|
+
start: config.distribution.slice(0, index).reduce((a, b) => a + b, 0),
|
|
24
|
+
end: config.distribution.slice(0, index + 1).reduce((a, b) => a + b, 0),
|
|
25
|
+
})), components: config.components.map((component) => {
|
|
16
26
|
return {
|
|
17
|
-
baseline:
|
|
27
|
+
baseline: component.baseline,
|
|
18
28
|
variants: component.variants
|
|
19
29
|
.map((variant) => {
|
|
20
|
-
|
|
30
|
+
if (variant.hidden) {
|
|
31
|
+
return variant;
|
|
32
|
+
}
|
|
33
|
+
const matchingVariant = variantReferences.find((variantReference) => variantReference.sys.id === variant.id);
|
|
21
34
|
if (!matchingVariant) {
|
|
22
35
|
return null;
|
|
23
36
|
}
|
|
@@ -28,13 +41,14 @@ class ExperienceMapper {
|
|
|
28
41
|
}) });
|
|
29
42
|
}
|
|
30
43
|
static mapExperiment(entry) {
|
|
31
|
-
return
|
|
32
|
-
mapBaseline: () => ({ id: '' }),
|
|
44
|
+
return ExperienceMapper.mapExperience(entry, {
|
|
33
45
|
mapVariant: () => ({ id: '', hidden: false }),
|
|
34
46
|
});
|
|
35
47
|
}
|
|
36
48
|
static mapBaselineWithExperiences(entry) {
|
|
37
|
-
return entry.fields.nt_experiences
|
|
49
|
+
return entry.fields.nt_experiences
|
|
50
|
+
.filter(isEntry_1.isEntry)
|
|
51
|
+
.map((experience) => ExperienceMapper.mapExperience(experience));
|
|
38
52
|
}
|
|
39
53
|
}
|
|
40
54
|
exports.ExperienceMapper = ExperienceMapper;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExperienceMapper.js","sourceRoot":"","sources":["../../../../../../packages/utils/contentful/src/lib/ExperienceMapper.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"ExperienceMapper.js","sourceRoot":"","sources":["../../../../../../packages/utils/contentful/src/lib/ExperienceMapper.ts"],"names":[],"mappings":"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"}
|
package/src/lib/index.d.ts
CHANGED
package/src/lib/index.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ExperienceMapper = exports.AudienceMapper = void 0;
|
|
3
|
+
exports.isEntry = exports.ExperienceMapper = exports.AudienceMapper = void 0;
|
|
4
4
|
var AudienceMapper_1 = require("./AudienceMapper");
|
|
5
5
|
Object.defineProperty(exports, "AudienceMapper", { enumerable: true, get: function () { return AudienceMapper_1.AudienceMapper; } });
|
|
6
6
|
var ExperienceMapper_1 = require("./ExperienceMapper");
|
|
7
7
|
Object.defineProperty(exports, "ExperienceMapper", { enumerable: true, get: function () { return ExperienceMapper_1.ExperienceMapper; } });
|
|
8
|
+
var isEntry_1 = require("./isEntry");
|
|
9
|
+
Object.defineProperty(exports, "isEntry", { enumerable: true, get: function () { return isEntry_1.isEntry; } });
|
|
8
10
|
//# sourceMappingURL=index.js.map
|
package/src/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/utils/contentful/src/lib/index.ts"],"names":[],"mappings":";;;AAAA,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AACvB,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/utils/contentful/src/lib/index.ts"],"names":[],"mappings":";;;AAAA,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AACvB,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB,qCAAoC;AAA3B,kGAAA,OAAO,OAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isEntry = void 0;
|
|
4
|
+
const isEntry = (entry) => {
|
|
5
|
+
return !!(entry === null || entry === void 0 ? void 0 : entry.sys) && !!(entry === null || entry === void 0 ? void 0 : entry.fields);
|
|
6
|
+
};
|
|
7
|
+
exports.isEntry = isEntry;
|
|
8
|
+
//# sourceMappingURL=isEntry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isEntry.js","sourceRoot":"","sources":["../../../../../../packages/utils/contentful/src/lib/isEntry.ts"],"names":[],"mappings":";;;AAEO,MAAM,OAAO,GAAG,CAAC,KAAsB,EAA2B,EAAE;IACzE,OAAO,CAAC,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,GAAG,CAAA,IAAI,CAAC,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,CAAA,CAAC;AACzC,CAAC,CAAC;AAFW,QAAA,OAAO,WAElB"}
|
|
@@ -6,7 +6,7 @@ declare type Config = {
|
|
|
6
6
|
traffic: number;
|
|
7
7
|
components: BaselineWithVariants[];
|
|
8
8
|
};
|
|
9
|
-
declare type
|
|
9
|
+
declare type ExperienceFields<VariantEntry extends Entry<unknown> = Entry<unknown>> = {
|
|
10
10
|
/**
|
|
11
11
|
* The name of the experience (Short Text)
|
|
12
12
|
*/
|
|
@@ -18,7 +18,7 @@ declare type Experiencefields<VariantEntryTypes extends Entry<unknown> = Entry<u
|
|
|
18
18
|
/**
|
|
19
19
|
* The config of the experience (JSON)
|
|
20
20
|
*/
|
|
21
|
-
nt_config
|
|
21
|
+
nt_config?: EntryFields.Object<Config>;
|
|
22
22
|
/**
|
|
23
23
|
* The audience of the experience (Audience)
|
|
24
24
|
*/
|
|
@@ -26,7 +26,7 @@ declare type Experiencefields<VariantEntryTypes extends Entry<unknown> = Entry<u
|
|
|
26
26
|
/**
|
|
27
27
|
* All used variants of the experience (Contentful references to other Content Types)
|
|
28
28
|
*/
|
|
29
|
-
nt_variants
|
|
29
|
+
nt_variants?: VariantEntry[];
|
|
30
30
|
};
|
|
31
|
-
export declare type ExperienceEntry = Entry<
|
|
31
|
+
export declare type ExperienceEntry = Entry<ExperienceFields>;
|
|
32
32
|
export {};
|