@pronto-tools-and-more/pronto 12.34.0 → 12.35.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. package/package.json +12 -11
  2. package/src/parts/ApiProcess/ApiProcess.js +32 -0
  3. package/src/parts/ApiProcessPath/ApiProcessPath.js +7 -0
  4. package/src/parts/HandleApi/HandleApi.js +30 -48
  5. package/src/parts/LaunchApiProcess/LaunchApiProcess.js +15 -0
  6. package/src/parts/Version/Version.js +1 -1
  7. package/src/parts/GetPostIds/GetPostIds.js +0 -41
  8. package/src/parts/GraphQlQueryAuthors/GraphQlQueryAuthors.js +0 -66
  9. package/src/parts/GraphQlQueryCategories/GraphQlQueryCategories.js +0 -66
  10. package/src/parts/GraphQlQueryCollection/GraphQlQueryCollection.js +0 -227
  11. package/src/parts/GraphQlQueryCollections/GraphQlQueryCollections.js +0 -227
  12. package/src/parts/GraphQlQueryContent/GraphQlQueryContent.js +0 -198
  13. package/src/parts/GraphQlQueryDossier/GraphQlQueryDossier.js +0 -221
  14. package/src/parts/GraphQlQueryDossiers/GraphQlQueryDossiers.js +0 -201
  15. package/src/parts/GraphQlQueryIssues/GraphQlQueryIssues.js +0 -202
  16. package/src/parts/GraphQlQueryMenus/GraphQlQueryMenus.js +0 -77
  17. package/src/parts/GraphQlQueryPathSegment/GraphQlQueryPathSegment.js +0 -57
  18. package/src/parts/GraphQlQueryPathSegments/GraphQlQueryPathSegments.js +0 -59
  19. package/src/parts/GraphQlQueryTaxonomies/GraphQlQueryTaxonomies.js +0 -66
  20. package/src/parts/HandleApiArticle/HandleApiArticle.js +0 -30
  21. package/src/parts/HandleApiArticleByCategoryId/HandleApiArticleByCategoryId.js +0 -93
  22. package/src/parts/HandleApiAuthors/HandleApiAuthors.js +0 -35
  23. package/src/parts/HandleApiCategories/HandleApiCategories.js +0 -35
  24. package/src/parts/HandleApiCollection/HandleApiCollection.js +0 -59
  25. package/src/parts/HandleApiCollections/HandleApiCollections.js +0 -49
  26. package/src/parts/HandleApiDossier/HandleApiDossier.js +0 -104
  27. package/src/parts/HandleApiDossiers/HandleApiDossiers.js +0 -36
  28. package/src/parts/HandleApiIndex/HandleApiIndex.js +0 -24
  29. package/src/parts/HandleApiIssues/HandleApiIssues.js +0 -35
  30. package/src/parts/HandleApiMenus/HandleApiMenus.js +0 -36
  31. package/src/parts/HandleApiPostByName/HandleApiPostByName.js +0 -54
  32. package/src/parts/HandleTaxonomies/HandleTaxonomies.js +0 -33
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pronto-tools-and-more/pronto",
3
- "version": "12.34.0",
3
+ "version": "12.35.1",
4
4
  "description": "",
5
5
  "main": "src/main.js",
6
6
  "type": "module",
@@ -17,16 +17,17 @@
17
17
  "@lvce-editor/ipc": "^13.7.0",
18
18
  "@lvce-editor/json-rpc": "^5.4.0",
19
19
  "@lvce-editor/verror": "^1.6.0",
20
- "@pronto-tools-and-more/file-watcher": "12.34.0",
21
- "@pronto-tools-and-more/files": "12.34.0",
22
- "@pronto-tools-and-more/network-process": "12.34.0",
23
- "@pronto-tools-and-more/sass-compiler": "12.34.0",
24
- "@pronto-tools-and-more/components-renderer": "12.34.0",
25
- "@pronto-tools-and-more/components": "12.34.0",
26
- "@pronto-tools-and-more/schema-process": "12.34.0",
27
- "@pronto-tools-and-more/diff-process": "12.34.0",
28
- "@pronto-tools-and-more/type-checker": "12.34.0",
29
- "@pronto-tools-and-more/custom-js-functions": "12.34.0",
20
+ "@pronto-tools-and-more/api": "12.35.1",
21
+ "@pronto-tools-and-more/components-renderer": "12.35.1",
22
+ "@pronto-tools-and-more/components": "12.35.1",
23
+ "@pronto-tools-and-more/custom-js-functions": "12.35.1",
24
+ "@pronto-tools-and-more/diff-process": "12.35.1",
25
+ "@pronto-tools-and-more/file-watcher": "12.35.1",
26
+ "@pronto-tools-and-more/files": "12.35.1",
27
+ "@pronto-tools-and-more/network-process": "12.35.1",
28
+ "@pronto-tools-and-more/sass-compiler": "12.35.1",
29
+ "@pronto-tools-and-more/schema-process": "12.35.1",
30
+ "@pronto-tools-and-more/type-checker": "12.35.1",
30
31
  "execa": "^9.5.2",
