@janbox/contentful-marketplace-sdk 2.0.1 → 3.0.0

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.
@@ -0,0 +1,61 @@
1
+ export type CmsLink<T extends "Entry" | "Asset" = "Entry" | "Asset"> = {
2
+ sys: {
3
+ type: "Link";
4
+ linkType: T;
5
+ id: string;
6
+ };
7
+ };
8
+ export interface CmsEntry<F extends object = object> {
9
+ sys: {
10
+ id: string;
11
+ type: "Entry";
12
+ createdAt: string;
13
+ updatedAt: string;
14
+ contentType: {
15
+ sys: {
16
+ type: "Link";
17
+ linkType: "ContentType";
18
+ id: string;
19
+ };
20
+ };
21
+ };
22
+ fields: Partial<F>;
23
+ }
24
+ export interface CmsAsset {
25
+ sys: {
26
+ id: string;
27
+ type: "Asset";
28
+ createdAt: string;
29
+ updatedAt: string;
30
+ };
31
+ fields: {
32
+ title?: string;
33
+ description?: string;
34
+ file?: {
35
+ url: string;
36
+ fileName: string;
37
+ contentType: string;
38
+ details: {
39
+ size: number;
40
+ image?: {
41
+ width: number;
42
+ height: number;
43
+ };
44
+ };
45
+ };
46
+ };
47
+ }
48
+ export interface CmsCollection<T> {
49
+ sys: {
50
+ type: "Array";
51
+ };
52
+ total: number;
53
+ skip: number;
54
+ limit: number;
55
+ items: T[];
56
+ includes?: {
57
+ Entry?: CmsEntry[];
58
+ Asset?: CmsAsset[];
59
+ };
60
+ errors?: unknown[];
61
+ }
@@ -1,169 +1,134 @@
1
- import { ChainModifiers, Entry, EntryFieldTypes, EntrySkeletonType, LocaleCode } from 'contentful';
1
+ import { Document } from '@contentful/rich-text-types';
2
+ import { CmsLink } from './cms';
2
3
  export interface TypeAuthorFields {
3
- name: EntryFieldTypes.Symbol;
4
- avatar?: EntryFieldTypes.AssetLink;
4
+ name: string;
5
+ avatar?: CmsLink<"Asset">;
5
6
  }
6
- export type TypeAuthorSkeleton = EntrySkeletonType<TypeAuthorFields, "author">;
7
- export type TypeAuthor<Modifiers extends ChainModifiers, Locales extends LocaleCode = LocaleCode> = Entry<TypeAuthorSkeleton, Modifiers, Locales>;
8
7
  export interface TypeBannerFields {
9
- name: EntryFieldTypes.Symbol;
10
- hyperlink?: EntryFieldTypes.EntryLink<TypeHyperlinkSkeleton>;
11
- media: EntryFieldTypes.AssetLink;
8
+ name: string;
9
+ hyperlink?: CmsLink<"Entry">;
10
+ media: CmsLink<"Asset">;
12
11
  }
