Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Barrel Roll logo

Barrel Roll

CICode Style: PrettierCoverageESLintLicense: Apache-2.0Quality ChecksTypeScriptVS Code Marketplace InstallsVS Code Marketplace Version

Barrel Roll is a Visual Studio Code extension that automates creation and maintenance of index.ts barrel files. Right-click a folder, run a Barrel Roll command, and the extension generates exports from real TypeScript declarations while keeping output deterministic and readable.

Features

  • Right-click generation of index.ts barrel files from the VS Code explorer
  • Two command modes: single directory and recursive directory processing
  • Recursive barrel generation for child folders with parent re-export wiring
  • Export detection for TypeScript values, type-only exports, and default exports
  • Stable alphabetical ordering to keep diffs small and predictable
  • Sanitized updates that preserve direct definitions in existing index.ts
  • Built-in safeguards for ignored directories and oversized files

Installation

From VS Code Marketplace

  1. Open VS Code
  2. Go to Extensions (Ctrl+Shift+X / Cmd+Shift+X)
  3. Search for Barrel Roll
  4. Click Install

From VSIX

  1. Download the latest .vsix file from the releases page
  2. In VS Code, go to Extensions
  3. Click the ... menu and select Install from VSIX...
  4. Select the downloaded file

Usage

  1. Right-click a folder in the VS Code explorer
  2. Run one of these commands:
    • Barrel Roll Directory
    • Barrel Roll Directory (Recursive)
  3. Barrel Roll will:
    • scan .ts/.tsx files (excluding index.ts, declaration files, and test files)
    • generate or update index.ts
    • recursively generate child barrels when recursive mode is selected
    • preserve direct definitions in existing index files while refreshing export lines

You can also run both commands from the Command Palette.

Example

Given:

// user.tsexportclassUser{}exportinterfaceUserData{}// auth.tsexportfunctionlogin(){}exportfunctionlogout(){}// constants.tsexportconstAPI_URL='https://api.example.com';

Barrel Roll generates:

// index.tsexport{login,logout}from'./auth.js';export{API_URL}from'./constants.js';export{User}from'./user.js';exporttype{UserData}from'./user.js';

Development

Prerequisites

  • Node.js 22.13+
  • npm 10+

Common commands

npm install
npm run compile
npm run compile-tests
npm run test
npm run test:unit
npm run test:vscode
npm run coverage:verify
npm run memory:check
npm run lint
npm run deps:check
npm run quality

The quality command checks formatting and lint rules, unused and architectural dependencies, duplicate code, and TypeScript circular/orphan modules.

Testing notes

  • npm test runs compile, lint, dependency check, then the Node test suite via scripts/run-tests.cjs.
  • npm run test:unit runs a faster compile + test path without lint.
  • npm run coverage:verify requires every executable production file to exceed 95% statements, branches, functions, and lines.
  • Test compilation clears stale TypeScript output before coverage so removed files cannot silently remain in the measured dist/src tree.
  • npm run memory:check runs the bounded cache/parser heap-retention probe with forced garbage collection; it is intentionally separate from the fast unit suite.
  • npm run test:vscode builds the current extension bundle and launches a real VS Code extension host. The contract activates the extension, verifies both contributed commands, executes barrel generation, and validates the generated index.ts. The first run may download the VS Code test binary; headless Linux environments require a display host such as Xvfb.
  • Unit and integration tests live under src/test/.
  • Unit test names must start with should and follow FAST: fast, autonomous, self-validating, and timely.

Dependency checking

npm run deps:check uses scripts/run-depcheck.cjs (programmatic depcheck runner). It writes .depcheck.json, filters known script/repository references, and fails when unused dependencies remain.

Packaging and release

# Build production bundle used by VS Code prepublish
npm run package
# Build VSIX package
npm run ext:package
# Install latest packaged VSIX locally
npm run ext:install
# Build + install
npm run ext:reinstall

VSIX contents

Publishing uses an allowlist in .vscodeignore so only runtime assets are intentionally included:

  • package.json
  • LICENSE
  • README.md
  • dist/extension.js
  • public/img/barrel-roll-icon.png

Use npx @vscode/vsce ls to inspect final package contents before publishing.

Known limitations

  • Scans only .ts and .tsx source files.
  • Dynamic runtime-created named exports cannot be statically detected.
  • Existing index.ts content is sanitized to preserve direct declarations, but malformed export syntax may still require manual cleanup.

Architecture

For architecture details and module-level responsibilities, see ARCHITECTURE.md.

Contributing

Contributions are welcome. See CONTRIBUTING.md and AGENTS.md for contribution and automation details.

License

Apache 2.0. See LICENSE.

Ownership

Maintained by Robert Lindley.

About

Visual Studio Code extension to automatically export types, functions, constants, and classes through barrel files.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Barrel Roll logo