31
32
  "express": "^4.21.2"
32
33
  },
@@ -0,0 +1,32 @@
1
+ import * as JsonRpc from "../JsonRpc/JsonRpc.js";
2
+ import * as LaunchApiProcess from "../LaunchApiProcess/LaunchApiProcess.js";
3
+
4
+ const state = {
5
+ /**
6
+ * @type {any}
7
+ */
8
+ ipc: undefined,
9
+ };
10
+
11
+ const getOrCreate = () => {
12
+ if (!state.ipc) {
13
+ state.ipc = LaunchApiProcess.launchApiProcess();
14
+ }
15
+ return state.ipc;
16
+ };
17
+
18
+ export const invoke = async (method, ...params) => {
19
+ const ipc = await getOrCreate();
20
+ return JsonRpc.invoke(ipc, method, ...params);
21
+ };
22
+
23
+ export const invokeAndTransfer = async (method, ...params) => {
24
+ const ipc = await getOrCreate();
25
+ return JsonRpc.invokeAndTransfer(ipc, method, ...params);
26
+ };
27
+
28
+ export const dispose = async () => {
29
+ const ipc = await getOrCreate();
30
+ ipc.dispose();
31
+ state.ipc = undefined;
32
+ };
@@ -0,0 +1,7 @@
1
+ import * as Path from "node:path";
2
+ import * as Root from "../Root/Root.js";
3
+ import * as ResolveBin from "../ResolveBin/ResolveBin.js";
4
+
5
+ export const apiProcessPath =
6
+ ResolveBin.resolveBin("@pronto-tools-and-more/api") ||
7
+ Path.join(Root.root, "packages", "pronto-api", "src", "main.js");
@@ -1,53 +1,35 @@
1
- import * as HandleApiArticle from "../HandleApiArticle/HandleApiArticle.js";
2
- import * as HandleApiAuthors from "../HandleApiAuthors/HandleApiAuthors.js";
3
- import * as HandleCategories from "../HandleApiCategories/HandleApiCategories.js";
4
- import * as HandleApiCollection from "../HandleApiCollection/HandleApiCollection.js";
5
- import * as HandleApiCollections from "../HandleApiCollections/HandleApiCollections.js";
6
- import * as HandleApiDossier from "../HandleApiDossier/HandleApiDossier.js";
7
- import * as HandleDossiers from "../HandleApiDossiers/HandleApiDossiers.js";
8
- import * as HandleApiIndex from "../HandleApiIndex/HandleApiIndex.js";
9
- import * as HandleApiIssues from "../HandleApiIssues/HandleApiIssues.js";
10
- import * as HandleApiMenus from "../HandleApiMenus/HandleApiMenus.js";
1
+ import * as ApiProcess from "../ApiProcess/ApiProcess.js";
2
+
3
+ const getHandleMessage = (request) => {
4
+ return {
5
+ headers: request.headers,
6
+ method: request.method,
7
+ path: request.path,
8
+ url: request.url,
9
+ httpVersionMajor: request.httpVersionMajor,
10
+ httpVersionMinor: request.httpVersionMinor,
11
+ query: request.query,
12
+ };
13
+ };
11
14
 
12
15
  export const handleApi =
13
16
  ({ appId, apiUrl }) =>
