@stackbit/cms-contentstack 0.1.1-staging.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.
Files changed (72) hide show
  1. package/README.md +1 -0
  2. package/dist/.tsbuildinfo +1 -0
  3. package/dist/contentstack-api-client.d.ts +63 -0
  4. package/dist/contentstack-api-client.d.ts.map +1 -0
  5. package/dist/contentstack-api-client.js +295 -0
  6. package/dist/contentstack-api-client.js.map +1 -0
  7. package/dist/contentstack-content-poller.d.ts +46 -0
  8. package/dist/contentstack-content-poller.d.ts.map +1 -0
  9. package/dist/contentstack-content-poller.js +111 -0
  10. package/dist/contentstack-content-poller.js.map +1 -0
  11. package/dist/contentstack-content-source.d.ts +138 -0
  12. package/dist/contentstack-content-source.d.ts.map +1 -0
  13. package/dist/contentstack-content-source.js +544 -0
  14. package/dist/contentstack-content-source.js.map +1 -0
  15. package/dist/contentstack-conversion-utils.d.ts +41 -0
  16. package/dist/contentstack-conversion-utils.d.ts.map +1 -0
  17. package/dist/contentstack-conversion-utils.js +504 -0
  18. package/dist/contentstack-conversion-utils.js.map +1 -0
  19. package/dist/contentstack-entries-converter.d.ts +39 -0
  20. package/dist/contentstack-entries-converter.d.ts.map +1 -0
  21. package/dist/contentstack-entries-converter.js +333 -0
  22. package/dist/contentstack-entries-converter.js.map +1 -0
  23. package/dist/contentstack-operation-converter.d.ts +42 -0
  24. package/dist/contentstack-operation-converter.d.ts.map +1 -0
  25. package/dist/contentstack-operation-converter.js +535 -0
  26. package/dist/contentstack-operation-converter.js.map +1 -0
  27. package/dist/contentstack-schema-converter.d.ts +26 -0
  28. package/dist/contentstack-schema-converter.d.ts.map +1 -0
  29. package/dist/contentstack-schema-converter.js +379 -0
  30. package/dist/contentstack-schema-converter.js.map +1 -0
  31. package/dist/contentstack-types.d.ts +429 -0
  32. package/dist/contentstack-types.d.ts.map +1 -0
  33. package/dist/contentstack-types.js +3 -0
  34. package/dist/contentstack-types.js.map +1 -0
  35. package/dist/contentstack-utils.d.ts +31 -0
  36. package/dist/contentstack-utils.d.ts.map +1 -0
  37. package/dist/contentstack-utils.js +144 -0
  38. package/dist/contentstack-utils.js.map +1 -0
  39. package/dist/entries-converter.d.ts +10 -0
  40. package/dist/entries-converter.d.ts.map +1 -0
  41. package/dist/entries-converter.js +245 -0
  42. package/dist/entries-converter.js.map +1 -0
  43. package/dist/file-download.d.ts +2 -0
  44. package/dist/file-download.d.ts.map +1 -0
  45. package/dist/file-download.js +33 -0
  46. package/dist/file-download.js.map +1 -0
  47. package/dist/index.d.ts +4 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +14 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/schema-converter.d.ts +3 -0
  52. package/dist/schema-converter.d.ts.map +1 -0
  53. package/dist/schema-converter.js +169 -0
  54. package/dist/schema-converter.js.map +1 -0
  55. package/dist/transformation-utils.d.ts +41 -0
  56. package/dist/transformation-utils.d.ts.map +1 -0
  57. package/dist/transformation-utils.js +730 -0
  58. package/dist/transformation-utils.js.map +1 -0
  59. package/dist/types.d.ts +120 -0
  60. package/dist/types.d.ts.map +1 -0
  61. package/dist/types.js +3 -0
  62. package/dist/types.js.map +1 -0
  63. package/package.json +44 -0
  64. package/src/contentstack-api-client.ts +330 -0
  65. package/src/contentstack-content-poller.ts +157 -0
  66. package/src/contentstack-content-source.ts +687 -0
  67. package/src/contentstack-entries-converter.ts +438 -0
  68. package/src/contentstack-operation-converter.ts +703 -0
  69. package/src/contentstack-schema-converter.ts +486 -0
  70. package/src/contentstack-types.ts +527 -0
  71. package/src/contentstack-utils.ts +174 -0
  72. package/src/index.ts +3 -0