Barrel Roll

CICode Style: PrettierCoverageESLintLicense: Apache-2.0Quality ChecksTypeScriptVS Code Marketplace InstallsVS Code Marketplace Version

Barrel Roll is a Visual Studio Code extension that automates creation and maintenance of index.ts barrel files. Right-click a folder, run a Barrel Roll command, and the extension generates exports from real TypeScript declarations while keeping output deterministic and readable.

Features

  • Right-click generation of index.ts barrel files from the VS Code explorer
  • Two command modes: single directory and recursive directory processing
  • Recursive barrel generation for child folders with parent re-export wiring
  • Export detection for TypeScript values, type-only exports, and default exports
  • Stable alphabetical ordering to keep diffs small and predictable
  • Sanitized updates that preserve direct definitions in existing index.ts
  • Built-in safeguards for ignored directories and oversized files

Installation

From VS Code Marketplace

  1. Open VS Code
  2. Go to Extensions (Ctrl+Shift+X / Cmd+Shift+X)
  3. Search for Barrel Roll
  4. Click Install

From VSIX

  1. Download the latest .vsix file from the releases page
  2. In VS Code, go to Extensions
  3. Click the ... menu and select Install from VSIX...
  4. Select the downloaded file

Usage

  1. Right-click a folder in the VS Code explorer
  2. Run one of these commands:
    • Barrel Roll Directory
    • Barrel Roll Directory (Recursive)
  3. Barrel Roll will:
    • scan .ts/.tsx files (excluding index.ts, declaration files, and test files)
    • generate or update index.ts
    • recursively generate child barrels when recursive mode is selected
    • preserve direct definitions in existing index files while refreshing export lines

You can also run both commands from the Command Palette.

Example

Given:

// user.tsexportclassUser{}exportinterfaceUserData{}// auth.tsexportfunctionlogin(){}exportfunctionlogout(){}// constants.tsexportconstAPI_URL='https://api.example.com';

Barrel Roll generates:

// index.tsexport{login,logout}from'./auth.js';export{API_URL}from'./constants.js';export{User}from'./user.js';exporttype{UserData}from'./user.js';

Development

Prerequisites

  • Node.js 22.13+
  • npm 10+

Common commands

npm install
npm run compile
npm run compile-tests
npm run test
npm run test:unit
npm run test:vscode
npm run coverage:verify
npm run memory:check
npm run lint
npm run deps:check
npm run quality

The quality command checks formatting and lint rules, unused and architectural dependencies, duplicate code, and TypeScript circular/orphan modules.

Testing notes

  • npm test runs compile, lint, dependency check, then the Node test suite via scripts/run-tests.cjs.
  • npm run test:unit runs a faster compile + test path without lint.
  • npm run coverage:verify requires every executable production file to exceed 95% statements, branches, functions, and lines.
  • Test compilation clears stale TypeScript output before coverage so removed files cannot silently remain in the measured dist/src tree.
  • npm run memory:check runs the bounded cache/parser heap-retention probe with forced garbage collection; it is intentionally separate from the fast unit suite.
  • npm run test:vscode builds the current extension bundle and launches a real VS Code extension host. The contract activates the extension, verifies both contributed commands, executes barrel generation, and validates the generated index.ts. The first run may download the VS Code test binary; headless Linux environments require a display host such as Xvfb.
  • Unit and integration tests live under src/test/.
  • Unit test names must start with should and follow FAST: fast, autonomous, self-validating, and timely.

Dependency checking

npm run deps:check uses scripts/run-depcheck.cjs (programmatic depcheck runner). It writes .depcheck.json, filters known script/repository references, and fails when unused dependencies remain.

Packaging and release

# Build production bundle used by VS Code prepublish
npm run package
# Build VSIX package
npm run ext:package
# Install latest packaged VSIX locally
npm run ext:install
# Build + install
npm run ext:reinstall

VSIX contents

Publishing uses an allowlist in .vscodeignore so only runtime assets are intentionally included:

  • package.json
  • LICENSE
  • README.md
  • dist/extension.js
  • public/img/barrel-roll-icon.png

Use npx @vscode/vsce ls to inspect final package contents before publishing.

Known limitations

  • Scans only .ts and .tsx source files.
  • Dynamic runtime-created named exports cannot be statically detected.
  • Existing index.ts content is sanitized to preserve direct declarations, but malformed export syntax may still require manual cleanup.

Architecture

For architecture details and module-level responsibilities, see ARCHITECTURE.md.

Contributing

Contributions are welcome. See CONTRIBUTING.md and AGENTS.md for contribution and automation details.

License

Apache 2.0. See LICENSE.

Ownership

Maintained by Robert Lindley.

About

Visual Studio Code extension to automatically export types, functions, constants, and classes through barrel files.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Barrel Roll logo