13
- export type TypeBannerSkeleton = EntrySkeletonType<TypeBannerFields, "banner">;
14
- export type TypeBanner<Modifiers extends ChainModifiers, Locales extends LocaleCode = LocaleCode> = Entry<TypeBannerSkeleton, Modifiers, Locales>;
15
12
  export interface TypeBannerCollectionFields {
16
- name: EntryFieldTypes.Symbol;
17
- banners?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<TypeBannerSkeleton>>;
18
- locale?: EntryFieldTypes.Symbol;
19
- platform: EntryFieldTypes.Array<EntryFieldTypes.Symbol<"MOBILE" | "WEB">>;
20
- slot: EntryFieldTypes.Symbol;
21
- markets?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<TypeMarketSkeleton>>;
22
- }
23
- export type TypeBannerCollectionSkeleton = EntrySkeletonType<TypeBannerCollectionFields, "bannerCollection">;
24
- export type TypeBannerCollection<Modifiers extends ChainModifiers, Locales extends LocaleCode = LocaleCode> = Entry<TypeBannerCollectionSkeleton, Modifiers, Locales>;
13
+ name: string;
14
+ banners?: CmsLink<"Entry">[];
15
+ locale?: string;
16
+ platform: ("MOBILE" | "WEB")[];
17
+ slot: string;
18
+ markets?: CmsLink<"Entry">[];
19
+ }
25
20
  export interface TypeBlogCategoryFields {
26
- title: EntryFieldTypes.Symbol;
27
- slug: EntryFieldTypes.Symbol;
28
- description?: EntryFieldTypes.Symbol;
29
- featuredImage?: EntryFieldTypes.AssetLink;
30
- locale?: EntryFieldTypes.Symbol;
31
- seo?: EntryFieldTypes.EntryLink<TypeSeoSkeleton>;
32
- markets?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<TypeMarketSkeleton>>;
33
- }
34
- export type TypeBlogCategorySkeleton = EntrySkeletonType<TypeBlogCategoryFields, "blogCategory">;
35
- export type TypeBlogCategory<Modifiers extends ChainModifiers, Locales extends LocaleCode = LocaleCode> = Entry<TypeBlogCategorySkeleton, Modifiers, Locales>;
21
+ title: string;
22
+ slug: string;
23
+ description?: string;
24
+ featuredImage?: CmsLink<"Asset">;
25
+ locale?: string;
26
+ seo?: CmsLink<"Entry">;
27
+ markets?: CmsLink<"Entry">[];
28
+ }
36
29
  export interface TypeBlogCollectionFields {
37
- name: EntryFieldTypes.Symbol;
38
- type: EntryFieldTypes.Symbol<"category" | "manual">;
39
- featuredImage?: EntryFieldTypes.AssetLink;
40
- posts?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<TypeBlogPostSkeleton>>;
41
- category?: EntryFieldTypes.EntryLink<TypeBlogCategorySkeleton>;
42
- markets?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<TypeMarketSkeleton>>;
43
- locale?: EntryFieldTypes.Symbol;
44
- order: EntryFieldTypes.Integer;
45
- }
46
- export type TypeBlogCollectionSkeleton = EntrySkeletonType<TypeBlogCollectionFields, "blogCollection">;
47
- export type TypeBlogCollection<Modifiers extends ChainModifiers, Locales extends LocaleCode = LocaleCode> = Entry<TypeBlogCollectionSkeleton, Modifiers, Locales>;
30
+ name: string;
31
+ type: "category" | "manual";
32
+ featuredImage?: CmsLink<"Asset">;
33
+ posts?: CmsLink<"Entry">[];
34
+ category?: CmsLink<"Entry">;
35
+ markets?: CmsLink<"Entry">[];
36
+ locale?: string;
37
+ order: number;
38
+ }
48
39
  export interface TypeBlogPostFields {
49
- title: EntryFieldTypes.Symbol;
50
- shortDescription?: EntryFieldTypes.Text;
51
- slug: EntryFieldTypes.Symbol;
52
- author?: EntryFieldTypes.EntryLink<TypeAuthorSkeleton>;
53
- featuredImage: EntryFieldTypes.AssetLink;
54
- content: EntryFieldTypes.RichText;
55
- markets?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<TypeMarketSkeleton>>;
56
- locale?: EntryFieldTypes.Symbol;
57
- seo?: EntryFieldTypes.EntryLink<TypeSeoSkeleton>;
58
- categories?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<TypeBlogCategorySkeleton>>;
59
- }
60
- export type TypeBlogPostSkeleton = EntrySkeletonType<TypeBlogPostFields, "blogPost">;
61
- export type TypeBlogPost<Modifiers extends ChainModifiers, Locales extends LocaleCode = LocaleCode> = Entry<TypeBlogPostSkeleton, Modifiers, Locales>;
40
+ title: string;
41
+ shortDescription?: string;
42
+ slug: string;
43
+ author?: CmsLink<"Entry">;
44
+ featuredImage: CmsLink<"Asset">;
45
+ content: Document;
46
+ markets?: CmsLink<"Entry">[];
47
+ locale?: string;
48
+ seo?: CmsLink<"Entry">;
49
+ categories?: CmsLink<"Entry">[];
50
+ }
62
51
  export interface TypeBrandFields {
63
- name: EntryFieldTypes.Symbol;
64
- logo?: EntryFieldTypes.AssetLink;
65
- hyperlink?: EntryFieldTypes.EntryLink<TypeHyperlinkSkeleton>;
52
+ name: string;
53
+ logo?: CmsLink<"Asset">;
54
+ hyperlink?: CmsLink<"Entry">;
66
55
  }
