@janbox/contentful-marketplace-sdk 2.0.0 → 3.0.0-alpha.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,163 +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
- market?: EntryFieldTypes.EntryLink<TypeMarketSkeleton>;
19
- locale?: EntryFieldTypes.Symbol;
20
- platform: EntryFieldTypes.Array<EntryFieldTypes.Symbol<"MOBILE" | "WEB">>;
21
- slot: EntryFieldTypes.Symbol;
22
- markets?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<TypeMarketSkeleton>>;
23
- }
24
- export type TypeBannerCollectionSkeleton = EntrySkeletonType<TypeBannerCollectionFields, "bannerCollection">;
25
- 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
+ }
26
20
  export interface TypeBlogCategoryFields {
27
- title: EntryFieldTypes.Symbol;
28
- slug: EntryFieldTypes.Symbol;
29
- description?: EntryFieldTypes.Symbol;
30
- featuredImage?: EntryFieldTypes.AssetLink;
31
- locale?: EntryFieldTypes.Symbol;
32
- seo?: EntryFieldTypes.EntryLink<TypeSeoSkeleton>;
33
- markets?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<TypeMarketSkeleton>>;
34
- }
35
- export type TypeBlogCategorySkeleton = EntrySkeletonType<TypeBlogCategoryFields, "blogCategory">;
36
- 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
+ }
37
29
  export interface TypeBlogCollectionFields {
38
- name: EntryFieldTypes.Symbol;
39
- type: EntryFieldTypes.Symbol<"category" | "manual">;
40
- featuredImage?: EntryFieldTypes.AssetLink;
41
- posts?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<TypeBlogPostSkeleton>>;
42
- category?: EntryFieldTypes.EntryLink<TypeBlogCategorySkeleton>;
43
- markets?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<TypeMarketSkeleton>>;
44
- locale?: EntryFieldTypes.Symbol;
45
- order: EntryFieldTypes.Integer;
46
- }
47
- export type TypeBlogCollectionSkeleton = EntrySkeletonType<TypeBlogCollectionFields, "blogCollection">;
48
- 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
+ }
49
39
  export interface TypeBlogPostFields {
50
- title: EntryFieldTypes.Symbol;
51
- shortDescription?: EntryFieldTypes.Text;
52
- slug: EntryFieldTypes.Symbol;
53
- author?: EntryFieldTypes.EntryLink<TypeAuthorSkeleton>;
54
- featuredImage: EntryFieldTypes.AssetLink;
55
- content: EntryFieldTypes.RichText;
56
- markets?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<TypeMarketSkeleton>>;
57
- locale?: EntryFieldTypes.Symbol;
58
- seo?: EntryFieldTypes.EntryLink<TypeSeoSkeleton>;
59
- categories?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<TypeBlogCategorySkeleton>>;
60
- }
61
- export type TypeBlogPostSkeleton = EntrySkeletonType<TypeBlogPostFields, "blogPost">;
62
- 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
+ }
63
51
  export interface TypeBrandFields {
64
- name: EntryFieldTypes.Symbol;
65
- logo?: EntryFieldTypes.AssetLink;
66
- hyperlink?: EntryFieldTypes.EntryLink<TypeHyperlinkSkeleton>;
52
+ name: string;
53
+ logo?: CmsLink<"Asset">;
54
+ hyperlink?: CmsLink<"Entry">;
67
55
  }
68
- export type TypeBrandSkeleton = EntrySkeletonType<TypeBrandFields, "brand">;
69
- export type TypeBrand<Modifiers extends ChainModifiers, Locales extends LocaleCode = LocaleCode> = Entry<TypeBrandSkeleton, Modifiers, Locales>;
70
56
  export interface TypeBrandCollectionFields {
71
- name: EntryFieldTypes.Symbol;
72
- brands?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<TypeBrandSkeleton>>;
73
- market?: EntryFieldTypes.EntryLink<TypeMarketSkeleton>;
74
- locale?: EntryFieldTypes.Symbol;
75
- slot: EntryFieldTypes.Symbol<"footer">;
76
- markets?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<TypeMarketSkeleton>>;
77
- }
78
- export type TypeBrandCollectionSkeleton = EntrySkeletonType<TypeBrandCollectionFields, "brandCollection">;
79
- 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
+ }
80
64
  export interface TypeDocumentationArticleFields {
81
- title: EntryFieldTypes.Symbol;
82
- slug: EntryFieldTypes.Symbol;
83
- content: EntryFieldTypes.RichText;
84
- author?: EntryFieldTypes.EntryLink<TypeAuthorSkeleton>;
85
- category: EntryFieldTypes.EntryLink<TypeDocumentationCategorySkeleton>;
86
- market?: EntryFieldTypes.EntryLink<TypeMarketSkeleton>;
87
- locale?: EntryFieldTypes.Symbol;
88
- seo?: EntryFieldTypes.EntryLink<TypeSeoSkeleton>;
89
- markets?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<TypeMarketSkeleton>>;
90
- }
91
- export type TypeDocumentationArticleSkeleton = EntrySkeletonType<TypeDocumentationArticleFields, "documentationArticle">;
92
- 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
+ }
93
75
  export interface TypeDocumentationCategoryFields {
94
- title: EntryFieldTypes.Symbol;
95
- slug: EntryFieldTypes.Symbol;
96
- description?: EntryFieldTypes.Symbol;
97
- order?: EntryFieldTypes.Integer;
98
- market?: EntryFieldTypes.EntryLink<TypeMarketSkeleton>;
99
- locale?: EntryFieldTypes.Symbol;
100
- seo?: EntryFieldTypes.EntryLink<TypeSeoSkeleton>;
101
- markets?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<TypeMarketSkeleton>>;
102
- }
103
- export type TypeDocumentationCategorySkeleton = EntrySkeletonType<TypeDocumentationCategoryFields, "documentationCategory">;
104
- 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
+ }
105
85
  export interface TypeHyperlinkFields {
106
- label: EntryFieldTypes.Symbol;
107
- url: EntryFieldTypes.Symbol;
108
- target: EntryFieldTypes.Symbol<"_blank" | "_self">;
109
- marketHandling: EntryFieldTypes.Symbol<"auto" | "manual">;
86
+ label: string;
87
+ url: string;
88
+ target: "_blank" | "_self";
89
+ marketHandling: "auto" | "manual";
110
90
  }
