@raketa-cloud/admin 0.0.6 → 0.0.8
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/package.json +3 -2
- package/src/Adapter.js +1 -1
- package/src/cloud/ChangePageURL.js +24 -0
- package/src/cloud/ClonesPage.js +14 -0
- package/src/cloud/DeletePage.js +35 -0
- package/src/cloud/PageChanges.js +15 -0
- package/src/cloud/PageRevisions.js +135 -0
- package/src/cloud/PageTranslations.js +22 -0
- package/src/cloud/Pages.js +63 -0
- package/src/cloud/RaketaClient.js +118 -0
- package/src/cloud/Redirects.js +81 -0
- package/src/cloud/RevertPageRevision.js +18 -0
- package/src/cloud/Settings.js +30 -0
- package/src/cloud/Tags.js +80 -0
- package/src/cloud/documents/articlesDocuments.js +608 -0
- package/src/cloud/documents/categoryDocuments.js +64 -0
- package/src/cloud/documents/common.js +84 -0
- package/src/cloud/documents/pagesDocuments.js +245 -0
- package/src/cloud/documents/redirectsDocuments.js +82 -0
- package/src/cloud/documents/settingsDocuments.js +23 -0
- package/src/cloud/documents/tagsDocuments.js +63 -0
- package/src/handlers/PageCloneHandler.js +17 -0
- package/src/handlers/PageCloneHandler.test/create.test.js +55 -0
- package/src/handlers/PageDeleteHandler.js +68 -0
- package/src/handlers/PageDeleteHandler.test/create.test.js +112 -0
- package/src/handlers/PageDeleteHandler.test/create_form.test.js +54 -0
- package/src/handlers/PageRevisionsCodesHandler.js +83 -0
- package/src/handlers/PageRevisionsCodesHandler.test/edit_form.test.js +56 -0
- package/src/handlers/PageRevisionsCodesHandler.test/update.test.js +137 -0
- package/src/handlers/PageRevisionsGeneralHandler.js +86 -0
- package/src/handlers/PageRevisionsGeneralHandler.test/edit_form.test.js +62 -0
- package/src/handlers/PageRevisionsGeneralHandler.test/update.test.js +147 -0
- package/src/handlers/PageRevisionsHandler.js +47 -0
- package/src/handlers/PageRevisionsHandler.test/create.test.js +67 -0
- package/src/handlers/PageRevisionsHandler.test/destroy.test.js +54 -0
- package/src/handlers/PageRevisionsLockHandler.js +54 -0
- package/src/handlers/PageRevisionsMetaHandler.js +83 -0
- package/src/handlers/PageRevisionsMetaHandler.test/edit_form.test.js +57 -0
- package/src/handlers/PageRevisionsMetaHandler.test/update.test.js +141 -0
- package/src/handlers/PageRevisionsTagsHandler.js +80 -0
- package/src/handlers/PageRevisionsTagsHandler.test/edit_form.test.js +69 -0
- package/src/handlers/PageRevisionsTagsHandler.test/update.test.js +141 -0
- package/src/handlers/PageRevisionsUnlockHandler.js +22 -0
- package/src/handlers/PageRevisionsVisualsHandler.js +77 -0
- package/src/handlers/PageRevisionsVisualsHandler.test/edit_form.test.js +55 -0
- package/src/handlers/PageRevisionsVisualsHandler.test/update.test.js +129 -0
- package/src/handlers/PageRevisionsWidgetsHandler.js +41 -0
- package/src/handlers/PageRevisionsWidgetsHandler.test/show.test.js +47 -0
- package/src/handlers/PageRevisionsWidgetsHandler.test/update.test.js +104 -0
- package/src/handlers/PageTranslationsHandler.js +91 -0
- package/src/handlers/PageURLsHandler.js +69 -0
- package/src/handlers/PageURLsHandler.test/create.test.js +157 -0
- package/src/handlers/PageURLsHandler.test/create_form.test.js +51 -0
- package/src/handlers/PagesHandler.js +114 -0
- package/src/handlers/PagesHandler.test/create.test.js +140 -0
- package/src/handlers/PagesHandler.test/create_form.test.js +41 -0
- package/src/handlers/PagesHandler.test/index.test.js +49 -0
- package/src/handlers/PagesHandler.test/show.test.js +103 -0
- package/src/handlers/PublishPageRevisionHandler.js +84 -0
- package/src/handlers/PublishPageRevisionHandler.test/create.test.js +136 -0
- package/src/handlers/PublishPageRevisionHandler.test/create_form.test.js +47 -0
- package/src/handlers/RedirectsHandler.js +124 -0
- package/src/handlers/RedirectsHandler.test/create.test.js +84 -0
- package/src/handlers/RedirectsHandler.test/create_form.test.js +29 -0
- package/src/handlers/RedirectsHandler.test/destroy.test.js +54 -0
- package/src/handlers/RedirectsHandler.test/edit_form.test.js +38 -0
- package/src/handlers/RedirectsHandler.test/index.test.js +42 -0
- package/src/handlers/RedirectsHandler.test/show.test.js +41 -0
- package/src/handlers/RedirectsHandler.test/update.test.js +89 -0
- package/src/handlers/RevertPageRevisionHandler.js +26 -0
- package/src/handlers/RevertPageRevisionHandler.test/create.test.js +80 -0
- package/src/handlers/SettingsGeneralHandler.js +13 -0
- package/src/handlers/SettingsLayoutHandler.js +51 -0
- package/src/handlers/SettingsMetaHandler.js +52 -0
- package/src/handlers/TagsHandler.js +113 -0
- package/src/helpers/FormBuilder.js +12 -4
- package/src/index.js +33 -0
- package/src/setupAuthentication.js +3 -0
- package/src/styles/application.css +55 -19
- package/src/views/layouts/application.ejs +30 -31
- package/src/views/layouts/header.ejs +6 -7
- package/src/views/page_deletes/create_form.ejs +55 -0
- package/src/views/page_lock/create_form.ejs +35 -0
- package/src/views/page_publish/_form.ejs +57 -0
- package/src/views/page_publish/create_form.ejs +11 -0
- package/src/views/page_revisions/_nav.ejs +40 -0
- package/src/views/page_revisions/codes/edit_form.ejs +39 -0
- package/src/views/page_revisions/general/edit_form.ejs +69 -0
- package/src/views/page_revisions/meta/edit_form.ejs +41 -0
- package/src/views/page_revisions/tags/edit_form.ejs +64 -0
- package/src/views/page_revisions/visuals/edit_form.ejs +42 -0
- package/src/views/page_translations/_form.ejs +76 -0
- package/src/views/page_translations/create_form.ejs +11 -0
- package/src/views/page_urls/create_form.ejs +31 -0
- package/src/views/pages/_form.ejs +84 -0
- package/src/views/pages/create_form.ejs +9 -0
- package/src/views/pages/edit_form.ejs +3 -0
- package/src/views/pages/index.ejs +161 -0
- package/src/views/pages/show.ejs +281 -0
- package/src/views/redirects/_form.ejs +40 -0
- package/src/views/redirects/create_form.ejs +9 -0
- package/src/views/redirects/edit_form.ejs +9 -0
- package/src/views/redirects/index.ejs +75 -1
- package/src/views/redirects/show.ejs +60 -0
- package/src/views/settings/_nav.ejs +28 -0
- package/src/views/settings/general/edit_form.ejs +26 -0
- package/src/views/settings/layout/edit_form.ejs +22 -0
- package/src/views/settings/meta/edit_form.ejs +38 -0
- package/src/views/tags/_form.ejs +39 -0
- package/src/views/tags/create_form.ejs +9 -0
- package/src/views/tags/edit_form.ejs +9 -0
- package/src/views/tags/index.ejs +43 -0
- package/test/factory.js +91 -0
- package/test/handlersHelper.js +9 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@raketa-cloud/admin",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.8",
|
|
4
4
|
"main": "src/index.js",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"dev": "npx tailwindcss -i ./src/styles/application.css -o ../../apps/admin/static/application.css --watch",
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
"typescript": "^5.3.3"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"ejs": "^3.1.10"
|
|
22
|
+
"ejs": "^3.1.10",
|
|
23
|
+
"graphql-request": "5.1.0"
|
|
23
24
|
}
|
|
24
25
|
}
|
package/src/Adapter.js
CHANGED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import RaketaClient from "./RaketaClient";
|
|
2
|
+
import { ChangePageSlugDocument } from "./documents/pagesDocuments";
|
|
3
|
+
|
|
4
|
+
export default class ChangePageURL extends RaketaClient {
|
|
5
|
+
async update(id, slug, locale, redirect) {
|
|
6
|
+
const input = {
|
|
7
|
+
id,
|
|
8
|
+
slug,
|
|
9
|
+
locale,
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
if (redirect) {
|
|
13
|
+
input.redirect = redirect;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const {
|
|
17
|
+
changePageSlug: { errors, page },
|
|
18
|
+
} = await this.query(ChangePageSlugDocument, {
|
|
19
|
+
input,
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
return { page, errors };
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import RaketaClient from "./RaketaClient";
|
|
2
|
+
import { ClonePageDocument } from "./documents/pagesDocuments";
|
|
3
|
+
|
|
4
|
+
export default class ClonePage extends RaketaClient {
|
|
5
|
+
async clone(id, locale) {
|
|
6
|
+
const {
|
|
7
|
+
clonePage: { errors, page },
|
|
8
|
+
} = await this.query(ClonePageDocument, {
|
|
9
|
+
input: { id: id, locale: locale },
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
return { page, errors };
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import RaketaClient from "./RaketaClient";
|
|
2
|
+
import {
|
|
3
|
+
DeletePageDocument,
|
|
4
|
+
PageByIdDocument,
|
|
5
|
+
} from "./documents/pagesDocuments";
|
|
6
|
+
|
|
7
|
+
export default class DeletePage extends RaketaClient {
|
|
8
|
+
async find(id, locale) {
|
|
9
|
+
const { page: item } = await this.query(PageByIdDocument, {
|
|
10
|
+
input: {
|
|
11
|
+
id,
|
|
12
|
+
locale,
|
|
13
|
+
},
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
return item;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
async delete(id, locale, redirect) {
|
|
20
|
+
const input = {
|
|
21
|
+
id,
|
|
22
|
+
locale,
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
if (redirect) {
|
|
26
|
+
input.redirect = redirect;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const {
|
|
30
|
+
deletePage: { errors, page },
|
|
31
|
+
} = await this.query(DeletePageDocument, { input });
|
|
32
|
+
|
|
33
|
+
return { page, errors };
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import RaketaClient from "./RaketaClient";
|
|
2
|
+
import { PageChangesDocument } from "./documents/pagesDocuments";
|
|
3
|
+
|
|
4
|
+
export default class PageChanges extends RaketaClient {
|
|
5
|
+
async all(pageId, locale) {
|
|
6
|
+
const { pageChanges: items } = await this.query(PageChangesDocument, {
|
|
7
|
+
input: {
|
|
8
|
+
id: pageId,
|
|
9
|
+
locale,
|
|
10
|
+
},
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
return items;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import RaketaClient from "./RaketaClient";
|
|
2
|
+
import {
|
|
3
|
+
DeletePageDocument,
|
|
4
|
+
LockPageRevisionDocument,
|
|
5
|
+
MergePageRevisionDocument,
|
|
6
|
+
PageByIdDocument,
|
|
7
|
+
PageRevisionDocument,
|
|
8
|
+
PageRevisionsDocument,
|
|
9
|
+
StartPageRevisionDocument,
|
|
10
|
+
UnlockPageRevisionDocument,
|
|
11
|
+
UpdatePageDocument,
|
|
12
|
+
UpdatePageWidgetsDocument,
|
|
13
|
+
} from "./documents/pagesDocuments";
|
|
14
|
+
|
|
15
|
+
export default class PageRevisions extends RaketaClient {
|
|
16
|
+
async all(pageId, locale) {
|
|
17
|
+
const { pageRevisions: items } = await this.query(PageRevisionsDocument, {
|
|
18
|
+
input: {
|
|
19
|
+
id: pageId,
|
|
20
|
+
locale,
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
return items;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
async find(id, locale) {
|
|
28
|
+
const { pageRevision } = await this.query(PageRevisionDocument, {
|
|
29
|
+
input: {
|
|
30
|
+
id,
|
|
31
|
+
locale,
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
return pageRevision;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
async publish(id, locale, params, pageParams) {
|
|
39
|
+
const {
|
|
40
|
+
mergePageRevision: { page, errors },
|
|
41
|
+
} = await this.query(MergePageRevisionDocument, {
|
|
42
|
+
input: {
|
|
43
|
+
id,
|
|
44
|
+
locale,
|
|
45
|
+
...params,
|
|
46
|
+
page: { ...pageParams },
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
return { page, errors };
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
async create(pageId, locale) {
|
|
54
|
+
const {
|
|
55
|
+
startPageRevision: { revision, errors, pageErrors },
|
|
56
|
+
} = await this.query(StartPageRevisionDocument, {
|
|
57
|
+
input: {
|
|
58
|
+
id: pageId,
|
|
59
|
+
locale,
|
|
60
|
+
title: "New revision",
|
|
61
|
+
description: "",
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
return { revision, errors, pageErrors };
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
async update(id, locale, params) {
|
|
69
|
+
const {
|
|
70
|
+
updatePage: { errors, page },
|
|
71
|
+
} = await this.query(UpdatePageDocument, {
|
|
72
|
+
input: {
|
|
73
|
+
id,
|
|
74
|
+
locale,
|
|
75
|
+
page: params,
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
return { page, errors };
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
async updateWidgets(id, locale, widgets) {
|
|
83
|
+
const {
|
|
84
|
+
updatePageWidgets: { errors, page },
|
|
85
|
+
} = await this.query(UpdatePageWidgetsDocument, {
|
|
86
|
+
input: {
|
|
87
|
+
id,
|
|
88
|
+
locale,
|
|
89
|
+
widgets: JSON.stringify(widgets),
|
|
90
|
+
},
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
return { page, errors };
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
async delete(revisionId, locale) {
|
|
97
|
+
const {
|
|
98
|
+
deletePage: { page, errors },
|
|
99
|
+
} = await this.query(DeletePageDocument, {
|
|
100
|
+
input: {
|
|
101
|
+
id: revisionId,
|
|
102
|
+
locale,
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
return { revision: page, errors };
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
async lock(revisionId, locale, message) {
|
|
110
|
+
const {
|
|
111
|
+
lockPageRevision: { revision, errors },
|
|
112
|
+
} = await this.query(LockPageRevisionDocument, {
|
|
113
|
+
input: {
|
|
114
|
+
revisionId,
|
|
115
|
+
message,
|
|
116
|
+
locale,
|
|
117
|
+
},
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
return { revision, errors };
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
async unlock(revisionId, locale) {
|
|
124
|
+
const {
|
|
125
|
+
unlockPageRevision: { revision, errors },
|
|
126
|
+
} = await this.query(UnlockPageRevisionDocument, {
|
|
127
|
+
input: {
|
|
128
|
+
revisionId,
|
|
129
|
+
locale,
|
|
130
|
+
},
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
return { revision, errors };
|
|
134
|
+
}
|
|
135
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import RaketaClient from "./RaketaClient";
|
|
2
|
+
import { TranslatePageDocument } from "./documents/pagesDocuments";
|
|
3
|
+
|
|
4
|
+
export default class PageTranslations extends RaketaClient {
|
|
5
|
+
async create(locale, sourcePageId, params) {
|
|
6
|
+
console.log(params);
|
|
7
|
+
params.widgets = JSON.stringify(params.widgets);
|
|
8
|
+
params.settings = JSON.stringify(params.settings);
|
|
9
|
+
console.log(params);
|
|
10
|
+
const {
|
|
11
|
+
translatePage: { errors, page },
|
|
12
|
+
} = await this.query(TranslatePageDocument, {
|
|
13
|
+
input: {
|
|
14
|
+
locale,
|
|
15
|
+
sourcePageId,
|
|
16
|
+
page: params,
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
return { page, errors };
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import RaketaClient from "./RaketaClient";
|
|
2
|
+
import {
|
|
3
|
+
CreatePageDocument,
|
|
4
|
+
PageByIdDocument,
|
|
5
|
+
PagesDocument,
|
|
6
|
+
} from "./documents/pagesDocuments";
|
|
7
|
+
|
|
8
|
+
export default class Pages extends RaketaClient {
|
|
9
|
+
defaults() {
|
|
10
|
+
return {
|
|
11
|
+
visibility: "private",
|
|
12
|
+
layout: "default",
|
|
13
|
+
tags: [],
|
|
14
|
+
categories: [],
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
visibilityOptions() {
|
|
19
|
+
return [
|
|
20
|
+
["private", "Private"],
|
|
21
|
+
["public", "Public"],
|
|
22
|
+
["unlisted", "Unlisted"],
|
|
23
|
+
["protected", "Password protected"],
|
|
24
|
+
];
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
async find(id, locale) {
|
|
28
|
+
const { page: item } = await this.query(PageByIdDocument, {
|
|
29
|
+
input: {
|
|
30
|
+
id,
|
|
31
|
+
locale,
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
return item;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
async list(query, locale) {
|
|
39
|
+
const { pages: items } = await this.query(
|
|
40
|
+
PagesDocument,
|
|
41
|
+
this.buildListInput(query, locale)
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
return items;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
async create(params, locale, pageTypeSlug) {
|
|
48
|
+
params.widgets = JSON.stringify(params.widgets);
|
|
49
|
+
params.settings = JSON.stringify(params.settings);
|
|
50
|
+
|
|
51
|
+
const {
|
|
52
|
+
createPage: { errors, page },
|
|
53
|
+
} = await this.query(CreatePageDocument, {
|
|
54
|
+
input: {
|
|
55
|
+
locale,
|
|
56
|
+
page: params,
|
|
57
|
+
pageTypeSlug,
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
return { page, errors };
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { request } from "graphql-request";
|
|
2
|
+
|
|
3
|
+
function isObjectEmpty(obj) {
|
|
4
|
+
for (const key in obj) {
|
|
5
|
+
if (Object.hasOwn(obj, key)) return false;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
return true;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export default class RaketaClient {
|
|
12
|
+
constructor(getConfig, token) {
|
|
13
|
+
this.getConfig = getConfig;
|
|
14
|
+
this.token = token;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
gqlRequest(url, query, variables = {}, headers = {}) {
|
|
18
|
+
return request({
|
|
19
|
+
url,
|
|
20
|
+
document: query,
|
|
21
|
+
variables: variables,
|
|
22
|
+
requestHeaders: headers,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
query(query, variables = {}) {
|
|
27
|
+
return this.gqlRequest(this.getConfig().instanceURL, query, variables, {
|
|
28
|
+
"x-raketa-project": this.getConfig().project,
|
|
29
|
+
"x-raketa-service": this.getConfig().service,
|
|
30
|
+
"x-raketa-identity": this.token,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
formatErrors(errors, generalErrorTo = null) {
|
|
35
|
+
const result = {};
|
|
36
|
+
|
|
37
|
+
errors.forEach((error) => {
|
|
38
|
+
const key =
|
|
39
|
+
generalErrorTo && error.key === "generalError"
|
|
40
|
+
? generalErrorTo
|
|
41
|
+
: error.key;
|
|
42
|
+
|
|
43
|
+
if (!result[key]) {
|
|
44
|
+
result[key] = [];
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
result[key].push(error.message);
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
Object.keys(result).forEach((key) => {
|
|
51
|
+
result[key] = result[key].join(", ");
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
return { ...result };
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
buildFiltersInput(query) {
|
|
58
|
+
if (!query) {
|
|
59
|
+
return {};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const { page, ...rest } = query;
|
|
63
|
+
|
|
64
|
+
if (isObjectEmpty(rest)) {
|
|
65
|
+
return {};
|
|
66
|
+
}
|
|
67
|
+
const filters = {};
|
|
68
|
+
|
|
69
|
+
for (const key in rest) {
|
|
70
|
+
const stringKey = key.toString();
|
|
71
|
+
|
|
72
|
+
if (stringKey.startsWith("f:") && rest[key]) {
|
|
73
|
+
filters[stringKey.slice(2)] = rest[key];
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return filters;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
buildOrderInput(query) {
|
|
81
|
+
const orderBy = query.order_by || "";
|
|
82
|
+
|
|
83
|
+
if (!orderBy) {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
return {
|
|
88
|
+
field: orderBy,
|
|
89
|
+
direction: query.order_direction || "ASC",
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
buildPaginationInput(query) {
|
|
94
|
+
const page = Number.parseInt(query.page || "1", 10);
|
|
95
|
+
|
|
96
|
+
return { page: page, pageSize: 25 };
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
buildListInput(query, locale = null) {
|
|
100
|
+
const orderBy = this.buildOrderInput(query);
|
|
101
|
+
const variables = {
|
|
102
|
+
input: {
|
|
103
|
+
pagination: this.buildPaginationInput(query),
|
|
104
|
+
filters: this.buildFiltersInput(query),
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
if (orderBy) {
|
|
109
|
+
variables.input.orderBy = orderBy;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
if (locale) {
|
|
113
|
+
variables.input.locale = locale;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
return variables;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import RaketaClient from "./RaketaClient";
|
|
2
|
+
import {
|
|
3
|
+
RedirectByIdDocument,
|
|
4
|
+
RedirectChangesDocument,
|
|
5
|
+
RedirectsDocument,
|
|
6
|
+
CreateRedirectDocument,
|
|
7
|
+
UpdateRedirectDocument,
|
|
8
|
+
DeleteRedirectDocument,
|
|
9
|
+
} from "./documents/redirectsDocuments";
|
|
10
|
+
|
|
11
|
+
export default class Redirects extends RaketaClient {
|
|
12
|
+
async list(query) {
|
|
13
|
+
const { redirects: items } = await this.query(
|
|
14
|
+
RedirectsDocument,
|
|
15
|
+
this.buildListInput(query)
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
return items;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
async find(id) {
|
|
22
|
+
const { redirect: item } = await this.query(RedirectByIdDocument, {
|
|
23
|
+
input: {
|
|
24
|
+
id,
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
return item;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
async create(params) {
|
|
32
|
+
const {
|
|
33
|
+
createRedirect: { errors, redirect },
|
|
34
|
+
} = await this.query(CreateRedirectDocument, {
|
|
35
|
+
input: {
|
|
36
|
+
redirect: params,
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
return { redirect, errors };
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
async update(id, params) {
|
|
44
|
+
const {
|
|
45
|
+
updateRedirect: { errors, redirect },
|
|
46
|
+
} = await this.query(UpdateRedirectDocument, {
|
|
47
|
+
input: {
|
|
48
|
+
id,
|
|
49
|
+
redirect: params,
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
return { redirect, errors };
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
async delete(id) {
|
|
57
|
+
const {
|
|
58
|
+
deleteRedirect: { errors, redirect },
|
|
59
|
+
} = await this.query(DeleteRedirectDocument, {
|
|
60
|
+
input: {
|
|
61
|
+
id,
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
return { redirect, errors };
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
async history(id) {
|
|
69
|
+
const { redirectChanges: items } = await this.query(
|
|
70
|
+
RedirectChangesDocument,
|
|
71
|
+
{
|
|
72
|
+
input: {
|
|
73
|
+
id,
|
|
74
|
+
locale: "en",
|
|
75
|
+
},
|
|
76
|
+
}
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
return items;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import RaketaClient from "./RaketaClient";
|
|
2
|
+
import { ReopenPageChangeDocument } from "./documents/pagesDocuments";
|
|
3
|
+
|
|
4
|
+
export default class RevertPageRevision extends RaketaClient {
|
|
5
|
+
async create(pageId, version, locale) {
|
|
6
|
+
const {
|
|
7
|
+
reopenPageChange: { revision, errors, pageErrors },
|
|
8
|
+
} = await this.query(ReopenPageChangeDocument, {
|
|
9
|
+
input: {
|
|
10
|
+
pageId,
|
|
11
|
+
locale,
|
|
12
|
+
version,
|
|
13
|
+
},
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
return { revision, errors, pageErrors };
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import RaketaClient from "./RaketaClient";
|
|
2
|
+
import {
|
|
3
|
+
UpdateSettingDocument,
|
|
4
|
+
SettingDocument,
|
|
5
|
+
} from "./documents/settingsDocuments";
|
|
6
|
+
|
|
7
|
+
export default class Settings extends RaketaClient {
|
|
8
|
+
async find(locale) {
|
|
9
|
+
const {
|
|
10
|
+
setting: { value },
|
|
11
|
+
} = await this.query(SettingDocument, {
|
|
12
|
+
locale,
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
return value;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
async update(locale, params) {
|
|
19
|
+
const {
|
|
20
|
+
updateSetting: { errors, setting },
|
|
21
|
+
} = await this.query(UpdateSettingDocument, {
|
|
22
|
+
input: {
|
|
23
|
+
locale,
|
|
24
|
+
setting: { value: JSON.stringify(params) },
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
return { setting, errors };
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import RaketaClient from "./RaketaClient";
|
|
2
|
+
import {
|
|
3
|
+
CreateTagDocument,
|
|
4
|
+
DeleteTagDocument,
|
|
5
|
+
TagByIdDocument,
|
|
6
|
+
TagsDocument,
|
|
7
|
+
UpdateTagDocument,
|
|
8
|
+
} from "./documents/tagsDocuments";
|
|
9
|
+
|
|
10
|
+
export default class Tags extends RaketaClient {
|
|
11
|
+
async list(query, locale) {
|
|
12
|
+
const { tags: items } = await this.query(
|
|
13
|
+
TagsDocument,
|
|
14
|
+
this.buildListInput(query, locale)
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
return items;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
async all(locale) {
|
|
21
|
+
const { tags: items } = await this.query(TagsDocument, {
|
|
22
|
+
input: {
|
|
23
|
+
locale: locale,
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
return items;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
async find(id, locale) {
|
|
31
|
+
const { tag: item } = await this.query(TagByIdDocument, {
|
|
32
|
+
input: {
|
|
33
|
+
id,
|
|
34
|
+
locale,
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
return item;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
async create(params, locale) {
|
|
42
|
+
const {
|
|
43
|
+
createTag: { errors, tag },
|
|
44
|
+
} = await this.query(CreateTagDocument, {
|
|
45
|
+
input: {
|
|
46
|
+
locale,
|
|
47
|
+
tag: params,
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
return { tag, errors };
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
async update(id, params, locale) {
|
|
55
|
+
const {
|
|
56
|
+
updateTag: { errors, tag },
|
|
57
|
+
} = await this.query(UpdateTagDocument, {
|
|
58
|
+
input: {
|
|
59
|
+
id,
|
|
60
|
+
locale,
|
|
61
|
+
tag: params,
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
return { tag, errors };
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
async delete(id, locale) {
|
|
69
|
+
const {
|
|
70
|
+
deleteTag: { errors, tag },
|
|
71
|
+
} = await this.query(DeleteTagDocument, {
|
|
72
|
+
input: {
|
|
73
|
+
id,
|
|
74
|
+
locale,
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
return { tag, errors };
|
|
79
|
+
}
|
|
80
|
+
}
|