Barrel Roll

CICode Style: PrettierCoverageESLintLicense: Apache-2.0Quality ChecksTypeScriptVS Code Marketplace InstallsVS Code Marketplace Version

Barrel Roll is a Visual Studio Code extension that automates creation and maintenance of index.ts barrel files. Right-click a folder, run a Barrel Roll command, and the extension generates exports from real TypeScript declarations while keeping output deterministic and readable.

Features

  • Right-click generation of index.ts barrel files from the VS Code explorer
  • Two command modes: single directory and recursive directory processing
  • Recursive barrel generation for child folders with parent re-export wiring
  • Export detection for TypeScript values, type-only exports, and default exports
  • Stable alphabetical ordering to keep diffs small and predictable
  • Sanitized updates that preserve direct definitions in existing index.ts
  • Built-in safeguards for ignored directories and oversized files

Installation

From VS Code Marketplace

  1. Open VS Code
  2. Go to Extensions (Ctrl+Shift+X / Cmd+Shift+X)
  3. Search for Barrel Roll
  4. Click Install

From VSIX

  1. Download the latest .vsix file from the releases page
  2. In VS Code, go to Extensions
  3. Click the ... menu and select Install from VSIX...
  4. Select the downloaded file

Usage

  1. Right-click a folder in the VS Code explorer
  2. Run one of these commands:
    • Barrel Roll Directory
    • Barrel Roll Directory (Recursive)
  3. Barrel Roll will:
    • scan .ts/.tsx files (excluding index.ts, declaration files, and test files)
    • generate or update index.ts
    • recursively generate child barrels when recursive mode is selected
    • preserve direct definitions in existing index files while refreshing export lines

You can also run both commands from the Command Palette.

Example

Given:

// user.tsexportclassUser{}exportinterfaceUserData{}// auth.tsexportfunctionlogin(){}exportfunctionlogout(){}// constants.tsexportconstAPI_URL='https://api.example.com';

Barrel Roll generates:

// index.tsexport{login,logout}from'./auth.js';export{API_URL}from'./constants.js';export{User}from'./user.js';exporttype{UserData}from'./user.js';

Development

Prerequisites

  • Node.js 22.13+
  • npm 10+

Common commands

npm install
npm run compile
npm run compile-tests
npm run test
npm run test:unit
npm run test:vscode
npm run coverage:verify
npm run memory:check
npm run lint
npm run deps:check
npm run quality

The quality command checks formatting and lint rules, unused and architectural dependencies, duplicate code, and TypeScript circular/orphan modules.

Testing notes

  • npm test runs compile, lint, dependency check, then the Node test suite via scripts/run-tests.cjs.
  • npm run test:unit runs a faster compile + test path without lint.
  • npm run coverage:verify requires every executable production file to exceed 95% statements, branches, functions, and lines.
  • Test compilation clears stale TypeScript output before coverage so removed files cannot silently remain in the measured dist/src tree.
  • npm run memory:check runs the bounded cache/parser heap-retention probe with forced garbage collection; it is intentionally separate from the fast unit suite.
  • npm run test:vscode builds the current extension bundle and launches a real VS Code extension host. The contract activates the extension, verifies both contributed commands, executes barrel generation, and validates the generated index.ts. The first run may download the VS Code test binary; headless Linux environments require a display host such as Xvfb.
  • Unit and integration tests live under src/test/.
  • Unit test names must start with should and follow FAST: fast, autonomous, self-validating, and timely.

Dependency checking

npm run deps:check uses scripts/run-depcheck.cjs (programmatic depcheck runner). It writes .depcheck.json, filters known script/repository references, and fails when unused dependencies remain.

Packaging and release

# Build production bundle used by VS Code prepublish
npm run package
# Build VSIX package
npm run ext:package
# Install latest packaged VSIX locally
npm run ext:install
# Build + install
npm run ext:reinstall

VSIX contents

Publishing uses an allowlist in .vscodeignore so only runtime assets are intentionally included:

  • package.json
  • LICENSE
  • README.md
  • dist/extension.js
  • public/img/barrel-roll-icon.png

Use npx @vscode/vsce ls to inspect final package contents before publishing.

Known limitations

  • Scans only .ts and .tsx source files.
  • Dynamic runtime-created named exports cannot be statically detected.
  • Existing index.ts content is sanitized to preserve direct declarations, but malformed export syntax may still require manual cleanup.

Architecture

For architecture details and module-level responsibilities, see ARCHITECTURE.md.

Contributing

Contributions are welcome. See CONTRIBUTING.md and AGENTS.md for contribution and automation details.

License

Apache 2.0. See LICENSE.

Ownership

Maintained by Robert Lindley.

About

Visual Studio Code extension to automatically export types, functions, constants, and classes through barrel files.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Barrel Roll logo