67
- export type TypeBrandSkeleton = EntrySkeletonType<TypeBrandFields, "brand">;
68
- export type TypeBrand<Modifiers extends ChainModifiers, Locales extends LocaleCode = LocaleCode> = Entry<TypeBrandSkeleton, Modifiers, Locales>;
69
56
  export interface TypeBrandCollectionFields {
70
- name: EntryFieldTypes.Symbol;
71
- brands?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<TypeBrandSkeleton>>;
72
- market?: EntryFieldTypes.EntryLink<TypeMarketSkeleton>;
73
- locale?: EntryFieldTypes.Symbol;
74
- slot: EntryFieldTypes.Symbol<"footer">;
75
- markets?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<TypeMarketSkeleton>>;
76
- }
77
- export type TypeBrandCollectionSkeleton = EntrySkeletonType<TypeBrandCollectionFields, "brandCollection">;
78
- export type TypeBrandCollection<Modifiers extends ChainModifiers, Locales extends LocaleCode = LocaleCode> = Entry<TypeBrandCollectionSkeleton, Modifiers, Locales>;
57
+ name: string;
58
+ brands?: CmsLink<"Entry">[];
59
+ market?: CmsLink<"Entry">;
60
+ locale?: string;
61
+ slot: "footer";
62
+ markets?: CmsLink<"Entry">[];
63
+ }
79
64
  export interface TypeDocumentationArticleFields {
80
- title: EntryFieldTypes.Symbol;
81
- slug: EntryFieldTypes.Symbol;
82
- content: EntryFieldTypes.RichText;
83
- author?: EntryFieldTypes.EntryLink<TypeAuthorSkeleton>;
84
- category: EntryFieldTypes.EntryLink<TypeDocumentationCategorySkeleton>;
85
- market?: EntryFieldTypes.EntryLink<TypeMarketSkeleton>;
86
- locale?: EntryFieldTypes.Symbol;
87
- seo?: EntryFieldTypes.EntryLink<TypeSeoSkeleton>;
88
- markets?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<TypeMarketSkeleton>>;
89
- }
90
- export type TypeDocumentationArticleSkeleton = EntrySkeletonType<TypeDocumentationArticleFields, "documentationArticle">;
91
- export type TypeDocumentationArticle<Modifiers extends ChainModifiers, Locales extends LocaleCode = LocaleCode> = Entry<TypeDocumentationArticleSkeleton, Modifiers, Locales>;
65
+ title: string;
66
+ slug: string;
67
+ content: Document;
68
+ author?: CmsLink<"Entry">;
69
+ category: CmsLink<"Entry">;
70
+ market?: CmsLink<"Entry">;
71
+ locale?: string;
72
+ seo?: CmsLink<"Entry">;
73
+ markets?: CmsLink<"Entry">[];
74
+ }
92
75
  export interface TypeDocumentationCategoryFields {
93
- title: EntryFieldTypes.Symbol;
94
- slug: EntryFieldTypes.Symbol;
95
- description?: EntryFieldTypes.Symbol;
96
- order?: EntryFieldTypes.Integer;
97
- market?: EntryFieldTypes.EntryLink<TypeMarketSkeleton>;
98
- locale?: EntryFieldTypes.Symbol;
99
- seo?: EntryFieldTypes.EntryLink<TypeSeoSkeleton>;
100
- markets?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<TypeMarketSkeleton>>;
101
- }
102
- export type TypeDocumentationCategorySkeleton = EntrySkeletonType<TypeDocumentationCategoryFields, "documentationCategory">;
103
- export type TypeDocumentationCategory<Modifiers extends ChainModifiers, Locales extends LocaleCode = LocaleCode> = Entry<TypeDocumentationCategorySkeleton, Modifiers, Locales>;
76
+ title: string;
77
+ slug: string;
78
+ description?: string;
79
+ order?: number;
80
+ market?: CmsLink<"Entry">;
81
+ locale?: string;
82
+ seo?: CmsLink<"Entry">;
83
+ markets?: CmsLink<"Entry">[];
84
+ }
104
85
  export interface TypeHyperlinkFields {
105
- label: EntryFieldTypes.Symbol;
106
- url: EntryFieldTypes.Symbol;
107
- target: EntryFieldTypes.Symbol<"_blank" | "_self">;
108
- marketHandling: EntryFieldTypes.Symbol<"auto" | "manual">;
86
+ label: string;
87
+ url: string;
88
+ target: "_blank" | "_self";
89
+ marketHandling: "auto" | "manual";
109
90
  }
