browser-extension-manager 1.3.7 → 1.3.9

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.
@@ -181,5 +181,6 @@ $avatar-sizes: (
181
181
  $headings-font-weight: $headings-font-weight,
182
182
  $border-radius: $border-radius,
183
183
  $border-radius-sm: $border-radius-sm,
184
- $border-radius-lg: $border-radius-lg
184
+ $border-radius-lg: $border-radius-lg,
185
+ $enable-negative-margins: true
185
186
  );
package/dist/build.js CHANGED
@@ -44,7 +44,8 @@ Manager.getArguments = function () {
44
44
 
45
45
  // Fix
46
46
  options._ = options._ || [];
47
- options.browser = force(options.browser === undefined ? true : options.browser, 'boolean');
47
+ // browser can be: true (all), false (none), or a string like 'chrome' or 'chrome,firefox'
48
+ options.browser = options.browser === undefined ? true : options.browser;
48
49
  options.debug = force(options.debug === undefined ? false : options.debug, 'boolean');
49
50
 
50
51
  // Return
@@ -1,6 +1,7 @@
1
1
  // Libraries
2
2
  const Manager = new (require('../../build.js'));
3
3
  const logger = Manager.logger('publish');
4
+ const argv = Manager.getArguments();
4
5
  const { series } = require('gulp');
5
6
  const jetpack = require('fs-jetpack');
6
7
  const path = require('path');
@@ -9,6 +10,29 @@ const { execute } = require('node-powertools');
9
10
  // Load package
10
11
  const project = Manager.getPackage('project');
11
12
 
13
+ // Helper to parse browser filter from --browser flag
14
+ // Returns array of browser names to publish to, or null for all
15
+ function getBrowserFilter() {
16
+ const browser = argv.browser;
17
+
18
+ // If true or undefined, publish to all
19
+ if (browser === true || browser === undefined) {
20
+ return null;
21
+ }
22
+
23
+ // If false, publish to none
24
+ if (browser === false) {
25
+ return [];
26
+ }
27
+
28
+ // If string, parse comma-separated list
29
+ if (typeof browser === 'string') {
30
+ return browser.split(',').map((b) => b.trim().toLowerCase());
31
+ }
32
+
33
+ return null;
34
+ }
35
+
12
36
  // Paths for each target
13
37
  const PATHS = {
14
38
  chromium: {
@@ -89,27 +113,53 @@ async function publish(complete) {
89
113
  // Log version
90
114
  logger.log(`Publishing version ${project.version}`);
91
115
 
92
- // Get enabled stores
116
+ // Get browser filter from --browser flag
117
+ const browserFilter = getBrowserFilter();
118
+
119
+ // Log filter if applied
120
+ if (browserFilter) {
121
+ logger.log(`Browser filter: ${browserFilter.join(', ') || 'none'}`);
122
+ }
123
+
124
+ // Get enabled stores (filtered by --browser flag if provided)
93
125
  const enabledStores = Object.entries(STORES)
94
- .filter(([, store]) => store.enabled())
126
+ .filter(([key, store]) => {
127
+ // Check if store is enabled via credentials
128
+ if (!store.enabled()) {
129
+ return false;
130
+ }
131
+
132
+ // If no filter, include all enabled stores
133
+ if (!browserFilter) {
134
+ return true;
135
+ }
136
+
137
+ // Check if this store is in the filter
138
+ return browserFilter.includes(key);
139
+ })
95
140
  .map(([key]) => key);
96
141
 
97
- // If no stores are configured, error and show all store info
142
+ // If no stores to publish to
98
143
  if (enabledStores.length === 0) {
99
- logger.error('No stores configured for publishing. Add credentials to .env file');
100
- logger.log('');
101
- logger.log('Store URLs and API documentation:');
102
- Object.entries(STORES).forEach(([, store]) => {
103
- logger.log(` ${store.name}:`);
104
- logger.log(` Submit: ${store.submitUrl}`);
105
- if (store.apiUrl) {
106
- logger.log(` API: ${store.apiUrl}`);
107
- } else if (store.note) {
108
- logger.log(` Note: ${store.note}`);
109
- } else {
110
- logger.log(` API: N/A (manual submission only)`);
111
- }
112
- });
144
+ // Check if it's because of filter or missing credentials
145
+ if (browserFilter && browserFilter.length > 0) {
146
+ logger.error(`No matching stores for --browser=${browserFilter.join(',')}. Available: chrome, firefox, edge`);
147
+ } else {
148
+ logger.error('No stores configured for publishing. Add credentials to .env file');
149
+ logger.log('');
150
+ logger.log('Store URLs and API documentation:');
151
+ Object.entries(STORES).forEach(([, store]) => {
152
+ logger.log(` ${store.name}:`);
153
+ logger.log(` Submit: ${store.submitUrl}`);
154
+ if (store.apiUrl) {
155
+ logger.log(` API: ${store.apiUrl}`);
156
+ } else if (store.note) {
157
+ logger.log(` Note: ${store.note}`);
158
+ } else {
159
+ logger.log(` API: N/A (manual submission only)`);
160
+ }
161
+ });
162
+ }
113
163
  throw new Error('No stores configured for publishing');
114
164
  }
115
165
 
@@ -220,21 +270,29 @@ async function publishToFirefox() {
220
270
  throw new Error('Missing Firefox credentials. Set FIREFOX_API_KEY, FIREFOX_API_SECRET in .env');
221
271
  }
222
272
 
223
- logger.log('[firefox] Uploading to Firefox Add-ons...');
273
+ // Log what we're doing
274
+ if (extensionId) {
275
+ logger.log(`[firefox] Updating existing add-on: ${extensionId}`);
276
+ } else {
277
+ logger.log('[firefox] Creating new add-on (no FIREFOX_EXTENSION_ID set)');
278
+ logger.log('[firefox] After publish, add FIREFOX_EXTENSION_ID to .env for future updates');
279
+ }
224
280
 
225
281
  // Use web-ext sign with firefox build
282
+ // --approval-timeout=0 to skip waiting for approval (can take minutes to hours)
226
283
  const command = [
227
284
  'npx web-ext sign',
228
285
  `--source-dir "${PATHS.firefox.raw}"`,
229
286
  `--api-key "${apiKey}"`,
230
287
  `--api-secret "${apiSecret}"`,
231
288
  `--channel "${channel}"`,
289
+ '--approval-timeout 0', // Don't wait for approval - it can take hours
232
290
  extensionId ? `--id "${extensionId}"` : '',
233
291
  ].filter(Boolean).join(' ');
234
292
 
235
293
  await execute(command);
236
294
 
237
- logger.log('[firefox] Upload complete');
295
+ logger.log('[firefox] Upload complete (approval may take time)');
238
296
  }
239
297
 
240
298
  // Publish to Microsoft Edge Add-ons
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "browser-extension-manager",
3
- "version": "1.3.7",
3
+ "version": "1.3.9",
4
4
  "description": "Browser Extension Manager dependency manager",
5
5
  "main": "dist/index.js",
6
6
  "exports": {