Barrel Roll

CICode Style: PrettierCoverageESLintLicense: Apache-2.0Quality ChecksTypeScriptVS Code Marketplace InstallsVS Code Marketplace Version

Barrel Roll is a Visual Studio Code extension that automates creation and maintenance of index.ts barrel files. Right-click a folder, run a Barrel Roll command, and the extension generates exports from real TypeScript declarations while keeping output deterministic and readable.

Features

  • Right-click generation of index.ts barrel files from the VS Code explorer
  • Two command modes: single directory and recursive directory processing
  • Recursive barrel generation for child folders with parent re-export wiring
  • Export detection for TypeScript values, type-only exports, and default exports
  • Stable alphabetical ordering to keep diffs small and predictable
  • Sanitized updates that preserve direct definitions in existing index.ts
  • Built-in safeguards for ignored directories and oversized files

Installation

From VS Code Marketplace

  1. Open VS Code
  2. Go to Extensions (Ctrl+Shift+X / Cmd+Shift+X)
  3. Search for Barrel Roll
  4. Click Install

From VSIX

  1. Download the latest .vsix file from the releases page
  2. In VS Code, go to Extensions
  3. Click the ... menu and select Install from VSIX...
  4. Select the downloaded file

Usage

  1. Right-click a folder in the VS Code explorer
  2. Run one of these commands:
    • Barrel Roll Directory
    • Barrel Roll Directory (Recursive)
  3. Barrel Roll will:
    • scan .ts/.tsx files (excluding index.ts, declaration files, and test files)
    • generate or update index.ts
    • recursively generate child barrels when recursive mode is selected
    • preserve direct definitions in existing index files while refreshing export lines

You can also run both commands from the Command Palette.

Example

Given:

// user.tsexportclassUser{}exportinterfaceUserData{}// auth.tsexportfunctionlogin(){}exportfunctionlogout(){}// constants.tsexportconstAPI_URL='https://api.example.com';

Barrel Roll generates:

// index.tsexport{login,logout}from'./auth.js';export{API_URL}from'./constants.js';export{User}from'./user.js';exporttype{UserData}from'./user.js';

Development

Prerequisites

  • Node.js 22.13+
  • npm 10+

Common commands

npm install
npm run compile
npm run compile-tests
npm run test
npm run test:unit
npm run test:vscode
npm run coverage:verify
npm run memory:check
npm run lint
npm run deps:check
npm run quality

The quality command checks formatting and lint rules, unused and architectural dependencies, duplicate code, and TypeScript circular/orphan modules.

Testing notes

  • npm test runs compile, lint, dependency check, then the Node test suite via scripts/run-tests.cjs.
  • npm run test:unit runs a faster compile + test path without lint.
  • npm run coverage:verify requires every executable production file to exceed 95% statements, branches, functions, and lines.
  • Test compilation clears stale TypeScript output before coverage so removed files cannot silently remain in the measured dist/src tree.
  • npm run memory:check runs the bounded cache/parser heap-retention probe with forced garbage collection; it is intentionally separate from the fast unit suite.
  • npm run test:vscode builds the current extension bundle and launches a real VS Code extension host. The contract activates the extension, verifies both contributed commands, executes barrel generation, and validates the generated index.ts. The first run may download the VS Code test binary; headless Linux environments require a display host such as Xvfb.
  • Unit and integration tests live under src/test/.
  • Unit test names must start with should and follow FAST: fast, autonomous, self-validating, and timely.

Dependency checking

npm run deps:check uses scripts/run-depcheck.cjs (programmatic depcheck runner). It writes .depcheck.json, filters known script/repository references, and fails when unused dependencies remain.

Packaging and release

# Build production bundle used by VS Code prepublish
npm run package
# Build VSIX package
npm run ext:package
# Install latest packaged VSIX locally
npm run ext:install
# Build + install
npm run ext:reinstall

VSIX contents

Publishing uses an allowlist in .vscodeignore so only runtime assets are intentionally included:

  • package.json
  • LICENSE
  • README.md
  • dist/extension.js
  • public/img/barrel-roll-icon.png

Use npx @vscode/vsce ls to inspect final package contents before publishing.

Known limitations

  • Scans only .ts and .tsx source files.
  • Dynamic runtime-created named exports cannot be statically detected.
  • Existing index.ts content is sanitized to preserve direct declarations, but malformed export syntax may still require manual cleanup.

Architecture

For architecture details and module-level responsibilities, see ARCHITECTURE.md.

Contributing

Contributions are welcome. See CONTRIBUTING.md and AGENTS.md for contribution and automation details.

License

Apache 2.0. See LICENSE.

Ownership

Maintained by Robert Lindley.

About

Visual Studio Code extension to automatically export types, functions, constants, and classes through barrel files.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Barrel Roll logo