110
- export type TypeHyperlinkSkeleton = EntrySkeletonType<TypeHyperlinkFields, "hyperlink">;
111
- export type TypeHyperlink<Modifiers extends ChainModifiers, Locales extends LocaleCode = LocaleCode> = Entry<TypeHyperlinkSkeleton, Modifiers, Locales>;
112
91
  export interface TypeHyperlinkCollectionFields {
113
- name: EntryFieldTypes.Symbol;
114
- links?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<TypeHyperlinkSkeleton>>;
115
- market?: EntryFieldTypes.EntryLink<TypeMarketSkeleton>;
116
- locale?: EntryFieldTypes.Symbol;
117
- slot: EntryFieldTypes.Symbol<"footer">;
118
- order: EntryFieldTypes.Integer;
119
- markets?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<TypeMarketSkeleton>>;
120
- }
121
- export type TypeHyperlinkCollectionSkeleton = EntrySkeletonType<TypeHyperlinkCollectionFields, "hyperlinkCollection">;
122
- export type TypeHyperlinkCollection<Modifiers extends ChainModifiers, Locales extends LocaleCode = LocaleCode> = Entry<TypeHyperlinkCollectionSkeleton, Modifiers, Locales>;
92
+ name: string;
93
+ links?: CmsLink<"Entry">[];
94
+ market?: CmsLink<"Entry">;
95
+ locale?: string;
96
+ slot: "footer";
97
+ order: number;
98
+ markets?: CmsLink<"Entry">[];
99
+ }
123
100
  export interface TypeKeywordCollectionFields {
124
- name: EntryFieldTypes.Symbol;
125
- keywords?: EntryFieldTypes.Array<EntryFieldTypes.Symbol>;
126
- market?: EntryFieldTypes.EntryLink<TypeMarketSkeleton>;
127
- locale?: EntryFieldTypes.Symbol;
128
- slot: EntryFieldTypes.Symbol<"footer">;
129
- markets?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<TypeMarketSkeleton>>;
130
- }
131
- export type TypeKeywordCollectionSkeleton = EntrySkeletonType<TypeKeywordCollectionFields, "keywordCollection">;
132
- export type TypeKeywordCollection<Modifiers extends ChainModifiers, Locales extends LocaleCode = LocaleCode> = Entry<TypeKeywordCollectionSkeleton, Modifiers, Locales>;
101
+ name: string;
102
+ keywords?: string[];
103
+ market?: CmsLink<"Entry">;
104
+ locale?: string;
105
+ slot: "footer";
106
+ markets?: CmsLink<"Entry">[];
107
+ }
133
108
  export interface TypeLanguageFields {
134
- name: EntryFieldTypes.Symbol;
135
- code: EntryFieldTypes.Symbol;
109
+ name: string;
110
+ code: string;
136
111
  }
