@digipair/skill-keycloak 0.45.7 → 0.48.1

Sign up to get free protection for your applications and to get access to all the features.
package/index.cjs.js CHANGED
@@ -7,6 +7,7 @@ var require$$0 = require('buffer');
7
7
  var require$$3 = require('stream');
8
8
  var require$$5 = require('util');
9
9
  var require$$2 = require('crypto');
10
+ var jsdom = require('jsdom');
10
11
 
11
12
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
12
13
 
@@ -5656,9 +5657,40 @@ let KeycloakService = class KeycloakService {
5656
5657
  }
5657
5658
  return output;
5658
5659
  }
5660
+ async pins2html(pins) {
5661
+ const dom = new jsdom.JSDOM();
5662
+ const element = dom.window.document.createElement('section');
5663
+ await this.generateElementsFromPins(pins, element, dom);
5664
+ return element.innerHTML;
5665
+ }
5666
+ async generateElementsFromPins(pinsList, parent, dom) {
5667
+ for(let i = 0; i < pinsList.length; i++){
5668
+ const item = pinsList[i];
5669
+ await this.generateElementFromPins(item, parent, dom);
5670
+ }
5671
+ }
5672
+ async generateElementFromPins(pinsSettings, parent, dom) {
5673
+ const element = dom.window.document.createElement(pinsSettings.element);
5674
+ element.setAttribute('data-ssr', '1');
5675
+ const settings = pinsSettings;
5676
+ Object.entries(settings.properties || {}).forEach(([key, value])=>{
5677
+ if (key === 'textContent') {
5678
+ element.textContent = value;
5679
+ } else if (key === 'innerHTML') {
5680
+ element.innerHTML = value;
5681
+ } else if (typeof value === 'string') {
5682
+ element.setAttribute(key, value);
5683
+ } else {
5684
+ element[key] = value;
5685
+ }
5686
+ });
5687
+ const pinsList = settings.pins || [];
5688
+ await this.generateElementsFromPins(pinsList, element, dom);
5689
+ parent.appendChild(element);
5690
+ }
5659
5691
  async page(params, _pinsSettingsList, context) {
5660
5692
  var _context_request_body;
5661
- 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', url = context.privates.KEYCLOAK_URL, realm = context.privates.KEYCLOAK_REALM, clientId = context.privates.KEYCLOAK_CLIENTID, factoryInitialize = [], browserInitialize = [], browserLoad = [], logged = [], unlogged = [], factoryUrl = context.privates.FACTORY_URL || process.env['FACTORY_URL'] || 'https://factory.digipair.ai' } = params;
5693
+ const { body, head, ssr = false, styleHtml = '', styleBody = '', baseUrl = 'https://cdn.jsdelivr.net/npm', url = context.privates.KEYCLOAK_URL, realm = context.privates.KEYCLOAK_REALM, clientId = context.privates.KEYCLOAK_CLIENTID, factoryInitialize = [], browserInitialize = [], browserLoad = [], logged = [], unlogged = [], factoryUrl = context.privates.FACTORY_URL || process.env['FACTORY_URL'] || 'https://factory.digipair.ai' } = params;
5662
5694
  const engineVersion = context.config.VERSIONS['@digipair/engine'] || 'latest';
5663
5695
  const preparedData = {};
5664
5696
  if (context.request.method === 'POST' && ((_context_request_body = context.request.body) == null ? void 0 : _context_request_body.type) === 'DIGIPAIR_EXECUTE_FACTORY') {
@@ -5687,10 +5719,12 @@ let KeycloakService = class KeycloakService {
5687
5719
  <!DOCTYPE html>
5688
5720
  <html style="${styleHtml}">
5689
5721
  <head>
5690
- <meta charset="UTF-8" />
5691
- <title>${title}</title>
5692
- <meta name="viewport" content="width=device-width, initial-scale=1" />
5693
- <link rel="icon" type="image/x-icon" href="${favicon}">
5722
+ ${head ? await this.pins2html(head) : `
5723
+ <meta charset="UTF-8" />
5724
+ <title>Digipair</title>
5725
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
5726
+ <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">
5727
+ `}
5694
5728
  </head>
5695
5729
  <body style="${styleBody}">
5696
5730
  <script type="module">
@@ -5765,6 +5799,7 @@ let KeycloakService = class KeycloakService {
5765
5799
  await executePinsList(${JSON.stringify(this.prepareBrowserPinsSettings('browserInitialize', browserInitialize))}, context);
5766
5800
 
5767
5801
  const pinsList = ${JSON.stringify(this.prepareBrowserPinsSettings('body', body))};
5802
+ document.querySelectorAll('body > [data-ssr]').forEach((element) => element.remove()); // Remove SSR elements
5768
5803
  for (let i = 0; i < pinsList.length; i++) {
5769
5804
  const item = pinsList[i];
5770
5805
  await generateElementFromPins(item, document.body, { ...context, data: ${JSON.stringify(preparedData)} });
@@ -5774,6 +5809,8 @@ let KeycloakService = class KeycloakService {
5774
5809
  await executePinsList(${JSON.stringify(this.prepareBrowserPinsSettings('browserLoad', browserLoad))}, context);
5775
5810
  }, 1);
5776
5811
  </script>
5812
+
5813
+ ${ssr ? await this.pins2html(body) : ''}
5777
5814
  </body>
5778
5815
  </html>
5779
5816
  `;
package/index.esm.js CHANGED
@@ -2,6 +2,7 @@ import require$$0 from 'buffer';
2
2
  import require$$3 from 'stream';
3
3
  import require$$5 from 'util';
4
4
  import require$$2 from 'crypto';
5
+ import { JSDOM } from 'jsdom';
5
6
 
6
7
  function _extends() {
7
8
  _extends = Object.assign || function assign(target) {
@@ -23904,14 +23905,14 @@ function indent(str, spaces) {
23904
23905
  var match = parseIdentifier(input, i1, namePart) || namePart && parseAdditionalSymbol(input, i1) || maybeSpace && parseSpaces(input, i1);
23905
23906
  // match is required
23906
23907
  if (!match) {
23907
- return tokens = tokens1, i = i1, nextMatch = nextMatch1, {
23908
+ return i = i1, tokens = tokens1, nextMatch = nextMatch1, {
23908
23909
  v: nextMatch1
23909
23910
  };
23910
23911
  }
23911
23912
  var token = match.token, offset = match.offset;
23912
23913
  i1 += offset;
23913
23914
  if (token === " ") {
23914
- return tokens = tokens1, i = i1, nextMatch = nextMatch1, "continue";
23915
+ return i = i1, tokens = tokens1, nextMatch = nextMatch1, "continue";
23915
23916
  }
23916
23917
  tokens1 = _to_consumable_array$3(tokens1).concat([
23917
23918
  token
@@ -23930,7 +23931,7 @@ function indent(str, spaces) {
23930
23931
  if (contextKeys.some(function(el) {
23931
23932
  return el.startsWith(name);
23932
23933
  })) {
23933
- return tokens = tokens1, i = i1, nextMatch = nextMatch1, "continue";
23934
+ return i = i1, tokens = tokens1, nextMatch = nextMatch1, "continue";
23934
23935
  }
23935
23936
  if (dateTimeIdentifiers.some(function(el) {
23936
23937
  return el === name;
@@ -23949,9 +23950,9 @@ function indent(str, spaces) {
23949
23950
  if (dateTimeIdentifiers.some(function(el) {
23950
23951
  return el.startsWith(name);
23951
23952
  })) {
23952
- return tokens = tokens1, i = i1, nextMatch = nextMatch1, "continue";
23953
+ return i = i1, tokens = tokens1, nextMatch = nextMatch1, "continue";
23953
23954
  }
23954
- return tokens = tokens1, i = i1, nextMatch = nextMatch1, {
23955
+ return i = i1, tokens = tokens1, nextMatch = nextMatch1, {
23955
23956
  v: nextMatch1
23956
23957
  };
23957
23958
  };
@@ -33588,9 +33589,40 @@ let KeycloakService = class KeycloakService {
33588
33589
  }
33589
33590
  return output;
33590
33591
  }
33592
+ async pins2html(pins) {
33593
+ const dom = new JSDOM();
33594
+ const element = dom.window.document.createElement('section');
33595
+ await this.generateElementsFromPins(pins, element, dom);
33596
+ return element.innerHTML;
33597
+ }
33598
+ async generateElementsFromPins(pinsList, parent, dom) {
33599
+ for(let i = 0; i < pinsList.length; i++){
33600
+ const item = pinsList[i];
33601
+ await this.generateElementFromPins(item, parent, dom);
33602
+ }
33603
+ }
33604
+ async generateElementFromPins(pinsSettings, parent, dom) {
33605
+ const element = dom.window.document.createElement(pinsSettings.element);
33606
+ element.setAttribute('data-ssr', '1');
33607
+ const settings = pinsSettings;
33608
+ Object.entries(settings.properties || {}).forEach(([key, value])=>{
33609
+ if (key === 'textContent') {
33610
+ element.textContent = value;
33611
+ } else if (key === 'innerHTML') {
33612
+ element.innerHTML = value;
33613
+ } else if (typeof value === 'string') {
33614
+ element.setAttribute(key, value);
33615
+ } else {
33616
+ element[key] = value;
33617
+ }
33618
+ });
33619
+ const pinsList = settings.pins || [];
33620
+ await this.generateElementsFromPins(pinsList, element, dom);
33621
+ parent.appendChild(element);
33622
+ }
33591
33623
  async page(params, _pinsSettingsList, context) {
33592
33624
  var _context_request_body;
33593
- 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', url = context.privates.KEYCLOAK_URL, realm = context.privates.KEYCLOAK_REALM, clientId = context.privates.KEYCLOAK_CLIENTID, factoryInitialize = [], browserInitialize = [], browserLoad = [], logged = [], unlogged = [], factoryUrl = context.privates.FACTORY_URL || process.env['FACTORY_URL'] || 'https://factory.digipair.ai' } = params;
33625
+ const { body, head, ssr = false, styleHtml = '', styleBody = '', baseUrl = 'https://cdn.jsdelivr.net/npm', url = context.privates.KEYCLOAK_URL, realm = context.privates.KEYCLOAK_REALM, clientId = context.privates.KEYCLOAK_CLIENTID, factoryInitialize = [], browserInitialize = [], browserLoad = [], logged = [], unlogged = [], factoryUrl = context.privates.FACTORY_URL || process.env['FACTORY_URL'] || 'https://factory.digipair.ai' } = params;
33594
33626
  const engineVersion = context.config.VERSIONS['@digipair/engine'] || 'latest';
33595
33627
  const preparedData = {};
33596
33628
  if (context.request.method === 'POST' && ((_context_request_body = context.request.body) == null ? void 0 : _context_request_body.type) === 'DIGIPAIR_EXECUTE_FACTORY') {
@@ -33619,10 +33651,12 @@ let KeycloakService = class KeycloakService {
33619
33651
  <!DOCTYPE html>
33620
33652
  <html style="${styleHtml}">
33621
33653
  <head>
33622
- <meta charset="UTF-8" />
33623
- <title>${title}</title>
33624
- <meta name="viewport" content="width=device-width, initial-scale=1" />
33625
- <link rel="icon" type="image/x-icon" href="${favicon}">
33654
+ ${head ? await this.pins2html(head) : `
33655
+ <meta charset="UTF-8" />
33656
+ <title>Digipair</title>
33657
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
33658
+ <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">
33659
+ `}
33626
33660
  </head>
33627
33661
  <body style="${styleBody}">
33628
33662
  <script type="module">
@@ -33697,6 +33731,7 @@ let KeycloakService = class KeycloakService {
33697
33731
  await executePinsList(${JSON.stringify(this.prepareBrowserPinsSettings('browserInitialize', browserInitialize))}, context);
33698
33732
 
33699
33733
  const pinsList = ${JSON.stringify(this.prepareBrowserPinsSettings('body', body))};
33734
+ document.querySelectorAll('body > [data-ssr]').forEach((element) => element.remove()); // Remove SSR elements
33700
33735
  for (let i = 0; i < pinsList.length; i++) {
33701
33736
  const item = pinsList[i];
33702
33737
  await generateElementFromPins(item, document.body, { ...context, data: ${JSON.stringify(preparedData)} });
@@ -33706,6 +33741,8 @@ let KeycloakService = class KeycloakService {
33706
33741
  await executePinsList(${JSON.stringify(this.prepareBrowserPinsSettings('browserLoad', browserLoad))}, context);
33707
33742
  }, 1);
33708
33743
  </script>
33744
+
33745
+ ${ssr ? await this.pins2html(body) : ''}
33709
33746
  </body>
33710
33747
  </html>
33711
33748
  `;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@digipair/skill-keycloak",
3
- "version": "0.45.7",
3
+ "version": "0.48.1",
4
4
  "dependencies": {},
5
5
  "main": "./index.cjs.js",
6
6
  "module": "./index.esm.js"
package/schema.fr.json CHANGED
@@ -127,21 +127,24 @@
127
127
  }
128
128
  },
129
129
  {
130
- "name": "title",
131
- "summary": "Titre",
130
+ "name": "head",
131
+ "summary": "En tête",
132
132
  "required": false,
133
- "description": "Titre de la page",
133
+ "description": "En tête de la page",
134
134
  "schema": {
135
- "type": "string"
135
+ "type": "array",
136
+ "items": {
137
+ "$ref": "https://schemas.digipair.ai/pinsSettings"
138
+ }
136
139
  }
137
140
  },
138
141
  {
139
- "name": "favicon",
140
- "summary": "Icone de la page",
142
+ "name": "ssr",
143
+ "summary": "Rendu coté serveur",
141
144
  "required": false,
142
- "description": "Icone de la page",
145
+ "description": "Rendu coté serveur",
143
146
  "schema": {
144
- "type": "string"
147
+ "type": "boolean"
145
148
  }
146
149
  },
147
150
  {
package/schema.json CHANGED
@@ -127,21 +127,24 @@
127
127
  }
128
128
  },
129
129
  {
130
- "name": "title",
131
- "summary": "Title",
130
+ "name": "head",
131
+ "summary": "Header",
132
132
  "required": false,
133
- "description": "Title of the page",
133
+ "description": "Header of the page",
134
134
  "schema": {
135
- "type": "string"
135
+ "type": "array",
136
+ "items": {
137
+ "$ref": "https://schemas.digipair.ai/pinsSettings"
138
+ }
136
139
  }
137
140
  },
138
141
  {
139
- "name": "favicon",
140
- "summary": "Page icon",
142
+ "name": "ssr",
143
+ "summary": "Server Side Rendering",
141
144
  "required": false,
142
- "description": "Icon of the page",
145
+ "description": "Server Side Rendering",
143
146
  "schema": {
144
- "type": "string"
147
+ "type": "boolean"
145
148
  }
146
149
  },
147
150
  {
File without changes