Barrel Roll

CICode Style: PrettierCoverageESLintLicense: Apache-2.0Quality ChecksTypeScriptVS Code Marketplace InstallsVS Code Marketplace Version

Barrel Roll is a Visual Studio Code extension that automates creation and maintenance of index.ts barrel files. Right-click a folder, run a Barrel Roll command, and the extension generates exports from real TypeScript declarations while keeping output deterministic and readable.

Features

  • Right-click generation of index.ts barrel files from the VS Code explorer
  • Two command modes: single directory and recursive directory processing
  • Recursive barrel generation for child folders with parent re-export wiring
  • Export detection for TypeScript values, type-only exports, and default exports
  • Stable alphabetical ordering to keep diffs small and predictable
  • Sanitized updates that preserve direct definitions in existing index.ts
  • Built-in safeguards for ignored directories and oversized files

Installation

From VS Code Marketplace

  1. Open VS Code
  2. Go to Extensions (Ctrl+Shift+X / Cmd+Shift+X)
  3. Search for Barrel Roll
  4. Click Install

From VSIX

  1. Download the latest .vsix file from the releases page
  2. In VS Code, go to Extensions
  3. Click the ... menu and select Install from VSIX...
  4. Select the downloaded file

Usage

  1. Right-click a folder in the VS Code explorer
  2. Run one of these commands:
    • Barrel Roll Directory
    • Barrel Roll Directory (Recursive)
  3. Barrel Roll will:
    • scan .ts/.tsx files (excluding index.ts, declaration files, and test files)
    • generate or update index.ts
    • recursively generate child barrels when recursive mode is selected
    • preserve direct definitions in existing index files while refreshing export lines

You can also run both commands from the Command Palette.

Example

Given:

// user.tsexportclassUser{}exportinterfaceUserData{}// auth.tsexportfunctionlogin(){}exportfunctionlogout(){}// constants.tsexportconstAPI_URL='https://api.example.com';

Barrel Roll generates:

// index.tsexport{login,logout}from'./auth.js';export{API_URL}from'./constants.js';export{User}from'./user.js';exporttype{UserData}from'./user.js';

Development

Prerequisites

  • Node.js 22.13+
  • npm 10+

Common commands

npm install
npm run compile
npm run compile-tests
npm run test
npm run test:unit
npm run test:vscode
npm run coverage:verify
npm run memory:check
npm run lint
npm run deps:check
npm run quality

The quality command checks formatting and lint rules, unused and architectural dependencies, duplicate code, and TypeScript circular/orphan modules.

Testing notes

  • npm test runs compile, lint, dependency check, then the Node test suite via scripts/run-tests.cjs.
  • npm run test:unit runs a faster compile + test path without lint.
  • npm run coverage:verify requires every executable production file to exceed 95% statements, branches, functions, and lines.
  • Test compilation clears stale TypeScript output before coverage so removed files cannot silently remain in the measured dist/src tree.
  • npm run memory:check runs the bounded cache/parser heap-retention probe with forced garbage collection; it is intentionally separate from the fast unit suite.
  • npm run test:vscode builds the current extension bundle and launches a real VS Code extension host. The contract activates the extension, verifies both contributed commands, executes barrel generation, and validates the generated index.ts. The first run may download the VS Code test binary; headless Linux environments require a display host such as Xvfb.
  • Unit and integration tests live under src/test/.
  • Unit test names must start with should and follow FAST: fast, autonomous, self-validating, and timely.

Dependency checking

npm run deps:check uses scripts/run-depcheck.cjs (programmatic depcheck runner). It writes .depcheck.json, filters known script/repository references, and fails when unused dependencies remain.

Packaging and release

# Build production bundle used by VS Code prepublish
npm run package
# Build VSIX package
npm run ext:package
# Install latest packaged VSIX locally
npm run ext:install
# Build + install
npm run ext:reinstall

VSIX contents

Publishing uses an allowlist in .vscodeignore so only runtime assets are intentionally included:

  • package.json
  • LICENSE
  • README.md
  • dist/extension.js
  • public/img/barrel-roll-icon.png

Use npx @vscode/vsce ls to inspect final package contents before publishing.

Known limitations

  • Scans only .ts and .tsx source files.
  • Dynamic runtime-created named exports cannot be statically detected.
  • Existing index.ts content is sanitized to preserve direct declarations, but malformed export syntax may still require manual cleanup.

Architecture

For architecture details and module-level responsibilities, see ARCHITECTURE.md.

Contributing

Contributions are welcome. See CONTRIBUTING.md and AGENTS.md for contribution and automation details.

License

Apache 2.0. See LICENSE.

Ownership

Maintained by Robert Lindley.

About

Visual Studio Code extension to automatically export types, functions, constants, and classes through barrel files.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Barrel Roll logo

