ultimate-jekyll-manager 0.0.116 → 0.0.117

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.
@@ -51,9 +51,6 @@ function displayConnections() {
51
51
  const availableProviders = appData?.oauth2 || {};
52
52
  const userConnections = accountData?.oauth2 || {};
53
53
 
54
- console.log('Available OAuth providers:', availableProviders);
55
- console.log('User connections:', userConnections);
56
-
57
54
  // Check if any providers are configured
58
55
  let hasEnabledProviders = false;
59
56
 
@@ -62,19 +59,25 @@ function displayConnections() {
62
59
  const providerSettings = availableProviders[providerId];
63
60
  const $providerElement = document.getElementById(`connection-${providerId}`);
64
61
 
65
- if (!$providerElement) return;
62
+ if (!$providerElement) {
63
+ return;
64
+ }
66
65
 
67
66
  // Check if provider is enabled
68
- if (providerSettings && providerSettings.enabled !== false) {
67
+ const isEnabled = providerSettings && providerSettings.enabled !== false;
68
+
69
+ if (isEnabled) {
69
70
  hasEnabledProviders = true;
70
71
 
71
72
  // Show the provider element
72
73
  $providerElement.classList.remove('d-none');
73
74
 
74
- // Update provider status based on user connection
75
- updateProviderStatus(providerId, userConnections[providerId], providerSettings);
75
+ // CRITICAL: Update button status BEFORE initializing FormManager
76
+ // This ensures FormManager stores the CORRECT button state from the start
77
+ const userConnection = userConnections[providerId];
78
+ updateProviderStatus(providerId, userConnection, providerSettings);
76
79
 
77
- // Initialize FormManager for this provider
80
+ // Initialize FormManager AFTER setting correct button state
78
81
  initializeProviderForm(providerId);
79
82
  } else {
80
83
  // Hide disabled providers
@@ -113,9 +116,10 @@ function updateProviderStatus(providerId, userConnection, providerSettings) {
113
116
  twitter: 'Share updates and connect with Twitter',
114
117
  facebook: 'Connect your Facebook account for social features'
115
118
  };
116
-
117
- // Use provider description or fallback to default
118
- const descriptionText = providerSettings?.description || defaultDescriptions[providerId] || `Connect your ${providerId.charAt(0).toUpperCase() + providerId.slice(1)} account`;
119
+
120
+ const descriptionText = providerSettings?.description
121
+ || defaultDescriptions[providerId]
122
+ || `Connect your ${providerId.charAt(0).toUpperCase() + providerId.slice(1)} account`;
119
123
  $description.textContent = descriptionText;
120
124
  $description.classList.remove('d-none');
121
125
  }
@@ -148,21 +152,20 @@ function updateProviderStatus(providerId, userConnection, providerSettings) {
148
152
 
149
153
  if ($button && $buttonText && $action) {
150
154
  if (isConnected) {
151
- // Update to disconnect state
155
+ // Update to disconnect state (RED button)
152
156
  $button.classList.remove('btn-primary');
153
157
  $button.classList.add('btn-outline-danger');
154
158
  $buttonText.textContent = 'Disconnect';
155
159
  $action.value = 'disconnect';
156
160
 
157
- // Replace icon - need to update the button's first icon element
161
+ // Replace icon
158
162
  const $icon = $button.querySelector('.fa-icon');
159
163
  if ($icon) {
160
- // Change icon classes from link to unlink
161
164
  $icon.classList.remove('fa-link');
162
165
  $icon.classList.add('fa-unlink');
163
166
  }
164
167
  } else {
165
- // Update to connect state
168
+ // Update to connect state (BLUE button)
166
169
  $button.classList.remove('btn-outline-danger');
167
170
  $button.classList.add('btn-primary');
168
171
  $buttonText.textContent = 'Connect';
@@ -171,27 +174,23 @@ function updateProviderStatus(providerId, userConnection, providerSettings) {
171
174
  // Replace icon
172
175
  const $icon = $button.querySelector('.fa-icon');
173
176
  if ($icon) {
174
- // Change icon classes from unlink to link
175
177
  $icon.classList.remove('fa-unlink');
176
178
  $icon.classList.add('fa-link');
177
179
  }
178
180
  }
179
181
  }
180
-
181
- // The updated section has been removed from HTML, no longer needed
182
182
  }
183
183
 
184
184
  // Get display name for connection
185
185
  function getConnectionDisplayName(connection) {
186
186
  if (!connection || !connection.identity) return 'Unknown';
187
187
 
188
- // Try different fields based on provider
189
- return connection.identity.global_name ||
190
- connection.identity.username ||
191
- connection.identity.name ||
192
- connection.identity.email ||
193
- connection.identity.id ||
194
- 'Connected';
188
+ return connection.identity.global_name
189
+ || connection.identity.username
190
+ || connection.identity.name
191
+ || connection.identity.email
192
+ || connection.identity.id
193
+ || 'Connected';
195
194
  }
196
195
 
197
196
  // Initialize FormManager for a provider
@@ -199,7 +198,10 @@ function initializeProviderForm(providerId) {
199
198
  const formId = `connection-form-${providerId}`;
200
199
  const form = document.getElementById(formId);
201
200
 
202
- if (!form) return;
201
+ if (!form) {
202
+ console.warn(`Form not found for provider: ${providerId}`);
203
+ return;
204
+ }
203
205
 
204
206
  // Skip if already initialized
205
207
  if (connectionForms.has(providerId)) {
@@ -231,13 +233,10 @@ function initializeProviderForm(providerId) {
231
233
  if (success) {
232
234
  // Reset form state and update UI after successful disconnect
233
235
  formManager.setFormState('ready');
234
- // Get provider settings to pass for description display
235
236
  const providerSettings = appData?.oauth2?.[provider];
236
237
  updateProviderStatus(provider, null, providerSettings);
237
238
  }
238
239
  }
239
-
240
- // Success - FormManager will handle state automatically
241
240
  } catch (error) {
242
241
  // Show error and reset form state
243
242
  formManager.showError(error);
@@ -277,8 +276,6 @@ async function handleConnect(providerId) {
277
276
  },
278
277
  });
279
278
 
280
- console.log('OAuth connect response:', response);
281
-
282
279
  // For authorize requests, server returns an object with URL to redirect to
283
280
  if (response.url) {
284
281
  window.location.href = response.url;
@@ -324,15 +321,12 @@ async function handleDisconnect(providerId) {
324
321
  },
325
322
  });
326
323
 
327
- console.log('OAuth disconnect response:', response);
328
-
329
324
  if (response.success) {
330
325
  // Update local account data
331
326
  if (accountData.oauth2 && accountData.oauth2[providerId]) {
332
327
  delete accountData.oauth2[providerId];
333
328
  }
334
329
 
335
- // Return success
336
330
  return true;
337
331
  } else {
338
332
  throw new Error(response.message || 'Failed to disconnect');
@@ -341,8 +335,6 @@ async function handleDisconnect(providerId) {
341
335
 
342
336
  // Called when section is shown
343
337
  export function onShow() {
344
- // Refresh connections display when section is shown
345
- if (accountData && appData) {
346
- displayConnections();
347
- }
338
+ // Don't re-run displayConnections() - it's already been called from loadData()
339
+ // Re-running it would re-initialize FormManager and cause race conditions
348
340
  }
@@ -11,7 +11,6 @@ let signoutAllForm = null; // FormManager instance for sign out all sessions
11
11
  export function init(wm) {
12
12
  webManager = wm;
13
13
  initializeSigninMethods();
14
- initializeSigninMethodForms();
15
14
  initializeSignoutAllForm();
16
15
  }
17
16
 
@@ -19,9 +18,15 @@ export function init(wm) {
19
18
  export function loadData(account) {
20
19
  if (!account) return;
21
20
 
22
- // Update signin methods
21
+ console.log('[DEBUG] security.js - loadData() called with account:', account);
22
+
23
+ // CRITICAL: Update signin methods BEFORE initializing FormManagers
24
+ // This ensures FormManager stores the correct button state from the start
23
25
  updateSigninMethods();
24
26
 
27
+ // Initialize FormManagers AFTER setting correct button states
28
+ initializeSigninMethodForms();
29
+
25
30
  // Update 2FA status
26
31
  update2FAStatus(account.security?.twoFactor);
27
32
 
@@ -31,6 +36,8 @@ export function loadData(account) {
31
36
 
32
37
  // Initialize signin methods
33
38
  async function initializeSigninMethods() {
39
+ console.log('[DEBUG] security.js - initializeSigninMethods() called');
40
+
34
41
  // Get Firebase auth instance
35
42
  firebaseAuth = webManager.firebaseAuth;
36
43
 
@@ -61,13 +68,23 @@ async function checkRedirectResult() {
61
68
 
62
69
  // Update signin methods display
63
70
  async function updateSigninMethods() {
71
+ console.log('[DEBUG] security.js - updateSigninMethods() called');
72
+
64
73
  // Use Firebase auth directly for most up-to-date provider information
65
74
  const firebaseUser = firebaseAuth?.currentUser;
66
- if (!firebaseUser) return;
75
+ if (!firebaseUser) {
76
+ console.log('[DEBUG] security.js - No firebaseUser, returning');
77
+ return;
78
+ }
67
79
 
68
80
  // Get the formatted user from webManager for consistency, but we'll use firebaseUser for provider data
69
81
  const user = webManager.auth().getUser();
70
- if (!user) return;
82
+ if (!user) {
83
+ console.log('[DEBUG] security.js - No user from webManager, returning');
84
+ return;
85
+ }
86
+
87
+ console.log('[DEBUG] security.js - firebaseUser.providerData:', firebaseUser.providerData);
71
88
 
72
89
  // Update password email display
73
90
  const $passwordEmail = document.getElementById('password-email');
@@ -75,6 +92,7 @@ async function updateSigninMethods() {
75
92
  // Check if user has password provider using firebaseUser for most up-to-date data
76
93
  const hasPassword = firebaseUser.providerData?.some(provider => provider.providerId === 'password');
77
94
  $passwordEmail.textContent = hasPassword ? user.email : 'Not set';
95
+ console.log('[DEBUG] security.js - hasPassword:', hasPassword);
78
96
  }
79
97
 
80
98
  // Update Google signin display
@@ -85,32 +103,61 @@ async function updateSigninMethods() {
85
103
  const $googleAction = $googleForm?.querySelector('input[name="action"]');
86
104
  const $googleIcon = $googleBtn?.querySelector('.fa-icon');
87
105
 
106
+ console.log('[DEBUG] security.js - Google DOM elements:', {
107
+ $googleEmail: !!$googleEmail,
108
+ $googleBtn: !!$googleBtn,
109
+ $googleBtnText: !!$googleBtnText,
110
+ $googleAction: !!$googleAction,
111
+ $googleIcon: !!$googleIcon
112
+ });
113
+
88
114
  if ($googleEmail && $googleBtn) {
89
115
  // Check if user has Google provider using firebaseUser for most up-to-date data
90
116
  const googleProvider = firebaseUser.providerData?.find(provider => provider.providerId === 'google.com');
91
117
 
118
+ console.log('[DEBUG] security.js - googleProvider:', googleProvider);
119
+ console.log('[DEBUG] security.js - googleProvider found:', !!googleProvider);
120
+
92
121
  if (googleProvider) {
122
+ console.log('[DEBUG] security.js - Setting button to DISCONNECT state');
123
+ console.log('[DEBUG] security.js - Button text before:', $googleBtnText?.textContent);
124
+ console.log('[DEBUG] security.js - Button classes before:', $googleBtn.className);
125
+
93
126
  $googleEmail.textContent = googleProvider.email || 'Connected';
94
127
  if ($googleBtnText) $googleBtnText.textContent = 'Disconnect';
95
128
  if ($googleAction) $googleAction.value = 'disconnect';
96
129
  $googleBtn.classList.remove('btn-primary');
97
130
  $googleBtn.classList.add('btn-outline-danger');
131
+
98
132
  // Update icon from link to unlink
99
133
  if ($googleIcon) {
100
134
  $googleIcon.classList.remove('fa-link');
101
135
  $googleIcon.classList.add('fa-unlink');
102
136
  }
137
+
138
+ console.log('[DEBUG] security.js - Button text after:', $googleBtnText?.textContent);
139
+ console.log('[DEBUG] security.js - Button classes after:', $googleBtn.className);
140
+ console.log('[DEBUG] security.js - Action value:', $googleAction?.value);
103
141
  } else {
142
+ console.log('[DEBUG] security.js - Setting button to CONNECT state');
143
+ console.log('[DEBUG] security.js - Button text before:', $googleBtnText?.textContent);
144
+ console.log('[DEBUG] security.js - Button classes before:', $googleBtn.className);
145
+
104
146
  $googleEmail.textContent = 'Not connected';
105
147
  if ($googleBtnText) $googleBtnText.textContent = 'Connect';
106
148
  if ($googleAction) $googleAction.value = 'connect';
107
149
  $googleBtn.classList.remove('btn-outline-danger');
108
150
  $googleBtn.classList.add('btn-primary');
151
+
109
152
  // Update icon from unlink to link
110
153
  if ($googleIcon) {
111
154
  $googleIcon.classList.remove('fa-unlink');
112
155
  $googleIcon.classList.add('fa-link');
113
156
  }
157
+
158
+ console.log('[DEBUG] security.js - Button text after:', $googleBtnText?.textContent);
159
+ console.log('[DEBUG] security.js - Button classes after:', $googleBtn.className);
160
+ console.log('[DEBUG] security.js - Action value:', $googleAction?.value);
114
161
  }
115
162
  }
116
163
  }
@@ -248,9 +295,9 @@ async function updateActiveSessions(account) {
248
295
  };
249
296
 
250
297
  // Only add if it's different from current session (different IP or timestamp)
251
- if (!sessions[0] ||
252
- (lastSession.ip !== sessions[0].ip ||
253
- lastSession.timestampUNIX !== sessions[0].timestampUNIX)) {
298
+ if (!sessions[0]
299
+ || (lastSession.ip !== sessions[0].ip
300
+ || lastSession.timestampUNIX !== sessions[0].timestampUNIX)) {
254
301
  sessions.push(lastSession);
255
302
  }
256
303
  }
@@ -294,10 +341,14 @@ async function updateActiveSessions(account) {
294
341
 
295
342
  // Initialize FormManager for signin methods
296
343
  function initializeSigninMethodForms() {
344
+ console.log('[DEBUG] security.js - initializeSigninMethodForms() called');
345
+
297
346
  // Initialize password form
298
347
  const $passwordForm = document.getElementById('signin-method-password-form');
299
348
 
300
349
  if ($passwordForm && !signinMethodForms.has('password')) {
350
+ console.log('[DEBUG] security.js - Initializing password FormManager');
351
+
301
352
  const formManager = new FormManager($passwordForm, {
302
353
  allowMultipleSubmissions: false,
303
354
  autoDisable: true,
@@ -321,12 +372,16 @@ function initializeSigninMethodForms() {
321
372
  const $googleForm = document.getElementById('signin-method-google-form');
322
373
 
323
374
  if ($googleForm && !signinMethodForms.has('google')) {
375
+ console.log('[DEBUG] security.js - About to initialize Google FormManager');
376
+ console.log('[DEBUG] security.js - Google form exists:', !!$googleForm);
377
+
324
378
  const formManager = new FormManager($googleForm, {
325
379
  autoDisable: true,
326
380
  showSpinner: true
327
381
  });
328
382
 
329
383
  signinMethodForms.set('google', formManager);
384
+ console.log('[DEBUG] security.js - Google FormManager initialized and stored');
330
385
 
331
386
  formManager.addEventListener('submit', async (event) => {
332
387
  event.preventDefault();
@@ -342,21 +397,15 @@ function initializeSigninMethodForms() {
342
397
  // Set form state back to ready first
343
398
  formManager.setFormState('ready');
344
399
 
345
- // Then update display (after FormManager has restored button)
346
- // Use setTimeout to ensure FormManager has finished updating
347
- setTimeout(() => {
348
- updateSigninMethods();
349
- }, 0);
400
+ // Then update display (this will set the button text correctly again)
401
+ updateSigninMethods();
350
402
  } catch (error) {
351
403
  // Reset form state
352
404
  formManager.setFormState('ready');
353
405
 
354
406
  // If user cancelled, also update the display to ensure button state is correct
355
407
  if (error.message === 'Disconnection cancelled') {
356
- // Update display to ensure button reflects current state
357
- setTimeout(() => {
358
- updateSigninMethods();
359
- }, 0);
408
+ updateSigninMethods();
360
409
  } else {
361
410
  // Show error for other failures
362
411
  formManager.showError(error);
@@ -429,9 +478,9 @@ async function connectGoogleProvider() {
429
478
  return result;
430
479
  } catch (error) {
431
480
  // Check if we should fallback to redirect
432
- if (error.code === 'auth/popup-blocked' ||
433
- error.code === 'auth/popup-closed-by-user' ||
434
- error.code === 'auth/cancelled-popup-request') {
481
+ if (error.code === 'auth/popup-blocked'
482
+ || error.code === 'auth/popup-closed-by-user'
483
+ || error.code === 'auth/cancelled-popup-request') {
435
484
 
436
485
  console.log('Popup failed, falling back to redirect:', error.code);
437
486
 
@@ -703,4 +752,3 @@ function formatDate(timestamp) {
703
752
  // More than 7 days - show full date
704
753
  return date.toLocaleDateString() + ' at ' + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
705
754
  }
706
-
@@ -872,7 +872,7 @@ badges:
872
872
  </div>
873
873
 
874
874
  {% for connection in page.resolved.connections %}
875
- <div id="connection-{{ connection.id }}" class="list-group-item border-bottom-0 {% unless forloop.first %}border-top{% endunless %} px-0 py-3 d-none bg-body-tertiary">
875
+ <div id="connection-{{ connection.id }}" class="{% unless forloop.first %}border-top{% endunless %} px-0 py-3 d-none">
876
876
  <div class="d-flex flex-column flex-sm-row align-items-stretch align-items-sm-center justify-content-between gap-3">
877
877
  <div class="d-flex align-items-center">
878
878
  <div class="d-flex align-items-center justify-content-center me-3 flex-shrink-0 fa fa-3xl">
@@ -17,169 +17,159 @@ importScripts(
17
17
  // 'https://www.gstatic.com/firebasejs/%%% firebaseVersion %%%/firebase-firestore-compat.js',
18
18
  );
19
19
 
20
- // Class
21
- function Manager() {
22
- const self = this;
23
-
24
- // Properties
25
- self.serviceWorker = null;
26
-
27
- // Load config
28
- self.config = serviceWorker.UJ_BUILD_JSON?.config || {};
29
-
30
- // Defaults
31
- self.app = self.config?.brand?.id || 'default';
32
- self.environment = self.config?.uj?.environment || 'production';
33
- self.cache = {
34
- breaker: self.config?.uj?.cache_breaker || new Date().getTime(),
35
- };
36
- self.cache.name = `${self.app}-${self.cache.breaker}`;
37
-
38
- // Libraries
39
- self.libraries = {
40
- firebase: false,
41
- messaging: false,
42
- promoServer: false,
43
- };
44
-
45
- // Return
46
- return self;
47
- }
48
-
49
- // Initialize
50
- Manager.prototype.initialize = function () {
51
- const self = this;
20
+ // Manager Class
21
+ class Manager {
22
+ constructor() {
23
+ // Properties
24
+ this.serviceWorker = null;
25
+
26
+ // Load config
27
+ this.config = serviceWorker.UJ_BUILD_JSON?.config || {};
28
+
29
+ // Defaults
30
+ this.app = this.config?.brand?.id || 'default';
31
+ this.environment = this.config?.uj?.environment || 'production';
32
+ this.cache = {
33
+ breaker: this.config?.uj?.cache_breaker || new Date().getTime(),
34
+ };
35
+ this.cache.name = `${this.app}-${this.cache.breaker}`;
36
+
37
+ // Libraries
38
+ this.libraries = {
39
+ firebase: false,
40
+ messaging: false,
41
+ promoServer: false,
42
+ };
43
+ }
52
44
 
53
- return new Promise(function(resolve, reject) {
45
+ // Initialize
46
+ async initialize() {
54
47
  // Properties
55
- self.serviceWorker = serviceWorker;
48
+ this.serviceWorker = serviceWorker;
56
49
 
57
50
  // Setup instance-specific message handlers
58
- self.setupInstanceHandlers();
51
+ this.setupInstanceHandlers();
59
52
 
60
53
  // Initialize Firebase
61
- self.initializeFirebase();
54
+ this.initializeFirebase();
62
55
 
63
56
  // Update cache
64
- self.updateCache();
57
+ this.updateCache();
65
58
 
66
59
  // Log
67
60
  console.log('Initialized!', serviceWorker.location.pathname, serviceWorker);
61
+ console.log('Config loaded from UJ_BUILD_JSON:', this.config);
68
62
 
69
63
  // Return
70
- return resolve(serviceWorker);
71
- });
72
- };
73
-
74
- // ['log', 'error', 'warn', 'info', 'debug'].forEach(method => {
75
- // Manager.prototype[method] = function() {
76
- // // Get arguments
77
- // const time = new Date().toLocaleTimeString('en-US', {
78
- // hour12: false,
79
- // hour: '2-digit',
80
- // minute: '2-digit',
81
- // second: '2-digit'
82
- // });
83
-
84
- // // Add prefix
85
- // const args = [`[${time}] service-worker:`, ...Array.from(arguments)];
86
-
87
- // // Call the original console method
88
- // console[method].apply(console, args);
89
- // };
90
- // });
91
-
92
- // Setup instance-specific message handlers
93
- Manager.prototype.setupInstanceHandlers = function () {
94
- const self = this;
95
-
96
- // Send messages: https://stackoverflow.com/questions/35725594/how-do-i-pass-data-like-a-user-id-to-a-web-worker-for-fetching-additional-push
97
- // more messaging: http://craig-russell.co.uk/2016/01/29/service-worker-messaging.html#.XSKpRZNKiL8
98
- serviceWorker.addEventListener('message', (event) => {
99
- // Get the data
100
- const data = event.data || {};
101
-
102
- // Parse the data
103
- const command = data.command || '';
104
- const payload = data.payload || {};
105
-
106
- // Quit if no command
107
- if (!command) return;
108
-
109
- // Log
110
- console.log('message', command, payload, event);
111
-
112
- // Handle commands
113
- if (command === 'update-cache') {
114
- const pages = payload.pages || [];
115
- self.updateCache(pages)
116
- .then(() => {
117
- event.ports[0]?.postMessage({ status: 'success' });
118
- })
119
- .catch(error => {
120
- event.ports[0]?.postMessage({ status: 'error', error: error.message });
121
- });
122
- }
123
- });
124
-
125
- // Log
126
- console.log('Set up message handlers');
127
- }
128
-
129
- // Setup Firebase init
130
- Manager.prototype.initializeFirebase = function () {
131
- const self = this;
132
-
133
- // Get Firebase config
134
- const firebaseConfig = self.config?.web_manager?.firebase?.app?.config;
135
-
136
- // Check if Firebase config is available
137
- if (!firebaseConfig) {
138
- console.log('Firebase config not available yet, skipping Firebase initialization');
139
- return;
64
+ return serviceWorker;
140
65
  }
141
66
 
142
- // Check if already initialized
143
- if (self.libraries.firebase) {
144
- console.log('Firebase already initialized');
145
- return;
146
- }
67
+ // ['log', 'error', 'warn', 'info', 'debug'].forEach(method => {
68
+ // Manager.prototype[method] = function() {
69
+ // // Get arguments
70
+ // const time = new Date().toLocaleTimeString('en-US', {
71
+ // hour12: false,
72
+ // hour: '2-digit',
73
+ // minute: '2-digit',
74
+ // second: '2-digit'
75
+ // });
76
+
77
+ // // Add prefix
78
+ // const args = [`[${time}] service-worker:`, ...Array.from(arguments)];
79
+
80
+ // // Call the original console method
81
+ // console[method].apply(console, args);
82
+ // };
83
+ // });
84
+
85
+ // Setup instance-specific message handlers
86
+ setupInstanceHandlers() {
87
+ // Send messages: https://stackoverflow.com/questions/35725594/how-do-i-pass-data-like-a-user-id-to-a-web-worker-for-fetching-additional-push
88
+ // more messaging: http://craig-russell.co.uk/2016/01/29/service-worker-messaging.html#.XSKpRZNKiL8
89
+ serviceWorker.addEventListener('message', (event) => {
90
+ // Get the data
91
+ const data = event.data || {};
92
+
93
+ // Parse the data
94
+ const command = data.command || '';
95
+ const payload = data.payload || {};
96
+
97
+ // Quit if no command
98
+ if (!command) {
99
+ return;
100
+ }
101
+
102
+ // Log
103
+ console.log('message', command, payload, event);
104
+
105
+ // Handle commands
106
+ if (command === 'update-cache') {
107
+ const pages = payload.pages || [];
108
+ this.updateCache(pages)
109
+ .then(() => {
110
+ event.ports[0]?.postMessage({ status: 'success' });
111
+ })
112
+ .catch(error => {
113
+ event.ports[0]?.postMessage({ status: 'error', error: error.message });
114
+ });
115
+ }
116
+ });
147
117
 
148
- // Log
149
- console.log('Initializing Firebase v%%% firebaseVersion %%%');
118
+ // Log
119
+ console.log('Set up message handlers');
120
+ }
150
121
 
151
- // Initialize app (libraries were already imported at the top)
152
- firebase.initializeApp(firebaseConfig);
122
+ // Setup Firebase init
123
+ initializeFirebase() {
124
+ // Get Firebase config
125
+ const firebaseConfig = this.config?.web_manager?.firebase?.app?.config;
153
126
 
154
- // Initialize messaging
155
- self.libraries.messaging = firebase.messaging();
127
+ // Check if Firebase config is available
128
+ if (!firebaseConfig) {
129
+ console.log('Firebase config not available yet, skipping Firebase initialization');
130
+ return;
131
+ }
156
132
 
157
- // Attach firebase to SWManager
158
- self.libraries.firebase = firebase;
159
- }
133
+ // Check if already initialized
134
+ if (this.libraries.firebase) {
135
+ console.log('Firebase already initialized');
136
+ return;
137
+ }
160
138
 
161
- // Setup cache update
162
- Manager.prototype.updateCache = function (pages) {
163
- const self = this;
139
+ // Log
140
+ console.log('Initializing Firebase v%%% firebaseVersion %%%');
164
141
 
165
- // Set default pages to cache
166
- const defaults = [
167
- '/',
168
- '/assets/css/main.bundle.css',
169
- '/assets/js/main.bundle.js',
170
- ];
142
+ // Initialize app (libraries were already imported at the top)
143
+ firebase.initializeApp(firebaseConfig);
171
144
 
172
- // Ensure pages is an array
173
- pages = pages || [];
145
+ // Initialize messaging
146
+ this.libraries.messaging = firebase.messaging();
174
147
 
175
- // Merge with additional pages
176
- const pagesToCache = [...new Set([...defaults, ...pages])];
148
+ // Attach firebase to SWManager
149
+ this.libraries.firebase = firebase;
150
+ }
177
151
 
178
- // Open cache and add pages
179
- return caches.open(self.cache.name)
180
- .then(cache => cache.addAll(pagesToCache))
181
- .then(() => console.log('Cached resources:', pagesToCache))
182
- .catch(error => console.error('Failed to cache resources:', error));
152
+ // Setup cache update
153
+ updateCache(pages) {
154
+ // Set default pages to cache
155
+ const defaults = [
156
+ '/',
157
+ '/assets/css/main.bundle.css',
158
+ '/assets/js/main.bundle.js',
159
+ ];
160
+
161
+ // Ensure pages is an array
162
+ pages = pages || [];
163
+
164
+ // Merge with additional pages
165
+ const pagesToCache = [...new Set([...defaults, ...pages])];
166
+
167
+ // Open cache and add pages
168
+ return caches.open(this.cache.name)
169
+ .then(cache => cache.addAll(pagesToCache))
170
+ .then(() => console.log('Cached resources:', pagesToCache))
171
+ .catch(error => console.error('Failed to cache resources:', error));
172
+ }
183
173
  }
184
174
 
185
175
  // Helper: Setup global listeners
@@ -394,3 +394,227 @@
394
394
  [debug] [2025-11-14T00:44:14.797Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
395
395
  [debug] [2025-11-14T00:44:14.798Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
396
396
  [debug] [2025-11-14T00:44:14.798Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
397
+ [debug] [2025-11-14T22:04:25.164Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
398
+ [debug] [2025-11-14T22:04:25.169Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
399
+ [debug] [2025-11-14T22:04:25.173Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
400
+ [debug] [2025-11-14T22:04:25.174Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
401
+ [debug] [2025-11-14T22:04:25.174Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
402
+ [debug] [2025-11-14T22:04:25.275Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
403
+ [debug] [2025-11-14T22:04:25.275Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
404
+ [debug] [2025-11-14T22:04:25.166Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
405
+ [debug] [2025-11-14T22:04:25.167Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
406
+ [debug] [2025-11-14T22:04:25.167Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
407
+ [debug] [2025-11-14T22:04:25.276Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
408
+ [debug] [2025-11-14T22:04:25.276Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
409
+ [debug] [2025-11-14T22:04:25.884Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
410
+ [debug] [2025-11-14T22:04:25.884Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
411
+ [debug] [2025-11-14T22:04:25.885Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
412
+ [debug] [2025-11-14T22:04:25.885Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
413
+ [debug] [2025-11-14T22:04:25.906Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
414
+ [debug] [2025-11-14T22:04:25.906Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
415
+ [debug] [2025-11-14T22:04:25.906Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
416
+ [debug] [2025-11-14T22:04:25.906Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
417
+ [debug] [2025-11-14T22:04:26.049Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
418
+ [debug] [2025-11-14T22:04:26.049Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
419
+ [debug] [2025-11-14T22:04:26.050Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
420
+ [debug] [2025-11-14T22:04:26.051Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
421
+ [debug] [2025-11-14T22:04:26.052Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
422
+ [debug] [2025-11-14T22:04:26.052Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
423
+ [debug] [2025-11-14T22:04:26.053Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
424
+ [debug] [2025-11-14T22:04:26.053Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
425
+ [debug] [2025-11-14T23:07:18.434Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
426
+ [debug] [2025-11-14T23:07:18.442Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
427
+ [debug] [2025-11-14T23:07:18.436Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
428
+ [debug] [2025-11-14T23:07:18.437Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
429
+ [debug] [2025-11-14T23:07:18.437Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
430
+ [debug] [2025-11-14T23:07:18.445Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
431
+ [debug] [2025-11-14T23:07:18.445Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
432
+ [debug] [2025-11-14T23:07:18.445Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
433
+ [debug] [2025-11-14T23:07:18.445Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
434
+ [debug] [2025-11-14T23:07:18.445Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
435
+ [debug] [2025-11-14T23:07:18.452Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
436
+ [debug] [2025-11-14T23:07:18.453Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
437
+ [debug] [2025-11-14T23:07:18.694Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
438
+ [debug] [2025-11-14T23:07:18.694Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
439
+ [debug] [2025-11-14T23:07:18.695Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
440
+ [debug] [2025-11-14T23:07:18.695Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
441
+ [debug] [2025-11-14T23:07:18.697Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
442
+ [debug] [2025-11-14T23:07:18.697Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
443
+ [debug] [2025-11-14T23:07:18.697Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
444
+ [debug] [2025-11-14T23:07:18.697Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
445
+ [debug] [2025-11-14T23:07:18.700Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
446
+ [debug] [2025-11-14T23:07:18.701Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
447
+ [debug] [2025-11-14T23:07:18.701Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
448
+ [debug] [2025-11-14T23:07:18.701Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
449
+ [debug] [2025-11-14T23:07:18.703Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
450
+ [debug] [2025-11-14T23:07:18.703Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
451
+ [debug] [2025-11-14T23:07:18.703Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
452
+ [debug] [2025-11-14T23:07:18.703Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
453
+ [debug] [2025-11-16T03:41:39.898Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
454
+ [debug] [2025-11-16T03:41:39.905Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
455
+ [debug] [2025-11-16T03:41:39.900Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
456
+ [debug] [2025-11-16T03:41:39.900Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
457
+ [debug] [2025-11-16T03:41:39.900Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
458
+ [debug] [2025-11-16T03:41:39.909Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
459
+ [debug] [2025-11-16T03:41:39.909Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
460
+ [debug] [2025-11-16T03:41:39.907Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
461
+ [debug] [2025-11-16T03:41:39.907Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
462
+ [debug] [2025-11-16T03:41:39.907Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
463
+ [debug] [2025-11-16T03:41:39.915Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
464
+ [debug] [2025-11-16T03:41:39.915Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
465
+ [debug] [2025-11-16T03:41:40.145Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
466
+ [debug] [2025-11-16T03:41:40.145Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
467
+ [debug] [2025-11-16T03:41:40.146Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
468
+ [debug] [2025-11-16T03:41:40.146Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
469
+ [debug] [2025-11-16T03:41:40.147Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
470
+ [debug] [2025-11-16T03:41:40.148Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
471
+ [debug] [2025-11-16T03:41:40.148Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
472
+ [debug] [2025-11-16T03:41:40.148Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
473
+ [debug] [2025-11-16T03:41:40.157Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
474
+ [debug] [2025-11-16T03:41:40.157Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
475
+ [debug] [2025-11-16T03:41:40.158Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
476
+ [debug] [2025-11-16T03:41:40.158Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
477
+ [debug] [2025-11-16T03:41:40.159Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
478
+ [debug] [2025-11-16T03:41:40.159Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
479
+ [debug] [2025-11-16T03:41:40.160Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
480
+ [debug] [2025-11-16T03:41:40.160Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
481
+ [debug] [2025-11-16T03:41:56.389Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
482
+ [debug] [2025-11-16T03:41:56.389Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
483
+ [debug] [2025-11-16T03:41:56.391Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
484
+ [debug] [2025-11-16T03:41:56.391Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
485
+ [debug] [2025-11-16T03:41:56.391Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
486
+ [debug] [2025-11-16T03:41:56.399Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
487
+ [debug] [2025-11-16T03:41:56.400Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
488
+ [debug] [2025-11-16T03:41:56.391Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
489
+ [debug] [2025-11-16T03:41:56.391Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
490
+ [debug] [2025-11-16T03:41:56.391Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
491
+ [debug] [2025-11-16T03:41:56.399Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
492
+ [debug] [2025-11-16T03:41:56.400Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
493
+ [debug] [2025-11-16T03:41:56.625Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
494
+ [debug] [2025-11-16T03:41:56.625Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
495
+ [debug] [2025-11-16T03:41:56.626Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
496
+ [debug] [2025-11-16T03:41:56.626Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
497
+ [debug] [2025-11-16T03:41:56.627Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
498
+ [debug] [2025-11-16T03:41:56.627Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
499
+ [debug] [2025-11-16T03:41:56.628Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
500
+ [debug] [2025-11-16T03:41:56.628Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
501
+ [debug] [2025-11-16T03:41:56.630Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
502
+ [debug] [2025-11-16T03:41:56.630Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
503
+ [debug] [2025-11-16T03:41:56.631Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
504
+ [debug] [2025-11-16T03:41:56.631Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
505
+ [debug] [2025-11-16T03:41:56.633Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
506
+ [debug] [2025-11-16T03:41:56.633Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
507
+ [debug] [2025-11-16T03:41:56.634Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
508
+ [debug] [2025-11-16T03:41:56.634Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
509
+ [debug] [2025-11-16T03:42:20.031Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
510
+ [debug] [2025-11-16T03:42:20.037Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
511
+ [debug] [2025-11-16T03:42:20.034Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
512
+ [debug] [2025-11-16T03:42:20.034Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
513
+ [debug] [2025-11-16T03:42:20.034Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
514
+ [debug] [2025-11-16T03:42:20.043Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
515
+ [debug] [2025-11-16T03:42:20.043Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
516
+ [debug] [2025-11-16T03:42:20.039Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
517
+ [debug] [2025-11-16T03:42:20.039Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
518
+ [debug] [2025-11-16T03:42:20.039Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
519
+ [debug] [2025-11-16T03:42:20.051Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
520
+ [debug] [2025-11-16T03:42:20.051Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
521
+ [debug] [2025-11-16T03:42:20.293Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
522
+ [debug] [2025-11-16T03:42:20.293Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
523
+ [debug] [2025-11-16T03:42:20.294Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
524
+ [debug] [2025-11-16T03:42:20.294Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
525
+ [debug] [2025-11-16T03:42:20.295Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
526
+ [debug] [2025-11-16T03:42:20.295Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
527
+ [debug] [2025-11-16T03:42:20.296Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
528
+ [debug] [2025-11-16T03:42:20.296Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
529
+ [debug] [2025-11-16T03:42:20.302Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
530
+ [debug] [2025-11-16T03:42:20.302Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
531
+ [debug] [2025-11-16T03:42:20.303Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
532
+ [debug] [2025-11-16T03:42:20.303Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
533
+ [debug] [2025-11-16T03:42:20.305Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
534
+ [debug] [2025-11-16T03:42:20.305Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
535
+ [debug] [2025-11-16T03:42:20.306Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
536
+ [debug] [2025-11-16T03:42:20.306Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
537
+ [debug] [2025-11-16T03:42:37.856Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
538
+ [debug] [2025-11-16T03:42:37.857Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
539
+ [debug] [2025-11-16T03:42:37.859Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
540
+ [debug] [2025-11-16T03:42:37.859Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
541
+ [debug] [2025-11-16T03:42:37.859Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
542
+ [debug] [2025-11-16T03:42:37.868Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
543
+ [debug] [2025-11-16T03:42:37.868Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
544
+ [debug] [2025-11-16T03:42:37.859Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
545
+ [debug] [2025-11-16T03:42:37.859Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
546
+ [debug] [2025-11-16T03:42:37.860Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
547
+ [debug] [2025-11-16T03:42:37.868Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
548
+ [debug] [2025-11-16T03:42:37.868Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
549
+ [debug] [2025-11-16T03:42:38.076Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
550
+ [debug] [2025-11-16T03:42:38.076Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
551
+ [debug] [2025-11-16T03:42:38.077Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
552
+ [debug] [2025-11-16T03:42:38.077Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
553
+ [debug] [2025-11-16T03:42:38.078Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
554
+ [debug] [2025-11-16T03:42:38.078Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
555
+ [debug] [2025-11-16T03:42:38.078Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
556
+ [debug] [2025-11-16T03:42:38.078Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
557
+ [debug] [2025-11-16T03:42:38.144Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
558
+ [debug] [2025-11-16T03:42:38.144Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
559
+ [debug] [2025-11-16T03:42:38.145Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
560
+ [debug] [2025-11-16T03:42:38.145Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
561
+ [debug] [2025-11-16T03:42:38.146Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
562
+ [debug] [2025-11-16T03:42:38.146Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
563
+ [debug] [2025-11-16T03:42:38.147Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
564
+ [debug] [2025-11-16T03:42:38.147Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
565
+ [debug] [2025-11-16T03:44:06.607Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
566
+ [debug] [2025-11-16T03:44:06.607Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
567
+ [debug] [2025-11-16T03:44:06.609Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
568
+ [debug] [2025-11-16T03:44:06.609Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
569
+ [debug] [2025-11-16T03:44:06.609Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
570
+ [debug] [2025-11-16T03:44:06.617Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
571
+ [debug] [2025-11-16T03:44:06.617Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
572
+ [debug] [2025-11-16T03:44:06.609Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
573
+ [debug] [2025-11-16T03:44:06.609Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
574
+ [debug] [2025-11-16T03:44:06.609Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
575
+ [debug] [2025-11-16T03:44:06.617Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
576
+ [debug] [2025-11-16T03:44:06.617Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
577
+ [debug] [2025-11-16T03:44:06.836Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
578
+ [debug] [2025-11-16T03:44:06.836Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
579
+ [debug] [2025-11-16T03:44:06.836Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
580
+ [debug] [2025-11-16T03:44:06.837Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
581
+ [debug] [2025-11-16T03:44:06.838Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
582
+ [debug] [2025-11-16T03:44:06.838Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
583
+ [debug] [2025-11-16T03:44:06.838Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
584
+ [debug] [2025-11-16T03:44:06.838Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
585
+ [debug] [2025-11-16T03:44:06.842Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
586
+ [debug] [2025-11-16T03:44:06.842Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
587
+ [debug] [2025-11-16T03:44:06.843Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
588
+ [debug] [2025-11-16T03:44:06.843Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
589
+ [debug] [2025-11-16T03:44:06.846Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
590
+ [debug] [2025-11-16T03:44:06.846Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
591
+ [debug] [2025-11-16T03:44:06.847Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
592
+ [debug] [2025-11-16T03:44:06.847Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
593
+ [debug] [2025-11-18T22:25:38.004Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
594
+ [debug] [2025-11-18T22:25:38.007Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
595
+ [debug] [2025-11-18T22:25:38.007Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
596
+ [debug] [2025-11-18T22:25:38.007Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
597
+ [debug] [2025-11-18T22:25:38.021Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
598
+ [debug] [2025-11-18T22:25:38.021Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
599
+ [debug] [2025-11-18T22:25:38.044Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
600
+ [debug] [2025-11-18T22:25:38.047Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
601
+ [debug] [2025-11-18T22:25:38.047Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
602
+ [debug] [2025-11-18T22:25:38.047Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
603
+ [debug] [2025-11-18T22:25:38.056Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
604
+ [debug] [2025-11-18T22:25:38.056Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
605
+ [debug] [2025-11-18T22:25:38.240Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
606
+ [debug] [2025-11-18T22:25:38.240Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
607
+ [debug] [2025-11-18T22:25:38.241Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
608
+ [debug] [2025-11-18T22:25:38.241Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
609
+ [debug] [2025-11-18T22:25:38.243Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
610
+ [debug] [2025-11-18T22:25:38.243Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
611
+ [debug] [2025-11-18T22:25:38.244Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
612
+ [debug] [2025-11-18T22:25:38.244Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
613
+ [debug] [2025-11-18T22:25:38.276Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
614
+ [debug] [2025-11-18T22:25:38.276Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
615
+ [debug] [2025-11-18T22:25:38.277Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
616
+ [debug] [2025-11-18T22:25:38.277Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
617
+ [debug] [2025-11-18T22:25:38.279Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
618
+ [debug] [2025-11-18T22:25:38.279Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
619
+ [debug] [2025-11-18T22:25:38.279Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
620
+ [debug] [2025-11-18T22:25:38.279Z] > authorizing via signed-in user (ian.wiedenman@gmail.com)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ultimate-jekyll-manager",
3
- "version": "0.0.116",
3
+ "version": "0.0.117",
4
4
  "description": "Ultimate Jekyll dependency manager",
5
5
  "main": "dist/index.js",
6
6
  "exports": {
@@ -63,7 +63,7 @@
63
63
  "@babel/preset-env": "^7.28.5",
64
64
  "@fullhuman/postcss-purgecss": "^7.0.2",
65
65
  "@minify-html/node": "^0.18.1",
66
- "@octokit/rest": "^22.0.0",
66
+ "@octokit/rest": "^22.0.1",
67
67
  "@popperjs/core": "^2.11.8",
68
68
  "@prettier/plugin-xml": "^3.4.2",
69
69
  "adm-zip": "^0.5.16",
@@ -72,7 +72,7 @@
72
72
  "chalk": "^4.1.2",
73
73
  "cheerio": "^1.1.2",
74
74
  "chrome-launcher": "^1.2.1",
75
- "fast-xml-parser": "^5.3.0",
75
+ "fast-xml-parser": "^5.3.2",
76
76
  "fs-jetpack": "^5.1.0",
77
77
  "glob": "^11.0.3",
78
78
  "gulp-clean-css": "^4.3.0",
@@ -82,19 +82,19 @@
82
82
  "gulp-responsive-modern": "^1.0.0",
83
83
  "gulp-sass": "^6.0.1",
84
84
  "html-minifier-terser": "^7.2.0",
85
- "html-validate": "^10.2.1",
85
+ "html-validate": "^10.3.1",
86
86
  "itwcw-package-analytics": "^1.0.6",
87
- "js-yaml": "^4.1.0",
87
+ "js-yaml": "^3.14.2",
88
88
  "json5": "^2.2.3",
89
89
  "libsodium-wrappers": "^0.7.15",
90
90
  "lighthouse": "^12.2.1",
91
91
  "lodash": "^4.17.21",
92
- "minimatch": "^10.0.3",
93
- "node-powertools": "^2.3.1",
92
+ "minimatch": "^10.1.1",
93
+ "node-powertools": "^2.3.2",
94
94
  "npm-api": "^1.0.1",
95
95
  "postcss": "^8.5.6",
96
96
  "prettier": "^3.6.2",
97
- "sass": "^1.93.2",
97
+ "sass": "^1.94.0",
98
98
  "spellchecker": "^3.7.1",
99
99
  "through2": "^4.0.2",
100
100
  "web-manager": "^4.0.23",