137
- export type TypeLanguageSkeleton = EntrySkeletonType<TypeLanguageFields, "language">;
138
- export type TypeLanguage<Modifiers extends ChainModifiers, Locales extends LocaleCode = LocaleCode> = Entry<TypeLanguageSkeleton, Modifiers, Locales>;
139
112
  export interface TypeMarketFields {
140
- name: EntryFieldTypes.Symbol;
141
- code: EntryFieldTypes.Symbol;
113
+ name: string;
114
+ code: string;
142
115
  }
143
- export type TypeMarketSkeleton = EntrySkeletonType<TypeMarketFields, "market">;
144
- export type TypeMarket<Modifiers extends ChainModifiers, Locales extends LocaleCode = LocaleCode> = Entry<TypeMarketSkeleton, Modifiers, Locales>;
145
116
  export interface TypeNoticeFields {
146
- title: EntryFieldTypes.Symbol;
147
- content: EntryFieldTypes.RichText;
148
- locale?: EntryFieldTypes.Symbol;
149
- variant?: EntryFieldTypes.Array<EntryFieldTypes.Symbol<"featured" | "promotion" | "urgent">>;
150
- markets?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<TypeMarketSkeleton>>;
151
- }
152
- export type TypeNoticeSkeleton = EntrySkeletonType<TypeNoticeFields, "notice">;
153
- export type TypeNotice<Modifiers extends ChainModifiers, Locales extends LocaleCode = LocaleCode> = Entry<TypeNoticeSkeleton, Modifiers, Locales>;
117
+ title: string;
118
+ content: Document;
119
+ locale?: string;
120
+ variant?: ("featured" | "promotion" | "urgent")[];
121
+ markets?: CmsLink<"Entry">[];
122
+ }
154
123
  export interface TypePolicyAndTermsFields {
155
- title: EntryFieldTypes.Symbol;
156
- content?: EntryFieldTypes.RichText;
157
- locale?: EntryFieldTypes.Symbol;
158
- markets?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<TypeMarketSkeleton>>;
124
+ title: string;
125
+ content?: Document;
126
+ locale?: string;
127
+ markets?: CmsLink<"Entry">[];
159
128
  }
160
- export type TypePolicyAndTermsSkeleton = EntrySkeletonType<TypePolicyAndTermsFields, "policyAndTerms">;
161
- export type TypePolicyAndTerms<Modifiers extends ChainModifiers, Locales extends LocaleCode = LocaleCode> = Entry<TypePolicyAndTermsSkeleton, Modifiers, Locales>;
162
129
  export interface TypeSeoFields {
163
- metaTitle: EntryFieldTypes.Symbol;
164
- metaDescription?: EntryFieldTypes.Text;
165
- metaKeywords?: EntryFieldTypes.Array<EntryFieldTypes.Symbol>;
166
- metaRobots?: EntryFieldTypes.Array<EntryFieldTypes.Symbol<"follow" | "index" | "nofollow" | "noindex">>;
130
+ metaTitle: string;
131
+ metaDescription?: string;
132
+ metaKeywords?: string[];
133
+ metaRobots?: ("follow" | "index" | "nofollow" | "noindex")[];
167
134
  }
168
- export type TypeSeoSkeleton = EntrySkeletonType<TypeSeoFields, "seo">;
169
- export type TypeSeo<Modifiers extends ChainModifiers, Locales extends LocaleCode = LocaleCode> = Entry<TypeSeoSkeleton, Modifiers, Locales>;
@@ -1,4 +1,4 @@
1
- import { EntrySys } from 'contentful';
1
+ export * from './cms';
2
2
  export * from './content-model';