Barrel Roll

CICode Style: PrettierCoverageESLintLicense: Apache-2.0Quality ChecksTypeScriptVS Code Marketplace InstallsVS Code Marketplace Version

Barrel Roll is a Visual Studio Code extension that automates creation and maintenance of index.ts barrel files. Right-click a folder, run a Barrel Roll command, and the extension generates exports from real TypeScript declarations while keeping output deterministic and readable.

Features

  • Right-click generation of index.ts barrel files from the VS Code explorer
  • Two command modes: single directory and recursive directory processing
  • Recursive barrel generation for child folders with parent re-export wiring
  • Export detection for TypeScript values, type-only exports, and default exports
  • Stable alphabetical ordering to keep diffs small and predictable
  • Sanitized updates that preserve direct definitions in existing index.ts
  • Built-in safeguards for ignored directories and oversized files

Installation

From VS Code Marketplace

  1. Open VS Code
  2. Go to Extensions (Ctrl+Shift+X / Cmd+Shift+X)
  3. Search for Barrel Roll
  4. Click Install

From VSIX

  1. Download the latest .vsix file from the releases page
  2. In VS Code, go to Extensions
  3. Click the ... menu and select Install from VSIX...
  4. Select the downloaded file

Usage

  1. Right-click a folder in the VS Code explorer
  2. Run one of these commands:
    • Barrel Roll Directory
    • Barrel Roll Directory (Recursive)
  3. Barrel Roll will:
    • scan .ts/.tsx files (excluding index.ts, declaration files, and test files)
    • generate or update index.ts
    • recursively generate child barrels when recursive mode is selected
    • preserve direct definitions in existing index files while refreshing export lines

You can also run both commands from the Command Palette.

Example

Given:

// user.tsexportclassUser{}exportinterfaceUserData{}// auth.tsexportfunctionlogin(){}exportfunctionlogout(){}// constants.tsexportconstAPI_URL='https://api.example.com';

Barrel Roll generates:

// index.tsexport{login,logout}from'./auth.js';export{API_URL}from'./constants.js';export{User}from'./user.js';exporttype{UserData}from'./user.js';

Development

Prerequisites

  • Node.js 22.13+
  • npm 10+

Common commands

npm install
npm run compile
npm run compile-tests
npm run test
npm run test:unit
npm run test:vscode
npm run coverage:verify
npm run memory:check
npm run lint
npm run deps:check
npm run quality

The quality command checks formatting and lint rules, unused and architectural dependencies, duplicate code, and TypeScript circular/orphan modules.

Testing notes

  • npm test runs compile, lint, dependency check, then the Node test suite via scripts/run-tests.cjs.
  • npm run test:unit runs a faster compile + test path without lint.
  • npm run coverage:verify requires every executable production file to exceed 95% statements, branches, functions, and lines.
  • Test compilation clears stale TypeScript output before coverage so removed files cannot silently remain in the measured dist/src tree.
  • npm run memory:check runs the bounded cache/parser heap-retention probe with forced garbage collection; it is intentionally separate from the fast unit suite.
  • npm run test:vscode builds the current extension bundle and launches a real VS Code extension host. The contract activates the extension, verifies both contributed commands, executes barrel generation, and validates the generated index.ts. The first run may download the VS Code test binary; headless Linux environments require a display host such as Xvfb.
  • Unit and integration tests live under src/test/.
  • Unit test names must start with should and follow FAST: fast, autonomous, self-validating, and timely.

Dependency checking

npm run deps:check uses scripts/run-depcheck.cjs (programmatic depcheck runner). It writes .depcheck.json, filters known script/repository references, and fails when unused dependencies remain.

Packaging and release

# Build production bundle used by VS Code prepublish
npm run package
# Build VSIX package
npm run ext:package
# Install latest packaged VSIX locally
npm run ext:install
# Build + install
npm run ext:reinstall

VSIX contents

Publishing uses an allowlist in .vscodeignore so only runtime assets are intentionally included:

  • package.json
  • LICENSE
  • README.md
  • dist/extension.js
  • public/img/barrel-roll-icon.png

Use npx @vscode/vsce ls to inspect final package contents before publishing.

Known limitations

  • Scans only .ts and .tsx source files.
  • Dynamic runtime-created named exports cannot be statically detected.
  • Existing index.ts content is sanitized to preserve direct declarations, but malformed export syntax may still require manual cleanup.

Architecture

For architecture details and module-level responsibilities, see ARCHITECTURE.md.

Contributing

Contributions are welcome. See CONTRIBUTING.md and AGENTS.md for contribution and automation details.

License

Apache 2.0. See LICENSE.

Ownership

Maintained by Robert Lindley.

About

Visual Studio Code extension to automatically export types, functions, constants, and classes through barrel files.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Barrel Roll logo

