@agility/content-sync 1.1.9 → 1.2.0-beta.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.
Files changed (66) hide show
  1. package/.babelrc +9 -6
  2. package/dist/agility-sync-sdk.node.js +9271 -9445
  3. package/dist/index.d.ts +20 -0
  4. package/dist/index.js +25 -0
  5. package/dist/methods/clearSync.d.ts +3 -0
  6. package/dist/methods/clearSync.js +21 -0
  7. package/dist/methods/runSync.d.ts +39 -0
  8. package/dist/methods/runSync.js +94 -0
  9. package/dist/methods/syncAssets.d.ts +18 -0
  10. package/dist/methods/syncAssets.js +34 -0
  11. package/dist/methods/syncContainers.d.ts +18 -0
  12. package/dist/methods/syncContainers.js +34 -0
  13. package/dist/methods/syncContent.d.ts +20 -0
  14. package/dist/methods/syncContent.js +83 -0
  15. package/dist/methods/syncContentModels.d.ts +10 -0
  16. package/dist/methods/syncContentModels.js +34 -0
  17. package/dist/methods/syncGalleries.d.ts +18 -0
  18. package/dist/methods/syncGalleries.js +34 -0
  19. package/dist/methods/syncPageModels.d.ts +18 -0
  20. package/dist/methods/syncPageModels.js +34 -0
  21. package/dist/methods/syncPages.d.ts +20 -0
  22. package/dist/methods/syncPages.js +82 -0
  23. package/dist/store-interface-console.d.ts +163 -0
  24. package/dist/store-interface-console.js +146 -0
  25. package/dist/store-interface-filesystem.d.ts +166 -0
  26. package/dist/store-interface-filesystem.js +362 -0
  27. package/dist/store-interface.d.ts +69 -0
  28. package/dist/store-interface.js +430 -0
  29. package/dist/sync-client.d.ts +29 -0
  30. package/dist/sync-client.js +126 -0
  31. package/dist/types/AgilityClient.d.ts +12 -0
  32. package/dist/types/AgilityClient.js +1 -0
  33. package/dist/types/Asset.d.ts +18 -0
  34. package/dist/types/Asset.js +1 -0
  35. package/dist/types/Container.d.ts +15 -0
  36. package/dist/types/Container.js +1 -0
  37. package/dist/types/ContentItem.d.ts +20 -0
  38. package/dist/types/ContentItem.js +1 -0
  39. package/dist/types/ContentModel.d.ts +23 -0
  40. package/dist/types/ContentModel.js +1 -0
  41. package/dist/types/Gallery.d.ts +15 -0
  42. package/dist/types/Gallery.js +1 -0
  43. package/dist/types/Page.d.ts +14 -0
  44. package/dist/types/Page.js +1 -0
  45. package/dist/types/PageModel.d.ts +36 -0
  46. package/dist/types/PageModel.js +1 -0
  47. package/dist/types/StoreInterface.d.ts +165 -0
  48. package/dist/types/StoreInterface.js +1 -0
  49. package/dist/types/SyncProgress.d.ts +11 -0
  50. package/dist/types/SyncProgress.js +1 -0
  51. package/dist/types.d.ts +11 -0
  52. package/dist/types.js +1 -0
  53. package/dist/util.d.ts +7 -0
  54. package/dist/util.js +23 -0
  55. package/package.json +7 -3
  56. package/src/methods/clearSync.js +1 -2
  57. package/src/methods/runSync.js +11 -13
  58. package/src/methods/syncContent.js +5 -5
  59. package/src/methods/syncPages.js +3 -3
  60. package/src/store-interface.js +405 -423
  61. package/src/sync-client.js +17 -10
  62. package/test/03-store.getContentItem.tests.js +6 -4
  63. package/test/04-store.getContentList.tests.js +10 -10
  64. package/test/99-clearSync.tests.js +3 -3
  65. package/test/_syncClients.config.js +3 -3
  66. package/webpack.config.js +11 -0
