@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.
- package/dist/app/RegionsConfig.d.ts +2 -0
- package/dist/app/RegionsConfig.js +5 -0
- package/dist/schema/Collection.js +1 -1
- package/dist/schema/LinkedPage.js +2 -0
- package/dist/schema/Page.d.ts +7 -7
- package/dist/schema/Page.js +11 -2
- package/dist/schema/field/base/AssetField.d.ts +4 -4
- package/dist/schema/field/base/AssetField.js +6 -1
- package/package.json +2 -2
|
@@ -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
|
|
@@ -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 });
|
package/dist/schema/Page.d.ts
CHANGED
|
@@ -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'
|
|
296
|
+
type Id = Tagged<string, 'funnel.Page.Id'>;
|
|
296
297
|
namespace Id {
|
|
297
|
-
|
|
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 {
|
package/dist/schema/Page.js
CHANGED
|
@@ -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):
|
|
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.
|
|
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": "
|
|
68
|
+
"gitHead": "0d1cc7d78504e8819998d928ffb342d622f75690"
|
|
69
69
|
}
|