Barrel Roll

CICode Style: PrettierCoverageESLintLicense: Apache-2.0Quality ChecksTypeScriptVS Code Marketplace InstallsVS Code Marketplace Version

Barrel Roll is a Visual Studio Code extension that automates creation and maintenance of index.ts barrel files. Right-click a folder, run a Barrel Roll command, and the extension generates exports from real TypeScript declarations while keeping output deterministic and readable.

Features

  • Right-click generation of index.ts barrel files from the VS Code explorer
  • Two command modes: single directory and recursive directory processing
  • Recursive barrel generation for child folders with parent re-export wiring
  • Export detection for TypeScript values, type-only exports, and default exports
  • Stable alphabetical ordering to keep diffs small and predictable
  • Sanitized updates that preserve direct definitions in existing index.ts
  • Built-in safeguards for ignored directories and oversized files

Installation

From VS Code Marketplace

  1. Open VS Code
  2. Go to Extensions (Ctrl+Shift+X / Cmd+Shift+X)
  3. Search for Barrel Roll
  4. Click Install

From VSIX

  1. Download the latest .vsix file from the releases page
  2. In VS Code, go to Extensions
  3. Click the ... menu and select Install from VSIX...
  4. Select the downloaded file

Usage

  1. Right-click a folder in the VS Code explorer
  2. Run one of these commands:
    • Barrel Roll Directory
    • Barrel Roll Directory (Recursive)
  3. Barrel Roll will:
    • scan .ts/.tsx files (excluding index.ts, declaration files, and test files)
    • generate or update index.ts
    • recursively generate child barrels when recursive mode is selected
    • preserve direct definitions in existing index files while refreshing export lines

You can also run both commands from the Command Palette.

Example

Given:

// user.tsexportclassUser{}exportinterfaceUserData{}// auth.tsexportfunctionlogin(){}exportfunctionlogout(){}// constants.tsexportconstAPI_URL='https://api.example.com';

Barrel Roll generates:

// index.tsexport{login,logout}from'./auth.js';export{API_URL}from'./constants.js';export{User}from'./user.js';exporttype{UserData}from'./user.js';

Development

Prerequisites

  • Node.js 22.13+
  • npm 10+

Common commands

npm install
npm run compile
npm run compile-tests
npm run test
npm run test:unit
npm run test:vscode
npm run coverage:verify
npm run memory:check
npm run lint
npm run deps:check
npm run quality

The quality command checks formatting and lint rules, unused and architectural dependencies, duplicate code, and TypeScript circular/orphan modules.

Testing notes

  • npm test runs compile, lint, dependency check, then the Node test suite via scripts/run-tests.cjs.
  • npm run test:unit runs a faster compile + test path without lint.
  • npm run coverage:verify requires every executable production file to exceed 95% statements, branches, functions, and lines.
  • Test compilation clears stale TypeScript output before coverage so removed files cannot silently remain in the measured dist/src tree.
  • npm run memory:check runs the bounded cache/parser heap-retention probe with forced garbage collection; it is intentionally separate from the fast unit suite.
  • npm run test:vscode builds the current extension bundle and launches a real VS Code extension host. The contract activates the extension, verifies both contributed commands, executes barrel generation, and validates the generated index.ts. The first run may download the VS Code test binary; headless Linux environments require a display host such as Xvfb.
  • Unit and integration tests live under src/test/.
  • Unit test names must start with should and follow FAST: fast, autonomous, self-validating, and timely.

Dependency checking

npm run deps:check uses scripts/run-depcheck.cjs (programmatic depcheck runner). It writes .depcheck.json, filters known script/repository references, and fails when unused dependencies remain.

Packaging and release

# Build production bundle used by VS Code prepublish
npm run package
# Build VSIX package
npm run ext:package
# Install latest packaged VSIX locally
npm run ext:install
# Build + install
npm run ext:reinstall

VSIX contents

Publishing uses an allowlist in .vscodeignore so only runtime assets are intentionally included:

  • package.json
  • LICENSE
  • README.md
  • dist/extension.js
  • public/img/barrel-roll-icon.png

Use npx @vscode/vsce ls to inspect final package contents before publishing.

Known limitations

  • Scans only .ts and .tsx source files.
  • Dynamic runtime-created named exports cannot be statically detected.
  • Existing index.ts content is sanitized to preserve direct declarations, but malformed export syntax may still require manual cleanup.

Architecture

For architecture details and module-level responsibilities, see ARCHITECTURE.md.

Contributing

Contributions are welcome. See CONTRIBUTING.md and AGENTS.md for contribution and automation details.

License

Apache 2.0. See LICENSE.

Ownership

Maintained by Robert Lindley.

About

Visual Studio Code extension to automatically export types, functions, constants, and classes through barrel files.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Barrel Roll logo

