Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
669f3ed
feat(logging): add Pino logger implementation with Noop fallback
Coderrob Oct 16, 2025
93d5f3a
refactor: update project configuration and dependencies
Coderrob Oct 17, 2025
083253f
fix(tests): correct log message for skipping VS Code integration test…
Coderrob Oct 17, 2025
250820a
refactor: update test configurations and cleanup unused files
Coderrob Oct 18, 2025
1dbfd31
refactor: rename 'warning' method to 'warn' in logging classes and up…
Coderrob Oct 18, 2025
13f6060
refactor: rename 'warning' method to 'warn' across logger test files
Coderrob Oct 18, 2025
994e768
feat: add basic math utility functions for addition and multiplication
Coderrob Oct 19, 2025
61c3744
feat: integrate simple-import-sort for import organization
Coderrob Oct 20, 2025
d1d9605
refactor: remove unused logger and math utility files
Coderrob Oct 20, 2025
e1db6f7
refactor: remove logging implementations and types
Coderrob Oct 21, 2025
0011f23
feat: implement file system utility methods for directory management …
Coderrob Oct 21, 2025
f1b3a99
feat: Refactor barrel structure and implement file system service
Coderrob Oct 23, 2025
1c8f4a8
refactor: update import paths to use node built-in modules
Coderrob Oct 24, 2025
5ad55e5
refactor: migrate tests from Mocha to Node's built-in test module
Coderrob Oct 24, 2025
2f6f97f
feat: update test configurations and enhance test harness with mock e…
Coderrob Oct 25, 2025
304c541
feat: refactor file system tests to use a reusable filtering function…
Coderrob Oct 25, 2025
35976cc
feat: update CI and release workflows to use Node.js 22.x and improve…
Coderrob Oct 25, 2025
af3528a
Implement feature X to enhance user experience and fix bug Y in module Z
Coderrob Oct 25, 2025
aada2a2
fix: update test script to use wildcard for test file matching
Coderrob Oct 25, 2025
504746d
feat: implement cross-platform test runner script to handle glob patt…
Coderrob Oct 25, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 57 additions & 0 deletions .dependency-cruiser.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
/** @type {import('dependency-cruiser').IConfiguration} */
module.exports = {
forbidden: [
{
name: 'no-circular',
severity: 'error',
comment:
'This dependency is part of a circular relationship. Please restructure to remove the circular dependency.',
from: {},
to: {
circular: true,
},
},
{
name: 'no-orphans',
severity: 'warn',
comment:
"This is an orphan module - it's likely not used (anymore). Either use it or remove it. If it's logical this module is an orphan (i.e. it's a script aggregating stuff for a build or library) add an exception for it in the dependency-cruiser configuration.",
from: {
orphan: true,
pathNot: [
String.raw`(^|/)\\.[^/]+\\.(js|cjs|mjs|ts|json)$`, // dot files
String.raw`\\.d\\.ts$`, // TypeScript declaration files
String.raw`(^|/)tsconfig\\.json$`, // TypeScript config
String.raw`(^|/)webpack\\.config\\.(js|cjs|mjs)$`, // Webpack config
String.raw`(^|/)rollup\\.config\\.(js|cjs|mjs)$`, // Rollup config
String.raw`(^|/)eslint\.config\.(js|cjs|mjs)$`, // ESLint config
],
},
to: {},
},
],
options: {
doNotFollow: {
path: 'node_modules',
},
enhancedResolveOptions: {
exportsFields: ['exports'],
conditionNames: ['import', 'require', 'node', 'default'],
},
reporterOptions: {
dot: {
collapsePattern: 'node_modules/[^/]+',
},
archi: {
collapsePattern: '^(packages|src|lib|app|bin|test(s?)|spec(s?))/[^/]+|node_modules/[^/]+',
},
},
tsPreCompilationDeps: true,
tsConfig: {
fileName: 'tsconfig.json',
},
webpackConfig: {
fileName: 'webpack.config.js',
},
},
};
36 changes: 36 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{
"customizations": {
"codespaces": {
"openFiles": ["README.md"]
},
"vscode": {
"extensions": [
"bierner.markdown-preview-github-styles",
"davidanson.vscode-markdownlint",
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"redhat.vscode-yaml",
"rvest.vs-code-prettier-eslint",
"yzhang.markdown-all-in-one"
],
"settings": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"editor.tabSize": 2,
"markdown.extension.italic.indicator": "_",
"markdown.extension.list.indentationSize": "adaptive",
"markdown.extension.orderedList.marker": "one"
}
}
},
"features": {
"ghcr.io/devcontainers-extra/features/prettier:1": {},
"ghcr.io/devcontainers/features/github-cli:1": {}
},
"image": "mcr.microsoft.com/devcontainers/typescript-node:20",
"name": "TypeScript Dev Container",
"postCreateCommand": "corepack enable && yarn install",
"remoteEnv": {
"GITHUB_TOKEN": "${localEnv:GITHUB_TOKEN}"
}
}
24 changes: 24 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
root = true

