browser-extension-manager 1.0.14 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +43 -0
- package/CLAUDE.md +672 -0
- package/TODO.md +3 -0
- package/dist/assets/css/browser-extension-manager.scss +18 -0
- package/dist/assets/css/components/content/index.scss +5 -0
- package/dist/assets/css/components/options/index.scss +5 -0
- package/dist/assets/css/components/pages/index.scss +5 -0
- package/dist/assets/css/components/popup/index.scss +5 -0
- package/dist/assets/css/core/_animations.scss +64 -0
- package/dist/assets/css/core/_initialize.scss +23 -0
- package/dist/assets/css/core/_utilities.scss +80 -0
- package/dist/assets/themes/_template/_theme.js +5 -0
- package/dist/assets/themes/_template/_theme.scss +5 -0
- package/dist/assets/themes/bootstrap/_theme.js +16 -0
- package/dist/assets/themes/bootstrap/_theme.scss +232 -0
- package/dist/assets/themes/bootstrap/js/index.esm.js +19 -0
- package/dist/assets/themes/bootstrap/js/index.umd.js +34 -0
- package/dist/assets/themes/bootstrap/js/src/alert.js +87 -0
- package/dist/assets/themes/bootstrap/js/src/base-component.js +86 -0
- package/dist/assets/themes/bootstrap/js/src/button.js +72 -0
- package/dist/assets/themes/bootstrap/js/src/carousel.js +474 -0
- package/dist/assets/themes/bootstrap/js/src/collapse.js +297 -0
- package/dist/assets/themes/bootstrap/js/src/dom/data.js +55 -0
- package/dist/assets/themes/bootstrap/js/src/dom/event-handler.js +317 -0
- package/dist/assets/themes/bootstrap/js/src/dom/manipulator.js +71 -0
- package/dist/assets/themes/bootstrap/js/src/dom/selector-engine.js +126 -0
- package/dist/assets/themes/bootstrap/js/src/dropdown.js +458 -0
- package/dist/assets/themes/bootstrap/js/src/modal.js +378 -0
- package/dist/assets/themes/bootstrap/js/src/offcanvas.js +282 -0
- package/dist/assets/themes/bootstrap/js/src/popover.js +97 -0
- package/dist/assets/themes/bootstrap/js/src/scrollspy.js +296 -0
- package/dist/assets/themes/bootstrap/js/src/tab.js +315 -0
- package/dist/assets/themes/bootstrap/js/src/toast.js +224 -0
- package/dist/assets/themes/bootstrap/js/src/tooltip.js +632 -0
- package/dist/assets/themes/bootstrap/js/src/util/backdrop.js +151 -0
- package/dist/assets/themes/bootstrap/js/src/util/component-functions.js +35 -0
- package/dist/assets/themes/bootstrap/js/src/util/config.js +65 -0
- package/dist/assets/themes/bootstrap/js/src/util/focustrap.js +115 -0
- package/dist/assets/themes/bootstrap/js/src/util/index.js +306 -0
- package/dist/assets/themes/bootstrap/js/src/util/sanitizer.js +117 -0
- package/dist/assets/themes/bootstrap/js/src/util/scrollbar.js +114 -0
- package/dist/assets/themes/bootstrap/js/src/util/swipe.js +146 -0
- package/dist/assets/themes/bootstrap/js/src/util/template-factory.js +160 -0
- package/dist/assets/themes/bootstrap/scss/_accordion.scss +153 -0
- package/dist/assets/themes/bootstrap/scss/_alert.scss +68 -0
- package/dist/assets/themes/bootstrap/scss/_badge.scss +38 -0
- package/dist/assets/themes/bootstrap/scss/_breadcrumb.scss +40 -0
- package/dist/assets/themes/bootstrap/scss/_button-group.scss +147 -0
- package/dist/assets/themes/bootstrap/scss/_buttons.scss +216 -0
- package/dist/assets/themes/bootstrap/scss/_card.scss +238 -0
- package/dist/assets/themes/bootstrap/scss/_carousel.scss +226 -0
- package/dist/assets/themes/bootstrap/scss/_close.scss +66 -0
- package/dist/assets/themes/bootstrap/scss/_containers.scss +41 -0
- package/dist/assets/themes/bootstrap/scss/_dropdown.scss +250 -0
- package/dist/assets/themes/bootstrap/scss/_forms.scss +9 -0
- package/dist/assets/themes/bootstrap/scss/_functions.scss +302 -0
- package/dist/assets/themes/bootstrap/scss/_grid.scss +39 -0
- package/dist/assets/themes/bootstrap/scss/_helpers.scss +12 -0
- package/dist/assets/themes/bootstrap/scss/_images.scss +42 -0
- package/dist/assets/themes/bootstrap/scss/_list-group.scss +199 -0
- package/dist/assets/themes/bootstrap/scss/_maps.scss +174 -0
- package/dist/assets/themes/bootstrap/scss/_mixins.scss +42 -0
- package/dist/assets/themes/bootstrap/scss/_modal.scss +240 -0
- package/dist/assets/themes/bootstrap/scss/_nav.scss +197 -0
- package/dist/assets/themes/bootstrap/scss/_navbar.scss +289 -0
- package/dist/assets/themes/bootstrap/scss/_offcanvas.scss +147 -0
- package/dist/assets/themes/bootstrap/scss/_pagination.scss +109 -0
- package/dist/assets/themes/bootstrap/scss/_placeholders.scss +51 -0
- package/dist/assets/themes/bootstrap/scss/_popover.scss +196 -0
- package/dist/assets/themes/bootstrap/scss/_progress.scss +68 -0
- package/dist/assets/themes/bootstrap/scss/_reboot.scss +611 -0
- package/dist/assets/themes/bootstrap/scss/_root.scss +187 -0
- package/dist/assets/themes/bootstrap/scss/_spinners.scss +85 -0
- package/dist/assets/themes/bootstrap/scss/_tables.scss +171 -0
- package/dist/assets/themes/bootstrap/scss/_toasts.scss +73 -0
- package/dist/assets/themes/bootstrap/scss/_tooltip.scss +119 -0
- package/dist/assets/themes/bootstrap/scss/_transitions.scss +27 -0
- package/dist/assets/themes/bootstrap/scss/_type.scss +106 -0
- package/dist/assets/themes/bootstrap/scss/_utilities.scss +806 -0
- package/dist/assets/themes/bootstrap/scss/_variables-dark.scss +102 -0
- package/dist/assets/themes/bootstrap/scss/_variables.scss +1753 -0
- package/dist/assets/themes/bootstrap/scss/bootstrap-grid.scss +62 -0
- package/dist/assets/themes/bootstrap/scss/bootstrap-reboot.scss +10 -0
- package/dist/assets/themes/bootstrap/scss/bootstrap-utilities.scss +19 -0
- package/dist/assets/themes/bootstrap/scss/bootstrap.scss +52 -0
- package/dist/assets/themes/bootstrap/scss/forms/_floating-labels.scss +97 -0
- package/dist/assets/themes/bootstrap/scss/forms/_form-check.scss +189 -0
- package/dist/assets/themes/bootstrap/scss/forms/_form-control.scss +214 -0
- package/dist/assets/themes/bootstrap/scss/forms/_form-range.scss +91 -0
- package/dist/assets/themes/bootstrap/scss/forms/_form-select.scss +80 -0
- package/dist/assets/themes/bootstrap/scss/forms/_form-text.scss +11 -0
- package/dist/assets/themes/bootstrap/scss/forms/_input-group.scss +132 -0
- package/dist/assets/themes/bootstrap/scss/forms/_labels.scss +36 -0
- package/dist/assets/themes/bootstrap/scss/forms/_validation.scss +12 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_clearfix.scss +3 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_color-bg.scss +7 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_colored-links.scss +30 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_focus-ring.scss +5 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_icon-link.scss +25 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_position.scss +36 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_ratio.scss +26 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_stacks.scss +15 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_stretched-link.scss +15 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_text-truncation.scss +7 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_visually-hidden.scss +8 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_vr.scss +8 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_alert.scss +18 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_backdrop.scss +14 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_banner.scss +7 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_border-radius.scss +78 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_box-shadow.scss +18 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_breakpoints.scss +127 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_buttons.scss +70 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_caret.scss +69 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_clearfix.scss +9 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_color-mode.scss +21 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_color-scheme.scss +7 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_container.scss +11 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_deprecate.scss +10 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_forms.scss +163 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_gradients.scss +47 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_grid.scss +151 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_image.scss +16 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_list-group.scss +26 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_lists.scss +7 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_pagination.scss +10 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_reset-text.scss +17 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_resize.scss +6 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_table-variants.scss +24 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_text-truncate.scss +8 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_transition.scss +26 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_utilities.scss +97 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_visually-hidden.scss +38 -0
- package/dist/assets/themes/bootstrap/scss/tests/jasmine.js +16 -0
- package/dist/assets/themes/bootstrap/scss/tests/mixins/_auto-import-of-variables-dark.test.scss +7 -0
- package/dist/assets/themes/bootstrap/scss/tests/mixins/_color-modes.test.scss +69 -0
- package/dist/assets/themes/bootstrap/scss/tests/mixins/_media-query-color-mode-full.test.scss +8 -0
- package/dist/assets/themes/bootstrap/scss/tests/mixins/_utilities.test.scss +393 -0
- package/dist/assets/themes/bootstrap/scss/tests/sass-true/register.js +14 -0
- package/dist/assets/themes/bootstrap/scss/tests/sass-true/runner.js +17 -0
- package/dist/assets/themes/bootstrap/scss/tests/utilities/_api.test.scss +75 -0
- package/dist/assets/themes/bootstrap/scss/utilities/_api.scss +47 -0
- package/dist/assets/themes/bootstrap/scss/vendor/_rfs.scss +348 -0
- package/dist/assets/themes/classy/README.md +75 -0
- package/dist/assets/themes/classy/_config.scss +185 -0
- package/dist/assets/themes/classy/_theme.js +29 -0
- package/dist/assets/themes/classy/_theme.scss +34 -0
- package/dist/assets/themes/classy/css/base/_animations.scss +27 -0
- package/dist/assets/themes/classy/css/base/_backgrounds.scss +191 -0
- package/dist/assets/themes/classy/css/base/_borders.scss +65 -0
- package/dist/assets/themes/classy/css/base/_root.scss +58 -0
- package/dist/assets/themes/classy/css/base/_soft-colors.scss +92 -0
- package/dist/assets/themes/classy/css/base/_spacing.scss +64 -0
- package/dist/assets/themes/classy/css/base/_typography.scss +179 -0
- package/dist/assets/themes/classy/css/base/_utilities.scss +77 -0
- package/dist/assets/themes/classy/css/components/_accordion.scss +33 -0
- package/dist/assets/themes/classy/css/components/_avatars.scss +32 -0
- package/dist/assets/themes/classy/css/components/_badges.scss +25 -0
- package/dist/assets/themes/classy/css/components/_buttons.scss +397 -0
- package/dist/assets/themes/classy/css/components/_cards.scss +33 -0
- package/dist/assets/themes/classy/css/components/_carousel.scss +41 -0
- package/dist/assets/themes/classy/css/components/_forms.scss +115 -0
- package/dist/assets/themes/classy/css/components/_links.scss +19 -0
- package/dist/assets/themes/classy/css/components/_logo-scroll.scss +57 -0
- package/dist/assets/themes/classy/css/components/_spinners.scss +19 -0
- package/dist/assets/themes/classy/css/components/_text.scss +41 -0
- package/dist/assets/themes/classy/css/layout/_blog.scss +42 -0
- package/dist/assets/themes/classy/css/layout/_general.scss +139 -0
- package/dist/assets/themes/classy/css/layout/_navigation.scss +576 -0
- package/dist/assets/themes/classy/css/layout/_team.scss +18 -0
- package/dist/assets/themes/classy/js/logo-scroll.js +83 -0
- package/dist/assets/themes/classy/js/navbar-scroll.js +65 -0
- package/dist/background.js +235 -261
- package/dist/build.js +93 -4
- package/dist/commands/setup.js +0 -268
- package/dist/config/manifest.json +11 -3
- package/dist/config/page-template.html +24 -0
- package/dist/defaults/.nvmrc +1 -1
- package/dist/defaults/CLAUDE.md +8 -0
- package/dist/defaults/config/browser-extension-manager.json +37 -0
- package/dist/defaults/src/assets/css/components/content/index.scss +11 -0
- package/dist/defaults/src/assets/css/components/options/index.scss +14 -0
- package/dist/defaults/src/assets/css/components/pages/index.scss +10 -0
- package/dist/defaults/src/assets/css/components/popup/index.scss +10 -0
- package/dist/defaults/src/assets/css/components/sidepanel/index.scss +6 -0
- package/dist/defaults/src/assets/css/main.scss +32 -0
- package/dist/defaults/src/assets/js/components/background/index.js +22 -0
- package/dist/defaults/src/assets/js/components/content/index.js +22 -0
- package/dist/defaults/src/assets/js/components/options/index.js +22 -0
- package/dist/defaults/src/assets/js/components/pages/index.js +22 -0
- package/dist/defaults/src/assets/js/components/popup/index.js +22 -0
- package/dist/defaults/src/assets/js/components/sidepanel/index.js +20 -0
- package/dist/defaults/src/assets/vendor/.gitkeep +0 -0
- package/dist/defaults/src/manifest.json +11 -6
- package/dist/defaults/src/views/options/index.html +8 -0
- package/dist/defaults/src/views/pages/index.html +10 -0
- package/dist/defaults/src/views/popup/index.html +4 -0
- package/dist/defaults/src/views/sidepanel/index.html +4 -0
- package/dist/gulp/main.js +11 -5
- package/dist/gulp/plugins/webpack/strip-dev-blocks.js +53 -0
- package/dist/gulp/tasks/{_package.js → BU/_package.js} +1 -1
- package/dist/gulp/tasks/{developmentRebuild.js → BU/developmentRebuild.js} +1 -1
- package/dist/gulp/tasks/{themes.js → BU/themes.js} +2 -1
- package/dist/gulp/tasks/{test.js → _.js} +3 -3
- package/dist/gulp/tasks/audit.js +154 -0
- package/dist/gulp/tasks/defaults.js +308 -0
- package/dist/gulp/tasks/distribute.js +71 -78
- package/dist/gulp/tasks/html.js +150 -0
- package/dist/gulp/tasks/icons.js +3 -2
- package/dist/gulp/tasks/package.js +194 -13
- package/dist/gulp/tasks/sass.js +188 -43
- package/dist/gulp/tasks/serve.js +1 -0
- package/dist/gulp/tasks/utils/template-transform.js +50 -0
- package/dist/gulp/tasks/webpack.js +341 -134
- package/dist/index.js +34 -34
- package/dist/options.js +40 -0
- package/dist/page.js +40 -0
- package/dist/popup.js +40 -0
- package/dist/sidepanel.js +40 -0
- package/firebase-debug.log +350 -0
- package/package.json +25 -18
- package/dist/assets/css/main.scss +0 -3
- package/dist/assets/themes/bootstrap/5.3.3/css/bootstrap.css +0 -12057
- package/dist/assets/themes/bootstrap/5.3.3/css/bootstrap.css.map +0 -1
- package/dist/assets/themes/bootstrap/5.3.3/js/bootstrap.bundle.js +0 -6314
- package/dist/assets/themes/bootstrap/5.3.3/js/bootstrap.bundle.js.map +0 -1
- package/dist/assets/themes/bootstrap/5.3.3/js/bootstrap.js +0 -4494
- package/dist/assets/themes/bootstrap/5.3.3/js/bootstrap.js.map +0 -1
- package/dist/defaults/src/assets/css/content.scss +0 -2
- package/dist/defaults/src/assets/css/options.scss +0 -11
- package/dist/defaults/src/assets/css/popup.scss +0 -14
- package/dist/defaults/src/assets/js/background.js +0 -18
- package/dist/defaults/src/assets/js/content.js +0 -15
- package/dist/defaults/src/assets/js/options.js +0 -17
- package/dist/defaults/src/assets/js/popup.js +0 -17
- package/dist/defaults/src/pages/options.html +0 -26
- package/dist/defaults/src/pages/popup.html +0 -26
- /package/dist/{defaults/src/assets/images/_ → assets/css/bundles/.gitkeep} +0 -0
- /package/dist/assets/css/{fontawesome.scss → core/_fontawesome.scss} +0 -0
- /package/dist/defaults/src/assets/{vendor/_ → images/.gitkeep} +0 -0
- /package/dist/gulp/tasks/{_importer.js → BU/_importer.js} +0 -0
- /package/dist/gulp/tasks/{_vendor.js → BU/_vendor.js} +0 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// ============================================
|
|
2
|
+
// Content Script Component
|
|
3
|
+
// ============================================
|
|
4
|
+
|
|
5
|
+
// Import Browser Extension Manager
|
|
6
|
+
import Manager from 'browser-extension-manager/content';
|
|
7
|
+
|
|
8
|
+
// Create instance
|
|
9
|
+
const manager = new Manager();
|
|
10
|
+
|
|
11
|
+
// Initialize
|
|
12
|
+
manager.initialize()
|
|
13
|
+
.then(() => {
|
|
14
|
+
// Shortcuts
|
|
15
|
+
const { extension, messenger, logger } = manager;
|
|
16
|
+
|
|
17
|
+
// Add your project-specific content script logic here
|
|
18
|
+
// ...
|
|
19
|
+
|
|
20
|
+
// Log the initialization
|
|
21
|
+
logger.log('Content script initialized!');
|
|
22
|
+
});
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// ============================================
|
|
2
|
+
// Options Component
|
|
3
|
+
// ============================================
|
|
4
|
+
|
|
5
|
+
// Import Browser Extension Manager
|
|
6
|
+
import Manager from 'browser-extension-manager/options';
|
|
7
|
+
|
|
8
|
+
// Create instance
|
|
9
|
+
const manager = new Manager();
|
|
10
|
+
|
|
11
|
+
// Initialize
|
|
12
|
+
manager.initialize()
|
|
13
|
+
.then(() => {
|
|
14
|
+
// Shortcuts
|
|
15
|
+
const { extension, messenger, logger, webManager } = manager;
|
|
16
|
+
|
|
17
|
+
// Add your project-specific options logic here
|
|
18
|
+
// ...
|
|
19
|
+
|
|
20
|
+
// Log the initialization
|
|
21
|
+
logger.log('Options initialized!');
|
|
22
|
+
});
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// ============================================
|
|
2
|
+
// Index Page (Main Extension Page)
|
|
3
|
+
// ============================================
|
|
4
|
+
|
|
5
|
+
// Import Browser Extension Manager
|
|
6
|
+
import Manager from 'browser-extension-manager/page';
|
|
7
|
+
|
|
8
|
+
// Create instance
|
|
9
|
+
const manager = new Manager();
|
|
10
|
+
|
|
11
|
+
// Initialize
|
|
12
|
+
manager.initialize()
|
|
13
|
+
.then(() => {
|
|
14
|
+
// Shortcuts
|
|
15
|
+
const { extension, messenger, logger, webManager } = manager;
|
|
16
|
+
|
|
17
|
+
// Add your project-specific page logic here
|
|
18
|
+
// ...
|
|
19
|
+
|
|
20
|
+
// Log the initialization
|
|
21
|
+
logger.log('Index page initialized!');
|
|
22
|
+
});
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// ============================================
|
|
2
|
+
// Popup Component
|
|
3
|
+
// ============================================
|
|
4
|
+
|
|
5
|
+
// Import Browser Extension Manager
|
|
6
|
+
import Manager from 'browser-extension-manager/popup';
|
|
7
|
+
|
|
8
|
+
// Create instance
|
|
9
|
+
const manager = new Manager();
|
|
10
|
+
|
|
11
|
+
// Initialize
|
|
12
|
+
manager.initialize()
|
|
13
|
+
.then(() => {
|
|
14
|
+
// Shortcuts
|
|
15
|
+
const { extension, messenger, logger, webManager } = manager;
|
|
16
|
+
|
|
17
|
+
// Add your project-specific popup logic here
|
|
18
|
+
// ...
|
|
19
|
+
|
|
20
|
+
// Log the initialization
|
|
21
|
+
logger.log('Popup initialized!');
|
|
22
|
+
});
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// ============================================
|
|
2
|
+
// Sidepanel Component
|
|
3
|
+
// ============================================
|
|
4
|
+
// Default functionality for the sidepanel view
|
|
5
|
+
|
|
6
|
+
// Import Browser Extension Manager
|
|
7
|
+
import Manager from 'browser-extension-manager/sidepanel';
|
|
8
|
+
|
|
9
|
+
// Create instance
|
|
10
|
+
const manager = new Manager();
|
|
11
|
+
|
|
12
|
+
// Initialize
|
|
13
|
+
manager.initialize()
|
|
14
|
+
.then(() => {
|
|
15
|
+
// Shortcuts
|
|
16
|
+
const { extension, messenger, logger, webManager } = manager;
|
|
17
|
+
|
|
18
|
+
// Add your sidepanel-specific JavaScript here
|
|
19
|
+
logger.log('Sidepanel initialized!');
|
|
20
|
+
});
|
|
File without changes
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
// Background script
|
|
7
7
|
background: {
|
|
8
|
-
service_worker: 'assets/js/background.bundle.js',
|
|
8
|
+
service_worker: 'assets/js/components/background.bundle.js',
|
|
9
9
|
},
|
|
10
10
|
|
|
11
11
|
// Permissions
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
|
|
23
23
|
// Options page
|
|
24
24
|
options_ui: {
|
|
25
|
-
page: '
|
|
25
|
+
page: 'views/options/index.html',
|
|
26
26
|
},
|
|
27
27
|
|
|
28
28
|
// Content scripts
|
|
@@ -33,10 +33,10 @@
|
|
|
33
33
|
// 'https://*/*',
|
|
34
34
|
// ],
|
|
35
35
|
// js: [
|
|
36
|
-
// 'assets/js/content.bundle.js',
|
|
36
|
+
// 'assets/js/components/content.bundle.js',
|
|
37
37
|
// ],
|
|
38
38
|
// css: [
|
|
39
|
-
// 'assets/css/content.bundle.css',
|
|
39
|
+
// 'assets/css/components/content.bundle.css',
|
|
40
40
|
// ],
|
|
41
41
|
// run_at: 'document_end',
|
|
42
42
|
// all_frames: false,
|
|
@@ -46,7 +46,12 @@
|
|
|
46
46
|
// Browser action
|
|
47
47
|
action: {
|
|
48
48
|
default_title: '__MSG_appName__',
|
|
49
|
-
default_popup: '
|
|
49
|
+
default_popup: 'views/popup/index.html',
|
|
50
|
+
},
|
|
51
|
+
|
|
52
|
+
// Side panel
|
|
53
|
+
side_panel: {
|
|
54
|
+
default_path: 'views/sidepanel/index.html',
|
|
50
55
|
},
|
|
51
56
|
|
|
52
57
|
// Content security policy
|
|
@@ -85,7 +90,7 @@
|
|
|
85
90
|
// Sandbox
|
|
86
91
|
sandbox: {
|
|
87
92
|
pages: [
|
|
88
|
-
// '
|
|
93
|
+
// 'views/sandbox/index.html',
|
|
89
94
|
],
|
|
90
95
|
},
|
|
91
96
|
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<div class="page-container p-4">
|
|
2
|
+
<header class="page-header mb-4">
|
|
3
|
+
<h1 class="h2">Welcome</h1>
|
|
4
|
+
<p class="lead text-muted">Your extension page is ready.</p>
|
|
5
|
+
</header>
|
|
6
|
+
|
|
7
|
+
<main class="page-content">
|
|
8
|
+
<p>Add your page content here.</p>
|
|
9
|
+
</main>
|
|
10
|
+
</div>
|
package/dist/gulp/main.js
CHANGED
|
@@ -2,15 +2,19 @@
|
|
|
2
2
|
const Manager = new (require('../build.js'));
|
|
3
3
|
const logger = Manager.logger('main');
|
|
4
4
|
const argv = Manager.getArguments();
|
|
5
|
-
const { series, parallel
|
|
5
|
+
const { series, parallel } = require('gulp');
|
|
6
6
|
const path = require('path');
|
|
7
|
-
const
|
|
7
|
+
const glob = require('glob').globSync;
|
|
8
|
+
|
|
9
|
+
// Load package
|
|
10
|
+
const package = Manager.getPackage('main');
|
|
11
|
+
const project = Manager.getPackage('project');
|
|
8
12
|
|
|
9
13
|
// Log
|
|
10
14
|
logger.log('Starting...', argv);
|
|
11
15
|
|
|
12
16
|
// Load tasks
|
|
13
|
-
const tasks =
|
|
17
|
+
const tasks = glob('*.js', { cwd: `${__dirname}/tasks` });
|
|
14
18
|
|
|
15
19
|
// Init global
|
|
16
20
|
global.tasks = {};
|
|
@@ -35,9 +39,11 @@ exports.build = series(
|
|
|
35
39
|
// exports.setup,
|
|
36
40
|
// exports.clean,
|
|
37
41
|
// exports.themes,
|
|
42
|
+
exports.defaults,
|
|
38
43
|
exports.distribute,
|
|
39
|
-
parallel(exports.sass, exports.webpack, exports.icons),
|
|
44
|
+
parallel(exports.sass, exports.webpack, exports.icons, exports.html),
|
|
40
45
|
exports.package,
|
|
46
|
+
exports.audit,
|
|
41
47
|
);
|
|
42
48
|
|
|
43
49
|
// Compose task scheduler
|
|
@@ -46,6 +52,6 @@ exports.default = series(
|
|
|
46
52
|
// exports.clean,
|
|
47
53
|
exports.serve,
|
|
48
54
|
exports.build,
|
|
49
|
-
exports.developmentRebuild,
|
|
55
|
+
// exports.developmentRebuild,
|
|
50
56
|
// exports.watcher,
|
|
51
57
|
);
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// Plugin: StripDevBlocksPlugin
|
|
2
|
+
class StripDevBlocksPlugin {
|
|
3
|
+
constructor(options = {}) {
|
|
4
|
+
this.options = Object.assign(
|
|
5
|
+
{
|
|
6
|
+
fileTest: /\.js$/,
|
|
7
|
+
startMarker: '/* @dev-only:start */',
|
|
8
|
+
endMarker: '/* @dev-only:end */',
|
|
9
|
+
},
|
|
10
|
+
options
|
|
11
|
+
)
|
|
12
|
+
this.enabled = process.env.BEM_BUILD_MODE === 'true'
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
apply(compiler) {
|
|
16
|
+
if (!this.enabled) return
|
|
17
|
+
|
|
18
|
+
compiler.hooks.compilation.tap('StripDevBlocksPlugin', (compilation) => {
|
|
19
|
+
compilation.hooks.processAssets.tap(
|
|
20
|
+
{
|
|
21
|
+
name: 'StripDevBlocksPlugin',
|
|
22
|
+
stage: compilation.PROCESS_ASSETS_STAGE_OPTIMIZE,
|
|
23
|
+
},
|
|
24
|
+
(assets) => {
|
|
25
|
+
for (const filename in assets) {
|
|
26
|
+
if (!this.options.fileTest.test(filename)) continue
|
|
27
|
+
|
|
28
|
+
let source = assets[filename].source()
|
|
29
|
+
|
|
30
|
+
// Strip everything between start and end marker
|
|
31
|
+
const pattern = new RegExp(
|
|
32
|
+
`${this.escape(this.options.startMarker)}[\\s\\S]*?${this.escape(this.options.endMarker)}`,
|
|
33
|
+
'g'
|
|
34
|
+
)
|
|
35
|
+
source = source.replace(pattern, '')
|
|
36
|
+
|
|
37
|
+
compilation.updateAsset(
|
|
38
|
+
filename,
|
|
39
|
+
new compiler.webpack.sources.RawSource(source)
|
|
40
|
+
)
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
)
|
|
44
|
+
})
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
escape(str) {
|
|
48
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Export
|
|
53
|
+
module.exports = StripDevBlocksPlugin
|
|
@@ -155,7 +155,7 @@ function packageWatcher(complete) {
|
|
|
155
155
|
logger.log('[watcher] Watching for changes...');
|
|
156
156
|
|
|
157
157
|
// Watch for changes in the dist folder
|
|
158
|
-
watch(input, { delay: delay }, parallel(...tasks))
|
|
158
|
+
watch(input, { delay: delay, dot: true }, parallel(...tasks))
|
|
159
159
|
.on('change', function (path) {
|
|
160
160
|
logger.log(`[watcher] File ${path} was changed`);
|
|
161
161
|
});
|
|
@@ -82,7 +82,7 @@ function developmentRebuildWatcher(complete) {
|
|
|
82
82
|
logger.log('[watcher] Watching for changes...');
|
|
83
83
|
|
|
84
84
|
// Watch for changes
|
|
85
|
-
watch(input, { delay: delay }, developmentRebuild)
|
|
85
|
+
watch(input, { delay: delay, dot: true }, developmentRebuild)
|
|
86
86
|
.on('change', function(path) {
|
|
87
87
|
logger.log(`[watcher] File ${path} was changed`);
|
|
88
88
|
});
|
|
@@ -7,6 +7,7 @@ const { src, dest, watch, series } = require('gulp');
|
|
|
7
7
|
const package = Manager.getPackage('main');
|
|
8
8
|
const project = Manager.getPackage('project');
|
|
9
9
|
const manifest = Manager.getManifest();
|
|
10
|
+
const config = Manager.getConfig('project');
|
|
10
11
|
const rootPathPackage = Manager.getRootPath('main');
|
|
11
12
|
const rootPathProject = Manager.getRootPath('project');
|
|
12
13
|
|
|
@@ -56,7 +57,7 @@ function themesWatcher(complete) {
|
|
|
56
57
|
logger.log('[watcher] Watching for changes...');
|
|
57
58
|
|
|
58
59
|
// Watch for changes
|
|
59
|
-
watch(input, { delay: delay }, themes)
|
|
60
|
+
watch(input, { delay: delay, dot: true }, themes)
|
|
60
61
|
.on('change', function(path) {
|
|
61
62
|
logger.log(`[watcher] File ${path} was changed`);
|
|
62
63
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Libraries
|
|
2
2
|
const Manager = new (require('../../build.js'));
|
|
3
|
-
const logger = Manager.logger('
|
|
3
|
+
const logger = Manager.logger('XXX');
|
|
4
4
|
|
|
5
5
|
// Load package
|
|
6
6
|
const package = Manager.getPackage('main');
|
|
@@ -9,9 +9,9 @@ const rootPathPackage = Manager.getRootPath('main');
|
|
|
9
9
|
const rootPathProject = Manager.getRootPath('project');
|
|
10
10
|
|
|
11
11
|
// Task
|
|
12
|
-
module.exports = function
|
|
12
|
+
module.exports = function XXX(complete) {
|
|
13
13
|
// Log
|
|
14
|
-
logger.log('Starting
|
|
14
|
+
logger.log('Starting XXX...');
|
|
15
15
|
|
|
16
16
|
// Complete
|
|
17
17
|
return complete();
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
// Libraries
|
|
2
|
+
const Manager = new (require('../../build.js'));
|
|
3
|
+
const logger = Manager.logger('audit');
|
|
4
|
+
const path = require('path');
|
|
5
|
+
const jetpack = require('fs-jetpack');
|
|
6
|
+
const { series } = require('gulp');
|
|
7
|
+
const chalk = require('chalk');
|
|
8
|
+
|
|
9
|
+
// Load package
|
|
10
|
+
const package = Manager.getPackage('main');
|
|
11
|
+
const project = Manager.getPackage('project');
|
|
12
|
+
const rootPathPackage = Manager.getRootPath('main');
|
|
13
|
+
const rootPathProject = Manager.getRootPath('project');
|
|
14
|
+
|
|
15
|
+
// Audit results tracker
|
|
16
|
+
const auditResults = {
|
|
17
|
+
externalScripts: [],
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
// Patterns to detect external script references
|
|
21
|
+
const EXTERNAL_SCRIPT_PATTERNS = [
|
|
22
|
+
// Script tags
|
|
23
|
+
/<script[^>]*src=["'](https?:\/\/[^"']+)["']/gi,
|
|
24
|
+
// Dynamic script creation
|
|
25
|
+
/createElement\s*\(\s*["']script["']\s*\)[^}]*src\s*=\s*["'](https?:\/\/[^"']+)["']/gi,
|
|
26
|
+
// Direct URL assignments to src
|
|
27
|
+
/\.src\s*=\s*["'](https?:\/\/[^"']+)["']/gi,
|
|
28
|
+
// fetch/XMLHttpRequest calls to external URLs (common pattern for loading scripts)
|
|
29
|
+
/fetch\s*\(\s*["'](https?:\/\/[^"']+\.js[^"']*)["']/gi,
|
|
30
|
+
/XMLHttpRequest[^}]*open\s*\([^,]*,\s*["'](https?:\/\/[^"']+\.js[^"']*)["']/gi,
|
|
31
|
+
// import() dynamic imports of external URLs
|
|
32
|
+
/import\s*\(\s*["'](https?:\/\/[^"']+)["']/gi,
|
|
33
|
+
// require() of external URLs
|
|
34
|
+
/require\s*\(\s*["'](https?:\/\/[^"']+)["']/gi,
|
|
35
|
+
];
|
|
36
|
+
|
|
37
|
+
// Check a single file for external script references
|
|
38
|
+
function checkFileForExternalScripts(filePath) {
|
|
39
|
+
try {
|
|
40
|
+
const content = jetpack.read(filePath);
|
|
41
|
+
if (!content) {
|
|
42
|
+
return [];
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const found = [];
|
|
46
|
+
const lines = content.split('\n');
|
|
47
|
+
|
|
48
|
+
EXTERNAL_SCRIPT_PATTERNS.forEach(pattern => {
|
|
49
|
+
let match;
|
|
50
|
+
const globalPattern = new RegExp(pattern.source, pattern.flags);
|
|
51
|
+
|
|
52
|
+
while ((match = globalPattern.exec(content)) !== null) {
|
|
53
|
+
const url = match[1];
|
|
54
|
+
const lineNumber = content.substring(0, match.index).split('\n').length;
|
|
55
|
+
|
|
56
|
+
found.push({
|
|
57
|
+
file: path.relative(rootPathProject, filePath),
|
|
58
|
+
url: url,
|
|
59
|
+
line: lineNumber,
|
|
60
|
+
pattern: pattern.source.substring(0, 50) + '...',
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
return found;
|
|
66
|
+
} catch (e) {
|
|
67
|
+
logger.error(`Error reading file ${filePath}:`, e.message);
|
|
68
|
+
return [];
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Main audit task
|
|
73
|
+
async function auditFn(complete) {
|
|
74
|
+
// Log
|
|
75
|
+
logger.log('Starting audit...');
|
|
76
|
+
|
|
77
|
+
// Skip if not in build mode
|
|
78
|
+
if (!Manager.isBuildMode()) {
|
|
79
|
+
logger.log('Skipping audit (not in build mode)');
|
|
80
|
+
return complete();
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// Reset results
|
|
84
|
+
auditResults.externalScripts = [];
|
|
85
|
+
|
|
86
|
+
try {
|
|
87
|
+
// Find all files in packaged directory (JS, HTML, etc.)
|
|
88
|
+
const packagedDir = path.join(rootPathProject, 'packaged', 'raw');
|
|
89
|
+
|
|
90
|
+
if (!jetpack.exists(packagedDir)) {
|
|
91
|
+
logger.log(chalk.yellow('⚠️ Packaged directory not found. Run package task first.'));
|
|
92
|
+
return complete();
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const files = jetpack.find(packagedDir, { matching: ['**/*.js', '**/*.html'] });
|
|
96
|
+
|
|
97
|
+
logger.log(`Auditing ${files.length} files (JS, HTML)...`);
|
|
98
|
+
|
|
99
|
+
// Check each file
|
|
100
|
+
files.forEach(filePath => {
|
|
101
|
+
const externalScripts = checkFileForExternalScripts(filePath);
|
|
102
|
+
if (externalScripts.length > 0) {
|
|
103
|
+
auditResults.externalScripts.push(...externalScripts);
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
// Display results
|
|
108
|
+
displayAuditResults();
|
|
109
|
+
|
|
110
|
+
// Log
|
|
111
|
+
logger.log('Audit completed!');
|
|
112
|
+
|
|
113
|
+
// Complete
|
|
114
|
+
return complete();
|
|
115
|
+
} catch (e) {
|
|
116
|
+
logger.error('Error during audit:', e);
|
|
117
|
+
return complete();
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// Display audit results
|
|
122
|
+
function displayAuditResults() {
|
|
123
|
+
console.log('\n' + chalk.bold('═══════════════════════════════════════════════════'));
|
|
124
|
+
console.log(chalk.bold(' AUDIT RESULTS'));
|
|
125
|
+
console.log(chalk.bold('═══════════════════════════════════════════════════') + '\n');
|
|
126
|
+
|
|
127
|
+
// External Scripts
|
|
128
|
+
if (auditResults.externalScripts.length > 0) {
|
|
129
|
+
console.log(chalk.red.bold('❌ EXTERNAL SCRIPTS DETECTED'));
|
|
130
|
+
console.log(chalk.gray('Chrome extensions do not allow external scripts to be loaded.\n'));
|
|
131
|
+
|
|
132
|
+
auditResults.externalScripts.forEach((item, index) => {
|
|
133
|
+
console.log(chalk.red(` ${index + 1}. ${item.file}:${item.line}`));
|
|
134
|
+
console.log(chalk.gray(` URL: ${item.url}`));
|
|
135
|
+
console.log('');
|
|
136
|
+
});
|
|
137
|
+
} else {
|
|
138
|
+
console.log(chalk.green('✅ No external scripts detected'));
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// Summary
|
|
142
|
+
console.log(chalk.bold('\n───────────────────────────────────────────────────'));
|
|
143
|
+
console.log(chalk.bold('SUMMARY'));
|
|
144
|
+
console.log(chalk.bold('───────────────────────────────────────────────────'));
|
|
145
|
+
|
|
146
|
+
const externalScriptCount = auditResults.externalScripts.length;
|
|
147
|
+
const externalScriptColor = externalScriptCount > 0 ? chalk.red : chalk.green;
|
|
148
|
+
console.log(externalScriptColor(`External Scripts: ${externalScriptCount}`));
|
|
149
|
+
|
|
150
|
+
console.log(chalk.bold('═══════════════════════════════════════════════════\n'));
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// Export task
|
|
154
|
+
module.exports = series(auditFn);
|