From 81829fb14bad21ca3fdfe992299c7c07b5aa23ed Mon Sep 17 00:00:00 2001 From: Chris Manson Date: Wed, 4 Feb 2026 17:12:16 +0000 Subject: [PATCH 1/2] Move to Pnpm and Add a basic github actions CI --- .github/workflows/ci.yml | 81 ++++++++++ .travis.yml | 17 --- appveyor.yml | 31 ---- package.json | 3 +- pnpm-lock.yaml | 311 +++++++++++++++++++++++++++++++++++++++ 5 files changed, 394 insertions(+), 49 deletions(-) create mode 100644 .github/workflows/ci.yml delete mode 100644 .travis.yml delete mode 100644 appveyor.yml create mode 100644 pnpm-lock.yaml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..59d5a18 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,81 @@ +name: CI + +on: + push: + branches: + - main + - master + pull_request: {} + +concurrency: + group: ci-${{ github.head_ref || github.ref }} + cancel-in-progress: true + +jobs: + test: + name: "Test" + runs-on: ubuntu-latest + timeout-minutes: 5 + strategy: + fail-fast: false + matrix: + node-version: + - 18 + - 20 + - 22 + - 24 + + steps: + - uses: actions/checkout@v6 + - uses: pnpm/action-setup@v4 + - uses: actions/setup-node@v6 + with: + node-version: ${{ matrix.node-version }} + cache: pnpm + - run: pnpm install + - run: pnpm test + + legacy-node-test: + name: "Legacy Node Test" + runs-on: ubuntu-latest + timeout-minutes: 5 + strategy: + fail-fast: false + matrix: + node-version: + - 0.10 + - 0.12 + - 4 + - 5 + - 6 + - 8 + - 10 + - 12 + - 14 + - 16 + + steps: + - uses: actions/checkout@v6 + # prevent yarn from complaining about the packageManager key in the package.json + - run: cat package.json | jq ".packageManager = \"yarn@1.22.22\"" | tee package.json + - uses: actions/setup-node@v6 + with: + node-version: ${{ matrix.node-version }} + cache: yarn + - run: yarn install --frozen-lockfile --ignore-engines + - run: yarn test + + windows-test: + name: "Windows smoke test" + runs-on: windows-latest + timeout-minutes: 5 + + steps: + - uses: actions/checkout@v6 + - uses: pnpm/action-setup@v4 + - uses: actions/setup-node@v6 + with: + node-version: 24 + cache: pnpm + - run: pnpm install + - run: pnpm test \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index a44a40d..0000000 --- a/.travis.yml +++ /dev/null @@ -1,17 +0,0 @@ -language: node_js -sudo: false -os: - - linux -node_js: - - "0.10" - - "0.12" - - "4" - - "5" - - "6" - - "8" - - "10" - - "11" -before_install: - - "npm config set spin false" - - "npm install -g npm@^3" -script: npm test diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index bcc1422..0000000 --- a/appveyor.yml +++ /dev/null @@ -1,31 +0,0 @@ -# AppVeyor file -# http://www.appveyor.com/docs/appveyor-yml - -# Build version format -version: "{build}" - -# Fix line endings on Windows -init: - - git config --global core.autocrlf true - - git config --global core.symlinks true - -# What combinations to test -environment: - matrix: - - nodejs_version: "0.10" - - nodejs_version: "0.12" - - nodejs_version: "4" - - nodejs_version: "5" - - nodejs_version: "6" - - nodejs_version: "8" - - nodejs_version: "10" - - nodejs_version: "11" -install: - - ps: Install-Product node $env:nodejs_version - - npm install - -build: off - -test_script: - - npm version - - cmd: npm test \ No newline at end of file diff --git a/package.json b/package.json index 97e541a..7e16b08 100644 --- a/package.json +++ b/package.json @@ -26,5 +26,6 @@ "devDependencies": { "chai": "^3.5.0", "mocha": "^2.2.4" - } + }, + "packageManager": "pnpm@10.28.2" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..285dd43 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,311 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + heimdalljs: + specifier: ^0.2.3 + version: 0.2.6 + heimdalljs-logger: + specifier: ^0.1.7 + version: 0.1.10 + resolve: + specifier: ^1.10.0 + version: 1.22.11 + resolve-package-path: + specifier: ^1.0.11 + version: 1.2.7 + devDependencies: + chai: + specifier: ^3.5.0 + version: 3.5.0 + mocha: + specifier: ^2.2.4 + version: 2.5.3 + +packages: + + assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + + chai@3.5.0: + resolution: {integrity: sha512-eRYY0vPS2a9zt5w5Z0aCeWbrXTEyvk7u/Xf71EzNObrjSCPgMm1Nku/D/u2tiqHBX5j40wWhj54YJLtgn8g55A==} + engines: {node: '>= 0.4.0'} + + commander@0.6.1: + resolution: {integrity: sha512-0fLycpl1UMTGX257hRsu/arL/cUbcvQM4zMKwvLvzXtfdezIV4yotPS2dYtknF+NmEfWSoCEF6+hj9XLm/6hEw==} + engines: {node: '>= 0.4.x'} + + commander@2.3.0: + resolution: {integrity: sha512-CD452fnk0jQyk3NfnK+KkR/hUPoHt5pVaKHogtyyv3N0U4QfAal9W0/rXLOg/vVZgQKa7jdtXypKs1YAip11uQ==} + engines: {node: '>= 0.6.x'} + + debug@2.2.0: + resolution: {integrity: sha512-X0rGvJcskG1c3TgSCPqHJ0XJgwlcvOC7elJ5Y0hYuKBZoVqWpAMfLOeIh2UI/DCQ5ruodIjvsugZtjUYUw2pUw==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + deep-eql@0.1.3: + resolution: {integrity: sha512-6sEotTRGBFiNcqVoeHwnfopbSpi5NbH1VWJmYCVkmxMmaVTT0bUTrNaGyBwhgP4MZL012W/mkzIn3Da+iDYweg==} + + diff@1.4.0: + resolution: {integrity: sha512-VzVc42hMZbYU9Sx/ltb7KYuQ6pqAw+cbFWVy4XKdkuEL2CFaRLGEnISPs7YdzaUGpi+CpIqvRmu7hPQ4T7EQ5w==} + engines: {node: '>=0.3.1'} + + escape-string-regexp@1.0.2: + resolution: {integrity: sha512-cQpUid7bdTUnFin8S7BnNdOk+/eDqQmKgCANSyd/jAhrKEvxUvr9VQ8XZzXiOtest8NLfk3FSBZzwvemZNQ6Vg==} + engines: {node: '>=0.8.0'} + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + glob@3.2.11: + resolution: {integrity: sha512-hVb0zwEZwC1FXSKRPFTeOtN7AArJcJlI6ULGLtrstaswKNlrTJqAA+1lYlSUop4vjA423xlBzqfVS3iWGlqJ+g==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + + growl@1.9.2: + resolution: {integrity: sha512-RTBwDHhNuOx4F0hqzItc/siXCasGfC4DeWcBamclWd+6jWtBaeB/SGbMkGf0eiQoW7ib8JpvOgnUsmgMHI3Mfw==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + heimdalljs-logger@0.1.10: + resolution: {integrity: sha512-pO++cJbhIufVI/fmB/u2Yty3KJD0TqNPecehFae0/eps0hkZ3b4Zc/PezUMOpYuHFQbA7FxHZxa305EhmjLj4g==} + + heimdalljs@0.2.6: + resolution: {integrity: sha512-o9bd30+5vLBvBtzCPwwGqpry2+n0Hi6H1+qwt6y+0kwRHGGF8TFIhJPmnuM0xO97zaKrDZMwO/V56fAnn8m/tA==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + jade@0.26.3: + resolution: {integrity: sha512-mkk3vzUHFjzKjpCXeu+IjXeZD+QOTjUUdubgmHtHTDwvAO2ZTkMTTVrapts5CWz3JvJryh/4KWZpjeZrCepZ3A==} + deprecated: Jade has been renamed to pug, please install the latest version of pug instead of jade + hasBin: true + + lru-cache@2.7.3: + resolution: {integrity: sha512-WpibWJ60c3AgAz8a2iYErDrcT2C7OmKnsWhIcHOjkUHFjkXncJhtLxNSqUmxRxRunpb5I8Vprd7aNSd2NtksJQ==} + + minimatch@0.3.0: + resolution: {integrity: sha512-WFX1jI1AaxNTZVOHLBVazwTWKaQjoykSzCBNXB72vDTCzopQGtyP91tKdFK5cv1+qMwPyiTu1HqUriqplI8pcA==} + deprecated: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue + + minimist@0.0.8: + resolution: {integrity: sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q==} + + mkdirp@0.3.0: + resolution: {integrity: sha512-OHsdUcVAQ6pOtg5JYWpCBo9W/GySVuwvP9hueRMW7UqshC0tbfzLv8wjySTPm3tfUZ/21CE9E1pJagOA91Pxew==} + deprecated: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.) + + mkdirp@0.5.1: + resolution: {integrity: sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA==} + deprecated: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.) + hasBin: true + + mocha@2.5.3: + resolution: {integrity: sha512-jNt2iEk9FPmZLzL+sm4FNyOIDYXf2wUU6L4Cc8OIKK/kzgMHKPi4YhTZqG4bW4kQVdIv6wutDybRhXfdnujA1Q==} + engines: {node: '>= 0.8.x'} + hasBin: true + + ms@0.7.1: + resolution: {integrity: sha512-lRLiIR9fSNpnP6TC4v8+4OU7oStC01esuNowdQ34L+Gk8e5Puoc88IqJ+XAY/B3Mn2ZKis8l8HX90oU8ivzUHg==} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-root-regex@0.1.2: + resolution: {integrity: sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==} + engines: {node: '>=0.10.0'} + + path-root@0.1.1: + resolution: {integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==} + engines: {node: '>=0.10.0'} + + resolve-package-path@1.2.7: + resolution: {integrity: sha512-fVEKHGeK85bGbVFuwO9o1aU0n3vqQGrezPc51JGu9UTXpFQfWq5qCeKxyaRUSvephs+06c5j5rPq/dzHGEo8+Q==} + + resolve@1.22.11: + resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} + engines: {node: '>= 0.4'} + hasBin: true + + rsvp@3.2.1: + resolution: {integrity: sha512-Rf4YVNYpKjZ6ASAmibcwTNciQ5Co5Ztq6iZPEykHpkoflnD/K5ryE/rHehFsTm4NJj8nKDhbi3eKBWGogmNnkg==} + + sigmund@1.0.1: + resolution: {integrity: sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==} + + supports-color@1.2.0: + resolution: {integrity: sha512-mS5xsnjTh5b7f2DM6bch6lR582UCOTphzINlZnDsfpIRrwI6r58rb6YSSGsdexkm8qw2bBVO2ID2fnJOTuLiPA==} + engines: {node: '>=0.10.0'} + hasBin: true + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + to-iso-string@0.0.2: + resolution: {integrity: sha512-oeHLgfWA7d0CPQa6h0+i5DAJZISz5un0d5SHPkw+Untclcvzv9T+AC3CvGXlZJdOlIbxbTfyyzlqCXc5hjpXYg==} + deprecated: to-iso-string has been deprecated, use @segment/to-iso-string instead. + + type-detect@0.1.1: + resolution: {integrity: sha512-5rqszGVwYgBoDkIm2oUtvkfZMQ0vk29iDMU0W2qCa3rG0vPDNczCMT4hV/bLBgLg8k8ri6+u3Zbt+S/14eMzlA==} + + type-detect@1.0.0: + resolution: {integrity: sha512-f9Uv6ezcpvCQjJU0Zqbg+65qdcszv3qUQsZfjdRbWiZ7AMenrX1u0lNk9EoWWX6e1F+NULyg27mtdeZ5WhpljA==} + +snapshots: + + assertion-error@1.1.0: {} + + chai@3.5.0: + dependencies: + assertion-error: 1.1.0 + deep-eql: 0.1.3 + type-detect: 1.0.0 + + commander@0.6.1: {} + + commander@2.3.0: {} + + debug@2.2.0(supports-color@1.2.0): + dependencies: + ms: 0.7.1 + optionalDependencies: + supports-color: 1.2.0 + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + deep-eql@0.1.3: + dependencies: + type-detect: 0.1.1 + + diff@1.4.0: {} + + escape-string-regexp@1.0.2: {} + + function-bind@1.1.2: {} + + glob@3.2.11: + dependencies: + inherits: 2.0.4 + minimatch: 0.3.0 + + growl@1.9.2: {} + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + heimdalljs-logger@0.1.10: + dependencies: + debug: 2.6.9 + heimdalljs: 0.2.6 + transitivePeerDependencies: + - supports-color + + heimdalljs@0.2.6: + dependencies: + rsvp: 3.2.1 + + inherits@2.0.4: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + jade@0.26.3: + dependencies: + commander: 0.6.1 + mkdirp: 0.3.0 + + lru-cache@2.7.3: {} + + minimatch@0.3.0: + dependencies: + lru-cache: 2.7.3 + sigmund: 1.0.1 + + minimist@0.0.8: {} + + mkdirp@0.3.0: {} + + mkdirp@0.5.1: + dependencies: + minimist: 0.0.8 + + mocha@2.5.3: + dependencies: + commander: 2.3.0 + debug: 2.2.0(supports-color@1.2.0) + diff: 1.4.0 + escape-string-regexp: 1.0.2 + glob: 3.2.11 + growl: 1.9.2 + jade: 0.26.3 + mkdirp: 0.5.1 + supports-color: 1.2.0 + to-iso-string: 0.0.2 + + ms@0.7.1: {} + + ms@2.0.0: {} + + path-parse@1.0.7: {} + + path-root-regex@0.1.2: {} + + path-root@0.1.1: + dependencies: + path-root-regex: 0.1.2 + + resolve-package-path@1.2.7: + dependencies: + path-root: 0.1.1 + resolve: 1.22.11 + + resolve@1.22.11: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + rsvp@3.2.1: {} + + sigmund@1.0.1: {} + + supports-color@1.2.0: {} + + supports-preserve-symlinks-flag@1.0.0: {} + + to-iso-string@0.0.2: {} + + type-detect@0.1.1: {} + + type-detect@1.0.0: {} From bc7a1bd870db7ace0c24ebd15d64bebc83e1d809 Mon Sep 17 00:00:00 2001 From: Chris Manson Date: Wed, 4 Feb 2026 17:18:09 +0000 Subject: [PATCH 2/2] add a separate test for super-legacy node versions --- .github/workflows/ci.yml | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 59d5a18..1b7e465 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -35,6 +35,29 @@ jobs: - run: pnpm install - run: pnpm test + super-legacy-node-test: + name: "Super Legacy Node Test" + runs-on: ubuntu-latest + timeout-minutes: 5 + strategy: + fail-fast: false + matrix: + node-version: + - "0.10" + - "0.12" + - 4 + + steps: + - uses: actions/checkout@v6 + # use the built-in npm for these super old tests + - run: cat package.json | jq "del(.packageManager)" | tee package.json + - uses: actions/setup-node@v6 + with: + node-version: ${{ matrix.node-version }} + cache: npm + - run: npm install + - run: npm test + legacy-node-test: name: "Legacy Node Test" runs-on: ubuntu-latest @@ -43,10 +66,6 @@ jobs: fail-fast: false matrix: node-version: - - 0.10 - - 0.12 - - 4 - - 5 - 6 - 8 - 10