@@ -0,0 +1,82 @@
1
+ import { logInfo, logWarning, sleep } from '../util';
2
+ /**
3
+ * Sync the pages in the specified Agility Instance.
4
+ * @param languageCode - The language code to sync pages for
5
+ * @param token - The sync token to start from
6
+ * @returns The last sync token used
7
+ */
8
+ export default async function* syncPages(languageCode, token = 0) {
9
+ const storeInterface = this.store;
10
+ let itemCount = 0;
11
+ let busy = false;
12
+ let waitMS = 0;
13
+ const waitMaxMS = 10 * 60 * 1000;
14
+ const waitIntervalMS = 1000;
15
+ // Initialize progress
16
+ yield { status: 'init' };
17
+ do {
18
+ //sync pages...
19
+ const syncRet = await this.agilityClient.getSyncPages({
20
+ syncToken: token,
21
+ pageSize: 100,
22
+ languageCode: languageCode
23
+ });
24
+ if (syncRet === undefined || syncRet === null || (syncRet.busy !== undefined && syncRet.busy === true)) {
25
+ //if the api is being updated, wait a few ms and try again...
26
+ waitMS += waitIntervalMS;
27
+ if (waitMS > waitMaxMS) {
28
+ logWarning("Sync API has been busy for too long, canceling.");
29
+ break;
30
+ }
31
+ if (!busy) {
32
+ busy = true;
33
+ logInfo("Sync API is busy. Waiting...");
34
+ }
35
+ await sleep(waitIntervalMS);
36
+ continue;
37
+ }
38
+ if (busy === true) {
39
+ logInfo("Continuing sync...");
40
+ waitMS = 0;
41
+ busy = false;
42
+ }
43
+ const syncItems = syncRet.items;
44
+ //if we have something...
45
+ if (syncItems.length > 0) {
46
+ for (let index = 0; index < syncItems.length; index++) {
47
+ const item = syncItems[index];
48
+ await storeInterface.saveItem({
49
+ options: {
50
+ rootPath: './data',
51
+ languageCode: languageCode
52
+ },
53
+ item,
54
+ itemType: 'page',
55
+ languageCode,
56
+ itemID: item.pageID
57
+ });
58
+ itemCount++;
59
+ yield {
60
+ status: 'progress',
61
+ current: itemCount,
62
+ item,
63
+ languageCode
64
+ };
65
+ }
66
+ }
67
+ if (syncRet.syncToken > token) {
68
+ token = syncRet.syncToken;
69
+ }
70
+ else {
71
+ break;
72
+ }
73
+ } while (token > 0 || busy === true);
74
+ if (itemCount > 0) {
75
+ logInfo(`Page Sync returned ${itemCount} item(s).`);
76
+ }
77
+ else {
78
+ logInfo(`Page Sync returned no item(s).`);
79
+ }
80
+ yield { status: 'done' };
81
+ return token;
82
+ }
@@ -0,0 +1,163 @@
1
+ import { StoreInterface, StoreOptions } from './types/StoreInterface';
2
+ import type { ContentItem } from './types/ContentItem';
3
+ import type { Page } from './types/Page';
4
+ import type { Asset } from './types/Asset';
5
+ import type { Gallery } from './types/Gallery';
6
+ import type { Container } from './types/Container';
7
+ import type { ContentModel } from './types/ContentModel';
8
+ import type { PageModel } from './types/PageModel';
9
+ export declare class ConsoleStore implements StoreInterface {
10
+ private options;
11
+ constructor(options: StoreOptions);
12
+ clearItems(options: StoreOptions): Promise<void>;
13
+ deleteItem(params: {
14
+ options: StoreOptions;
15
+ itemType: string;
16
+ languageCode: string;
17
+ itemID: string | number;
18
+ }): Promise<void>;
19
+ getItem(params: {
20
+ options: StoreOptions;
21
+ itemType: string;
22
+ languageCode: string;
23
+ itemID: string | number;
24
+ }): Promise<any>;
25
+ saveItem(params: {
26
+ options: StoreOptions;
27
+ item: any;
28
+ itemType: string;
29
+ languageCode: string;
30
+ itemID: string | number;
31
+ }): Promise<void>;
32
+ getContentItem(options: {
33
+ contentID: number;
34
+ languageCode: string;
35
+ }): Promise<ContentItem | null>;
36
+ saveContentItem(options: {
37
+ contentItem: ContentItem;
38
+ languageCode: string;
39
+ }): Promise<void>;
40
+ getContentItems(options: {
41
+ languageCode: string;
42
+ }): Promise<ContentItem[]>;
43
+ saveContentItems(options: {
44
+ contentItems: ContentItem[];
45
+ languageCode: string;
46
+ }): Promise<void>;
47
+ getPage(options: {
48
+ pageID: number;
49
+ languageCode: string;
50
+ }): Promise<Page | null>;
51
+ savePageItem(options: {
52
+ page: Page;
53
+ languageCode: string;
54
+ }): Promise<void>;
55
+ getPages(options: {
56
+ languageCode: string;
57
+ }): Promise<Page[]>;
58
+ savePageItems(options: {
59
+ pages: Page[];
60
+ languageCode: string;
61
+ }): Promise<void>;
62
+ getAsset(options: {
63
+ assetID: number;
64
+ languageCode: string;
65
+ }): Promise<Asset | null>;
66
+ saveAsset(options: {
67
+ asset: Asset;
68
+ languageCode: string;
69
+ }): Promise<void>;
70
+ getAssets(options: {
71
+ languageCode: string;
72
+ }): Promise<Asset[]>;
73
+ saveAssets(options: {
74
+ assets: Asset[];
75
+ languageCode: string;
76
+ }): Promise<void>;
77
+ getGallery(options: {
78
+ galleryID: number;
79
+ languageCode: string;
80
+ }): Promise<Gallery | null>;
81
+ saveGallery(options: {
82
+ gallery: Gallery;
83
+ languageCode: string;
84
+ }): Promise<void>;
85
+ getGalleries(options: {
86
+ languageCode: string;
87
+ }): Promise<Gallery[]>;
88
+ saveGalleries(options: {
89
+ galleries: Gallery[];
90
+ languageCode: string;
91
+ }): Promise<void>;
92
+ getContainer(options: {
93
+ containerID: number;
94
+ languageCode: string;
95
+ }): Promise<Container | null>;
96
+ saveContainer(options: {
97
+ container: Container;
98
+ languageCode: string;
99
+ }): Promise<void>;
100
+ getContainers(options: {
101
+ languageCode: string;
102
+ }): Promise<Container[]>;
103
+ saveContainers(options: {
104
+ containers: Container[];
105
+ languageCode: string;
106
+ }): Promise<void>;
107
+ getContentModel(options: {
108
+ contentModelID: number;
109
+ languageCode: string;
110
+ }): Promise<ContentModel | null>;
111
+ saveContentModel(options: {
112
+ contentModel: ContentModel;
113
+ languageCode: string;
114
+ }): Promise<void>;
115
+ getContentModels(options: {
116
+ languageCode: string;
117
+ }): Promise<ContentModel[]>;
118
+ saveContentModels(options: {
119
+ contentModels: ContentModel[];
120
+ languageCode: string;
121
+ }): Promise<void>;
122
+ getPageModel(options: {
123
+ pageModelID: number;
124
+ languageCode: string;
125
+ }): Promise<PageModel | null>;
126
+ savePageModel(options: {
127
+ pageModel: PageModel;
128
+ languageCode: string;
129
+ }): Promise<void>;
130
+ getPageModels(options: {
131
+ languageCode: string;
132
+ }): Promise<PageModel[]>;
133
+ savePageModels(options: {
134
+ pageModels: PageModel[];
135
+ languageCode: string;
136
+ }): Promise<void>;
137
+ getList(options: {
138
+ listName: string;
139
+ languageCode: string;
140
+ }): Promise<any[]>;
141
+ saveList(options: {
142
+ listName: string;
143
+ items: any[];
144
+ languageCode: string;
145
+ }): Promise<void>;
146
+ mergeItemToList(params: {
147
+ options: StoreOptions;
148
+ item: any;
149
+ languageCode: string;
150
+ itemID: string | number;
151
+ referenceName: string;
152
+ definitionName: string;
153
+ }): Promise<void>;
154
+ removeItemFromList(options: {
155
+ listName: string;
156
+ itemID: number;
157
+ languageCode: string;
158
+ }): Promise<void>;
159
+ initialize(options: StoreOptions): Promise<void>;
160
+ clearData(options: {
161
+ languageCode: string;
162
+ }): Promise<void>;
163
+ }
@@ -0,0 +1,146 @@
1
+ import { logDebug, logInfo } from './util';
2
+ export class ConsoleStore {
3
+ options;
4
+ constructor(options) {
5
+ this.options = options;
6
+ }
7
+ async clearItems(options) {
8
+ logInfo('Clearing all items from console store');
9
+ }
10
+ async deleteItem(params) {
11
+ logDebug(`Deleting item: ${params.itemType} - ${params.itemID} (${params.languageCode})`);
12
+ }
13
+ async getItem(params) {
14
+ logDebug(`Getting item: ${params.itemType} - ${params.itemID} (${params.languageCode})`);
15
+ return null;
16
+ }
17
+ async saveItem(params) {
18
+ logDebug(`Saving item: ${params.itemType} - ${params.itemID} (${params.languageCode})`);
19
+ }
20
+ // Content Item methods
21
+ async getContentItem(options) {
22
+ logDebug(`Getting content item: ${options.contentID} (${options.languageCode})`);
23
+ return null;
24
+ }
25
+ async saveContentItem(options) {
26
+ logDebug(`Saving content item: ${options.contentItem.contentID} (${options.languageCode})`);
27
+ }
28
+ async getContentItems(options) {
29
+ logDebug(`Getting content items (${options.languageCode})`);
30
+ return [];
31
+ }
32
+ async saveContentItems(options) {
33
+ logDebug(`Saving ${options.contentItems.length} content items (${options.languageCode})`);
34
+ }
35
+ // Page methods
36
+ async getPage(options) {
37
+ logDebug(`Getting page: ${options.pageID} (${options.languageCode})`);
38
+ return null;
39
+ }
40
+ async savePageItem(options) {
41
+ logDebug(`Saving page: ${options.page.pageID} (${options.languageCode})`);
42
+ }
43
+ async getPages(options) {
44
+ logDebug(`Getting pages (${options.languageCode})`);
45
+ return [];
46
+ }
47
+ async savePageItems(options) {
48
+ logDebug(`Saving ${options.pages.length} pages (${options.languageCode})`);
49
+ }
50
+ // Asset methods
51
+ async getAsset(options) {
52
+ logDebug(`Getting asset: ${options.assetID} (${options.languageCode})`);
53
+ return null;
54
+ }
55
+ async saveAsset(options) {
56
+ logDebug(`Saving asset: ${options.asset.assetID} (${options.languageCode})`);
57
+ }
58
+ async getAssets(options) {
59
+ logDebug(`Getting assets (${options.languageCode})`);
60
+ return [];
61
+ }
62
+ async saveAssets(options) {
63
+ logDebug(`Saving ${options.assets.length} assets (${options.languageCode})`);
64
+ }
65
+ // Gallery methods
66
+ async getGallery(options) {
67
+ logDebug(`Getting gallery: ${options.galleryID} (${options.languageCode})`);
68
+ return null;
69
+ }
70
+ async saveGallery(options) {
71
+ logDebug(`Saving gallery: ${options.gallery.id} (${options.languageCode})`);
72
+ }
73
+ async getGalleries(options) {
74
+ logDebug(`Getting galleries (${options.languageCode})`);
75
+ return [];
76
+ }
77
+ async saveGalleries(options) {
78
+ logDebug(`Saving ${options.galleries.length} galleries (${options.languageCode})`);
79
+ }
80
+ // Container methods
81
+ async getContainer(options) {
82
+ logDebug(`Getting container: ${options.containerID} (${options.languageCode})`);
83
+ return null;
84
+ }
85
+ async saveContainer(options) {
86
+ logDebug(`Saving container: ${options.container.id} (${options.languageCode})`);
87
+ }
88
+ async getContainers(options) {
89
+ logDebug(`Getting containers (${options.languageCode})`);
90
+ return [];
91
+ }
92
+ async saveContainers(options) {
93
+ logDebug(`Saving ${options.containers.length} containers (${options.languageCode})`);
94
+ }
95
+ // Content Model methods
96
+ async getContentModel(options) {
97
+ logDebug(`Getting content model: ${options.contentModelID} (${options.languageCode})`);
98
+ return null;
99
+ }
100
+ async saveContentModel(options) {
101
+ logDebug(`Saving content model: ${options.contentModel.id} (${options.languageCode})`);
102
+ }
103
+ async getContentModels(options) {
104
+ logDebug(`Getting content models (${options.languageCode})`);
105
+ return [];
106
+ }
107
+ async saveContentModels(options) {
108
+ logDebug(`Saving ${options.contentModels.length} content models (${options.languageCode})`);
109
+ }
110
+ // Page Model methods
111
+ async getPageModel(options) {
112
+ logDebug(`Getting page model: ${options.pageModelID} (${options.languageCode})`);
113
+ return null;
114
+ }
115
+ async savePageModel(options) {
116
+ logDebug(`Saving page model: ${options.pageModel.id} (${options.languageCode})`);
117
+ }
118
+ async getPageModels(options) {
119
+ logDebug(`Getting page models (${options.languageCode})`);
120
+ return [];
121
+ }
122
+ async savePageModels(options) {
123
+ logDebug(`Saving ${options.pageModels.length} page models (${options.languageCode})`);
124
+ }
125
+ // List methods
126
+ async getList(options) {
127
+ logDebug(`Getting list: ${options.listName} (${options.languageCode})`);
128
+ return [];
129
+ }
130
+ async saveList(options) {
131
+ logDebug(`Saving list: ${options.listName} with ${options.items.length} items (${options.languageCode})`);
132
+ }
133
+ async mergeItemToList(params) {
134
+ logDebug(`Merging item to list: ${params.referenceName} - ${params.itemID} (${params.languageCode})`);
135
+ }
136
+ async removeItemFromList(options) {
137
+ logDebug(`Removing item from list: ${options.listName} - ${options.itemID} (${options.languageCode})`);
138
+ }
139
+ // Initialization methods
140
+ async initialize(options) {
141
+ this.options = options;
142
+ }
143
+ async clearData(options) {
144
+ logInfo(`Clearing data for language: ${options.languageCode}`);
145
+ }
146
+ }
@@ -0,0 +1,166 @@
1
+ import { StoreInterface, StoreOptions } from './types/StoreInterface';
2
+ import type { ContentItem } from './types/ContentItem';
3
+ import type { Page } from './types/Page';
4
+ import type { Asset } from './types/Asset';
5
+ import type { Gallery } from './types/Gallery';
6
+ import type { Container } from './types/Container';
7
+ import type { ContentModel } from './types/ContentModel';
8
+ import type { PageModel } from './types/PageModel';
9
+ export declare class FileSystemStore implements StoreInterface {
10
+ private options;
11
+ private basePath;
12
+ constructor(options: StoreOptions);
13
+ private ensureDirectoryExists;
14
+ private getItemPath;
15
+ clearItems(options: StoreOptions): Promise<void>;
16
+ deleteItem(params: {
17
+ options: StoreOptions;
18
+ itemType: string;
19
+ languageCode: string;
20
+ itemID: string | number;
21
+ }): Promise<void>;
22
+ getItem(params: {
23
+ options: StoreOptions;
24
+ itemType: string;
25
+ languageCode: string;
26
+ itemID: string | number;
27
+ }): Promise<any>;
28
+ saveItem(params: {
29
+ options: StoreOptions;
30
+ item: any;
31
+ itemType: string;
32
+ languageCode: string;
33
+ itemID: string | number;
34
+ }): Promise<void>;
35
+ getContentItem(options: {
36
+ contentID: number;
37
+ languageCode: string;
38
+ }): Promise<ContentItem | null>;
39
+ saveContentItem(options: {
40
+ contentItem: ContentItem;
41
+ languageCode: string;
42
+ }): Promise<void>;
43
+ getContentItems(options: {
44
+ languageCode: string;
45
+ }): Promise<ContentItem[]>;
46
+ saveContentItems(options: {
47
+ contentItems: ContentItem[];
48
+ languageCode: string;
49
+ }): Promise<void>;
50
+ getPage(options: {
51
+ pageID: number;
52
+ languageCode: string;
53
+ }): Promise<Page | null>;
54
+ savePageItem(options: {
55
+ page: Page;
56
+ languageCode: string;
57
+ }): Promise<void>;
58
+ getPages(options: {
59
+ languageCode: string;
60
+ }): Promise<Page[]>;
61
+ savePageItems(options: {
62
+ pages: Page[];
63
+ languageCode: string;
64
+ }): Promise<void>;
65
+ getAsset(options: {
66
+ assetID: number;
67
+ languageCode: string;
68
+ }): Promise<Asset | null>;
69
+ saveAsset(options: {
70
+ asset: Asset;
71
+ languageCode: string;
72
+ }): Promise<void>;
73
+ getAssets(options: {
74
+ languageCode: string;
75
+ }): Promise<Asset[]>;
76
+ saveAssets(options: {
77
+ assets: Asset[];
78
+ languageCode: string;
79
+ }): Promise<void>;
80
+ getGallery(options: {
81
+ galleryID: number;
82
+ languageCode: string;
83
+ }): Promise<Gallery | null>;
84
+ saveGallery(options: {
85
+ gallery: Gallery;
86
+ languageCode: string;
87
+ }): Promise<void>;
88
+ getGalleries(options: {
89
+ languageCode: string;
90
+ }): Promise<Gallery[]>;
91
+ saveGalleries(options: {
92
+ galleries: Gallery[];
93
+ languageCode: string;
94
+ }): Promise<void>;
95
+ getContainer(options: {
96
+ containerID: number;
97
+ languageCode: string;
98
+ }): Promise<Container | null>;
99
+ saveContainer(options: {
100
+ container: Container;
101
+ languageCode: string;
102
+ }): Promise<void>;
103
+ getContainers(options: {
104
+ languageCode: string;
105
+ }): Promise<Container[]>;
106
+ saveContainers(options: {
107
+ containers: Container[];
108
+ languageCode: string;
109
+ }): Promise<void>;
110
+ getContentModel(options: {
111
+ contentModelID: number;
112
+ languageCode: string;
113
+ }): Promise<ContentModel | null>;
114
+ saveContentModel(options: {
115
+ contentModel: ContentModel;
116
+ languageCode: string;
117
+ }): Promise<void>;
118
+ getContentModels(options: {
119
+ languageCode: string;
120
+ }): Promise<ContentModel[]>;
121
+ saveContentModels(options: {
122
+ contentModels: ContentModel[];
123
+ languageCode: string;
124
+ }): Promise<void>;
125
+ getPageModel(options: {
126
+ pageModelID: number;
127
+ languageCode: string;
128
+ }): Promise<PageModel | null>;
129
+ savePageModel(options: {
130
+ pageModel: PageModel;
131
+ languageCode: string;
132
+ }): Promise<void>;
133
+ getPageModels(options: {
134
+ languageCode: string;
135
+ }): Promise<PageModel[]>;
136
+ savePageModels(options: {
137
+ pageModels: PageModel[];
138
+ languageCode: string;
139
+ }): Promise<void>;
140
+ getList(options: {
141
+ listName: string;
142
+ languageCode: string;
143
+ }): Promise<any[]>;
144
+ saveList(options: {
145
+ listName: string;
146
+ items: any[];
147
+ languageCode: string;
148
+ }): Promise<void>;
149
+ mergeItemToList(params: {
150
+ options: StoreOptions;
151
+ item: any;
152
+ languageCode: string;
153
+ itemID: string | number;
154
+ referenceName: string;
155
+ definitionName: string;
156
+ }): Promise<void>;
157
+ removeItemFromList(options: {
158
+ listName: string;
159
+ itemID: number;
160
+ languageCode: string;
161
+ }): Promise<void>;
162
+ initialize(options: StoreOptions): Promise<void>;
163
+ clearData(options: {
164
+ languageCode: string;
165
+ }): Promise<void>;
166
+ }