@stackbit/cms-contentstack 0.2.9-staging.2 → 0.2.10-develop.2
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/.tsbuildinfo +1 -1
- package/dist/contentstack-api-client.d.ts +30 -5
- package/dist/contentstack-api-client.d.ts.map +1 -1
- package/dist/contentstack-api-client.js +67 -53
- package/dist/contentstack-api-client.js.map +1 -1
- package/dist/contentstack-content-source.d.ts +5 -3
- package/dist/contentstack-content-source.d.ts.map +1 -1
- package/dist/contentstack-content-source.js +49 -13
- package/dist/contentstack-content-source.js.map +1 -1
- package/package.json +4 -4
- package/src/contentstack-api-client.ts +103 -59
- package/src/contentstack-content-source.ts +53 -16
|
@@ -1,25 +1,50 @@
|
|
|
1
1
|
import * as contentstack from '@contentstack/management';
|
|
2
|
+
import { TaskQueue } from '@stackbit/utils';
|
|
2
3
|
import type { Document, Logger } from '@stackbit/types';
|
|
3
4
|
import type { EntryData } from '@contentstack/management/types/stack/contentType/entry';
|
|
4
5
|
import type { Queryable } from '@contentstack/management/types/utility/operations';
|
|
5
6
|
import { Stack, User, ContentType, GlobalField, Entry, Asset, ContentStackLocale, Environment, Webhook, Extension } from './contentstack-types';
|
|
6
|
-
interface
|
|
7
|
+
export interface UserContext {
|
|
8
|
+
accessToken: string;
|
|
9
|
+
refreshToken: string;
|
|
10
|
+
}
|
|
11
|
+
interface ContentstackAuthToken {
|
|
12
|
+
authtoken: string;
|
|
13
|
+
accessToken?: never;
|
|
14
|
+
refreshToken?: never;
|
|
15
|
+
}
|
|
16
|
+
type ClientAuthOptions = ContentstackAuthToken | (UserContext & {
|
|
17
|
+
authtoken?: never;
|
|
18
|
+
});
|
|
19
|
+
interface BaseClientInitOptions {
|
|
7
20
|
apiKey: string;
|
|
8
|
-
managementToken: string;
|
|
9
21
|
branch?: string;
|
|
10
22
|
apiHost?: string;
|
|
23
|
+
taskQueue: TaskQueue;
|
|
11
24
|
logger: Logger;
|
|
12
25
|
}
|
|
26
|
+
interface ClientInitOptionsWithManagementToken extends BaseClientInitOptions {
|
|
27
|
+
managementToken: string;
|
|
28
|
+
userContext?: never;
|
|
29
|
+
}
|
|
30
|
+
type ClientInitOptionsWithOAuthTokens = BaseClientInitOptions & {
|
|
31
|
+
userContext: UserContext;
|
|
32
|
+
managementToken?: never;
|
|
33
|
+
};
|
|
34
|
+
type ClientInitOptions = ClientInitOptionsWithManagementToken | ClientInitOptionsWithOAuthTokens;
|
|
13
35
|
export declare class ContentStackClient {
|
|
14
|
-
private readonly
|
|
36
|
+
private readonly _client;
|
|
37
|
+
private readonly stack;
|
|
15
38
|
private readonly apiKey;
|
|
16
39
|
private readonly branch?;
|
|
17
40
|
private readonly apiHost?;
|
|
18
41
|
private logger;
|
|
19
42
|
private taskQueue;
|
|
20
|
-
|
|
21
|
-
|
|
43
|
+
private readonly isUser;
|
|
44
|
+
constructor({ apiKey, managementToken, userContext, branch, apiHost, taskQueue, logger }: ClientInitOptions);
|
|
45
|
+
createContentstackClient(authOptions?: ClientAuthOptions): contentstack.ContentstackClient;
|
|
22
46
|
getStack(authtoken: string): Promise<Stack>;
|
|
47
|
+
getUser(): Promise<User | undefined>;
|
|
23
48
|
getUsers(authtoken: string): Promise<User[]>;
|
|
24
49
|
getEnvironments(): Promise<Environment[]>;
|
|
25
50
|
getContentTypes(): Promise<ContentType[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contentstack-api-client.d.ts","sourceRoot":"","sources":["../src/contentstack-api-client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,YAAY,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"contentstack-api-client.d.ts","sourceRoot":"","sources":["../src/contentstack-api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,48 +30,23 @@ exports.ContentStackClient = void 0;
|
|
|
30
30
|
const lodash_1 = __importDefault(require("lodash"));
|
|
31
31
|
const url_1 = require("url");
|
|
32
32
|
const contentstack = __importStar(require("@contentstack/management"));
|
|
33
|
-
const utils_1 = require("@stackbit/utils");
|
|
34
33
|
class ContentStackClient {
|
|
35
|
-
constructor({ apiKey, managementToken, branch, apiHost, logger }) {
|
|
36
|
-
this.taskQueue =
|
|
37
|
-
// 10 requests per second is 100ms interval between requests
|
|
38
|
-
interval: 100
|
|
39
|
-
});
|
|
34
|
+
constructor({ apiKey, managementToken, userContext, branch, apiHost, taskQueue, logger }) {
|
|
35
|
+
this.taskQueue = taskQueue;
|
|
40
36
|
this.apiKey = apiKey;
|
|
41
37
|
this.branch = branch;
|
|
42
38
|
this.apiHost = apiHost;
|
|
43
39
|
this.logger = logger;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
if (error.response?.status === 422 && error.response?.data) {
|
|
48
|
-
// 422* Unprocessable Entity (also includes Validation Error and Unknown Field) The request is syntactically correct but contains semantic errors.
|
|
49
|
-
const responseData = error.response.data;
|
|
50
|
-
if (responseData.error_message) {
|
|
51
|
-
let errorDetails = '';
|
|
52
|
-
if (!lodash_1.default.isEmpty(responseData.errors)) {
|
|
53
|
-
errorDetails = lodash_1.default.reduce(responseData.errors, (accum, value, key) => {
|
|
54
|
-
return accum + `${key} ${Array.isArray(value) ? value.join(', ') : JSON.stringify(value)}`;
|
|
55
|
-
}, ' Errors: ');
|
|
56
|
-
}
|
|
57
|
-
return Promise.reject(new Error(`${responseData.error_message}${errorDetails}`));
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
else if (error.response?.status === 408) {
|
|
61
|
-
// 408 Timeout
|
|
62
|
-
return Promise.reject(new Error(error.message));
|
|
63
|
-
}
|
|
64
|
-
return Promise.reject(error);
|
|
65
|
-
});
|
|
66
|
-
this.client = contentstackClient.stack({
|
|
40
|
+
this.isUser = userContext && 'accessToken' in userContext ? true : false;
|
|
41
|
+
this._client = this.createContentstackClient(userContext);
|
|
42
|
+
this.stack = this._client.stack({
|
|
67
43
|
api_key: apiKey,
|
|
68
44
|
management_token: managementToken,
|
|
69
45
|
branch_uid: branch
|
|
70
46
|
});
|
|
71
47
|
}
|
|
72
|
-
createContentstackClient(
|
|
73
|
-
|
|
74
|
-
authtoken: authtoken,
|
|
48
|
+
createContentstackClient(authOptions) {
|
|
49
|
+
const options = {
|
|
75
50
|
host: this.apiHost,
|
|
76
51
|
timeout: 10000,
|
|
77
52
|
// override default logHandler to send logs to logger instead console
|
|
@@ -102,16 +77,55 @@ class ContentStackClient {
|
|
|
102
77
|
this.logger.warn(`${logMessage}, retrying...`);
|
|
103
78
|
return true;
|
|
104
79
|
}
|
|
80
|
+
if (error.response && authOptions && 'refreshToken' in authOptions && error.response.status === 401) {
|
|
81
|
+
this.logger.warn(`${logMessage}, refreshing auth token and retrying...`);
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
105
84
|
this.logger.warn(`${logMessage}, ignoring request`);
|
|
106
85
|
return false;
|
|
107
86
|
}
|
|
87
|
+
};
|
|
88
|
+
if (authOptions && 'authtoken' in authOptions) {
|
|
89
|
+
options.authtoken = authOptions.authtoken;
|
|
90
|
+
}
|
|
91
|
+
else if (authOptions && 'accessToken' in authOptions) {
|
|
92
|
+
options.authorization = `Bearer ${authOptions.accessToken}`;
|
|
93
|
+
// TODO refreshToken
|
|
94
|
+
}
|
|
95
|
+
const client = contentstack.client(options);
|
|
96
|
+
// Transform request into human readable errors for client
|
|
97
|
+
client.axiosInstance?.interceptors.response.use(null, function (error) {
|
|
98
|
+
if (error.response?.status === 422 && error.response?.data) {
|
|
99
|
+
// 422* Unprocessable Entity (also includes Validation Error and Unknown Field) The request is syntactically correct but contains semantic errors.
|
|
100
|
+
const responseData = error.response.data;
|
|
101
|
+
if (responseData.error_message) {
|
|
102
|
+
let errorDetails = '';
|
|
103
|
+
if (!lodash_1.default.isEmpty(responseData.errors)) {
|
|
104
|
+
errorDetails = lodash_1.default.reduce(responseData.errors, (accum, value, key) => {
|
|
105
|
+
return accum + `${key} ${Array.isArray(value) ? value.join(', ') : JSON.stringify(value)}`;
|
|
106
|
+
}, ' Errors: ');
|
|
107
|
+
}
|
|
108
|
+
return Promise.reject(new Error(`${responseData.error_message}${errorDetails}`));
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else if (error.response?.status === 408) {
|
|
112
|
+
// 408 Timeout
|
|
113
|
+
return Promise.reject(new Error(error.message));
|
|
114
|
+
}
|
|
115
|
+
return Promise.reject(error);
|
|
108
116
|
});
|
|
117
|
+
return client;
|
|
109
118
|
}
|
|
110
119
|
async getStack(authtoken) {
|
|
111
|
-
return this.
|
|
120
|
+
return this.stack.fetch({ authtoken });
|
|
121
|
+
}
|
|
122
|
+
async getUser() {
|
|
123
|
+
if (!this.isUser)
|
|
124
|
+
return;
|
|
125
|
+
return this._client.getUser();
|
|
112
126
|
}
|
|
113
127
|
async getUsers(authtoken) {
|
|
114
|
-
const contentstackClient = this.createContentstackClient(authtoken);
|
|
128
|
+
const contentstackClient = this.createContentstackClient({ authtoken });
|
|
115
129
|
return contentstackClient
|
|
116
130
|
.stack({
|
|
117
131
|
api_key: this.apiKey,
|
|
@@ -120,28 +134,28 @@ class ContentStackClient {
|
|
|
120
134
|
.users();
|
|
121
135
|
}
|
|
122
136
|
async getEnvironments() {
|
|
123
|
-
return (await this.paginate(this.
|
|
137
|
+
return (await this.paginate(this.stack.environment()));
|
|
124
138
|
}
|
|
125
139
|
async getContentTypes() {
|
|
126
|
-
return (await this.paginate(this.
|
|
140
|
+
return (await this.paginate(this.stack.contentType(), { include_branch: true }));
|
|
127
141
|
}
|
|
128
142
|
async getContentTypesUpdatedAfter(date) {
|
|
129
|
-
return (await this.paginate(this.
|
|
143
|
+
return (await this.paginate(this.stack.contentType(), {
|
|
130
144
|
include_branch: true,
|
|
131
145
|
query: { updated_at: { $gt: date } }
|
|
132
146
|
}));
|
|
133
147
|
}
|
|
134
148
|
async getGlobalFields() {
|
|
135
|
-
return (await this.paginate(this.
|
|
149
|
+
return (await this.paginate(this.stack.globalField(), { include_branch: true }));
|
|
136
150
|
}
|
|
137
151
|
async getGlobalFieldsUpdatedAfter(date) {
|
|
138
|
-
return (await this.paginate(this.
|
|
152
|
+
return (await this.paginate(this.stack.globalField(), {
|
|
139
153
|
include_branch: true,
|
|
140
154
|
query: { updated_at: { $gt: date } }
|
|
141
155
|
}));
|
|
142
156
|
}
|
|
143
157
|
async getExtensions() {
|
|
144
|
-
return (await this.paginate(this.
|
|
158
|
+
return (await this.paginate(this.stack.extension(), {
|
|
145
159
|
include_marketplace_extensions: true,
|
|
146
160
|
include_branch: true
|
|
147
161
|
}));
|
|
@@ -161,33 +175,33 @@ class ContentStackClient {
|
|
|
161
175
|
return lodash_1.default.flatten(await Promise.all(promises));
|
|
162
176
|
}
|
|
163
177
|
async getEntriesByType(contentType) {
|
|
164
|
-
return (await this.paginate(this.
|
|
178
|
+
return (await this.paginate(this.stack.contentType(contentType).entry(), {
|
|
165
179
|
include_branch: true,
|
|
166
180
|
include_publish_details: true
|
|
167
181
|
}));
|
|
168
182
|
}
|
|
169
183
|
async getEntriesByTypeUpdatedAfter(contentType, date) {
|
|
170
|
-
return (await this.paginate(this.
|
|
184
|
+
return (await this.paginate(this.stack.contentType(contentType).entry(), {
|
|
171
185
|
include_branch: true,
|
|
172
186
|
include_publish_details: true,
|
|
173
187
|
query: { updated_at: { $gt: date } }
|
|
174
188
|
}));
|
|
175
189
|
}
|
|
176
190
|
async getAssets() {
|
|
177
|
-
return (await this.paginate(this.
|
|
191
|
+
return (await this.paginate(this.stack.asset(), {
|
|
178
192
|
include_branch: true,
|
|
179
193
|
include_publish_details: true
|
|
180
194
|
}));
|
|
181
195
|
}
|
|
182
196
|
async getAssetsUpdatedAfter(date) {
|
|
183
|
-
return (await this.paginate(this.
|
|
197
|
+
return (await this.paginate(this.stack.asset(), {
|
|
184
198
|
include_branch: true,
|
|
185
199
|
include_publish_details: true,
|
|
186
200
|
query: { updated_at: { $gt: date } }
|
|
187
201
|
}));
|
|
188
202
|
}
|
|
189
203
|
async getLocales() {
|
|
190
|
-
return (await this.paginate(this.
|
|
204
|
+
return (await this.paginate(this.stack.locale(), { include_branch: true }));
|
|
191
205
|
}
|
|
192
206
|
async paginate(queryable, queryParams = {}) {
|
|
193
207
|
let total = 0;
|
|
@@ -209,16 +223,16 @@ class ContentStackClient {
|
|
|
209
223
|
return result;
|
|
210
224
|
}
|
|
211
225
|
async getEntry(contentType, id) {
|
|
212
|
-
return this.
|
|
226
|
+
return this.stack.contentType(contentType).entry(id).fetch();
|
|
213
227
|
}
|
|
214
228
|
async createEntry(contentType, entry) {
|
|
215
|
-
return this.
|
|
229
|
+
return this.stack.contentType(contentType).entry().create({ entry });
|
|
216
230
|
}
|
|
217
231
|
async updateEntry(entry) {
|
|
218
232
|
return entry.update();
|
|
219
233
|
}
|
|
220
234
|
async deleteEntry(contentType, id) {
|
|
221
|
-
return await this.
|
|
235
|
+
return await this.stack.contentType(contentType).entry(id).delete();
|
|
222
236
|
}
|
|
223
237
|
async publishDocuments({ documents, publishEnvironmentName }) {
|
|
224
238
|
const publishRequests = documents.map(({ id, modelName }) => {
|
|
@@ -233,7 +247,7 @@ class ContentStackClient {
|
|
|
233
247
|
await Promise.all(publishRequests);
|
|
234
248
|
}
|
|
235
249
|
async publishDocument({ id, contentType, publishEnvironmentName }) {
|
|
236
|
-
const entry = (await this.
|
|
250
|
+
const entry = (await this.stack.contentType(contentType).entry(id).fetch());
|
|
237
251
|
await entry.publish({
|
|
238
252
|
publishDetails: {
|
|
239
253
|
environments: [publishEnvironmentName],
|
|
@@ -243,17 +257,17 @@ class ContentStackClient {
|
|
|
243
257
|
});
|
|
244
258
|
}
|
|
245
259
|
async uploadImage(filename, title) {
|
|
246
|
-
return this.
|
|
260
|
+
return this.stack.asset().create({
|
|
247
261
|
upload: filename,
|
|
248
262
|
title
|
|
249
263
|
});
|
|
250
264
|
}
|
|
251
265
|
async getWebhooks() {
|
|
252
|
-
const result = await this.
|
|
266
|
+
const result = await this.stack.webhook().fetchAll();
|
|
253
267
|
return result.items;
|
|
254
268
|
}
|
|
255
269
|
async updateWebhook({ webhookId, webhookUrl, branch }) {
|
|
256
|
-
const webhook = (await this.
|
|
270
|
+
const webhook = (await this.stack.webhook(webhookId).fetch());
|
|
257
271
|
webhook.disabled = false;
|
|
258
272
|
webhook.destinations = [
|
|
259
273
|
{
|
|
@@ -267,7 +281,7 @@ class ContentStackClient {
|
|
|
267
281
|
return webhook.update();
|
|
268
282
|
}
|
|
269
283
|
async createWebhook({ webhookName, webhookUrl, publishEnvironmentName, branch }) {
|
|
270
|
-
return this.
|
|
284
|
+
return this.stack.webhook().create({
|
|
271
285
|
webhook: {
|
|
272
286
|
name: webhookName,
|
|
273
287
|
destinations: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contentstack-api-client.js","sourceRoot":"","sources":["../src/contentstack-api-client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAAuB;AACvB,6BAA0B;AAC1B,uEAAyD;
|
|
1
|
+
{"version":3,"file":"contentstack-api-client.js","sourceRoot":"","sources":["../src/contentstack-api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as StackbitTypes from '@stackbit/types';
|
|
2
|
+
import { ContentStackClient, UserContext } from './contentstack-api-client';
|
|
2
3
|
import { ModelContext, ModelWithContext } from './contentstack-schema-converter';
|
|
3
4
|
import { DocumentContext, AssetContext, DocumentWithContext } from './contentstack-entries-converter';
|
|
4
5
|
import { GetLeanDocumentById } from './contentstack-operation-converter';
|
|
5
6
|
import { SyncResult } from './contentstack-content-poller';
|
|
6
7
|
import type { WebhookPayload } from './contentstack-types';
|
|
7
8
|
type UserWithContext = StackbitTypes.User<UserContext>;
|
|
8
|
-
type UserContext = unknown;
|
|
9
9
|
type SchemaContext = unknown;
|
|
10
10
|
export interface ContentStackSourceOptions {
|
|
11
11
|
apiKey: string;
|
|
@@ -69,6 +69,7 @@ export declare class ContentstackContentSource implements StackbitTypes.ContentS
|
|
|
69
69
|
private logger;
|
|
70
70
|
private userLogger;
|
|
71
71
|
private cache;
|
|
72
|
+
private taskQueue;
|
|
72
73
|
private useContentPoller;
|
|
73
74
|
private contentPoller;
|
|
74
75
|
private syncContext;
|
|
@@ -85,6 +86,7 @@ export declare class ContentstackContentSource implements StackbitTypes.ContentS
|
|
|
85
86
|
getProjectEnvironment(): string;
|
|
86
87
|
getProjectManageUrl(): string;
|
|
87
88
|
init({ localDev, logger, userLogger, webhookUrl, cache }: StackbitTypes.InitOptions<SchemaContext, DocumentContext, AssetContext, ModelContext>): Promise<void>;
|
|
89
|
+
getUserClient(userContext?: UserContext): ContentStackClient;
|
|
88
90
|
reset(): Promise<void>;
|
|
89
91
|
destroy(): Promise<void>;
|
|
90
92
|
startWatchingContentUpdates(): void;
|
|
@@ -99,7 +101,7 @@ export declare class ContentstackContentSource implements StackbitTypes.ContentS
|
|
|
99
101
|
getSchema(): Promise<StackbitTypes.Schema<SchemaContext, ModelContext>>;
|
|
100
102
|
getDocuments(): Promise<StackbitTypes.Document<DocumentContext>[]>;
|
|
101
103
|
getAssets(): Promise<StackbitTypes.Asset<AssetContext>[]>;
|
|
102
|
-
hasAccess(
|
|
104
|
+
hasAccess({ userContext }: {
|
|
103
105
|
userContext?: UserWithContext;
|
|
104
106
|
}): Promise<{
|
|
105
107
|
hasConnection: boolean;
|
|
@@ -143,7 +145,7 @@ export declare class ContentstackContentSource implements StackbitTypes.ContentS
|
|
|
143
145
|
publishDocuments(options: {
|
|
144
146
|
documents: StackbitTypes.Document<DocumentContext>[];
|
|
145
147
|
assets: StackbitTypes.Asset<AssetContext>[];
|
|
146
|
-
userContext
|
|
148
|
+
userContext: UserWithContext;
|
|
147
149
|
}): Promise<void>;
|
|
148
150
|
onWebhook(data: {
|
|
149
151
|
data: WebhookPayload;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contentstack-content-source.d.ts","sourceRoot":"","sources":["../src/contentstack-content-source.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"contentstack-content-source.d.ts","sourceRoot":"","sources":["../src/contentstack-content-source.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,7 @@ const contentstack_entries_converter_1 = require("./contentstack-entries-convert
|
|
|
15
15
|
const contentstack_operation_converter_1 = require("./contentstack-operation-converter");
|
|
16
16
|
const contentstack_utils_1 = require("./contentstack-utils");
|
|
17
17
|
const contentstack_content_poller_1 = require("./contentstack-content-poller");
|
|
18
|
+
const utils_1 = require("@stackbit/utils");
|
|
18
19
|
class ContentstackContentSource {
|
|
19
20
|
constructor({ apiKey, managementToken, branch, apiHost, authtoken, masterLocale, publishEnvironmentName, skipFetchOnStartIfCache }) {
|
|
20
21
|
this.useContentPoller = false;
|
|
@@ -54,12 +55,17 @@ class ContentstackContentSource {
|
|
|
54
55
|
this.logger = logger.createLogger({ label: 'contentstack' });
|
|
55
56
|
this.userLogger = userLogger.createLogger({ label: 'contentstack' });
|
|
56
57
|
this.cache = cache;
|
|
58
|
+
this.taskQueue = new utils_1.TaskQueue({
|
|
59
|
+
// 10 requests per second is 100ms interval between requests
|
|
60
|
+
interval: 100
|
|
61
|
+
});
|
|
57
62
|
this.logger.debug('init');
|
|
58
63
|
this.contentStackClient = new contentstack_api_client_1.ContentStackClient({
|
|
59
64
|
apiKey: this.apiKey,
|
|
60
65
|
managementToken: this.managementToken,
|
|
61
66
|
branch: this.branch,
|
|
62
67
|
apiHost: this.apiHost,
|
|
68
|
+
taskQueue: this.taskQueue,
|
|
63
69
|
logger: this.logger
|
|
64
70
|
});
|
|
65
71
|
// If running locally, use ContentPoller instead of webhook unless explicitly debugging webhooks
|
|
@@ -83,6 +89,19 @@ class ContentstackContentSource {
|
|
|
83
89
|
});
|
|
84
90
|
this.syncContext = (await this.cache.get('syncContext')) ?? {};
|
|
85
91
|
}
|
|
92
|
+
getUserClient(userContext) {
|
|
93
|
+
if (!userContext?.accessToken) {
|
|
94
|
+
throw new Error(`User does not have an access token for stack with API key '${this.getProjectId()}'`);
|
|
95
|
+
}
|
|
96
|
+
return new contentstack_api_client_1.ContentStackClient({
|
|
97
|
+
apiKey: this.apiKey,
|
|
98
|
+
branch: this.branch,
|
|
99
|
+
apiHost: this.apiHost,
|
|
100
|
+
taskQueue: this.taskQueue,
|
|
101
|
+
logger: this.logger,
|
|
102
|
+
userContext: userContext
|
|
103
|
+
});
|
|
104
|
+
}
|
|
86
105
|
async reset() {
|
|
87
106
|
this.logger.debug('reset');
|
|
88
107
|
const environments = await this.contentStackClient.getEnvironments();
|
|
@@ -324,12 +343,28 @@ class ContentstackContentSource {
|
|
|
324
343
|
this.userLogger.info(`got ${stackbitAssets.length} assets`);
|
|
325
344
|
return stackbitAssets;
|
|
326
345
|
}
|
|
327
|
-
async hasAccess(
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
346
|
+
async hasAccess({ userContext }) {
|
|
347
|
+
if (!userContext?.accessToken) {
|
|
348
|
+
return {
|
|
349
|
+
hasConnection: false,
|
|
350
|
+
hasPermissions: false
|
|
351
|
+
};
|
|
352
|
+
}
|
|
353
|
+
try {
|
|
354
|
+
const userClient = this.getUserClient(userContext);
|
|
355
|
+
await userClient.getUser();
|
|
356
|
+
return {
|
|
357
|
+
hasConnection: true,
|
|
358
|
+
hasPermissions: true
|
|
359
|
+
};
|
|
360
|
+
}
|
|
361
|
+
catch (error) {
|
|
362
|
+
return {
|
|
363
|
+
// TODO once refresh is implemented, change `hasConnection` to true
|
|
364
|
+
hasConnection: false,
|
|
365
|
+
hasPermissions: false
|
|
366
|
+
};
|
|
367
|
+
}
|
|
333
368
|
}
|
|
334
369
|
async createDocument(options) {
|
|
335
370
|
this.userLogger.info(`createDocument, for model name: '${options.model.name}'`);
|
|
@@ -340,7 +375,7 @@ class ContentstackContentSource {
|
|
|
340
375
|
getModelByName: this.cache.getModelByName,
|
|
341
376
|
logger: this.logger
|
|
342
377
|
});
|
|
343
|
-
const newEntry = await this.
|
|
378
|
+
const newEntry = await this.getUserClient(options.userContext).createEntry(options.model.name, entry);
|
|
344
379
|
this.userLogger.info(`successfully created document, uid: '${newEntry.uid}', for model name: '${options.model.name}'`);
|
|
345
380
|
// cache the created entry's uid and model name until it is received from Contentstack
|
|
346
381
|
// via onWebhook or contentPoller's notificationCallback methods.
|
|
@@ -349,8 +384,9 @@ class ContentstackContentSource {
|
|
|
349
384
|
}
|
|
350
385
|
async updateDocument(options) {
|
|
351
386
|
this.userLogger.info(`updateDocument, uid: '${options.document.id}', model name: '${options.document.modelName}'`);
|
|
352
|
-
const { document, operations } = options;
|
|
353
|
-
const
|
|
387
|
+
const { document, operations, userContext } = options;
|
|
388
|
+
const userClient = this.getUserClient(userContext);
|
|
389
|
+
const entry = await userClient.getEntry(document.modelName, document.id);
|
|
354
390
|
const updatedEntry = (0, contentstack_operation_converter_1.updateEntryFromUpdateOperations)({
|
|
355
391
|
entry,
|
|
356
392
|
updateOperations: operations,
|
|
@@ -358,7 +394,7 @@ class ContentstackContentSource {
|
|
|
358
394
|
getModelByName: this.cache.getModelByName,
|
|
359
395
|
logger: this.logger
|
|
360
396
|
});
|
|
361
|
-
await
|
|
397
|
+
await userClient.updateEntry(updatedEntry);
|
|
362
398
|
this.userLogger.info(`successfully updated document document, uid: '${options.document.id}', model name: '${options.document.modelName}'`);
|
|
363
399
|
}
|
|
364
400
|
getCachedDocumentById(documentId) {
|
|
@@ -377,7 +413,7 @@ class ContentstackContentSource {
|
|
|
377
413
|
}
|
|
378
414
|
async deleteDocument(options) {
|
|
379
415
|
this.userLogger.info(`deleteDocument, uid: '${options.document.id}', model name: '${options.document.modelName}'`);
|
|
380
|
-
await this.
|
|
416
|
+
await this.getUserClient(options.userContext).deleteEntry(options.document.modelName, options.document.id);
|
|
381
417
|
this.userLogger.info(`successfully deleted document, uid: '${options.document.id}', model name: '${options.document.modelName}'`);
|
|
382
418
|
}
|
|
383
419
|
async uploadAsset(options) {
|
|
@@ -392,7 +428,7 @@ class ContentstackContentSource {
|
|
|
392
428
|
else {
|
|
393
429
|
await (0, contentstack_utils_1.downloadFile)(options.url, tempName);
|
|
394
430
|
}
|
|
395
|
-
asset = await this.
|
|
431
|
+
asset = await this.getUserClient(options.userContext).uploadImage(tempName, options.fileName);
|
|
396
432
|
const locales = this.cache.getSchema().locales ?? [];
|
|
397
433
|
const defaultLocale = locales.find((locale) => locale.default)?.code;
|
|
398
434
|
await asset.publish({
|
|
@@ -420,7 +456,7 @@ class ContentstackContentSource {
|
|
|
420
456
|
}
|
|
421
457
|
async publishDocuments(options) {
|
|
422
458
|
this.userLogger.info('publishDocuments');
|
|
423
|
-
await this.
|
|
459
|
+
await this.getUserClient(options.userContext).publishDocuments({
|
|
424
460
|
documents: options.documents,
|
|
425
461
|
publishEnvironmentName: this.publishEnvironment.name
|
|
426
462
|
});
|