111
- export type TypeHyperlinkSkeleton = EntrySkeletonType<TypeHyperlinkFields, "hyperlink">;
112
- export type TypeHyperlink<Modifiers extends ChainModifiers, Locales extends LocaleCode = LocaleCode> = Entry<TypeHyperlinkSkeleton, Modifiers, Locales>;
113
91
  export interface TypeHyperlinkCollectionFields {
114
- name: EntryFieldTypes.Symbol;
115
- links?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<TypeHyperlinkSkeleton>>;
116
- market?: EntryFieldTypes.EntryLink<TypeMarketSkeleton>;
117
- locale?: EntryFieldTypes.Symbol;
118
- slot: EntryFieldTypes.Symbol<"footer">;
119
- order: EntryFieldTypes.Integer;
120
- markets?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<TypeMarketSkeleton>>;
121
- }
122
- export type TypeHyperlinkCollectionSkeleton = EntrySkeletonType<TypeHyperlinkCollectionFields, "hyperlinkCollection">;
123
- 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
+ }
124
100
  export interface TypeKeywordCollectionFields {
125
- name: EntryFieldTypes.Symbol;
126
- keywords?: EntryFieldTypes.Array<EntryFieldTypes.Symbol>;
127
- market?: EntryFieldTypes.EntryLink<TypeMarketSkeleton>;
128
- locale?: EntryFieldTypes.Symbol;
129
- slot: EntryFieldTypes.Symbol<"footer">;
130
- markets?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<TypeMarketSkeleton>>;
131
- }
132
- export type TypeKeywordCollectionSkeleton = EntrySkeletonType<TypeKeywordCollectionFields, "keywordCollection">;
133
- 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
+ }
134
108
  export interface TypeLanguageFields {
135
- name: EntryFieldTypes.Symbol;
136
- code: EntryFieldTypes.Symbol;
109
+ name: string;
110
+ code: string;
137
111
  }
138
- export type TypeLanguageSkeleton = EntrySkeletonType<TypeLanguageFields, "language">;
139
- export type TypeLanguage<Modifiers extends ChainModifiers, Locales extends LocaleCode = LocaleCode> = Entry<TypeLanguageSkeleton, Modifiers, Locales>;
140
112
  export interface TypeMarketFields {
141
- name: EntryFieldTypes.Symbol;
142
- code: EntryFieldTypes.Symbol;
113
+ name: string;
114
+ code: string;
143
115
  }
144
- export type TypeMarketSkeleton = EntrySkeletonType<TypeMarketFields, "market">;
145
- export type TypeMarket<Modifiers extends ChainModifiers, Locales extends LocaleCode = LocaleCode> = Entry<TypeMarketSkeleton, Modifiers, Locales>;
146
116
  export interface TypeNoticeFields {
147
- title: EntryFieldTypes.Symbol;
148
- content: EntryFieldTypes.RichText;
149
- market?: EntryFieldTypes.EntryLink<TypeMarketSkeleton>;
150
- locale?: EntryFieldTypes.Symbol;
151
- variant?: EntryFieldTypes.Array<EntryFieldTypes.Symbol<"Featured" | "Promotion" | "Urgent">>;
152
- markets?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<TypeMarketSkeleton>>;
153
- }
154
- export type TypeNoticeSkeleton = EntrySkeletonType<TypeNoticeFields, "notice">;
155
- 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
+ }
123
+ export interface TypePolicyAndTermsFields {
124
+ title: string;
125
+ content?: Document;
126
+ locale?: string;
127
+ markets?: CmsLink<"Entry">[];
128
+ }
156
129
  export interface TypeSeoFields {
157
- metaTitle: EntryFieldTypes.Symbol;
158
- metaDescription?: EntryFieldTypes.Text;
159
- metaKeywords?: EntryFieldTypes.Array<EntryFieldTypes.Symbol>;
160
- metaRobots?: EntryFieldTypes.Array<EntryFieldTypes.Symbol<"follow" | "index" | "nofollow" | "noindex">>;
130
+ metaTitle: string;
131
+ metaDescription?: string;
132
+ metaKeywords?: string[];
133
+ metaRobots?: ("follow" | "index" | "nofollow" | "noindex")[];
161
134
  }
162
- export type TypeSeoSkeleton = EntrySkeletonType<TypeSeoFields, "seo">;
163
- 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.0",
3
+ "version": "3.0.0-alpha.0",
4
4
  "main": "./dist/index.cjs",
5
5
  "module": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -16,9 +16,6 @@
16
16
  },
17
17
  "type": "module",
18
18
  "sideEffects": false,
19
- "devDependencies": {
20
- "contentful": "^11.7.17"
21
- },
22
19
  "scripts": {
23
20
  "dev": "vite",
24
21
  "build": "tsc -p tsconfig.build.json && vite build",
@@ -26,5 +23,8 @@
26
23
  "test": "vitest",
27
24
  "test:ui": "vitest --ui",
28
25
  "test:coverage": "vitest --coverage"
26
+ },
27
+ "dependencies": {
28
+ "@contentful/rich-text-types": "^16.8.5"
29
29
  }
30
- }
30
+ }