@digipair/skill-keycloak 0.45.7 → 0.48.3

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,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
  {