@digipair/skill-keycloak 0.45.7 → 0.48.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
@@ -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