3
3
  export type GraphQLAsset = {
4
4
  url: string;
@@ -7,5 +7,7 @@ export type GraphQLAsset = {
7
7
  contentType: string;
8
8
  };
9
9
  export type GraphQLAssetLink = GraphQLAsset & {
10
- sys: Pick<EntrySys, "id">;
10
+ sys: {
11
+ id: string;
12
+ };
11
13
  };
@@ -0,0 +1,17 @@
1
+ export type QueryParams = Record<string, string | number | undefined>;
2
+ export declare const DEFAULT_ORDER = "-sys.updatedAt";
3
+ export declare const marketFilter: (marketCode?: string) => QueryParams;
4
+ export declare const localeFilter: (locale?: string) => QueryParams;
5
+ export declare const detailFilter: ({ id, slug }: {
6
+ id?: string;
7
+ slug?: string;
8
+ }) => QueryParams;
9
+ export declare const paging: (page: number, size: number, extraSkip?: number) => {
10
+ page: number;
11
+ size: number;
12
+ params: {
13
+ limit: number;
14
+ skip: number;
15
+ };
16
+ };
17
+ export declare const toSearchParams: (params: QueryParams) => URLSearchParams;
@@ -0,0 +1,31 @@
1
+ import { Document } from '@contentful/rich-text-types';
2
+ import { HyperlinkGraphQLItem } from '../entries/hyperlink';
3
+ import { GraphQLSeo } from '../entries/seo';
4
+ import { CmsAsset, CmsCollection, CmsEntry, CmsLink, GraphQLAsset, GraphQLAssetLink, TypeAuthorFields, TypeHyperlinkFields, TypeSeoFields } from '../types';
5
+ export type Resolver = {
6
+ entry<F extends object>(link?: CmsLink): CmsEntry<F> | null;
7
+ asset(link?: CmsLink): CmsAsset | null;
8
+ entries<F extends object>(links?: CmsLink[]): CmsEntry<F>[];
9
+ };
10
+ export type RichText = {
11
+ json: Document;
12
+ links: {
13
+ assets: {
14
+ block: GraphQLAssetLink[];
15
+ };
16
+ };
17
+ };
18
+ export declare const createResolver: (collection: CmsCollection<CmsEntry>) => Resolver;
19
+ export declare const orNull: <T>(value: T | undefined) => T | null;
20
+ export declare const toAsset: (asset: CmsAsset | null) => GraphQLAsset | null;
21
+ export declare const toAssetLink: (asset: CmsAsset) => GraphQLAssetLink & {
22
+ title: string | null;
23
+ description: string | null;
24
+ };
25
+ export declare const toRichText: (document: Document | undefined, resolver: Resolver) => RichText | null;
26
+ export declare const toSeo: (entry: CmsEntry<TypeSeoFields> | null) => GraphQLSeo | null;
27
+ export declare const toHyperlinkItem: (entry: CmsEntry<TypeHyperlinkFields> | null) => HyperlinkGraphQLItem | null;
28
+ export declare const toAuthorItem: (entry: CmsEntry<TypeAuthorFields> | null, resolver: Resolver) => {
29
+ name: string;
30
+ avatar: GraphQLAsset | null;
31
+ } | null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@janbox/contentful-marketplace-sdk",
3
- "version": "2.0.1",
3
+ "version": "3.0.0",
4
4
  "main": "./dist/index.cjs",
5
5
  "module": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -16,8 +16,8 @@
16
16
  },
17
17
  "type": "module",
18
18
  "sideEffects": false,
19
- "devDependencies": {
20
- "contentful": "^11.7.17"
19
+ "dependencies": {
20
+ "@contentful/rich-text-types": "^16.8.5"
21
21
  },
22
22
  "scripts": {
23
23
  "dev": "vite",