@@ -0,0 +1,46 @@
1
+ import type { Logger } from '@stackbit/types';
2
+ import type { ContentStackClient } from './contentstack-api-client';
3
+ import type { ContentType, GlobalField, Entry, Asset } from './contentstack-types';
4
+ export declare type SyncContext = {
5
+ lastUpdatedEntryDate?: string;
6
+ lastUpdatedAssetDate?: string;
7
+ lastUpdatedContentTypeDate?: string;
8
+ lastUpdatedGlobalFieldDate?: string;
9
+ };
10
+ export interface SyncResult {
11
+ entries: Entry[];
12
+ assets: Asset[];
13
+ contentTypes: ContentType[];
14
+ globalFields: GlobalField[];
15
+ deletedEntries: Entry[];
16
+ deletedAssets: Asset[];
17
+ }
18
+ export declare type SyncCallback = (result: SyncResult) => void;
19
+ export declare class ContentPoller {
20
+ private readonly logger;
21
+ private readonly contentStackClient;
22
+ private readonly notificationCallback;
23
+ private readonly pollingIntervalMs;
24
+ private readonly modelNames;
25
+ private running;
26
+ private pollTimeout;
27
+ private syncContext;
28
+ constructor({ modelNames, contentStackClient, syncContext, pollingIntervalMs, notificationCallback, logger }: {
29
+ modelNames: string[];
30
+ contentStackClient: ContentStackClient;
31
+ syncContext?: SyncContext;
32
+ pollingIntervalMs?: number;
33
+ notificationCallback: SyncCallback;
34
+ logger: Logger;
35
+ });
36
+ start(): void;
37
+ stop(): void;
38
+ setSyncContext(syncContext?: SyncContext): void;
39
+ private setPollTimeout;
40
+ handleTimeout(): Promise<void>;
41
+ pollContent(): Promise<any>;
42
+ }
43
+ export declare function getLastUpdatedEntityDate(entities: {
44
+ updated_at?: string;
45
+ }[]): string | undefined;
46
+ //# sourceMappingURL=contentstack-content-poller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contentstack-content-poller.d.ts","sourceRoot":"","sources":["../src/contentstack-content-poller.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAEnF,oBAAY,WAAW,GAAG;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACvC,CAAC;AAEF,MAAM,WAAW,UAAU;IACvB,OAAO,EAAE,KAAK,EAAE,CAAC;IACjB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,cAAc,EAAE,KAAK,EAAE,CAAC;IACxB,aAAa,EAAE,KAAK,EAAE,CAAC;CAC1B;AAED,oBAAY,YAAY,GAAG,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;AAExD,qBAAa,aAAa;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAe;IACpD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAW;IACtC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,WAAW,CAAyB;gBAEhC,EACR,UAAU,EACV,kBAAkB,EAClB,WAAW,EACX,iBAAwB,EACxB,oBAAoB,EACpB,MAAM,EACT,EAAE;QACC,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,oBAAoB,EAAE,YAAY,CAAC;QACnC,MAAM,EAAE,MAAM,CAAC;KAClB;IAYD,KAAK;IAQL,IAAI;IASJ,cAAc,CAAC,WAAW,CAAC,EAAE,WAAW;IAUxC,OAAO,CAAC,cAAc;IAOhB,aAAa;IAYb,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC;CAyCpC;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,MAAM,GAAG,SAAS,CAQhG"}
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getLastUpdatedEntityDate = exports.ContentPoller = void 0;
7
+ const lodash_1 = __importDefault(require("lodash"));
8
+ class ContentPoller {
9
+ constructor({ modelNames, contentStackClient, syncContext, pollingIntervalMs = 2000, notificationCallback, logger }) {
10
+ this.logger = logger;
11
+ this.modelNames = modelNames;
12
+ this.running = false;
13
+ this.pollTimeout = null;
14
+ this.pollingIntervalMs = pollingIntervalMs;
15
+ this.contentStackClient = contentStackClient;
16
+ this.notificationCallback = notificationCallback;
17
+ this.setSyncContext(syncContext);
18
+ this.handleTimeout = this.handleTimeout.bind(this);
19
+ }
20
+ start() {
21
+ this.logger.debug(`start polling Contentstack for content changes`);
22
+ if (!this.running) {
23
+ this.running = true;
24
+ this.setPollTimeout();
25
+ }
26
+ }
27
+ stop() {
28
+ this.logger.debug(`stop polling Contentstack for content changes`);
29
+ if (this.pollTimeout) {
30
+ clearTimeout(this.pollTimeout);
31
+ this.pollTimeout = null;
32
+ }
33
+ this.running = false;
34
+ }
35
+ setSyncContext(syncContext) {
36
+ var _a, _b, _c, _d;
37
+ const now = new Date().toISOString();
38
+ this.syncContext = {
39
+ lastUpdatedEntryDate: (_a = syncContext === null || syncContext === void 0 ? void 0 : syncContext.lastUpdatedEntryDate) !== null && _a !== void 0 ? _a : now,
40
+ lastUpdatedAssetDate: (_b = syncContext === null || syncContext === void 0 ? void 0 : syncContext.lastUpdatedAssetDate) !== null && _b !== void 0 ? _b : now,
41
+ lastUpdatedContentTypeDate: (_c = syncContext === null || syncContext === void 0 ? void 0 : syncContext.lastUpdatedContentTypeDate) !== null && _c !== void 0 ? _c : now,
42
+ lastUpdatedGlobalFieldDate: (_d = syncContext === null || syncContext === void 0 ? void 0 : syncContext.lastUpdatedGlobalFieldDate) !== null && _d !== void 0 ? _d : now
43
+ };
44
+ }
45
+ setPollTimeout() {
46
+ if (this.pollTimeout) {
47
+ clearTimeout(this.pollTimeout);
48
+ }
49
+ this.pollTimeout = setTimeout(this.handleTimeout, this.pollingIntervalMs);
50
+ }
51
+ async handleTimeout() {
52
+ this.pollTimeout = null;
53
+ try {
54
+ await this.pollContent();
55
+ }
56
+ catch (error) {
57
+ this.logger.warn('error polling', { error: error.message });
58
+ }
59
+ if (this.running) {
60
+ this.setPollTimeout();
61
+ }
62
+ }
63
+ async pollContent() {
64
+ const prevSyncContext = this.syncContext;
65
+ const [entries, assets, contentTypes, globalFields] = await Promise.all([
66
+ this.contentStackClient.getAllEntriesUpdatedAfter(this.modelNames, this.syncContext.lastUpdatedEntryDate),
67
+ this.contentStackClient.getAssetsUpdatedAfter(this.syncContext.lastUpdatedAssetDate),
68
+ this.contentStackClient.getContentTypesUpdatedAfter(this.syncContext.lastUpdatedContentTypeDate),
69
+ this.contentStackClient.getGlobalFieldsUpdatedAfter(this.syncContext.lastUpdatedGlobalFieldDate)
70
+ ]);
71
+ // Check that syncContext wasn't updated externally by calling
72
+ // setLastUpdatedAt() while the content is being fetched. If it was
73
+ // updated, then ignore the dates from the fetched content and use the
74
+ // syncContext that was set externally in the next poll.
75
+ if (lodash_1.default.isEqual(prevSyncContext, this.syncContext)) {
76
+ this.syncContext = lodash_1.default.defaults({
77
+ lastUpdatedEntryDate: getLastUpdatedEntityDate(entries),
78
+ lastUpdatedAssetDate: getLastUpdatedEntityDate(assets),
79
+ lastUpdatedContentTypeDate: getLastUpdatedEntityDate(contentTypes),
80
+ lastUpdatedGlobalFieldDate: getLastUpdatedEntityDate(globalFields)
81
+ }, this.syncContext);
82
+ }
83
+ if (contentTypes.length || globalFields.length || entries.length || assets.length) {
84
+ this.logger.info(`poll date response: got ` +
85
+ `${entries.length} changed entries, ` +
86
+ `${assets.length} changed assets, ` +
87
+ `${contentTypes.length} changed content types` +
88
+ `${globalFields.length} changed global fields`);
89
+ this.notificationCallback({
90
+ contentTypes,
91
+ globalFields,
92
+ entries,
93
+ assets,
94
+ deletedEntries: [],
95
+ deletedAssets: []
96
+ });
97
+ }
98
+ }
99
+ }
100
+ exports.ContentPoller = ContentPoller;
101
+ function getLastUpdatedEntityDate(entities) {
102
+ let lastUpdatedDate = '';
103
+ for (const entity of entities) {
104
+ if (entity.updated_at > lastUpdatedDate) {
105
+ lastUpdatedDate = entity.updated_at;
106
+ }
107
+ }
108
+ return lastUpdatedDate || undefined;
109
+ }
110
+ exports.getLastUpdatedEntityDate = getLastUpdatedEntityDate;
111
+ //# sourceMappingURL=contentstack-content-poller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contentstack-content-poller.js","sourceRoot":"","sources":["../src/contentstack-content-poller.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAuB;AAuBvB,MAAa,aAAa;IAUtB,YAAY,EACR,UAAU,EACV,kBAAkB,EAClB,WAAW,EACX,iBAAiB,GAAG,IAAI,EACxB,oBAAoB,EACpB,MAAM,EAQT;QACG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;QACjD,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACjC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,KAAK;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACf,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;IACL,CAAC;IAED,IAAI;QACA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SAC3B;QACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,cAAc,CAAC,WAAyB;;QACpC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC,WAAW,GAAG;YACf,oBAAoB,EAAE,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,oBAAoB,mCAAI,GAAG;YAC9D,oBAAoB,EAAE,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,oBAAoB,mCAAI,GAAG;YAC9D,0BAA0B,EAAE,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,0BAA0B,mCAAI,GAAG;YAC1E,0BAA0B,EAAE,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,0BAA0B,mCAAI,GAAG;SAC7E,CAAC;IACN,CAAC;IAEO,cAAc;QAClB,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAClC;QACD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,aAAa;QACf,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI;YACA,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;SAC5B;QAAC,OAAO,KAAU,EAAE;YACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;SAC/D;QACD,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;IACL,CAAC;IAED,KAAK,CAAC,WAAW;QACb,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC;QACzC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACpE,IAAI,CAAC,kBAAkB,CAAC,yBAAyB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC;YACzG,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC;YACpF,IAAI,CAAC,kBAAkB,CAAC,2BAA2B,CAAC,IAAI,CAAC,WAAW,CAAC,0BAA0B,CAAC;YAChG,IAAI,CAAC,kBAAkB,CAAC,2BAA2B,CAAC,IAAI,CAAC,WAAW,CAAC,0BAA0B,CAAC;SACnG,CAAC,CAAC;QACH,8DAA8D;QAC9D,mEAAmE;QACnE,sEAAsE;QACtE,wDAAwD;QACxD,IAAI,gBAAC,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE;YAC9C,IAAI,CAAC,WAAW,GAAG,gBAAC,CAAC,QAAQ,CACzB;gBACI,oBAAoB,EAAE,wBAAwB,CAAC,OAAO,CAAC;gBACvD,oBAAoB,EAAE,wBAAwB,CAAC,MAAM,CAAC;gBACtD,0BAA0B,EAAE,wBAAwB,CAAC,YAAY,CAAC;gBAClE,0BAA0B,EAAE,wBAAwB,CAAC,YAAY,CAAC;aACrE,EACD,IAAI,CAAC,WAAW,CACnB,CAAC;SACL;QACD,IAAI,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;YAC/E,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,0BAA0B;gBACtB,GAAG,OAAO,CAAC,MAAM,oBAAoB;gBACrC,GAAG,MAAM,CAAC,MAAM,mBAAmB;gBACnC,GAAG,YAAY,CAAC,MAAM,wBAAwB;gBAC9C,GAAG,YAAY,CAAC,MAAM,wBAAwB,CACrD,CAAC;YACF,IAAI,CAAC,oBAAoB,CAAC;gBACtB,YAAY;gBACZ,YAAY;gBACZ,OAAO;gBACP,MAAM;gBACN,cAAc,EAAE,EAAE;gBAClB,aAAa,EAAE,EAAE;aACpB,CAAC,CAAC;SACN;IACL,CAAC;CACJ;AA3HD,sCA2HC;AAED,SAAgB,wBAAwB,CAAC,QAAmC;IACxE,IAAI,eAAe,GAAW,EAAE,CAAC;IACjC,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE;QAC3B,IAAI,MAAM,CAAC,UAAW,GAAG,eAAe,EAAE;YACtC,eAAe,GAAG,MAAM,CAAC,UAAW,CAAC;SACxC;KACJ;IACD,OAAO,eAAe,IAAI,SAAS,CAAC;AACxC,CAAC;AARD,4DAQC"}
@@ -0,0 +1,138 @@
1
+ import * as StackbitTypes from '@stackbit/types';
2
+ import { ModelContext, ModelWithContext } from './contentstack-schema-converter';
3
+ import { DocumentContext, AssetContext, DocumentWithContext } from './contentstack-entries-converter';
4
+ import { SyncResult } from './contentstack-content-poller';
5
+ import type { WebhookPayload } from './contentstack-types';
6
+ declare type UserWithContext = StackbitTypes.User<UserContext>;
7
+ declare type UserContext = unknown;
8
+ declare type SchemaContext = unknown;
9
+ export interface ContentStackSourceOptions {
10
+ apiKey: string;
11
+ managementToken: string;
12
+ branch?: string;
13
+ /**
14
+ * User specific authtoken. You should use an authtoken of a "service" user
15
+ * of your organization. If you don't pass the authtoken, some features
16
+ * may not work in Stackbit properly.
17
+ *
18
+ * To get the authtoken, use the following command:
19
+ * ```
20
+ * curl -X POST \
21
+ * -H "Content-Type: application/json" \
22
+ * -d '{"user":{"email":"simon@stackbit.com","password":"i7rdEiZUt!6tMEUkeFTo"}}' \
23
+ * https://api.contentstack.io/v3/user-session \
24
+ * | grep -ioE '"authtoken":"([^\"])+"'
25
+ * ```
26
+ */
27
+ authtoken?: string;
28
+ /**
29
+ * The master locale of the Stack. If `authtoken` is provided, then there is
30
+ * no need to pass `masterLocale` as it will be fetched from the stack API.
31
+ */
32
+ masterLocale?: string;
33
+ /**
34
+ * Environment for publishing entries. If your Contentstack has multiple
35
+ * environments this property need to be specified.
36
+ */
37
+ publishEnvironmentName?: string;
38
+ /**
39
+ * Do not fetch documents and assets when content source starts if there are
40
+ * cached documents and assets. The newer document and asset versions will
41
+ * be fetched by polling content. This flag is applicable only when running
42
+ * `stackbit dev` locally without webhooks, i.e., --csi-webhook-url is not
43
+ * provided.
44
+ */
45
+ skipFetchOnStartIfCache?: boolean;
46
+ }
47
+ export declare type CacheWithContext = StackbitTypes.Cache<SchemaContext, DocumentContext, AssetContext, ModelContext>;
48
+ export declare class ContentstackContentSource implements StackbitTypes.ContentSourceInterface<UserContext, SchemaContext, DocumentContext, AssetContext, ModelContext> {
49
+ private readonly apiKey;
50
+ private readonly managementToken;
51
+ private readonly branch?;
52
+ private readonly authtoken?;
53
+ private masterLocale?;
54
+ private contentStackClient;
55
+ private logger;
56
+ private userLogger;
57
+ private cache;
58
+ private useContentPoller;
59
+ private contentPoller;
60
+ private syncContext;
61
+ private skipFetchOnStartIfCache;
62
+ private updateCacheOnFirstPoll;
63
+ private publishEnvironmentName?;
64
+ private publishEnvironment;
65
+ private usersById;
66
+ constructor({ apiKey, managementToken, branch, authtoken, masterLocale, publishEnvironmentName, skipFetchOnStartIfCache }: ContentStackSourceOptions);
67
+ getVersion(): Promise<StackbitTypes.Version>;
68
+ getContentSourceType(): string;
69
+ getProjectId(): string;
70
+ getProjectEnvironment(): string;
71
+ getProjectManageUrl(): string;
72
+ init({ localDev, logger, userLogger, webhookUrl, cache }: StackbitTypes.InitOptions<SchemaContext, DocumentContext, AssetContext, ModelContext>): Promise<void>;
73
+ reset(): Promise<void>;
74
+ destroy(): Promise<void>;
75
+ startWatchingContentUpdates(): void;
76
+ stopWatchingContentUpdates(): void;
77
+ convertSyncResult(syncResult: SyncResult): Promise<{
78
+ documents: DocumentWithContext[];
79
+ assets: import("./contentstack-entries-converter").AssetWithContext[];
80
+ deletedDocumentIds: string[];
81
+ deletedAssetIds: string[];
82
+ }>;
83
+ fetchUsers(): Promise<void>;
84
+ getSchema(): Promise<StackbitTypes.Schema<SchemaContext, ModelContext>>;
85
+ getDocuments(): Promise<StackbitTypes.Document<DocumentContext>[]>;
86
+ getAssets(): Promise<StackbitTypes.Asset<AssetContext>[]>;
87
+ hasAccess(options: {
88
+ userContext?: UserWithContext;
89
+ }): Promise<{
90
+ hasConnection: boolean;
91
+ hasPermissions: boolean;
92
+ }>;
93
+ createDocument(options: {
94
+ updateOperationFields: Record<string, StackbitTypes.UpdateOperationField>;
95
+ model: ModelWithContext;
96
+ locale?: string;
97
+ defaultLocaleDocumentId?: string;
98
+ userContext?: UserWithContext;
99
+ }): Promise<{
100
+ documentId: string;
101
+ }>;
102
+ updateDocument(options: {
103
+ document: DocumentWithContext;
104
+ operations: StackbitTypes.UpdateOperation[];
105
+ userContext?: UserWithContext;
106
+ }): Promise<void>;
107
+ deleteDocument(options: {
108
+ document: StackbitTypes.Document<unknown>;
109
+ userContext?: UserWithContext;
110
+ }): Promise<void>;
111
+ uploadAsset(options: {
112
+ url?: string | undefined;
113
+ base64?: string | undefined;
114
+ fileName: string;
115
+ mimeType: string;
116
+ locale?: string | undefined;
117
+ userContext?: UserWithContext;
118
+ }): Promise<StackbitTypes.Asset<AssetContext>>;
119
+ validateDocuments(options: {
120
+ documents: StackbitTypes.Document<unknown>[];
121
+ assets: StackbitTypes.Asset<unknown>[];
122
+ locale?: string | undefined;
123
+ userContext?: UserWithContext;
124
+ }): Promise<{
125
+ errors: StackbitTypes.ValidationError[];
126
+ }>;
127
+ publishDocuments(options: {
128
+ documents: StackbitTypes.Document<DocumentContext>[];
129
+ assets: StackbitTypes.Asset<AssetContext>[];
130
+ userContext?: UserWithContext;
131
+ }): Promise<void>;
132
+ onWebhook(data: {
133
+ data: WebhookPayload;
134
+ headers: Record<string, string>;
135
+ }): Promise<void>;
136
+ }
137
+ export {};
138
+ //# sourceMappingURL=contentstack-content-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contentstack-content-source.d.ts","sourceRoot":"","sources":["../src/contentstack-content-source.ts"],"names":[],"mappings":"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"}