[*]
charset = utf-8
end_of_line = lf
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true

[*.md]
trim_trailing_whitespace = false

[*.{yml,yaml}]
indent_size = 2

[*.json]
indent_size = 2

[*.{js,ts,tsx,jsx}]
indent_size = 2

[*.{html,css,scss}]
indent_size = 2
18 changes: 0 additions & 18 deletions .eslintrc.json

This file was deleted.

3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
* text=auto eol=lf

out/** -diff linguist-generated=true
7 changes: 7 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
############################################################################
# Repository CODEOWNERS #
# Order is important! The last matching pattern takes the most precedence. #
############################################################################

# Default owners, unless a later match takes precedence.
* @coderrob
25 changes: 17 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,31 +12,40 @@ jobs:
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
node-version: [18.x, 20.x]
node-version: [18.x, 20.x, 22.x]

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Type check
run: npm run typecheck

- name: Run linter
run: npm run lint

- name: Run formatter check
run: npm run format:check
- name: Check for code duplication
run: npm run duplication

- name: Check for circular dependencies
run: npm run madge

- name: Compile
- name: Compile TypeScript
run: npm run compile

- name: Run tests
- name: Compile tests
run: npm run compile-tests

- name: Run unit tests
run: npm test
if: runner.os == 'Linux'

- name: Package extension
run: npm run package
38 changes: 34 additions & 4 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,45 @@ on:
- 'v*'

jobs:
test:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: 22.x
cache: 'npm'

- name: Install dependencies
run: npm ci

- name: Run quality checks
run: npm run quality

- name: Type check
run: npm run typecheck

- name: Compile tests
run: npm run compile-tests

- name: Run tests
run: npm test

release:
needs: test
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Use Node.js
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 20.x
node-version: 22.x
cache: 'npm'

- name: Install dependencies
run: npm ci
Expand All @@ -30,8 +59,9 @@ jobs:
run: vsce package

- name: Create Release
uses: softprops/action-gh-release@v1
uses: softprops/action-gh-release@v2
with:
files: '*.vsix'
generate_release_notes: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
121 changes: 115 additions & 6 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,116 @@
node_modules
out
dist
*.vsix
.vscode-test/
.DS_Store
# Dependencies
node_modules/
package-lock.json*

# Yarn
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions
.pnp.*

# Build outputs
lib/
out/
build/

# Test outputs
coverage/
.nyc_output/
*.lcov

# Logs
logs/
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*

# Runtime files
pids/
*.pid
*.seed
*.pid.lock

# Reports
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json

# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release

# Dependency directories
jspm_packages/

# TypeScript v1 declaration files
typings/

# TypeScript cache
*.tsbuildinfo

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env
.env.test

# parcel-bundler cache (https://parceljs.org/)
.cache

# next.js build output
.next

# nuxt.js build output
.nuxt

# vuepress build output
.vuepress/dist

# Serverless directories
.serverless/

# FuseBox cache
.fusebox/

# DynamoDB Local files
.dynamodb/

# OS metadata
.DS_Store
Thumbs.db

# Ignore built ts files
__tests__/runner/*

# IDE files
.idea
*.code-workspace

# VSCode specific files except code-snippets
.vscode/*
!.vscode/*.code-snippets
.vscode-test/*
15 changes: 15 additions & 0 deletions .jscpd.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"exitCode": 1,
"ignore": [
"**/.vscode-test/**",
"**/__mocks__/**",
"**/coverage/**",
"**/node_modules/**",
"**/out/**"
],
"minLines": 5,
"minTokens": 70,
"output": "./coverage/jscpd",
"reporters": ["html", "console"],
"threshold": 2
}
Loading