@libretexts/cxone-expert-node 1.0.0 → 1.1.1

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 (61) hide show
  1. package/README.md +39 -39
  2. package/dist/cxone-expert-node.cjs.development.js +1511 -0
  3. package/dist/cxone-expert-node.cjs.development.js.map +1 -0
  4. package/dist/cxone-expert-node.cjs.production.min.js +2 -0
  5. package/dist/cxone-expert-node.cjs.production.min.js.map +1 -0
  6. package/dist/cxone-expert-node.esm.js +1505 -0
  7. package/dist/cxone-expert-node.esm.js.map +1 -0
  8. package/dist/index.d.ts +32 -0
  9. package/dist/index.js +8 -0
  10. package/dist/modules/archive.d.ts +18 -0
  11. package/dist/modules/auth.d.ts +8 -0
  12. package/dist/modules/contextMaps.d.ts +10 -0
  13. package/dist/modules/events.d.ts +15 -0
  14. package/dist/modules/files.d.ts +23 -0
  15. package/dist/modules/groups.d.ts +11 -0
  16. package/dist/modules/pages.d.ts +68 -0
  17. package/dist/modules/requests.d.ts +14 -0
  18. package/dist/modules/site.d.ts +22 -0
  19. package/dist/modules/users.d.ts +16 -0
  20. package/dist/types/archive.d.ts +78 -0
  21. package/dist/types/auth.d.ts +11 -0
  22. package/dist/types/contextMaps.d.ts +34 -0
  23. package/dist/types/events.d.ts +68 -0
  24. package/dist/types/files.d.ts +61 -0
  25. package/dist/types/groups.d.ts +57 -0
  26. package/dist/types/index.d.ts +19 -0
  27. package/dist/types/pages.d.ts +737 -0
  28. package/dist/types/requests.d.ts +9 -0
  29. package/dist/types/security.d.ts +57 -0
  30. package/dist/types/site.d.ts +254 -0
  31. package/dist/types/users.d.ts +81 -0
  32. package/dist/utils.d.ts +2 -0
  33. package/license.md +20 -20
  34. package/package.json +16 -5
  35. package/src/index.ts +105 -35
  36. package/src/modules/archive.ts +186 -0
  37. package/src/modules/auth.ts +35 -31
  38. package/src/modules/contextMaps.ts +56 -0
  39. package/src/modules/events.ts +140 -0
  40. package/src/modules/files.ts +291 -0
  41. package/src/modules/groups.ts +79 -0
  42. package/src/modules/pages.ts +1236 -73
  43. package/src/modules/requests.ts +67 -67
  44. package/src/modules/site.ts +266 -0
  45. package/src/modules/users.ts +161 -0
  46. package/src/types/archive.ts +101 -0
  47. package/src/types/auth.ts +13 -13
  48. package/src/types/contextMaps.ts +46 -0
  49. package/src/types/events.ts +91 -0
  50. package/src/types/files.ts +87 -0
  51. package/src/types/groups.ts +74 -0
  52. package/src/types/index.ts +21 -14
  53. package/src/types/pages.ts +858 -171
  54. package/src/types/requests.ts +10 -10
  55. package/src/types/security.ts +60 -47
  56. package/src/types/site.ts +304 -0
  57. package/src/types/users.ts +101 -0
  58. package/src/utils.ts +8 -8
  59. package/.github/workflows/release.yaml +0 -37
  60. package/.releaserc.json +0 -15
  61. package/tsconfig.json +0 -26
