@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ninetailed/experience.js-utils-contentful",
3
- "version": "2.0.0-beta.4",
3
+ "version": "2.0.0-beta.40",
4
4
  "type": "commonjs",
5
5
  "main": "./src/index.js",
6
6
  "typings": "./src/index.d.ts"
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,6BAAyD;AAAhD,qGAAA,cAAc,OAAA;AAAE,uGAAA,gBAAgB,OAAA"}
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 { Baseline, Variant, ExperienceConfiguration } from '@ninetailed/experience.js';
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 MapBaseline<BT = Entry<unknown>> = (baseline: BT) => Baseline;
9
- declare type MapExperienceOptions<BT = Entry<unknown>> = {
10
- mapBaseline?: MapBaseline<BT>;
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<BT = Entry<unknown>>(entry: ExperienceEntry, baseline: BT, options?: MapExperienceOptions<BT>): ExperienceConfiguration;
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, baseline, options) {
7
- const _mapBaseline = ((options === null || options === void 0 ? void 0 : options.mapBaseline) ||
8
- ((_baseline) => (Object.assign(Object.assign({}, _baseline), { id: _baseline.sys.id }))));
9
- const _mapVariant = (options === null || options === void 0 ? void 0 : options.mapVariant) ||
10
- ((_variant, { hidden }) => (Object.assign(Object.assign({}, _variant), { id: _variant.sys.id, hidden: hidden })));
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: entry.fields.nt_config.traffic, distribution: entry.fields.nt_config.scatteredDistribution, components: entry.fields.nt_config.components.map((component) => {
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: _mapBaseline(baseline),
27
+ baseline: component.baseline,
18
28
  variants: component.variants
19
29
  .map((variant) => {
20
- const matchingVariant = entry.fields.nt_variants.find((variantReference) => variantReference.sys.id === variant.id);
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 this.mapExperience(entry, null, {
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.map((experience) => this.mapExperience(experience, entry));
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":";;;AASA,qDAAkD;AAalD,MAAa,gBAAgB;IAC3B,MAAM,CAAC,aAAa,CAClB,KAAsB,EACtB,QAAY,EACZ,OAAkC;QAElC,MAAM,YAAY,GAAG,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW;YACxC,CAAC,CAAC,SAAyB,EAAE,EAAE,CAAC,iCAC3B,SAAS,KACZ,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,IACpB,CAAC,CAAoB,CAAC;QAE1B,MAAM,WAAW,GACf,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU;YACnB,CAAC,CAAC,QAAwB,EAAE,EAAE,MAAM,EAAqB,EAAE,EAAE,CAAC,iCACzD,QAAQ,KACX,EAAE,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,EACnB,MAAM,EAAE,MAAM,IACd,CAAC,CAAC;QAEN,qCACE,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,EAChB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,OAAyB,IACzC,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW;YAC1B,CAAC,CAAC;gBACE,QAAQ,EAAE,+BAAc,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC;aAC/D;YACH,CAAC,CAAC,EAAE,CAAC,KACP,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EACjD,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,qBAAqB,EAC1D,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;gBAC9D,OAAO;oBACL,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC;oBAChC,QAAQ,EAAE,SAAS,CAAC,QAAQ;yBACzB,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;wBACf,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CACnD,CAAC,gBAAgB,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAC7D,CAAC;wBAEF,IAAI,CAAC,eAAe,EAAE;4BACpB,OAAO,IAAI,CAAC;yBACb;wBAED,OAAO,WAAW,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;oBAClE,CAAC,CAAC;yBACD,MAAM,CAAC,CAAC,OAAO,EAAsB,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC;iBAC7D,CAAC;YACJ,CAAC,CAAC,IACF;IACJ,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,KAAsB;QACzC,OAAO,IAAI,CAAC,aAAa,CAAO,KAAK,EAAE,IAAI,EAAE;YAC3C,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;YAC/B,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;SAC9C,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,0BAA0B,CAC/B,KAAmC;QAEnC,OAAO,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CACpD,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC,CACtC,CAAC;IACJ,CAAC;CACF;AAjED,4CAiEC"}
1
+ {"version":3,"file":"ExperienceMapper.js","sourceRoot":"","sources":["../../../../../../packages/utils/contentful/src/lib/ExperienceMapper.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  export { AudienceMapper } from './AudienceMapper';
2
2
  export { ExperienceMapper } from './ExperienceMapper';
3
+ export { isEntry } from './isEntry';
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
@@ -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,2 @@
1
+ import { Entry } from 'contentful';
2
+ export declare const isEntry: (entry?: Entry<unknown> | undefined) => entry is Entry<unknown>;
@@ -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 Experiencefields<VariantEntryTypes extends Entry<unknown> = Entry<unknown>> = {
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: EntryFields.Object<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: VariantEntryTypes[];
29
+ nt_variants?: VariantEntry[];
30
30
  };
31
- export declare type ExperienceEntry = Entry<Experiencefields>;
31
+ export declare type ExperienceEntry = Entry<ExperienceFields>;
32
32
  export {};