diff --git a/.eslintrc.cjs b/.eslintrc.cjs deleted file mode 100644 index 23adea21..00000000 --- a/.eslintrc.cjs +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - root: true, - env: { - node: true - }, - extends: [ - 'digitalbazaar', - 'digitalbazaar/jsdoc', - 'digitalbazaar/module' - ], - rules: { - 'unicorn/prefer-node-protocol': 'error' - } -}; diff --git a/.github/workflows/main.yml b/.github/workflows/main.yaml similarity index 66% rename from .github/workflows/main.yml rename to .github/workflows/main.yaml index 5e9eaa76..ea170aea 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yaml @@ -2,72 +2,79 @@ name: Node.js CI on: [push] +permissions: {} + jobs: lint: runs-on: ubuntu-latest strategy: matrix: - node-version: [20.x] + node-version: [24.x] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 + with: + persist-credentials: false - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version: ${{ matrix.node-version }} - run: npm install - name: Run eslint run: npm run lint test-node: - needs: [lint] runs-on: ubuntu-latest timeout-minutes: 10 strategy: matrix: - node-version: [18.x, 20.x] + node-version: [20.x, 22.x, 24.x] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 + with: + persist-credentials: false - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version: ${{ matrix.node-version }} - run: npm install - name: Run test with Node.js ${{ matrix.node-version }} run: npm run test-node test-karma: - needs: [lint] runs-on: ubuntu-latest timeout-minutes: 10 strategy: matrix: - node-version: [20.x] + node-version: [24.x] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 + with: + persist-credentials: false - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version: ${{ matrix.node-version }} - run: npm install - name: Run karma tests run: npm run test-karma coverage: - needs: [test-node, test-karma] runs-on: ubuntu-latest timeout-minutes: 10 strategy: matrix: - node-version: [20.x] + node-version: [24.x] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 + with: + persist-credentials: false - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version: ${{ matrix.node-version }} - run: npm install - name: Generate coverage report run: npm run coverage-ci - name: Upload coverage to Codecov - uses: codecov/codecov-action@v4 + uses: codecov/codecov-action@v5 with: - file: ./coverage/lcov.info + files: ./coverage/lcov.info fail_ci_if_error: true token: ${{ secrets.CODECOV_TOKEN }} diff --git a/CHANGELOG.md b/CHANGELOG.md index 59da6688..f79634f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # @digitalbazaar/cborld ChangeLog +## 8.1.0 - 2026-xx-xx + +### Changed +- Update dependencies. Notable: + - `cborg@5`. + - `uuid@14`. +- Update dev dependencies. +- **NOTE**: Update supported platforms. + - Test on Node.js >=20. + - Update `engines.node` to `>=20`. + - Update README requirements section. + ## 8.0.2 - 2025-09-05 ### Fixed diff --git a/LICENSE b/LICENSE index 8569ca83..1206dc1e 100644 --- a/LICENSE +++ b/LICENSE @@ -1,5 +1,4 @@ -Copyright (c) 2020, Digital Bazaar, Inc. -All rights reserved. +Copyright (c) 2020-2026, Digital Bazaar, Inc. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/README.md b/README.md index 888d309d..288410c2 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # JavaScript CBOR-LD Processor -[![Build Status](https://img.shields.io/github/actions/workflow/status/digitalbazaar/cborld/main.yml)](https://github.com/digitalbazaar/cborld/actions/workflows/main.yml) +[![Build Status](https://img.shields.io/github/actions/workflow/status/digitalbazaar/cborld/main.yaml)](https://github.com/digitalbazaar/cborld/actions/workflows/main.yaml) [![Coverage Status](https://img.shields.io/codecov/c/github/digitalbazaar/cborld)](https://codecov.io/gh/digitalbazaar/cborld) > A JavaScript CBOR-LD Process for Web browsers and Node.js apps. @@ -22,7 +22,10 @@ applications. ## Install -- Browsers and Node.js 18+ are supported. +This software requires and supports maintained recent versions of Node.js and +browsers. Updates may remove support for older unmaintained platform versions. +Please use dependency version lock files and testing to ensure compatibility +with this software. ### NPM diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 00000000..45e24052 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,5 @@ +import config from '@digitalbazaar/eslint-config/universal-recommended'; + +export default [ + ...config +]; diff --git a/karma.conf.cjs b/karma.conf.cjs index d15bb86e..4181c1eb 100644 --- a/karma.conf.cjs +++ b/karma.conf.cjs @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020-2022 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2020-2026 Digital Bazaar, Inc. */ module.exports = function(config) { diff --git a/lib/ActiveContext.js b/lib/ActiveContext.js index d9b7605f..2cf80edd 100644 --- a/lib/ActiveContext.js +++ b/lib/ActiveContext.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2021-2025 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2021-2026 Digital Bazaar, Inc. */ import {CborldError} from './CborldError.js'; @@ -7,7 +7,7 @@ export class ActiveContext { constructor({ termMap = new Map(), previous, - contextLoader = previous?.contextLoader, + contextLoader = previous?.contextLoader } = {}) { this.termMap = termMap; this.previous = previous; diff --git a/lib/CborldError.js b/lib/CborldError.js index c8d6d81a..423e4528 100644 --- a/lib/CborldError.js +++ b/lib/CborldError.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2020-2024 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2020-2026 Digital Bazaar, Inc. */ export class CborldError extends Error { constructor(code, message) { diff --git a/lib/Compressor.js b/lib/Compressor.js index 9e062856..1ef6d545 100644 --- a/lib/Compressor.js +++ b/lib/Compressor.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2021-2024 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2021-2026 Digital Bazaar, Inc. */ import {ContextEncoder} from './codecs/ContextEncoder.js'; import {KEYWORDS_TABLE} from './tables.js'; diff --git a/lib/ContextLoader.js b/lib/ContextLoader.js index cc889d69..98a4e24f 100644 --- a/lib/ContextLoader.js +++ b/lib/ContextLoader.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2021-2025 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2021-2026 Digital Bazaar, Inc. */ import {FIRST_CUSTOM_TERM_ID, KEYWORDS_TABLE, reverseMap} from './tables.js'; import {CborldError} from './CborldError.js'; diff --git a/lib/Converter.js b/lib/Converter.js index 40b57fec..8badb06d 100644 --- a/lib/Converter.js +++ b/lib/Converter.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2021-2025 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2021-2026 Digital Bazaar, Inc. */ import { LEGACY_TYPE_TABLE_ENCODED_AS_BYTES, diff --git a/lib/Decompressor.js b/lib/Decompressor.js index c2faf7cf..9eed1c16 100644 --- a/lib/Decompressor.js +++ b/lib/Decompressor.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2021-2024 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2021-2026 Digital Bazaar, Inc. */ import {KEYWORDS_TABLE, reverseMap} from './tables.js'; import {CborldError} from './CborldError.js'; diff --git a/lib/codecs/Base58DidUrlDecoder.js b/lib/codecs/Base58DidUrlDecoder.js index f4c9b0f9..f9d18ce7 100644 --- a/lib/codecs/Base58DidUrlDecoder.js +++ b/lib/codecs/Base58DidUrlDecoder.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2021-2024 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2021-2026 Digital Bazaar, Inc. */ import {CborldDecoder} from './CborldDecoder.js'; import {encode as encodeBase58} from 'base58-universal'; diff --git a/lib/codecs/Base58DidUrlEncoder.js b/lib/codecs/Base58DidUrlEncoder.js index bc15920a..db456136 100644 --- a/lib/codecs/Base58DidUrlEncoder.js +++ b/lib/codecs/Base58DidUrlEncoder.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2021-2024 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2021-2026 Digital Bazaar, Inc. */ import {Token, Type} from 'cborg'; import {CborldEncoder} from './CborldEncoder.js'; diff --git a/lib/codecs/CborldDecoder.js b/lib/codecs/CborldDecoder.js index b78c17d9..825d4dd3 100644 --- a/lib/codecs/CborldDecoder.js +++ b/lib/codecs/CborldDecoder.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2021-2024 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2021-2026 Digital Bazaar, Inc. */ export class CborldDecoder { decode() { diff --git a/lib/codecs/CborldEncoder.js b/lib/codecs/CborldEncoder.js index 9a59fe3c..3652c973 100644 --- a/lib/codecs/CborldEncoder.js +++ b/lib/codecs/CborldEncoder.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2021-2024 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2021-2026 Digital Bazaar, Inc. */ export class CborldEncoder { encode() { diff --git a/lib/codecs/ContextDecoder.js b/lib/codecs/ContextDecoder.js index dbd7da8f..097dbc2f 100644 --- a/lib/codecs/ContextDecoder.js +++ b/lib/codecs/ContextDecoder.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2021-2024 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2021-2026 Digital Bazaar, Inc. */ import {CborldDecoder} from './CborldDecoder.js'; import {CborldError} from '../CborldError.js'; diff --git a/lib/codecs/ContextEncoder.js b/lib/codecs/ContextEncoder.js index 12d14056..ac21dac8 100644 --- a/lib/codecs/ContextEncoder.js +++ b/lib/codecs/ContextEncoder.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2021-2024 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2021-2026 Digital Bazaar, Inc. */ import {Token, Type} from 'cborg'; import {CborldEncoder} from './CborldEncoder.js'; diff --git a/lib/codecs/DataUrlDecoder.js b/lib/codecs/DataUrlDecoder.js index 32649180..6190470f 100644 --- a/lib/codecs/DataUrlDecoder.js +++ b/lib/codecs/DataUrlDecoder.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2024 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2024-2026 Digital Bazaar, Inc. */ import {Base64} from 'js-base64'; import {CborldDecoder} from './CborldDecoder.js'; diff --git a/lib/codecs/DataUrlEncoder.js b/lib/codecs/DataUrlEncoder.js index ad4f63f2..6ca8aa29 100644 --- a/lib/codecs/DataUrlEncoder.js +++ b/lib/codecs/DataUrlEncoder.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2024 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2024-2026 Digital Bazaar, Inc. */ import {Token, Type} from 'cborg'; import {Base64} from 'js-base64'; diff --git a/lib/codecs/HttpUrlDecoder.js b/lib/codecs/HttpUrlDecoder.js index e2e6314b..ef5bab2c 100644 --- a/lib/codecs/HttpUrlDecoder.js +++ b/lib/codecs/HttpUrlDecoder.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2021-2024 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2021-2026 Digital Bazaar, Inc. */ import {CborldDecoder} from './CborldDecoder.js'; import {REVERSE_URL_SCHEME_TABLE} from '../tables.js'; diff --git a/lib/codecs/HttpUrlEncoder.js b/lib/codecs/HttpUrlEncoder.js index 911b166e..909fb491 100644 --- a/lib/codecs/HttpUrlEncoder.js +++ b/lib/codecs/HttpUrlEncoder.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2021-2024 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2021-2026 Digital Bazaar, Inc. */ import {Token, Type} from 'cborg'; import {CborldEncoder} from './CborldEncoder.js'; diff --git a/lib/codecs/MultibaseDecoder.js b/lib/codecs/MultibaseDecoder.js index 848f6c9b..73de96b8 100644 --- a/lib/codecs/MultibaseDecoder.js +++ b/lib/codecs/MultibaseDecoder.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2021-2024 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2021-2026 Digital Bazaar, Inc. */ import * as base64url from 'base64url-universal'; import {Base64} from 'js-base64'; diff --git a/lib/codecs/MultibaseEncoder.js b/lib/codecs/MultibaseEncoder.js index a911036e..8dbd4cdb 100644 --- a/lib/codecs/MultibaseEncoder.js +++ b/lib/codecs/MultibaseEncoder.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2021-2024 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2021-2026 Digital Bazaar, Inc. */ import * as base64url from 'base64url-universal'; import {Token, Type} from 'cborg'; diff --git a/lib/codecs/UrlDecoder.js b/lib/codecs/UrlDecoder.js index a1767002..c90e1e1a 100644 --- a/lib/codecs/UrlDecoder.js +++ b/lib/codecs/UrlDecoder.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2021-2024 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2021-2026 Digital Bazaar, Inc. */ import {Base58DidUrlDecoder} from './Base58DidUrlDecoder.js'; import {CborldDecoder} from './CborldDecoder.js'; diff --git a/lib/codecs/UrlEncoder.js b/lib/codecs/UrlEncoder.js index 7d22ba8f..05183384 100644 --- a/lib/codecs/UrlEncoder.js +++ b/lib/codecs/UrlEncoder.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2021-2024 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2021-2026 Digital Bazaar, Inc. */ import {Token, Type} from 'cborg'; import {Base58DidUrlEncoder} from './Base58DidUrlEncoder.js'; @@ -56,7 +56,7 @@ export class UrlEncoder extends CborldEncoder { const split = value.split(':'); split.pop(); scheme = split.join(':'); - } catch(e) { + } catch { return; } diff --git a/lib/codecs/UuidUrnDecoder.js b/lib/codecs/UuidUrnDecoder.js index 06df9cee..b9facece 100644 --- a/lib/codecs/UuidUrnDecoder.js +++ b/lib/codecs/UuidUrnDecoder.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2021-2024 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2021-2026 Digital Bazaar, Inc. */ import {CborldDecoder} from './CborldDecoder.js'; import {stringify} from 'uuid'; diff --git a/lib/codecs/UuidUrnEncoder.js b/lib/codecs/UuidUrnEncoder.js index 7e402355..00d82838 100644 --- a/lib/codecs/UuidUrnEncoder.js +++ b/lib/codecs/UuidUrnEncoder.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2021-2024 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2021-2026 Digital Bazaar, Inc. */ import {Token, Type} from 'cborg'; import {CborldEncoder} from './CborldEncoder.js'; diff --git a/lib/codecs/ValueDecoder.js b/lib/codecs/ValueDecoder.js index 6fbf8d6e..c85180cd 100644 --- a/lib/codecs/ValueDecoder.js +++ b/lib/codecs/ValueDecoder.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2024 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2024-2026 Digital Bazaar, Inc. */ import { getTableType, diff --git a/lib/codecs/ValueEncoder.js b/lib/codecs/ValueEncoder.js index 86c79ce1..04bafd82 100644 --- a/lib/codecs/ValueEncoder.js +++ b/lib/codecs/ValueEncoder.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2024-2025 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2024-2026 Digital Bazaar, Inc. */ import { bytesFromInt, diff --git a/lib/codecs/XsdDateDecoder.js b/lib/codecs/XsdDateDecoder.js index f450d7b6..81d71fb7 100644 --- a/lib/codecs/XsdDateDecoder.js +++ b/lib/codecs/XsdDateDecoder.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2021-2024 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2021-2026 Digital Bazaar, Inc. */ import {CborldDecoder} from './CborldDecoder.js'; diff --git a/lib/codecs/XsdDateEncoder.js b/lib/codecs/XsdDateEncoder.js index ecada4bf..57b77d1a 100644 --- a/lib/codecs/XsdDateEncoder.js +++ b/lib/codecs/XsdDateEncoder.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2021-2025 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2021-2026 Digital Bazaar, Inc. */ import {Token, Type} from 'cborg'; import {CborldEncoder} from './CborldEncoder.js'; diff --git a/lib/codecs/XsdDateTimeDecoder.js b/lib/codecs/XsdDateTimeDecoder.js index 976ae5fe..e69aa386 100644 --- a/lib/codecs/XsdDateTimeDecoder.js +++ b/lib/codecs/XsdDateTimeDecoder.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2021-2024 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2021-2026 Digital Bazaar, Inc. */ import {CborldDecoder} from './CborldDecoder.js'; diff --git a/lib/codecs/XsdDateTimeEncoder.js b/lib/codecs/XsdDateTimeEncoder.js index a3172047..babf76d1 100644 --- a/lib/codecs/XsdDateTimeEncoder.js +++ b/lib/codecs/XsdDateTimeEncoder.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2021-2025 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2021-2026 Digital Bazaar, Inc. */ import {Token, Type} from 'cborg'; import {CborldEncoder} from './CborldEncoder.js'; diff --git a/lib/decode.js b/lib/decode.js index 8471d87b..f7d84ca8 100644 --- a/lib/decode.js +++ b/lib/decode.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2020-2025 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2020-2026 Digital Bazaar, Inc. */ import {createLegacyTypeTable, createTypeTable} from './tables.js'; import {CborldError} from './CborldError.js'; diff --git a/lib/encode.js b/lib/encode.js index afcc6e32..47e7196c 100644 --- a/lib/encode.js +++ b/lib/encode.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2020-2025 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2020-2026 Digital Bazaar, Inc. */ import * as cborg from 'cborg'; import * as varint from 'varint'; diff --git a/lib/helpers.js b/lib/helpers.js index 6cea93d2..6fe744dd 100644 --- a/lib/helpers.js +++ b/lib/helpers.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2024 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2024-2026 Digital Bazaar, Inc. */ import {CborldError} from './CborldError.js'; diff --git a/lib/index.js b/lib/index.js index 4734f120..6060d704 100644 --- a/lib/index.js +++ b/lib/index.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2020-2021 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2020-2026 Digital Bazaar, Inc. */ export {decode} from './decode.js'; export {encode} from './encode.js'; diff --git a/lib/parser.js b/lib/parser.js index 8199bf8e..ad4d45e5 100644 --- a/lib/parser.js +++ b/lib/parser.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2020-2025 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2020-2026 Digital Bazaar, Inc. */ import {decode, Token, Tokenizer, Type} from 'cborg'; import {CborldError} from './CborldError.js'; diff --git a/lib/tables.js b/lib/tables.js index 5a571ebe..01f99be1 100644 --- a/lib/tables.js +++ b/lib/tables.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2021-2024 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2021-2026 Digital Bazaar, Inc. */ export const KEYWORDS_TABLE = new Map([ // ordered is important, do not change diff --git a/lib/util-browser.js b/lib/util-browser.js index 5da25fa8..151ff3ca 100644 --- a/lib/util-browser.js +++ b/lib/util-browser.js @@ -1,5 +1,4 @@ // browser support -/* eslint-env browser */ /* eslint-disable-next-line no-unused-vars */ export function inspect(data, options) { return JSON.stringify(data, null, 2); diff --git a/package.json b/package.json index ca8e2594..c168195b 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "lib/**/*.js" ], "engines": { - "node": ">=18" + "node": ">=20" }, "scripts": { "test": "npm run test-node", @@ -41,43 +41,41 @@ "coverage": "cross-env NODE_ENV=test c8 npm run test-node", "coverage-ci": "cross-env NODE_ENV=test c8 --reporter=lcovonly --reporter=text-summary --reporter=text npm run test-node", "coverage-report": "c8 report", - "lint": "eslint --ext .cjs,.js ." + "lint": "eslint" }, "dependencies": { "base58-universal": "^2.0.0", "base64url-universal": "^2.0.0", - "cborg": "^4.2.2", - "js-base64": "^3.7.7", - "uuid": "^10.0.0", + "cborg": "^5.1.1", + "js-base64": "^3.7.8", + "uuid": "^14.0.0", "varint": "^6.0.0" }, "devDependencies": { - "@digitalbazaar/did-method-key": "^5.2.0", - "@digitalbazaar/ed25519-multikey": "^1.1.0", + "@digitalbazaar/did-method-key": "^5.3.0", + "@digitalbazaar/ed25519-multikey": "^1.3.1", + "@digitalbazaar/eslint-config": "^8.0.1", "@digitalbazaar/multikey-context": "^2.0.1", - "c8": "^10.1.2", - "chai": "^4.4.1", + "c8": "^11.0.0", + "chai": "^4.5.0", "chai-bytes": "^0.1.2", "cit-context": "^2.0.1", "citizenship-context": "^3.0.0", "credentials-context": "^2.0.0", - "cross-env": "^7.0.3", + "cross-env": "^10.1.0", "did-context": "^3.1.1", "ed25519-signature-2020-context": "^1.1.0", - "eslint": "^8.57.0", - "eslint-config-digitalbazaar": "^5.2.0", - "eslint-plugin-jsdoc": "^48.5.0", - "eslint-plugin-unicorn": "^54.0.0", - "karma": "^6.4.3", + "eslint": "^9.39.4", + "karma": "^6.4.4", "karma-chai": "^0.1.0", "karma-chrome-launcher": "^3.2.0", "karma-mocha": "^2.0.1", "karma-mocha-reporter": "^2.2.5", "karma-sourcemap-loader": "^0.4.0", "karma-webpack": "^5.0.1", - "mocha": "^10.5.2", + "mocha": "^11.7.5", "mocha-lcov-reporter": "^1.3.0", - "webpack": "^5.92.1" + "webpack": "^5.106.2" }, "c8": { "reporter": [ diff --git a/tests/.eslintrc.cjs b/tests/.eslintrc.cjs deleted file mode 100644 index bf3479fb..00000000 --- a/tests/.eslintrc.cjs +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - env: { - mocha: true - } -}; diff --git a/tests/UuidUrnDecoder.spec.js b/tests/UuidUrnDecoder.spec.js index 5230e055..1561da78 100644 --- a/tests/UuidUrnDecoder.spec.js +++ b/tests/UuidUrnDecoder.spec.js @@ -1,5 +1,5 @@ /*! -* Copyright (c) 2021 Digital Bazaar, Inc. All rights reserved. +* Copyright (c) 2021-2026 Digital Bazaar, Inc. */ import {expect} from 'chai'; import {UuidUrnDecoder} from '../lib/codecs/UuidUrnDecoder.js'; diff --git a/tests/UuidUrnEncoder.spec.js b/tests/UuidUrnEncoder.spec.js index 39c17700..5b433051 100644 --- a/tests/UuidUrnEncoder.spec.js +++ b/tests/UuidUrnEncoder.spec.js @@ -1,5 +1,5 @@ /*! -* Copyright (c) 2021 Digital Bazaar, Inc. All rights reserved. +* Copyright (c) 2021-2026 Digital Bazaar, Inc. */ import {expect} from 'chai'; import {UuidUrnEncoder} from '../lib/codecs/UuidUrnEncoder.js'; diff --git a/tests/XsdDateDecoder.spec.js b/tests/XsdDateDecoder.spec.js index dcd9501a..b50f5e63 100644 --- a/tests/XsdDateDecoder.spec.js +++ b/tests/XsdDateDecoder.spec.js @@ -1,5 +1,5 @@ /*! -* Copyright (c) 2020-2021 Digital Bazaar, Inc. All rights reserved. +* Copyright (c) 2020-2026 Digital Bazaar, Inc. */ // import { // expect diff --git a/tests/XsdDateEncoder.spec.js b/tests/XsdDateEncoder.spec.js index 49f42bce..9aed8c9a 100644 --- a/tests/XsdDateEncoder.spec.js +++ b/tests/XsdDateEncoder.spec.js @@ -1,5 +1,5 @@ /*! -* Copyright (c) 2020 Digital Bazaar, Inc. All rights reserved. +* Copyright (c) 2020-2026 Digital Bazaar, Inc. */ // import { // expect diff --git a/tests/XsdDateTimeDecoder.spec.js b/tests/XsdDateTimeDecoder.spec.js index 56395c3c..35285243 100644 --- a/tests/XsdDateTimeDecoder.spec.js +++ b/tests/XsdDateTimeDecoder.spec.js @@ -1,5 +1,5 @@ /*! -* Copyright (c) 2020 Digital Bazaar, Inc. All rights reserved. +* Copyright (c) 2020-2026 Digital Bazaar, Inc. */ // import { // expect diff --git a/tests/XsdDateTimeEncoder.spec.js b/tests/XsdDateTimeEncoder.spec.js index e424bea8..015248ee 100644 --- a/tests/XsdDateTimeEncoder.spec.js +++ b/tests/XsdDateTimeEncoder.spec.js @@ -1,5 +1,5 @@ /*! -* Copyright (c) 2020 Digital Bazaar, Inc. All rights reserved. +* Copyright (c) 2020-2026 Digital Bazaar, Inc. */ // import { // expect diff --git a/tests/decode.spec.js b/tests/decode.spec.js index ff329d97..f2315ff6 100644 --- a/tests/decode.spec.js +++ b/tests/decode.spec.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2020-2025 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2020-2026 Digital Bazaar, Inc. */ import { default as chai, @@ -11,7 +11,7 @@ chai.use(chaiBytes); import {decode, encode} from '../lib/index.js'; import { STRING_TABLE, - TYPE_TABLE, + TYPE_TABLE } from '../lib/tables.js'; function _makeTypeTableLoader(entries) { @@ -711,7 +711,7 @@ describe('cborld decode', () => { 'cb859a7c88ca6ba68b1ff238a70ed674999b6ff5179b0ebb10140b23'); const CONTEXT_URL = 'https://w3id.org/cit/v1'; - /* eslint-disable max-len */ + /* eslint-disable @stylistic/max-len */ const CONTEXT = { '@context': { '@protected': true, @@ -769,7 +769,7 @@ describe('cborld decode', () => { } } }; - /* eslint-enable max-len */ + /* eslint-enable @stylistic/max-len */ const documentLoader = url => { if(url === CONTEXT_URL) { @@ -786,7 +786,7 @@ describe('cborld decode', () => { '@context': 'https://w3id.org/cit/v1', type: 'ConcealedIdToken', meta: 'zvpJ2L5sbowrJPdA', - // eslint-disable-next-line max-len + // eslint-disable-next-line @stylistic/max-len payload: 'z1177JK4h25dHEAXAVMUMpn2zWcxLCeMLP3oVFQFQ11xHFtE9BhyoU2g47D6Xod1Mu99JR9YJdY184HY' }; diff --git a/tests/encode.spec.js b/tests/encode.spec.js index a958792d..8d08d821 100644 --- a/tests/encode.spec.js +++ b/tests/encode.spec.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2020-2025 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2020-2026 Digital Bazaar, Inc. */ import { default as chai, @@ -11,7 +11,7 @@ chai.use(chaiBytes); import {decode, encode} from '../lib/index.js'; import { STRING_TABLE, - TYPE_TABLE, + TYPE_TABLE } from '../lib/tables.js'; function _makeTypeTableLoader(entries) { diff --git a/tests/examples.spec.js b/tests/examples.spec.js index 4c75432c..03bc9325 100644 --- a/tests/examples.spec.js +++ b/tests/examples.spec.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2024-2025 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2024-2026 Digital Bazaar, Inc. */ import { default as chai, @@ -39,7 +39,7 @@ const _contextUrls = [ ['https://w3id.org/security/suites/ed25519-2020/v1', ed25519_2020_context.contexts], ['https://www.w3.org/2018/credentials/v1', credentials_context.contexts], ['https://www.w3.org/ns/activitystreams', activitystreams_context.contexts], - ['https://www.w3.org/ns/did/v1', did_context.contexts], + ['https://www.w3.org/ns/did/v1', did_context.contexts] ]; const contextMap = new Map(_contextUrls.map(c => [c[0], c[1].get(c[0])])); @@ -69,7 +69,7 @@ const files = [ 'prc.jsonld', 'prc.cborld', 'uncompressible.jsonld', - 'uncompressible.cborld', + 'uncompressible.cborld' ]; describe('cborld examples', () => { diff --git a/tests/roundtrip.spec.js b/tests/roundtrip.spec.js index d0e27a12..2bf13041 100644 --- a/tests/roundtrip.spec.js +++ b/tests/roundtrip.spec.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2020-2025 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2020-2026 Digital Bazaar, Inc. */ import { default as chai, @@ -11,7 +11,7 @@ chai.use(chaiBytes); import {decode, encode} from '../lib/index.js'; import { STRING_TABLE, - TYPE_TABLE, + TYPE_TABLE } from '../lib/tables.js'; describe('cborld round trip', () => { @@ -369,9 +369,9 @@ describe('cborld round trip', () => { '@context': { type: '@type', Type1: 'ex:Type1', - Type2: 'ex:Type2', + Type2: 'ex:Type2' }, - type: ['Type1', 'Type2'], + type: ['Type1', 'Type2'] }; const typeTable = new Map(TYPE_TABLE); @@ -860,7 +860,7 @@ describe('cborld round trip', () => { date: { '@id': 'ex:date', '@type': 'http://www.w3.org/2001/XMLSchema#dateTime' - }, + } } }; const jsonldDocument = { @@ -912,7 +912,7 @@ describe('cborld round trip', () => { date: { '@id': 'ex:date', '@type': 'http://www.w3.org/2001/XMLSchema#date' - }, + } } }; const jsonldDocument = { @@ -1764,7 +1764,7 @@ describe('cborld round trip', () => { throw new Error(`Refused to load URL "${url}".`); }; - /* eslint-disable max-len */ + /* eslint-disable @stylistic/max-len */ const vectors = [ { name: 'empty plain data: (1)', @@ -1810,7 +1810,7 @@ describe('cborld round trip', () => { 'data:image/gif;base64,' + 'R0lGODdhAQABAIABAAAAAAAAACwAAAAAAQABAAACAkwBADs=', 'data:image/gif;base64,' + - 'R0lGODdhAQABAIABAAAAAAAAACwAAAAAAQABAAACAkwBADs=', + 'R0lGODdhAQABAIABAAAAAAAAACwAAAAAAQABAAACAkwBADs=' ], cborldHex: 'd9cb1d8202a200198000186582830469696d6167652f6769665823474946383761010001008001000000000000002c00000000010001000002024c01003b830469696d6167652f6769665823474946383761010001008001000000000000002c00000000010001000002024c01003b' @@ -1878,7 +1878,7 @@ describe('cborld round trip', () => { 'd9cb1d8202a20019800018648204783b746578742f68746d6c2c253343736372697074253345616c6572742532382532376869253237253239253342253343253246736372697074253345' } ]; - /* eslint-enable max-len */ + /* eslint-enable @stylistic/max-len */ const hasOnly = vectors.some(d => d.only); vectors.forEach(d => { diff --git a/tests/test.legacy-range.spec.js b/tests/test.legacy-range.spec.js index c0248556..2770ef56 100644 --- a/tests/test.legacy-range.spec.js +++ b/tests/test.legacy-range.spec.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2020-2025 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2020-2026 Digital Bazaar, Inc. */ import { default as chai, @@ -12,7 +12,7 @@ import {decode, encode} from '../lib/index.js'; import { STRING_TABLE, - TYPE_TABLE, + TYPE_TABLE } from '../lib/tables.js'; function _makeTypeTableLoader(entries) { @@ -2256,7 +2256,7 @@ describe('legacy cborld (range)', () => { 'cb859a7c88ca6ba68b1ff238a70ed674999b6ff5179b0ebb10140b23'); const CONTEXT_URL = 'https://w3id.org/cit/v1'; - /* eslint-disable max-len */ + /* eslint-disable @stylistic/max-len */ const CONTEXT = { '@context': { '@protected': true, @@ -2314,7 +2314,7 @@ describe('legacy cborld (range)', () => { } } }; - /* eslint-enable max-len */ + /* eslint-enable @stylistic/max-len */ const documentLoader = url => { if(url === CONTEXT_URL) { @@ -2331,7 +2331,7 @@ describe('legacy cborld (range)', () => { '@context': 'https://w3id.org/cit/v1', type: 'ConcealedIdToken', meta: 'zvpJ2L5sbowrJPdA', - // eslint-disable-next-line max-len + // eslint-disable-next-line @stylistic/max-len payload: 'z1177JK4h25dHEAXAVMUMpn2zWcxLCeMLP3oVFQFQ11xHFtE9BhyoU2g47D6Xod1Mu99JR9YJdY184HY' }; diff --git a/tests/test.legacy-singleton.spec.js b/tests/test.legacy-singleton.spec.js index d4df6c32..82601a44 100644 --- a/tests/test.legacy-singleton.spec.js +++ b/tests/test.legacy-singleton.spec.js @@ -1,5 +1,5 @@ /*! - * Copyright (c) 2020-2025 Digital Bazaar, Inc. All rights reserved. + * Copyright (c) 2020-2026 Digital Bazaar, Inc. */ import { default as chai, @@ -693,7 +693,7 @@ describe('legacy cborld (singleton)', () => { 'cb859a7c88ca6ba68b1ff238a70ed674999b6ff5179b0ebb10140b23'); const CONTEXT_URL = 'https://w3id.org/cit/v1'; - /* eslint-disable max-len */ + /* eslint-disable @stylistic/max-len */ const CONTEXT = { '@context': { '@protected': true, @@ -751,7 +751,7 @@ describe('legacy cborld (singleton)', () => { } } }; - /* eslint-enable max-len */ + /* eslint-enable @stylistic/max-len */ const documentLoader = url => { if(url === CONTEXT_URL) { @@ -768,7 +768,7 @@ describe('legacy cborld (singleton)', () => { '@context': 'https://w3id.org/cit/v1', type: 'ConcealedIdToken', meta: 'zvpJ2L5sbowrJPdA', - // eslint-disable-next-line max-len + // eslint-disable-next-line @stylistic/max-len payload: 'z1177JK4h25dHEAXAVMUMpn2zWcxLCeMLP3oVFQFQ11xHFtE9BhyoU2g47D6Xod1Mu99JR9YJdY184HY' }; @@ -1541,7 +1541,7 @@ describe('legacy cborld (singleton)', () => { throw new Error(`Refused to load URL "${url}".`); }; - /* eslint-disable max-len */ + /* eslint-disable @stylistic/max-len */ const vectors = [ { name: 'empty plain data: (1)', @@ -1587,7 +1587,7 @@ describe('legacy cborld (singleton)', () => { 'data:image/gif;base64,' + 'R0lGODdhAQABAIABAAAAAAAAACwAAAAAAQABAAACAkwBADs=', 'data:image/gif;base64,' + - 'R0lGODdhAQABAIABAAAAAAAAACwAAAAAAQABAAACAkwBADs=', + 'R0lGODdhAQABAIABAAAAAAAAACwAAAAAAQABAAACAkwBADs=' ], cborldHex: 'd90501a200198000186582830469696d6167652f6769665823474946383761010001008001000000000000002c00000000010001000002024c01003b830469696d6167652f6769665823474946383761010001008001000000000000002c00000000010001000002024c01003b' @@ -1655,7 +1655,7 @@ describe('legacy cborld (singleton)', () => { 'd90501a20019800018648204783b746578742f68746d6c2c253343736372697074253345616c6572742532382532376869253237253239253342253343253246736372697074253345' } ]; - /* eslint-enable max-len */ + /* eslint-enable @stylistic/max-len */ const hasOnly = vectors.some(d => d.only); vectors.forEach(d => { @@ -1672,7 +1672,7 @@ describe('legacy cborld (singleton)', () => { jsonldDocument, format: 'legacy-singleton', appContextMap, - documentLoader, + documentLoader }); expect(cborldBytes).equalBytes(d.cborldHex);