Barrel Roll

CICode Style: PrettierCoverageESLintLicense: Apache-2.0Quality ChecksTypeScriptVS Code Marketplace InstallsVS Code Marketplace Version

Barrel Roll is a Visual Studio Code extension that automates creation and maintenance of index.ts barrel files. Right-click a folder, run a Barrel Roll command, and the extension generates exports from real TypeScript declarations while keeping output deterministic and readable.

Features

  • Right-click generation of index.ts barrel files from the VS Code explorer
  • Two command modes: single directory and recursive directory processing
  • Recursive barrel generation for child folders with parent re-export wiring
  • Export detection for TypeScript values, type-only exports, and default exports
  • Stable alphabetical ordering to keep diffs small and predictable
  • Sanitized updates that preserve direct definitions in existing index.ts
  • Built-in safeguards for ignored directories and oversized files

Installation

From VS Code Marketplace

  1. Open VS Code
  2. Go to Extensions (Ctrl+Shift+X / Cmd+Shift+X)
  3. Search for Barrel Roll
  4. Click Install

From VSIX

  1. Download the latest .vsix file from the releases page
  2. In VS Code, go to Extensions
  3. Click the ... menu and select Install from VSIX...
  4. Select the downloaded file

Usage

  1. Right-click a folder in the VS Code explorer
  2. Run one of these commands:
    • Barrel Roll Directory
    • Barrel Roll Directory (Recursive)
  3. Barrel Roll will:
    • scan .ts/.tsx files (excluding index.ts, declaration files, and test files)
    • generate or update index.ts
    • recursively generate child barrels when recursive mode is selected
    • preserve direct definitions in existing index files while refreshing export lines

You can also run both commands from the Command Palette.

Example

Given:

// user.tsexportclassUser{}exportinterfaceUserData{}// auth.tsexportfunctionlogin(){}exportfunctionlogout(){}// constants.tsexportconstAPI_URL='https://api.example.com';

Barrel Roll generates:

// index.tsexport{login,logout}from'./auth.js';export{API_URL}from'./constants.js';export{User}from'./user.js';exporttype{UserData}from'./user.js';

Development

Prerequisites

  • Node.js 22.13+
  • npm 10+

Common commands

npm install
npm run compile
npm run compile-tests
npm run test
npm run test:unit
npm run test:vscode
npm run coverage:verify
npm run memory:check
npm run lint
npm run deps:check
npm run quality

The quality command checks formatting and lint rules, unused and architectural dependencies, duplicate code, and TypeScript circular/orphan modules.

Testing notes

  • npm test runs compile, lint, dependency check, then the Node test suite via scripts/run-tests.cjs.
  • npm run test:unit runs a faster compile + test path without lint.
  • npm run coverage:verify requires every executable production file to exceed 95% statements, branches, functions, and lines.
  • Test compilation clears stale TypeScript output before coverage so removed files cannot silently remain in the measured dist/src tree.
  • npm run memory:check runs the bounded cache/parser heap-retention probe with forced garbage collection; it is intentionally separate from the fast unit suite.
  • npm run test:vscode builds the current extension bundle and launches a real VS Code extension host. The contract activates the extension, verifies both contributed commands, executes barrel generation, and validates the generated index.ts. The first run may download the VS Code test binary; headless Linux environments require a display host such as Xvfb.
  • Unit and integration tests live under src/test/.
  • Unit test names must start with should and follow FAST: fast, autonomous, self-validating, and timely.

Dependency checking

npm run deps:check uses scripts/run-depcheck.cjs (programmatic depcheck runner). It writes .depcheck.json, filters known script/repository references, and fails when unused dependencies remain.

Packaging and release

# Build production bundle used by VS Code prepublish
npm run package
# Build VSIX package
npm run ext:package
# Install latest packaged VSIX locally
npm run ext:install
# Build + install
npm run ext:reinstall

VSIX contents

Publishing uses an allowlist in .vscodeignore so only runtime assets are intentionally included:

  • package.json
  • LICENSE
  • README.md
  • dist/extension.js
  • public/img/barrel-roll-icon.png

Use npx @vscode/vsce ls to inspect final package contents before publishing.

Known limitations

  • Scans only .ts and .tsx source files.
  • Dynamic runtime-created named exports cannot be statically detected.
  • Existing index.ts content is sanitized to preserve direct declarations, but malformed export syntax may still require manual cleanup.

Architecture

For architecture details and module-level responsibilities, see ARCHITECTURE.md.

Contributing

Contributions are welcome. See CONTRIBUTING.md and AGENTS.md for contribution and automation details.

License

Apache 2.0. See LICENSE.

Ownership

Maintained by Robert Lindley.

About

Visual Studio Code extension to automatically export types, functions, constants, and classes through barrel files.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages