@digipair/skill-web 0.45.7 → 0.46.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.
package/index.cjs.js CHANGED
@@ -3,6 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var engine = require('@digipair/engine');
6
+ var jsdom = require('jsdom');
6
7
 
7
8
  function _extends() {
8
9
  _extends = Object.assign || function assign(target) {
@@ -67,9 +68,40 @@ let WebService = class WebService {
67
68
  }
68
69
  return output;
69
70
  }
71
+ async pins2html(pins) {
72
+ const dom = new jsdom.JSDOM();
73
+ const element = dom.window.document.createElement('section');
74
+ await this.generateElementsFromPins(pins, element, dom);
75
+ return element.innerHTML;
76
+ }
77
+ async generateElementsFromPins(pinsList, parent, dom) {
78
+ for(let i = 0; i < pinsList.length; i++){
79
+ const item = pinsList[i];
80
+ await this.generateElementFromPins(item, parent, dom);
81
+ }
82
+ }
83
+ async generateElementFromPins(pinsSettings, parent, dom) {
84
+ const element = dom.window.document.createElement(pinsSettings.element);
85
+ element.setAttribute('data-ssr', '1');
86
+ const settings = pinsSettings;
87
+ Object.entries(settings.properties || {}).forEach(([key, value])=>{
88
+ if (key === 'textContent') {
89
+ element.textContent = value;
90
+ } else if (key === 'innerHTML') {
91
+ element.innerHTML = value;
92
+ } else if (typeof value === 'string') {
93
+ element.setAttribute(key, value);
94
+ } else {
95
+ element[key] = value;
96
+ }
97
+ });
98
+ const pinsList = settings.pins || [];
99
+ await this.generateElementsFromPins(pinsList, element, dom);
100
+ parent.appendChild(element);
101
+ }
70
102
  async page(params, _pinsSettingsList, context) {
71
103
  var _context_request_body;
72
- const { body, title = 'Digipair', favicon = 'https://res.cloudinary.com/do87nxq3l/image/upload/fl_preserve_transparency/v1717769492/logo-digipair_oyvvxz.png?_s=public-apps', styleHtml = '', styleBody = '', baseUrl = 'https://cdn.jsdelivr.net/npm', factoryInitialize = [], browserInitialize = [], browserLoad = [] } = params;
104
+ const { body, head, ssr = true, styleHtml = '', styleBody = '', baseUrl = 'https://cdn.jsdelivr.net/npm', factoryInitialize = [], browserInitialize = [], browserLoad = [] } = params;
73
105
  const engineVersion = context.config.VERSIONS['@digipair/engine'] || 'latest';
74
106
  const preparedData = {};
75
107
  if (context.request.method === 'POST' && ((_context_request_body = context.request.body) == null ? void 0 : _context_request_body.type) === 'DIGIPAIR_EXECUTE_FACTORY') {
@@ -82,10 +114,12 @@ let WebService = class WebService {
82
114
  <!DOCTYPE html>
83
115
  <html style="${styleHtml}">
84
116
  <head>
85
- <meta charset="UTF-8" />
86
- <title>${title}</title>
87
- <meta name="viewport" content="width=device-width, initial-scale=1" />
88
- <link rel="icon" type="image/x-icon" href="${favicon}">
117
+ ${head ? await this.pins2html(head) : `
118
+ <meta charset="UTF-8" />
119
+ <title>Digipair</title>
120
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
121
+ <link rel="icon" type="image/x-icon" href="https://res.cloudinary.com/do87nxq3l/image/upload/fl_preserve_transparency/v1717769492/logo-digipair_oyvvxz.png?_s=public-apps">
122
+ `}
89
123
  </head>
90
124
  <body style="${styleBody}">
91
125
  <script type="module">
@@ -119,6 +153,7 @@ let WebService = class WebService {
119
153
  await executePinsList(${JSON.stringify(this.prepareBrowserPinsSettings('browserInitialize', browserInitialize))}, context);
120
154
 
121
155
  const pinsList = ${JSON.stringify(this.prepareBrowserPinsSettings('body', body))};
156
+ document.querySelectorAll('body > [data-ssr]').forEach((element) => element.remove()); // Remove SSR elements
122
157
  for (let i = 0; i < pinsList.length; i++) {
123
158
  const item = pinsList[i];
124
159
  await generateElementFromPins(item, document.body, { ...context, data: ${JSON.stringify(preparedData)} });
@@ -128,6 +163,8 @@ let WebService = class WebService {
128
163
  await executePinsList(${JSON.stringify(this.prepareBrowserPinsSettings('browserLoad', browserLoad))}, context);
129
164
  }, 1);
130
165
  </script>
166
+
167
+ ${ssr ? await this.pins2html(body) : ''}
131
168
  </body>
132
169
  </html>
133
170
  `;
package/index.esm.js CHANGED
@@ -1,3 +1,5 @@
1
+ import { JSDOM } from 'jsdom';
2
+
1
3
  function _extends() {
2
4
  _extends = Object.assign || function assign(target) {
3
5
  for(var i = 1; i < arguments.length; i++){
@@ -28005,9 +28007,40 @@ let WebService = class WebService {
28005
28007
  }
28006
28008
  return output;
28007
28009
  }
28010
+ async pins2html(pins) {
28011
+ const dom = new JSDOM();
28012
+ const element = dom.window.document.createElement('section');
28013
+ await this.generateElementsFromPins(pins, element, dom);
28014
+ return element.innerHTML;
28015
+ }
28016
+ async generateElementsFromPins(pinsList, parent, dom) {
28017
+ for(let i = 0; i < pinsList.length; i++){
28018
+ const item = pinsList[i];
28019
+ await this.generateElementFromPins(item, parent, dom);
28020
+ }
28021
+ }
28022
+ async generateElementFromPins(pinsSettings, parent, dom) {
28023
+ const element = dom.window.document.createElement(pinsSettings.element);
28024
+ element.setAttribute('data-ssr', '1');
28025
+ const settings = pinsSettings;
28026
+ Object.entries(settings.properties || {}).forEach(([key, value])=>{
28027
+ if (key === 'textContent') {
28028
+ element.textContent = value;
28029
+ } else if (key === 'innerHTML') {
28030
+ element.innerHTML = value;
28031
+ } else if (typeof value === 'string') {
28032
+ element.setAttribute(key, value);
28033
+ } else {
28034
+ element[key] = value;
28035
+ }
28036
+ });
28037
+ const pinsList = settings.pins || [];
28038
+ await this.generateElementsFromPins(pinsList, element, dom);
28039
+ parent.appendChild(element);
28040
+ }
28008
28041
  async page(params, _pinsSettingsList, context) {
28009
28042
  var _context_request_body;
28010
- const { body, title = 'Digipair', favicon = 'https://res.cloudinary.com/do87nxq3l/image/upload/fl_preserve_transparency/v1717769492/logo-digipair_oyvvxz.png?_s=public-apps', styleHtml = '', styleBody = '', baseUrl = 'https://cdn.jsdelivr.net/npm', factoryInitialize = [], browserInitialize = [], browserLoad = [] } = params;
28043
+ const { body, head, ssr = true, styleHtml = '', styleBody = '', baseUrl = 'https://cdn.jsdelivr.net/npm', factoryInitialize = [], browserInitialize = [], browserLoad = [] } = params;
28011
28044
  const engineVersion = context.config.VERSIONS['@digipair/engine'] || 'latest';
28012
28045
  const preparedData = {};
28013
28046
  if (context.request.method === 'POST' && ((_context_request_body = context.request.body) == null ? void 0 : _context_request_body.type) === 'DIGIPAIR_EXECUTE_FACTORY') {
@@ -28020,10 +28053,12 @@ let WebService = class WebService {
28020
28053
  <!DOCTYPE html>
28021
28054
  <html style="${styleHtml}">
28022
28055
  <head>
28023
- <meta charset="UTF-8" />
28024
- <title>${title}</title>
28025
- <meta name="viewport" content="width=device-width, initial-scale=1" />
28026
- <link rel="icon" type="image/x-icon" href="${favicon}">
28056
+ ${head ? await this.pins2html(head) : `
28057
+ <meta charset="UTF-8" />
28058
+ <title>Digipair</title>
28059
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
28060
+ <link rel="icon" type="image/x-icon" href="https://res.cloudinary.com/do87nxq3l/image/upload/fl_preserve_transparency/v1717769492/logo-digipair_oyvvxz.png?_s=public-apps">
28061
+ `}
28027
28062
  </head>
28028
28063
  <body style="${styleBody}">
28029
28064
  <script type="module">
@@ -28057,6 +28092,7 @@ let WebService = class WebService {
28057
28092
  await executePinsList(${JSON.stringify(this.prepareBrowserPinsSettings('browserInitialize', browserInitialize))}, context);
28058
28093
 
28059
28094
  const pinsList = ${JSON.stringify(this.prepareBrowserPinsSettings('body', body))};
28095
+ document.querySelectorAll('body > [data-ssr]').forEach((element) => element.remove()); // Remove SSR elements
28060
28096
  for (let i = 0; i < pinsList.length; i++) {
28061
28097
  const item = pinsList[i];
28062
28098
  await generateElementFromPins(item, document.body, { ...context, data: ${JSON.stringify(preparedData)} });
@@ -28066,6 +28102,8 @@ let WebService = class WebService {
28066
28102
  await executePinsList(${JSON.stringify(this.prepareBrowserPinsSettings('browserLoad', browserLoad))}, context);
28067
28103
  }, 1);
28068
28104
  </script>
28105
+
28106
+ ${ssr ? await this.pins2html(body) : ''}
28069
28107
  </body>
28070
28108
  </html>
28071
28109
  `;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@digipair/skill-web",
3
- "version": "0.45.7",
3
+ "version": "0.46.1",
4
4
  "dependencies": {},
5
5
  "main": "./index.cjs.js",
6
6
  "module": "./index.esm.js"
package/schema.fr.json CHANGED
@@ -54,21 +54,24 @@
54
54
  }
55
55
  },
56
56
  {
57
- "name": "title",
58
- "summary": "Titre",
57
+ "name": "head",
58
+ "summary": "En tête",
59
59
  "required": false,
60
- "description": "Titre de la page",
60
+ "description": "En tête de la page",
61
61
  "schema": {
62
- "type": "string"
62
+ "type": "array",
63
+ "items": {
64
+ "$ref": "https://schemas.digipair.ai/pinsSettings"
65
+ }
63
66
  }
64
67
  },
65
68
  {
66
- "name": "favicon",
67
- "summary": "Icone de la page",
69
+ "name": "ssr",
70
+ "summary": "Rendu coté serveur",
68
71
  "required": false,
69
- "description": "Icone de la page",
72
+ "description": "Rendu coté serveur",
70
73
  "schema": {
71
- "type": "string"
74
+ "type": "boolean"
72
75
  }
73
76
  },
74
77
  {
package/schema.json CHANGED
@@ -54,21 +54,24 @@
54
54
  }
55
55
  },
56
56
  {
57
- "name": "title",
58
- "summary": "Title",
57
+ "name": "head",
58
+ "summary": "Header",
59
59
  "required": false,
60
- "description": "Title of the page",
60
+ "description": "Header of the page",
61
61
  "schema": {
62
- "type": "string"
62
+ "type": "array",
63
+ "items": {
64
+ "$ref": "https://schemas.digipair.ai/pinsSettings"
65
+ }
63
66
  }
64
67
  },
65
68
  {
66
- "name": "favicon",
67
- "summary": "Page icon",
69
+ "name": "ssr",
70
+ "summary": "Server Side Rendering",
68
71
  "required": false,
69
- "description": "Icon of the page",
72
+ "description": "Server Side Rendering",
70
73
  "schema": {
71
- "type": "string"
74
+ "type": "boolean"
72
75
  }
73
76
  },
74
77
  {
File without changes
File without changes