@nascentdigital/funnel-core 5.0.1 → 5.0.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.
@@ -4,6 +4,7 @@ export type RegionsConfig<TRegion extends string = string> = {
4
4
  fallback: TRegion;
5
5
  urlTruncation: RegionsConfig.UrlTruncation;
6
6
  mergedRoutes?: boolean;
7
+ liveRoutesOnly?: boolean;
7
8
  };
8
9
  export declare namespace RegionsConfig {
9
10
  type RegionConfig = {
@@ -24,6 +25,7 @@ export declare namespace RegionsConfig {
24
25
  function parse<TRegion extends string = string>(regionalization: RegionsConfig, value: string | undefined): TRegion;
25
26
  function getRegionConfig<TRegion extends string = string>(regionalization: RegionsConfig, region: TRegion): RegionConfig;
26
27
  function getLocales<TRegion extends string = string>(regionalization: RegionsConfig): [TRegion, Language][];
28
+ function getLocaleParams<TRegion extends string = string>(regionalization: RegionsConfig): Locale.Params<TRegion>[];
27
29
  function getLanguages(regionalization: RegionsConfig): Language[];
28
30
  /**
29
31
  * Given a config for all regions, return the default region. If the default region is set through cookies, we use
@@ -72,6 +72,11 @@ var RegionsConfig;
72
72
  .filter(utils_1.Value.isDefined);
73
73
  }
74
74
  RegionsConfig.getLocales = getLocales;
75
+ function getLocaleParams(regionalization) {
76
+ return getLocales(regionalization)
77
+ .map(([region, language]) => ({ region: region, language }));
78
+ }
79
+ RegionsConfig.getLocaleParams = getLocaleParams;
75
80
  function getLanguages(regionalization) {
76
81
  return Object.values(regionalization.regions).reduce((languages, regionConfig) => {
77
82
  // add missing languages
@@ -85,7 +85,7 @@ exports.Collection = Collection;
85
85
  (function (Collection) {
86
86
  let Id;
87
87
  (function (Id) {
88
- Id.draft = '__draft';
88
+ Id.draft = '__draft.id__';
89
89
  })(Id = Collection.Id || (Collection.Id = {}));
90
90
  let Data;
91
91
  (function (Data) {
@@ -16,6 +16,7 @@ const LinkedData_1 = require("./LinkedData");
16
16
  // class
17
17
  class LinkedPage {
18
18
  constructor(args) {
19
+ console.debug('[LinkedPage/new] creating with', args);
19
20
  // set instance variables
20
21
  this._data = args.data;
21
22
  this._linkedStore = args.linkedStore;
@@ -76,6 +77,7 @@ class LinkedPage {
76
77
  });
77
78
  }
78
79
  static async create(args) {
80
+ console.debug('[LinkedPage/create] called with', args);
79
81
  // find and resolve all dynamic references
80
82
  const dynamicRefs = LinkedData_1.LinkedData.findDynamicRefs(args.data);
81
83
  const dynamic = await LinkedData_1.LinkedData.resolveDynamicRefs({ dynamicRefs, resolvers: args.resolvers });
@@ -12,6 +12,7 @@ import { PageRoute } from './PageRoute';
12
12
  import type { PageSnapshot } from './PageSnapshot';
13
13
  import { Section } from './Section';
14
14
  import type { Seo } from './Seo';
15
+ import { Tag } from './Tag';
15
16
  import { TagGroup } from './TagGroup';
16
17
  export declare class Page<TContent extends Page.Content = Page.Content, TPreview extends Page.PreviewTarget<TContent> = Page.PreviewTarget<TContent>> {
17
18
  private _type?;
@@ -27,6 +28,7 @@ export declare class Page<TContent extends Page.Content = Page.Content, TPreview
27
28
  readonly parent?: string;
28
29
  private constructor();
29
30
  get type(): Page.Type;
31
+ parseTags(tags: Tag.Data[]): Tag[];
30
32
  bind(type: Page.Type): void;
31
33
  static static<TContent extends Page.Content, TPreview extends Page.PreviewTarget<TContent>>({ route, ...args }: Page.FactoryArgs.Static<TContent, TPreview>): Page<TContent, TPreview>;
32
34
  static dynamic<TContent extends Page.Content, TPreview extends Page.PreviewTarget<TContent>>(args: Page.FactoryArgs.Dynamic<TContent, TPreview>): Page<TContent, TPreview>;
@@ -207,7 +209,7 @@ export declare namespace Page {
207
209
  }
208
210
  type AsNewLanguage<TPage extends Page = Page, TRegion extends string = string> = Pick<LegacyData<TPage, TRegion>, AsNewLanguage.Prop>;
209
211
  namespace AsNewLanguage {
210
- type Prop = Extract<Props.Id, 'brand' | 'groupId' | 'slug' | 'language'>;
212
+ type Prop = Extract<Props.Id, 'brand' | 'groupId' | 'slug' | 'region' | 'language'>;
211
213
  const props: ReadonlyArray<Prop>;
212
214
  function filter<TPage extends Page = Page, TRegion extends string = string>(page: AsNew<TPage, TRegion> | AsNewLanguage<TPage, TRegion>): page is AsNewLanguage<TPage, TRegion>;
213
215
  }
@@ -238,7 +240,6 @@ export declare namespace Page {
238
240
  group: {
239
241
  groupId: GroupId;
240
242
  brand: string;
241
- region: TRegion;
242
243
  type: Type;
243
244
  slug?: string;
244
245
  preset?: string;
@@ -249,7 +250,7 @@ export declare namespace Page {
249
250
  namespace AsGroup {
250
251
  type Instance<TPage extends Page = Page, TRegion extends string = string> = Pick<LegacyData<TPage, TRegion>, Instance.Prop>;
251
252
  namespace Instance {
252
- type Prop = Extract<Props.Id, 'id' | 'name' | 'language' | 'url' | 'slug' | 'tags'> | Exclude<Props.Audit, 'publication'>;
253
+ type Prop = Extract<Props.Id, 'id' | 'name' | 'region' | 'language' | 'url' | 'slug' | 'tags'> | Exclude<Props.Audit, 'publication'>;
253
254
  const props: ReadonlyArray<Prop>;
254
255
  }
255
256
  }
@@ -264,8 +265,8 @@ export declare namespace Page {
264
265
  }
265
266
  type References = {
266
267
  files: Record<Asset.Id, Asset.Linked>;
267
- pages: Record<Page.Id, Data>;
268
268
  collections: Record<Collection.Id, Collection.Data.AsLink>;
269
+ pages: Record<Page.Id, Data>;
269
270
  };
270
271
  type FlattenedData<TPage extends Page = Page, TRegion extends string = string> = References & {
271
272
  data: Data<TPage, TRegion>;
@@ -292,10 +293,9 @@ export declare namespace Page {
292
293
  function from(data: LinkedData): AsPreview;
293
294
  }
294
295
  }
295
- type Id = Tagged<string, 'funnel.Page.Id'> | Id.Draft;
296
+ type Id = Tagged<string, 'funnel.Page.Id'>;
296
297
  namespace Id {
297
- type Draft = '__draft.id__';
298
- const draft: Draft;
298
+ const draft: Id;
299
299
  }
300
300
  type Type = Tagged<string, 'funnel.Page.Type'> | Type.Unknown;
301
301
  namespace Type {
@@ -14,6 +14,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
14
14
  exports.Page = void 0;
15
15
  const errors_1 = require("../errors");
16
16
  const utils_1 = require("../utils");
17
+ const Tag_1 = require("./Tag");
17
18
  // class
18
19
  class Page {
19
20
  // constructor
@@ -43,6 +44,14 @@ class Page {
43
44
  // return id
44
45
  return _type;
45
46
  }
47
+ parseTags(tags) {
48
+ const { tags: tagGroups = [] } = this;
49
+ return (tags !== null && tags !== void 0 ? tags : [])
50
+ .map(tag => Tag_1.Tag.Data.parse(tag))
51
+ .filter(utils_1.Value.isDefined)
52
+ .map(({ tagGroupId, tagId }) => { var _a; return (_a = tagGroups.find(tagGroup => tagGroup.id === tagGroupId)) === null || _a === void 0 ? void 0 : _a.get(tagId); })
53
+ .filter(utils_1.Value.isDefined);
54
+ }
46
55
  bind(type) {
47
56
  // ignore if the type is the same
48
57
  if (this._type === type) {
@@ -109,7 +118,7 @@ exports.Page = Page;
109
118
  })(AsNew = Data.AsNew || (Data.AsNew = {}));
110
119
  let AsNewLanguage;
111
120
  (function (AsNewLanguage) {
112
- AsNewLanguage.props = ['brand', 'groupId', 'slug', 'language'];
121
+ AsNewLanguage.props = ['brand', 'groupId', 'slug', 'region', 'language'];
113
122
  // type guard
114
123
  function filter(page) {
115
124
  return 'groupId' in page;
@@ -161,7 +170,7 @@ exports.Page = Page;
161
170
  let Instance;
162
171
  (function (Instance) {
163
172
  Instance.props = [
164
- 'id', 'name', 'language', 'url', 'slug', 'tags',
173
+ 'id', 'name', 'region', 'language', 'url', 'slug', 'tags',
165
174
  ...Props.audit.filter(prop => prop !== 'publication')
166
175
  ];
167
176
  })(Instance = AsGroup.Instance || (AsGroup.Instance = {}));
@@ -1,9 +1,9 @@
1
1
  import { AspectRatio, Size } from '../../../ui/geometry';
2
2
  import { MimeType } from '../../../ui/MimeType';
3
3
  import { Position } from '../../../ui/Position';
4
- import { Asset } from '../../Asset';
5
- import { AssetScope } from '../../AssetScope';
6
- import { Tag } from '../../Tag';
4
+ import type { Asset } from '../../Asset';
5
+ import type { AssetScope } from '../../AssetScope';
6
+ import type { Tag } from '../../Tag';
7
7
  import { TagGroup } from '../../TagGroup';
8
8
  import { Field } from '../index';
9
9
  export declare class AssetField<TValue extends AssetField.LinkedValue = AssetField.LinkedValue> extends Field<AssetField<TValue>> {
@@ -103,7 +103,7 @@ export declare namespace AssetField {
103
103
  }
104
104
  function filter(value: any): value is LinkedValue;
105
105
  function unlink(value: LinkedValue): Value;
106
- function toData(value: LinkedValue): Field.LinkedData<AssetField>;
106
+ function toData(value: LinkedValue): Asset.Linked<LinkedValue>;
107
107
  }
108
108
  type VisualData = Field.LinkedData<AssetField<LinkedValue.Image | LinkedValue.Video>>;
109
109
  type ImageData = Field.LinkedData<AssetField<LinkedValue.Image>>;
@@ -131,7 +131,11 @@ exports.AssetField = AssetField;
131
131
  return {
132
132
  __ref: 'asset',
133
133
  type: 'asset',
134
- value
134
+ value: {
135
+ id: value.id,
136
+ type: value.type,
137
+ url: value.url
138
+ }
135
139
  };
136
140
  }
137
141
  Value.toData = toData;
@@ -197,6 +201,7 @@ exports.AssetField = AssetField;
197
201
  // serialization
198
202
  function toData(value) {
199
203
  return {
204
+ __root: 'asset',
200
205
  type: 'asset',
201
206
  value
202
207
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nascentdigital/funnel-core",
3
- "version": "5.0.1",
3
+ "version": "5.0.3",
4
4
  "repository": {
5
5
  "url": "git+https://github.com/nascentdigital/funnel.git",
6
6
  "directory": "libs/core"
@@ -65,5 +65,5 @@
65
65
  "jest-tsd": "^0.2.2",
66
66
  "ts-jest": "^29.3.2"
67
67
  },
68
- "gitHead": "6ac66e04e5d6d10b959826b84cf3827422ddf47b"
68
+ "gitHead": "0d1cc7d78504e8819998d928ffb342d622f75690"
69
69
  }