@digipair/skill-keycloak 0.45.7 → 0.48.3

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,29 @@ let KeycloakService = class KeycloakService {
5656
5657
  }
5657
5658
  return output;
5658
5659
  }
5660
+ async pins2html(pins, context) {
5661
+ const dom = new jsdom.JSDOM();
5662
+ const element = dom.window.document.createElement('section');
5663
+ await this.generateElementsFromPins(pins, element, {
5664
+ config: {
5665
+ VERSIONS: context.config.VERSIONS || {}
5666
+ },
5667
+ variables: context.variables || {},
5668
+ request: context.request || {}
5669
+ }, dom.window.document);
5670
+ return element.innerHTML;
5671
+ }
5672
+ async generateElementsFromPins(pinsList, parent, context, document) {
5673
+ for(let i = 0; i < pinsList.length; i++){
5674
+ const item = pinsList[i];
5675
+ await engine.generateElementFromPins(item, parent, context, document, {
5676
+ import: false
5677
+ });
5678
+ }
5679
+ }
5659
5680
  async page(params, _pinsSettingsList, context) {
5660
5681
  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;
5682
+ 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
5683
  const engineVersion = context.config.VERSIONS['@digipair/engine'] || 'latest';
5663
5684
  const preparedData = {};
5664
5685
  if (context.request.method === 'POST' && ((_context_request_body = context.request.body) == null ? void 0 : _context_request_body.type) === 'DIGIPAIR_EXECUTE_FACTORY') {
@@ -5687,10 +5708,12 @@ let KeycloakService = class KeycloakService {
5687
5708
  <!DOCTYPE html>
5688
5709
  <html style="${styleHtml}">
5689
5710
  <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}">
5711
+ ${head ? await this.pins2html(head, context) : `
5712
+ <meta charset="UTF-8" />
5713
+ <title>Digipair</title>
5714
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
5715
+ <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">
5716
+ `}
5694
5717
  </head>
5695
5718
  <body style="${styleBody}">
5696
5719
  <script type="module">
@@ -5765,6 +5788,7 @@ let KeycloakService = class KeycloakService {
5765
5788
  await executePinsList(${JSON.stringify(this.prepareBrowserPinsSettings('browserInitialize', browserInitialize))}, context);
5766
5789
 
5767
5790
  const pinsList = ${JSON.stringify(this.prepareBrowserPinsSettings('body', body))};
5791
+ document.querySelectorAll('body > [data-digipair-pins]').forEach((element) => element.remove()); // Remove SSR elements
5768
5792
  for (let i = 0; i < pinsList.length; i++) {
5769
5793
  const item = pinsList[i];
5770
5794
  await generateElementFromPins(item, document.body, { ...context, data: ${JSON.stringify(preparedData)} });
@@ -5774,6 +5798,8 @@ let KeycloakService = class KeycloakService {
5774
5798
  await executePinsList(${JSON.stringify(this.prepareBrowserPinsSettings('browserLoad', browserLoad))}, context);
5775
5799
  }, 1);
5776
5800
  </script>
5801
+
5802
+ ${ssr ? await this.pins2html(body, context) : ''}
5777
5803
  </body>
5778
5804
  </html>
5779
5805
  `;
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, nextMatch = nextMatch1, tokens = tokens1, {
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, nextMatch = nextMatch1, tokens = tokens1, "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, nextMatch = nextMatch1, tokens = tokens1, "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, nextMatch = nextMatch1, tokens = tokens1, "continue";
23953
23954
  }
23954
- return tokens = tokens1, i = i1, nextMatch = nextMatch1, {
23955
+ return i = i1, nextMatch = nextMatch1, tokens = tokens1, {
23955
23956
  v: nextMatch1
23956
23957
  };
23957
23958
  };
@@ -27939,6 +27940,74 @@ const executePinsList = async (pinsSettingsList, context)=>{
27939
27940
  }
27940
27941
  return previous;
27941
27942
  };
27943
+ const generateElementFromPins = async (pinsSettings, parent, context, document = typeof window !== 'undefined' ? window.document : global.document, options = {
27944
+ import: true
27945
+ })=>{
27946
+ var _settings_conditions, _settings_conditions1;
27947
+ let settings = await preparePinsSettings(pinsSettings, context);
27948
+ const alias = _config.ALIAS.find((alias)=>settings.library.split(':')[0] === alias.name);
27949
+ if (alias) {
27950
+ settings = await preparePinsSettings(_extends({}, settings, alias), {
27951
+ settings
27952
+ });
27953
+ }
27954
+ if ((_settings_conditions = settings.conditions) == null ? void 0 : _settings_conditions.each) {
27955
+ for(let index = 0; index < settings.conditions.each.length; index++){
27956
+ const item = settings.conditions.each[index];
27957
+ await generateElementFromPins(_extends({}, pinsSettings, {
27958
+ conditions: _extends({}, pinsSettings.conditions, {
27959
+ each: undefined
27960
+ })
27961
+ }), parent, _extends({}, context, {
27962
+ item,
27963
+ index,
27964
+ parent: {
27965
+ item: context.item,
27966
+ index: context.index,
27967
+ parent: context.parent
27968
+ }
27969
+ }), document, options);
27970
+ }
27971
+ return;
27972
+ }
27973
+ if (typeof ((_settings_conditions1 = settings.conditions) == null ? void 0 : _settings_conditions1.if) !== 'undefined' && !settings.conditions.if) {
27974
+ return;
27975
+ }
27976
+ const element = document.createElement(pinsSettings.element);
27977
+ element.setAttribute('data-digipair-pins', '');
27978
+ const library = pinsSettings.library;
27979
+ if (options.import && library !== 'web' && !_config.LIBRARIES[library]) {
27980
+ const config = context.config || {};
27981
+ const version = (config.VERSIONS || {})[library] || 'latest';
27982
+ import(isRemoteVersion.test(version) ? `${version}` : `${_config.BASE_URL}/${library}@${version}/index.esm.js`);
27983
+ }
27984
+ Object.entries(settings.properties || {}).forEach(([key, value])=>{
27985
+ if (key === 'textContent') {
27986
+ element.textContent = value;
27987
+ } else if (key === 'innerHTML') {
27988
+ element.innerHTML = value;
27989
+ } else if (typeof value === 'string') {
27990
+ element.setAttribute(key, value);
27991
+ } else {
27992
+ element[key] = value;
27993
+ }
27994
+ });
27995
+ Object.entries(settings.events || {}).forEach(([key, pinsList])=>{
27996
+ element.addEventListener(key, (_event)=>{
27997
+ const event = _event;
27998
+ executePinsList(pinsList, _extends({}, context, {
27999
+ event: event.detail
28000
+ }));
28001
+ });
28002
+ });
28003
+ const pinsList = settings.pins || [];
28004
+ for(let i = 0; i < pinsList.length; i++){
28005
+ const item = pinsList[i];
28006
+ await generateElementFromPins(item, element, context, document, options);
28007
+ }
28008
+ parent == null ? void 0 : parent.appendChild(element);
28009
+ return element;
28010
+ };
27942
28011
  const preparePinsSettings = async (settings, context)=>{
27943
28012
  const localContext = _extends({}, context, {
27944
28013
  variables: context.variables || {},
@@ -33588,9 +33657,29 @@ let KeycloakService = class KeycloakService {
33588
33657
  }
33589
33658
  return output;
33590
33659
  }
33660
+ async pins2html(pins, context) {
33661
+ const dom = new JSDOM();
33662
+ const element = dom.window.document.createElement('section');
33663
+ await this.generateElementsFromPins(pins, element, {
33664
+ config: {
33665
+ VERSIONS: context.config.VERSIONS || {}
33666
+ },
33667
+ variables: context.variables || {},
33668
+ request: context.request || {}
33669
+ }, dom.window.document);
33670
+ return element.innerHTML;
33671
+ }
33672
+ async generateElementsFromPins(pinsList, parent, context, document) {
33673
+ for(let i = 0; i < pinsList.length; i++){
33674
+ const item = pinsList[i];
33675
+ await generateElementFromPins(item, parent, context, document, {
33676
+ import: false
33677
+ });
33678
+ }
33679
+ }
33591
33680
  async page(params, _pinsSettingsList, context) {
33592
33681
  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;
33682
+ 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
33683
  const engineVersion = context.config.VERSIONS['@digipair/engine'] || 'latest';
33595
33684
  const preparedData = {};
33596
33685
  if (context.request.method === 'POST' && ((_context_request_body = context.request.body) == null ? void 0 : _context_request_body.type) === 'DIGIPAIR_EXECUTE_FACTORY') {
@@ -33619,10 +33708,12 @@ let KeycloakService = class KeycloakService {
33619
33708
  <!DOCTYPE html>
33620
33709
  <html style="${styleHtml}">
33621
33710
  <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}">
33711
+ ${head ? await this.pins2html(head, context) : `
33712
+ <meta charset="UTF-8" />
33713
+ <title>Digipair</title>
33714
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
33715
+ <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">
33716
+ `}
33626
33717
  </head>
33627
33718
  <body style="${styleBody}">
33628
33719
  <script type="module">
@@ -33697,6 +33788,7 @@ let KeycloakService = class KeycloakService {
33697
33788
  await executePinsList(${JSON.stringify(this.prepareBrowserPinsSettings('browserInitialize', browserInitialize))}, context);
33698
33789
 
33699
33790
  const pinsList = ${JSON.stringify(this.prepareBrowserPinsSettings('body', body))};
33791
+ document.querySelectorAll('body > [data-digipair-pins]').forEach((element) => element.remove()); // Remove SSR elements
33700
33792
  for (let i = 0; i < pinsList.length; i++) {
33701
33793
  const item = pinsList[i];
33702
33794
  await generateElementFromPins(item, document.body, { ...context, data: ${JSON.stringify(preparedData)} });
@@ -33706,6 +33798,8 @@ let KeycloakService = class KeycloakService {
33706
33798
  await executePinsList(${JSON.stringify(this.prepareBrowserPinsSettings('browserLoad', browserLoad))}, context);
33707
33799
  }, 1);
33708
33800
  </script>
33801
+
33802
+ ${ssr ? await this.pins2html(body, context) : ''}
33709
33803
  </body>
33710
33804
  </html>
33711
33805
  `;
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.3",
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
  {