dbm-graph-api 1.1.34 → 1.1.36

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dbm-graph-api",
3
- "version": "1.1.34",
3
+ "version": "1.1.36",
4
4
  "main": "index.js",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -13,7 +13,7 @@
13
13
  "dependencies": {
14
14
  "@aws-sdk/client-s3": "^3.741.0",
15
15
  "@aws-sdk/s3-request-presigner": "^3.741.0",
16
- "dbm": "^1.2.3",
16
+ "dbm": "^1.2.5",
17
17
  "mime": "^4.0.6",
18
18
  "sharp": "^0.33.5",
19
19
  "ws": "^8.18.0"
@@ -0,0 +1,26 @@
1
+ import Dbm from "dbm";
2
+ import { exec } from 'node:child_process';
3
+ import { createHash } from 'node:crypto';
4
+
5
+ export default class ReRenderPages extends Dbm.core.BaseObject {
6
+ _construct() {
7
+ super._construct();
8
+ }
9
+
10
+ async performAction(aData, aEncodeSession) {
11
+ let returnObject = {};
12
+
13
+ let database = Dbm.getRepositoryItem("graphDatabase").controller;
14
+
15
+ let pages = await database.getObjectsOfType("page");
16
+ let currentArray = pages;
17
+ let currentArrayLength = currentArray.length;
18
+ for(let i = 0; i < currentArrayLength; i++) {
19
+ let page = currentArray[i];
20
+
21
+ await database.addActionToProcess("pageUpdates/updateRenderedContent", [page]);
22
+ }
23
+
24
+ return returnObject;
25
+ }
26
+ }
@@ -1,2 +1,3 @@
1
1
  export {default as RestartServer} from "./RestartServer.js";
2
- export {default as RestartDatabaseConnection} from "./RestartDatabaseConnection.js";
2
+ export {default as RestartDatabaseConnection} from "./RestartDatabaseConnection.js";
3
+ export {default as ReRenderPages} from "./ReRenderPages.js";
@@ -276,6 +276,8 @@ let fullActionSetup = function() {
276
276
 
277
277
  registerActionFunction("development/restartServer", new DbmGraphApi.action.development.RestartServer());
278
278
  registerActionFunction("development/restartDatabaseConnection", new DbmGraphApi.action.development.RestartDatabaseConnection());
279
+
280
+ registerActionFunction("development/reRenderPages", new DbmGraphApi.action.development.ReRenderPages());
279
281
  }
280
282
 
281
283
  export {fullActionSetup};
@@ -294,6 +296,8 @@ let fullProcessActionSetup = function() {
294
296
  registerProcessActionFunction("handleFormSubmission", new DbmGraphApi.processAction.HandleFormSubmission());
295
297
 
296
298
  registerProcessActionFunction("pageUpdates/updateCategoryListing", new DbmGraphApi.processAction.pageUpdates.UpdateCategoryListing());
299
+ registerProcessActionFunction("pageUpdates/updateRenderedContent", new DbmGraphApi.processAction.pageUpdates.UpdateRenderedContent());
300
+ registerProcessActionFunction("pageUpdates/clearCache", new DbmGraphApi.processAction.pageUpdates.ClearCloudflareCache());
297
301
  }
298
302
 
299
303
  export {fullProcessActionSetup};
@@ -536,7 +540,7 @@ export const setupEndpoints = function(aServer) {
536
540
  export const setupSite = function(aServer) {
537
541
 
538
542
  aServer.get('/cdn-cgi/image/:options/*', async function(request, reply) {
539
- console.log("/cdn-cgi/image/");
543
+ //console.log("/cdn-cgi/image/");
540
544
 
541
545
  let publicDir = Dbm.getInstance().repository.getItem("site").publicDir;
542
546
 
@@ -546,8 +550,7 @@ export const setupSite = function(aServer) {
546
550
  let realPath;
547
551
  try {
548
552
  realPath = fs.realpathSync(publicDir + "/" + imageUrl);
549
- console.log(realPath);
550
- console.log(realPath);
553
+ //console.log(realPath);
551
554
  if(realPath.indexOf(publicDir + "/") !== 0) {
552
555
  throw("Not in folder");
553
556
  }
@@ -868,16 +871,34 @@ export const setupSite = function(aServer) {
868
871
  <meta property="article:publisher" content="https://sv-se.facebook.com/..." />
869
872
  */
870
873
 
874
+
875
+ let renderedContent = "";
876
+
877
+ if(fields["renderedPageContent"]) {
878
+ renderedContent = fields["renderedPageContent"];
879
+ }
880
+
881
+ let renderedContentHolder = "";
882
+ if(renderedContent) {
883
+ renderedContentHolder = `<div id="preRenderContent">${renderedContent}</div>`;
884
+ }
885
+
886
+ let moduleData = {};
887
+ //METODO: add page data
888
+ let endodedModuleData = JSON.stringify(moduleData);
889
+
871
890
  returnString += ` </head>
872
891
  <body>
873
- <div id="site"></div>
892
+ <div id="site">
893
+ ${renderedContentHolder}
894
+ </div>
874
895
  <script>
875
896
  (function(d,b,m,j,s){
876
897
  d[m] = d[m] || {}; d[m][j] = d[m][j] || {_: [], create: function(element, moduleName, data) {return this._.push({element, moduleName, data});}, remove: function(id) {this._[id-1] = null;}};
877
898
  let e = b.createElement("script"); e.async = true; e.src = s; b.head.appendChild(e);
878
899
  })(window, document, "dbmstartup", "modules", "${assetsUri}js/${loader}");
879
900
 
880
- dbmstartup.modules.create(document.getElementById("site"), "${moduleName}", {});
901
+ dbmstartup.modules.create(document.getElementById("site"), "${moduleName}", ${endodedModuleData});
881
902
  </script>
882
903
  </body>
883
904
  </html>`;
@@ -0,0 +1,46 @@
1
+ import Dbm from "dbm";
2
+
3
+ export default class ClearCloudflareCache extends Dbm.core.BaseObject {
4
+ _construct() {
5
+ super._construct();
6
+ }
7
+
8
+ async process(aAction) {
9
+ console.log("ClearCloudflareCache:process");
10
+ //console.log(aAction);
11
+
12
+ let database = Dbm.getInstance().repository.getItem("graphDatabase").controller;
13
+ let page = await aAction.singleObjectRelationQuery("out:from:page");
14
+
15
+ let cloudflare = Dbm.getInstance().repository.getItem("cloudflare");
16
+ let url = await page.getUrl();
17
+
18
+ if(cloudflare.domain && cloudflare.zone) {
19
+ let fullUrl = cloudflare.domain + url;
20
+
21
+ let requestUrl = "https://api.cloudflare.com/client/v4/zones/" + cloudflare.zone + "/purge_cache";
22
+
23
+ let body = {
24
+ "files": [fullUrl]
25
+ }
26
+
27
+ let headers = {
28
+ "Content-Type": "application/json",
29
+ 'Authorization': 'Bearer ' + cloudflare.cacheToken
30
+ }
31
+
32
+ let response = await fetch(requestUrl, {
33
+ method: "DELETE",
34
+ headers: headers,
35
+ body: JSON.stringify(body),
36
+ });
37
+
38
+ let data = await response.json();
39
+ }
40
+ else {
41
+ //METODO: report error log
42
+ }
43
+
44
+
45
+ }
46
+ }
@@ -0,0 +1,53 @@
1
+ import Dbm from "dbm";
2
+
3
+ export default class UpdateRenderedContent extends Dbm.core.BaseObject {
4
+ _construct() {
5
+ super._construct();
6
+ }
7
+
8
+ async process(aAction) {
9
+ console.log("UpdateRenderedContent:process");
10
+ //console.log(aAction);
11
+
12
+ let database = Dbm.getRepositoryItem("graphDatabase").controller;
13
+ let page = await aAction.singleObjectRelationQuery("out:from:page");
14
+
15
+ let fields = await page.getFields();
16
+
17
+ let webcrawler = Dbm.getRepositoryItem("webcrawler");
18
+ let renderedContent = null;
19
+
20
+ if(!fields["seo/noIndex"]) {
21
+ if(webcrawler.domain && webcrawler.renderPageUrl) {
22
+ let url = await page.getUrl();
23
+
24
+ let fullUrl = webcrawler.domain + url;
25
+
26
+ let body = {
27
+ "url": fullUrl,
28
+ "key": webcrawler.key
29
+ }
30
+
31
+ let headers = {
32
+ "Content-Type": "application/json",
33
+ }
34
+
35
+ let response = await fetch(webcrawler.renderPageUrl, {
36
+ method: "POST",
37
+ headers: headers,
38
+ body: JSON.stringify(body),
39
+ });
40
+
41
+ let data = await response.json();
42
+
43
+ renderedContent = Dbm.objectPath(data, "data.html");
44
+ }
45
+ }
46
+
47
+ if(renderedContent !== fields["renderedContent"]) {
48
+ await page.updateField("renderedPageContent", renderedContent);
49
+
50
+ await database.addActionToProcess("pageUpdates/clearCache", [page]);
51
+ }
52
+ }
53
+ }
@@ -1 +1,3 @@
1
- export {default as UpdateCategoryListing} from "./UpdateCategoryListing.js";
1
+ export {default as UpdateCategoryListing} from "./UpdateCategoryListing.js";
2
+ export {default as UpdateRenderedContent} from "./UpdateRenderedContent.js";
3
+ export {default as ClearCloudflareCache} from "./ClearCloudflareCache.js";
@@ -10,7 +10,7 @@ export default class JsonLdGenerator extends Dbm.core.BaseObject{
10
10
  }
11
11
 
12
12
  async encodeWebsiteEntity(aDatabaseObject) {
13
- console.log("encodeWebsiteEntity");
13
+ //console.log("encodeWebsiteEntity");
14
14
 
15
15
  let site = Dbm.getInstance().repository.getItem("site");
16
16
  let fields = await aDatabaseObject.getFields();
@@ -27,7 +27,7 @@ export default class JsonLdGenerator extends Dbm.core.BaseObject{
27
27
  }
28
28
 
29
29
  async encodeOrganizationEntity(aDatabaseObject) {
30
- console.log("encodeOrganizationEntity");
30
+ //console.log("encodeOrganizationEntity");
31
31
 
32
32
  let site = Dbm.getInstance().repository.getItem("site");
33
33
  let fields = await aDatabaseObject.getFields();
@@ -124,7 +124,7 @@ export default class JsonLdGenerator extends Dbm.core.BaseObject{
124
124
  }
125
125
 
126
126
  async getWebsiteEntites() {
127
- console.log("getWebsiteEntites");
127
+ //console.log("getWebsiteEntites");
128
128
 
129
129
  let returnArray = [];
130
130
  let database = Dbm.getInstance().repository.getItem("graphDatabase").controller;
@@ -142,9 +142,9 @@ export default class JsonLdGenerator extends Dbm.core.BaseObject{
142
142
  for(let i = 0; i < currentArrayLength; i++) {
143
143
  let currentLocalBusiness = currentArray[i];
144
144
  if(currentLocalBusiness) {
145
- console.log(currentLocalBusiness);
145
+ //console.log(currentLocalBusiness);
146
146
  returnArray.push(await this.encodeLocalBusiness(currentLocalBusiness));
147
- console.log("-");
147
+ //console.log("-");
148
148
  }
149
149
  }
150
150
  }