@@ -0,0 +1,186 @@
1
+ import {
2
+ BaseArgs,
3
+ ExpertGlobalOptions,
4
+ GetArchiveParams,
5
+ GetArchiveResponse,
6
+ GetArchiveFilesParams,
7
+ GetArchiveFilesResponse,
8
+ GetArchiveFileParams,
9
+ GetArchiveFileInfoResponse,
10
+ GetArchivePagesParams,
11
+ GetArchivePagesResponse,
12
+ GetArchivePageParams,
13
+ GetArchivePageResponse,
14
+ GetArchivePageContentsResponse,
15
+ GetArchivePageInfoResponse,
16
+ GetArchivePageSubPagesResponse
17
+ } from "../types";
18
+ import { getTld } from "../utils";
19
+ import Auth from "./auth";
20
+ import Requests from "./requests";
21
+
22
+ export default class Archive {
23
+ private globals: ExpertGlobalOptions;
24
+ private _auth?: Auth;
25
+
26
+ constructor(args: ExpertGlobalOptions, auth?: Auth) {
27
+ this.globals = args;
28
+ this._auth = auth;
29
+ }
30
+
31
+ private parseFileName(name: string) {
32
+ return `=${encodeURIComponent(encodeURIComponent(name))}`;
33
+ }
34
+
35
+ public async getArchive(
36
+ funcArgs: BaseArgs,
37
+ reqArgs?: GetArchiveParams
38
+ ) {
39
+ const tld = getTld(this.globals, funcArgs.tld);
40
+ const requests = new Requests(tld, funcArgs.auth);
41
+ const res = await requests.get<GetArchiveResponse>(`/archive`, {
42
+ params: {
43
+ ...reqArgs,
44
+ },
45
+ });
46
+ return res.data;
47
+ }
48
+
49
+ public async getArchiveFiles(
50
+ funcArgs: BaseArgs,
51
+ reqArgs?: GetArchiveFilesParams
52
+ ) {
53
+ const tld = getTld(this.globals, funcArgs.tld);
54
+ const requests = new Requests(tld, funcArgs.auth);
55
+ const res = await requests.get<GetArchiveFilesResponse>(`/archive/files`, {
56
+ params: {
57
+ ...reqArgs,
58
+ },
59
+ });
60
+ return res.data;
61
+ }
62
+
63
+ public async getArchiveFile(
64
+ fileId: number,
65
+ funcArgs: BaseArgs,
66
+ reqArgs?: GetArchiveFileParams
67
+ ) {
68
+ const tld = getTld(this.globals, funcArgs.tld);
69
+ const requests = new Requests(tld, funcArgs.auth);
70
+ const res = await requests.get(`/archive/files/${fileId}`, {
71
+ params: {
72
+ ...reqArgs,
73
+ },
74
+ responseType: "stream"
75
+ });
76
+ return res.data;
77
+ }
78
+
79
+ public async getArchiveFileByName(
80
+ fileId: number,
81
+ fileName: string,
82
+ funcArgs: BaseArgs,
83
+ reqArgs?: GetArchiveFileParams
84
+ ) {
85
+ const tld = getTld(this.globals, funcArgs.tld);
86
+ const parseFileName = this.parseFileName(fileName);
87
+ const requests = new Requests(tld, funcArgs.auth);
88
+ const res = await requests.get(`/archive/files/${fileId}/${parseFileName}`, {
89
+ params: {
90
+ ...reqArgs,
91
+ },
92
+ responseType: "stream"
93
+ });
94
+ return res.data;
95
+ }
96
+
97
+ public async getArchiveFileInfo(
98
+ fileId: number,
99
+ funcArgs: BaseArgs,
100
+ reqArgs?: GetArchiveFileParams
101
+ ) {
102
+ const tld = getTld(this.globals, funcArgs.tld);
103
+ const requests = new Requests(tld, funcArgs.auth);
104
+ const res = await requests.get<GetArchiveFileInfoResponse>(`/archive/files/${fileId}/info`, {
105
+ params: {
106
+ ...reqArgs,
107
+ },
108
+ });
109
+ return res.data;
110
+ }
111
+
112
+ public async getArchivePages(
113
+ funcArgs: BaseArgs,
114
+ reqArgs?: GetArchivePagesParams
115
+ ) {
116
+ const tld = getTld(this.globals, funcArgs.tld);
117
+ const requests = new Requests(tld, funcArgs.auth);
118
+ const res = await requests.get<GetArchivePagesResponse>(`/archive/pages`, {
119
+ params: {
120
+ ...reqArgs,
121
+ },
122
+ });
123
+ return res.data;
124
+ }
125
+
126
+ public async getArchivePage(
127
+ pageId: number,
128
+ funcArgs: BaseArgs,
129
+ reqArgs?: GetArchivePageParams
130
+ ) {
131
+ const tld = getTld(this.globals, funcArgs.tld);
132
+ const requests = new Requests(tld, funcArgs.auth);
133
+ const res = await requests.get<GetArchivePageResponse>(`/archive/page/${pageId}`, {
134
+ params: {
135
+ ...reqArgs,
136
+ },
137
+ });
138
+ return res.data;
139
+ }
140
+
141
+ public async getArchivePageContents(
142
+ pageId: number,
143
+ funcArgs: BaseArgs,
144
+ reqArgs?: GetArchivePageParams
145
+ ) {
146
+ const tld = getTld(this.globals, funcArgs.tld);
147
+ const requests = new Requests(tld, funcArgs.auth);
148
+ const res = await requests.get<GetArchivePageContentsResponse>(`/archive/page/${pageId}/contents`, {
149
+ params: {
150
+ ...reqArgs,
151
+ },
152
+ });
153
+ return res.data;
154
+ }
155
+
156
+ public async getArchivePageInfo(
157
+ pageId: number,
158
+ funcArgs: BaseArgs,
159
+ reqArgs?: GetArchivePageParams
160
+ ) {
161
+ const tld = getTld(this.globals, funcArgs.tld);
162
+ const requests = new Requests(tld, funcArgs.auth);
163
+ const res = await requests.get<GetArchivePageInfoResponse>(`/archive/page/${pageId}/info`, {
164
+ params: {
165
+ ...reqArgs,
166
+ },
167
+ });
168
+ return res.data;
169
+ }
170
+
171
+ public async getArchivePageSubPages(
172
+ pageId: number,
173
+ funcArgs: BaseArgs,
174
+ reqArgs?: GetArchivePageParams
175
+ ) {
176
+ const tld = getTld(this.globals, funcArgs.tld);
177
+ const requests = new Requests(tld, funcArgs.auth);
178
+ const res = await requests.get<GetArchivePageSubPagesResponse>(`/archive/page/${pageId}/subpages`, {
179
+ params: {
180
+ ...reqArgs,
181
+ },
182
+ });
183
+ return res.data;
184
+ }
185
+
186
+ }
@@ -1,31 +1,35 @@
1
- import { AuthObject, BrowserTokenParams, ServerTokenParams } from "../types";
2
- import { createHmac } from 'crypto';
3
-
4
- export default class Auth {
5
- private token: string | null = null;
6
-
7
- public BrowserToken({ key }: BrowserTokenParams) {
8
- this.token = key;
9
- return this;
10
- }
11
-
12
- public ServerToken({ key, secret, user }: ServerTokenParams) {
13
- const hmac = createHmac('sha256', secret);
14
- const epoch = Math.floor(Date.now() / 1000);
15
- hmac.update(`${key}_${epoch}_${user}`);
16
- const hash = hmac.digest('hex');
17
- this.token = `tkn_${key}_${epoch}_${user}_${hash}`;
18
- return this;
19
- }
20
-
21
- public getToken() {
22
- return this.token;
23
- }
24
-
25
- public getHeader(): AuthObject {
26
- return {
27
- 'X-Deki-Token': this.token
28
- }
29
- }
30
- }
31
-
1
+ import { AuthObject, BrowserTokenParams, ServerTokenParams } from "../types";
2
+ import { createHmac } from 'crypto';
3
+
4
+ export default class Auth {
5
+ private token: string | null = null;
6
+
7
+ public BrowserToken({ key }: BrowserTokenParams) {
8
+ this.token = key;
9
+ return this;
10
+ }
11
+
12
+ public ServerToken({ key, secret, user }: ServerTokenParams) {
13
+ if(!key || !secret || !user) {
14
+ throw new Error("Missing required parameters: key, secret, user");
15
+ }
16
+
17
+ const epoch = Math.floor(Date.now() / 1000);
18
+ const hmac = createHmac('sha256', secret);
19
+ hmac.update(`${key}${epoch}=${user}`);
20
+ const hash = hmac.digest('hex');
21
+ this.token = `${key}_${epoch}_=${user}_${hash}`;
22
+ return this;
23
+ }
24
+
25
+ public getToken() {
26
+ return this.token;
27
+ }
28
+
29
+ public getHeader(): AuthObject {
30
+ return {
31
+ 'X-Deki-Token': this.token
32
+ }
33
+ }
34
+ }
35
+
@@ -0,0 +1,56 @@
1
+ import {
2
+ BaseArgs,
3
+ ExpertGlobalOptions,
4
+ GetContextMapParams,
5
+ GetContextMapResponse,
6
+ GetContextMapByIdParams,
7
+ GetContextMapByIdResponse
8
+ } from "../types";
9
+ import { getTld } from "../utils";
10
+ import Auth from "./auth";
11
+ import Requests from "./requests";
12
+
13
+ export default class contextMaps {
14
+ private globals: ExpertGlobalOptions;
15
+ private _auth?: Auth;
16
+
17
+ constructor(args: ExpertGlobalOptions, auth?: Auth) {
18
+ this.globals = args;
19
+ this._auth = auth;
20
+ }
21
+
22
+ private parseFileName(name: string) {
23
+ return `=${encodeURIComponent(encodeURIComponent(name))}`;
24
+ }
25
+
26
+ public async getContextMaps(
27
+ funcArgs: BaseArgs,
28
+ reqArgs?: GetContextMapParams
29
+ ) {
30
+ const tld = getTld(this.globals, funcArgs.tld);
31
+ const requests = new Requests(tld, funcArgs.auth);
32
+ const res = await requests.get<GetContextMapResponse>(`/contextmaps`, {
33
+ params: {
34
+ ...reqArgs,
35
+ },
36
+ });
37
+ return res.data;
38
+ }
39
+
40
+ public async getContextMapsById(
41
+ language: string,
42
+ id: string | number,
43
+ funcArgs: BaseArgs,
44
+ reqArgs?: GetContextMapByIdParams
45
+ ) {
46
+ const tld = getTld(this.globals, funcArgs.tld);
47
+ const requests = new Requests(tld, funcArgs.auth);
48
+ const res = await requests.get<GetContextMapByIdResponse>(`/contextmaps/${language}/${id}`, {
49
+ params: {
50
+ ...reqArgs,
51
+ },
52
+ });
53
+ return res.data;
54
+ }
55
+
56
+ }
@@ -0,0 +1,140 @@
1
+ import {
2
+ BaseArgs,
3
+ ExpertGlobalOptions,
4
+ GetPageHierarchyByIdParams,
5
+ GetPageHierarchyByIdResponse,
6
+ GetPageHierarchyDetailByIdParams,
7
+ GetPageHierarchyDetailByIdResponse,
8
+ GetEventPageParams,
9
+ GetEventPageResponse,
10
+ GetEventPageDetailParams,
11
+ GetEventPageDetailResponse,
12
+ GetEventUserPageParams,
13
+ GetEventUserPageResponse,
14
+ GetEventUserPageDetailParams,
15
+ GetEventUserPageDetailResponse
16
+ } from "../types";
17
+ import { getTld } from "../utils";
18
+ import Auth from "./auth";
19
+ import Requests from "./requests";
20
+
21
+ export default class Events {
22
+ private globals: ExpertGlobalOptions;
23
+ private _auth?: Auth;
24
+
25
+ constructor(args: ExpertGlobalOptions, auth?: Auth) {
26
+ this.globals = args;
27
+ this._auth = auth;
28
+ }
29
+
30
+ private parsePageId(id: string | number) {
31
+ if (typeof id === "number") {
32
+ return id.toString();
33
+ }
34
+ return `=${encodeURIComponent(encodeURIComponent(id))}`;
35
+ }
36
+
37
+ private parseUserId(id: string | number) {
38
+ if (typeof id === "number") {
39
+ return id.toString();
40
+ }
41
+ return `=${encodeURIComponent(encodeURIComponent(id))}`;
42
+ }
43
+
44
+ public async getPageHierarchyById(
45
+ id: string | number,
46
+ funcArgs: BaseArgs,
47
+ reqArgs?: GetPageHierarchyByIdParams
48
+ ){
49
+ const pageId = this.parsePageId(id);
50
+ const tld = getTld(this.globals, funcArgs.tld);
51
+ const requests = new Requests(tld, funcArgs.auth);
52
+ const res = await requests.get<GetPageHierarchyByIdResponse>(`events/page-hierarchy/${pageId}`, {
53
+ params: {
54
+ ...reqArgs,
55
+ },
56
+ });
57
+ return res.data;
58
+ }
59
+
60
+ public async getPageHierarchyDetailById(
61
+ id: string | number,
62
+ detailId: string,
63
+ funcArgs: BaseArgs,
64
+ reqArgs?: GetPageHierarchyDetailByIdParams
65
+ ){
66
+ const pageId = this.parsePageId(id);
67
+ const tld = getTld(this.globals, funcArgs.tld);
68
+ const requests = new Requests(tld, funcArgs.auth);
69
+ const res = await requests.get<GetPageHierarchyDetailByIdResponse>(`events/page-hierarchy/${pageId}/${detailId}`, {
70
+ params: {
71
+ ...reqArgs,
72
+ },
73
+ });
74
+ return res.data;
75
+ }
76
+
77
+ public async getEventPage(
78
+ id: string | number,
79
+ funcArgs: BaseArgs,
80
+ reqArgs?: GetEventPageParams
81
+ ){
82
+ const pageId = this.parsePageId(id);
83
+ const tld = getTld(this.globals, funcArgs.tld);
84
+ const requests = new Requests(tld, funcArgs.auth);
85
+ const res = await requests.get<GetEventPageResponse>(`events/page/${pageId}`, {
86
+ params: {
87
+ ...reqArgs,
88
+ },
89
+ });
90
+ return res.data;
91
+ }
92
+
93
+ public async getEventPageDetail(
94
+ id: string | number,
95
+ detailId: string,
96
+ funcArgs: BaseArgs,
97
+ reqArgs?: GetEventPageDetailParams
98
+ ){
99
+ const pageId = this.parsePageId(id);
100
+ const tld = getTld(this.globals, funcArgs.tld);
101
+ const requests = new Requests(tld, funcArgs.auth);
102
+ const res = await requests.get<GetEventPageDetailResponse>(`/events/page/${pageId}/${detailId}`, {
103
+ params: {
104
+ ...reqArgs,
105
+ },
106
+ });
107
+ return res.data;
108
+ }
109
+
110
+ public async getEventUserPage(
111
+ userId: string | number,
112
+ funcArgs: BaseArgs,
113
+ reqArgs?: GetEventUserPageParams
114
+ ){
115
+ const tld = getTld(this.globals, funcArgs.tld);
116
+ const requests = new Requests(tld, funcArgs.auth);
117
+ const res = await requests.get<GetEventUserPageResponse>(`/events/user-page/${this.parseUserId(userId)}`, {
118
+ params: {
119
+ ...reqArgs,
120
+ },
121
+ });
122
+ return res.data;
123
+ }
124
+
125
+ public async getEventUserDetailPage(
126
+ userId: string | number,
127
+ detailId: string,
128
+ funcArgs: BaseArgs,
129
+ reqArgs?: GetEventUserPageDetailParams
130
+ ){
131
+ const tld = getTld(this.globals, funcArgs.tld);
132
+ const requests = new Requests(tld, funcArgs.auth);
133
+ const res = await requests.get<GetEventUserPageDetailResponse>(`/events/user-page/${this.parseUserId(userId)}/${detailId}`, {
134
+ params: {
135
+ ...reqArgs,
136
+ },
137
+ });
138
+ return res.data;
139
+ }
140
+ };