14
- (req, res) => {
15
- if (req.url === "/") {
16
- return HandleApiIndex.handleIndex(req, res);
17
- }
18
- if (req.url === "/categories") {
19
- return HandleCategories.handleCategories({ appId, apiUrl })(req, res);
20
- }
21
- if (req.url === "/dossiers") {
22
- return HandleDossiers.handleDossiers({ appId, apiUrl })(req, res);
23
- }
24
- if (req.url.startsWith("/dossiers")) {
25
- return HandleApiDossier.handleDossier({ appId, apiUrl })(req, res);
26
- }
27
- if (req.url === "/issues") {
28
- return HandleApiIssues.handleIssues({ appId, apiUrl })(req, res);
29
- }
30
- if (req.url === "/authors") {
31
- return HandleApiAuthors.handleAuthors({ appId, apiUrl })(req, res);
32
- }
33
- if (req.url.startsWith("/articles")) {
34
- return HandleApiArticle.handleApiArticle({ appId, apiUrl })(req, res);
35
- }
36
- if (req.url === "/collections" || req.url === "/collections/") {
37
- return HandleApiCollections.handleApiCollections({ appId, apiUrl })(
38
- req,
39
- res
40
- );
41
- }
42
- if (req.url.startsWith("/collections")) {
43
- return HandleApiCollection.handleApiCollection({ appId, apiUrl })(
44
- req,
45
- res
46
- );
47
- }
48
- if (req.url === "/menus" || req.url === "/menus/") {
49
- return HandleApiMenus.handleMenus({ apiUrl, appId })(req, res);
17
+ async (req, res) => {
18
+ try {
19
+ const handleMessage = getHandleMessage(req);
20
+ const response = await ApiProcess.invoke("Api.handleApi", {
21
+ appId,
22
+ apiUrl,
23
+ req: handleMessage,
24
+ });
25
+ res.statusCode = response.status;
26
+ res.headers = response.headers;
27
+ res.end(response.body);
28
+ } catch (error) {
29
+ console.error(`[api] ${error}`);
30
+ if (res && !res.headersSent) {
31
+ res.status = 500;
32
+ res.end(`${error}`);
33
+ }
50
34
  }
51
- res.statusCode = 404;
52
- return res.end("not found");
53
35
  };
@@ -0,0 +1,15 @@
1
+ import * as ApiProcessPath from "../ApiProcessPath/ApiProcessPath.js";
2
+ import * as HandleIpc from "../HandleIpc/HandleIpc.js";
3
+ import * as IpcParent from "../IpcParent/IpcParent.js";
4
+ import * as IpcParentType from "../IpcParentType/IpcParentType.js";
5
+
6
+ export const launchApiProcess = async () => {
7
+ const ipc = await IpcParent.create({
8
+ method: IpcParentType.NodeForkedProcess,
9
+ path: ApiProcessPath.apiProcessPath,
10
+ });
11
+ HandleIpc.handleIpc(ipc);
12
+ // @ts-ignore
13
+ ipc._rawIpc.unref();
14
+ return ipc;
15
+ };
@@ -1 +1 @@
1
- export const version = '12.34.0'
1
+ export const version = '12.35.1'
@@ -1,41 +0,0 @@
1
- import * as GraphQlQueryPathSegments from "../GraphQlQueryPathSegments/GraphQlQueryPathSegments.js";
2
-
3
- export const getPostIds = async ({ appId, apiUrl, slug }) => {
4
- const realBottom = {
5
- ...GraphQlQueryPathSegments.bottom,
6
- appInfo: {
7
- ...GraphQlQueryPathSegments.bottom.appInfo,
8
- appId,
9
- },
10
- pathSegments: [slug],
11
- };
12
- const response = await fetch(apiUrl, {
13
- method: "POST",
14
- headers: {
15
- Accept: "application/json",
16
- "Content-Type": "application/json",
17
- },
18
- body: JSON.stringify({
19
- operationName: GraphQlQueryPathSegments.queryName,
20
- query: GraphQlQueryPathSegments.top,
21
- variables: realBottom,
22
- }),
23
- });
24
- const result = await response.json();
25
- // @ts-ignore
26
- if (result && result.error) {
27
- // @ts-ignore
28
- throw new Error(`api error: ${result.error}`);
29
- }
30
- // @ts-ignore
31
- const realData = result.data.catalog.lookupPathSegments
32
- .flatMap((item) => item.matches)
33
- .map((match) => {
34
- const { __typename, ...rest } = match;
35
- return rest;
36
- })
37
- .map((match) => {
38
- return match.id;
39
- });
40
- return realData;
41
- };
@@ -1,66 +0,0 @@
1
- export const top = `query CatalogContentsQuery($appInfo: AppInfo!, $deviceInfo: DeviceInfo!, $authorization: Authorization!, $first: Int, $after: String, ) {
2
- catalog(
3
- appInfo: $appInfo
4
- deviceInfo: $deviceInfo
5
- authorization: $authorization
6
- ) {
7
- taxonomiesConnection(first: $first, after: $after, filter:{type:{
8
- value:"author"
9
- }}) {
10
- pageInfo {
11
- hasNextPage
12
- __typename
13
- }
14
- totalCount
15
- edges {
16
- cursor
17
- node {
18
- name
19
- properties {
20
- key
21
- value
22
- }
23
- thumbnails {
24
- properties {
25
- key
26
- value
27
- }
28
- }
29
-
30
- __typename
31
- }
32
- __typename
33
- }
34
- __typename
35
- }
36
- __typename
37
- }
38
- }`;
39
-
40
- export const bottom = {
41
- appInfo: {
42
- appId: "",
43
- appVersion: "1.0-SNAPSHOT",
44
- preview: true,
45
- },
46
- deviceInfo: {
47
- deviceId: "editor-preview",
48
- deviceModel: "web",
49
- locale: "de_DE",
50
- deviceOs: "web",
51
- platform: "WEB",
52
- },
53
- comparators: [
54
- {
55
- publicationDate: {
56
- direction: "DESC",
57
- },
58
- },
59
- ],
60
- first: 99999,
61
- includeBlocks: false,
62
- includeHtml: false,
63
- includeResources: false,
64
- includeBundledContent: false,
65
- authorization: {},
66
- };
@@ -1,66 +0,0 @@
1
- export const top = `query CatalogContentsQuery($appInfo: AppInfo!, $deviceInfo: DeviceInfo!, $authorization: Authorization!, $first: Int, $after: String, ) {
2
- catalog(
3
- appInfo: $appInfo
4
- deviceInfo: $deviceInfo
5
- authorization: $authorization
6
- ) {
7
- taxonomiesConnection(first: $first, after: $after, filter:{type:{
8
- value:"category"
9
- }}) {
10
- pageInfo {
11
- hasNextPage
12
- __typename
13
- }
14
- totalCount
15
- edges {
16
- cursor
17
- node {
18
- name
19
- properties {
20
- key
21
- value
22
- }
23
- thumbnails {
24
- properties {
25
- key
26
- value
27
- }
28
- }
29
-
30
- __typename
31
- }
32
- __typename
33
- }
34
- __typename
35
- }
36
- __typename
37
- }
38
- }`;
39
-
40
- export const bottom = {
41
- appInfo: {
42
- appId: "",
43
- appVersion: "1.0-SNAPSHOT",
44
- preview: true,
45
- },
46
- deviceInfo: {
47
- deviceId: "editor-preview",
48
- deviceModel: "web",
49
- locale: "de_DE",
50
- deviceOs: "web",
51
- platform: "WEB",
52
- },
53
- comparators: [
54
- {
55
- publicationDate: {
56
- direction: "DESC",
57
- },
58
- },
59
- ],
60
- first: 99999,
61
- includeBlocks: false,
62
- includeHtml: false,
63
- includeResources: false,
64
- includeBundledContent: false,
65
- authorization: {},
66
- };
@@ -1,227 +0,0 @@
1
- export const top = `query CatalogCollections($appInfo: AppInfo!, $deviceInfo: DeviceInfo!, $authorization: Authorization!, $filter: CollectionFilter, $sort: [CollectionComparator!], $first: Int, $after: String, $includeElements: Boolean!, $elementsFirst: Int, $elementsAfter: String, $includeBundledContent: Boolean!, $includeResources: Boolean!, $includeBlocks: Boolean!, $includeHtml: Boolean!, $includeContentSeoMetadata: Boolean!, $propertyFilter: PropertyFilter) {
2
- catalog(
3
- appInfo: $appInfo
4
- deviceInfo: $deviceInfo
5
- authorization: $authorization
6
- ) {
7
- collectionsConnection(
8
- filter: $filter
9
- sort: $sort
10
- first: $first
11
- after: $after
12
- ) {
13
- pageInfo {
14
- hasNextPage
15
- endCursor
16
- }
17
- edges {
18
- node {
19
- id
20
- name
21
- properties {
22
- key
23
- value
24
- }
25
- elementsConnection(first: $elementsFirst, after: $elementsAfter) @include(if: $includeElements) {
26
- pageInfo {
27
- hasNextPage
28
- endCursor
29
- }
30
- edges {
31
- node {
32
- __typename
33
- ... on ContentElement {
34
- id
35
- sortIndex
36
- content {
37
- ...ContentFragment
38
- ...IssueFragment
39
- ...PostFragment
40
- ...BundleFragment
41
- }
42
- }
43
- }
44
- }
45
- }
46
- }
47
- }
48
- }
49
- }
50
- }
51
-
52
- fragment ContentFragment on Content {
53
- __typename
54
- id
55
- version
56
- name
57
- description
58
- index
59
- alias
60
- externalId
61
- publicationDate
62
- unpublishDate
63
- lastModified
64
- access
65
- productId
66
- purchaseData {
67
- purchased
68
- purchasedBy
69
- }
70
- publication {
71
- id
72
- }
73
- properties(filter: $propertyFilter) {
74
- key
75
- value
76
- }
77
- seoMetadata @include(if: $includeContentSeoMetadata) {
78
- key
79
- value
80
- }
81
- thumbnails {
82
- kind
83
- url
84
- properties {
85
- key
86
- value
87
- }
88
- }
89
- categories
90
- tags
91
- }
92
-
93
- fragment IssueFragment on Issue {
94
- contentLength
95
- numberOfPages
96
- previewContentLength
97
- resources @include(if: $includeResources) {
98
- id
99
- url
100
- type
101
- contentLength
102
- properties {
103
- key
104
- value
105
- type
106
- }
107
- }
108
- }
109
-
110
- fragment PostFragment on Post {
111
- postType
112
- bundleId
113
- bundles {
114
- id
115
- bundleType
116
- }
117
- taxonomies {
118
- ...TaxonomySummaryFragment
119
- }
120
- authors {
121
- name
122
- email
123
- }
124
- bundleId
125
- content @include(if: $includeBlocks) {
126
- ...ContentBlockFragment
127
- }
128
- previewContentBlocks @include(if: $includeBlocks) {
129
- ...ContentBlockFragment
130
- }
131
- contentHtml @include(if: $includeHtml)
132
- previewContentHtml @include(if: $includeHtml)
133
- resources @include(if: $includeResources) {
134
- id
135
- url
136
- type
137
- contentLength
138
- properties {
139
- key
140
- value
141
- type
142
- }
143
- }
144
- }
145
-
146
- fragment ContentBlockFragment on ContentBlock {
147
- id
148
- type
149
- parentId
150
- children
151
- sequence
152
- html
153
- level
154
- properties {
155
- key
156
- value
157
- type
158
- }
159
- }
160
-
161
- fragment BundleFragment on Bundle {
162
- bundleType
163
- taxonomies {
164
- ...TaxonomySummaryFragment
165
- }
166
- authors {
167
- name
168
- email
169
- }
170
- contents @include(if: $includeBundledContent) {
171
- id
172
- content {
173
- ...ContentFragment
174
- ...PostFragment
175
- }
176
- }
177
- }
178
-
179
- fragment TaxonomySummaryFragment on Taxonomy {
180
- id
181
- internalId
182
- name
183
- type
184
- parentId
185
- seoMetadata @include(if: $includeContentSeoMetadata) {
186
- key
187
- value
188
- }
189
- properties {
190
- key
191
- value
192
- }
193
- }`;
194
-
195
- export const bottom = {
196
- filter: {
197
- name: {
198
- value: "",
199
- },
200
- },
201
- first: 24,
202
- includeElements: true,
203
- elementsFirst: 100,
204
- includeBlocks: false,
205
- includeHtml: false,
206
- includeResources: false,
207
- includeBundledContent: false,
208
- includeContentSeoMetadata: false,
209
- appInfo: {
210
- appId: "",
211
- appVersion: "1.0-SNAPSHOT",
212
- preview: true,
213
- },
214
- deviceInfo: {
215
- deviceId: "editor-preview",
216
- deviceModel: "web",
217
- locale: "de_DE",
218
- smallestScreenWidthDp: 0,
219
- deviceOs: "web",
220
- platform: "WEB",
221
- },
222
- authorization: {
223
- subscriptionCodes: [],
224
- },
225
- };
226
-
227
- export const queryName = "CatalogCollections";