diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4a9749ae..63816ac4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,6 +37,9 @@ jobs: run: npm run lint performance: + needs: + - lint + - coverage name: Run performance test strategy: fail-fast: false @@ -64,12 +67,8 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest] + os: [ubuntu-latest, windows-latest] node-version: - - "0.10" - - "0.12" - - "4" - - "5" - "6" - "7" - "8" @@ -92,28 +91,6 @@ jobs: # Use supported versions of our testing tools under older versions of Node # Install npm in some specific cases where we need to include: - - node-version: "0.10" - npm-i: "mocha@3.5.3 nyc@10.3.2 supertest@2.0.0" - # Npm isn't being installed on windows w/ setup-node for - # 0.10 and 0.12, which will end up choking when npm uses es6 - npm-version: "npm@2.15.1" - npm-rm: 'iconv' - - - node-version: "0.12" - npm-i: "mocha@3.5.3 nyc@10.3.2" - npm-version: "npm@2.15.11" - npm-rm: 'iconv' - - - node-version: "4" - npm-i: "mocha@5.2.0 nyc@11.9.0" - npm-rm: 'iconv' - - - node-version: "5" - npm-i: "mocha@5.2.0 nyc@11.9.0" - # fixes https://github.com/npm/cli/issues/681 - npm-version: npm@2.15.11 - npm-rm: 'iconv' - - node-version: "6" npm-i: "mocha@6.2.2 nyc@14.1.1" npm-version: npm@6.13.4 diff --git a/.github/workflows/iojs.yml b/.github/workflows/iojs.yml deleted file mode 100644 index 1c824288..00000000 --- a/.github/workflows/iojs.yml +++ /dev/null @@ -1,70 +0,0 @@ -name: iojs-ci - -on: - push: - branches: - - master - pull_request: - branches: - - master - -concurrency: - group: "${{ github.workflow }} iojs ✨ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}" - cancel-in-progress: true - -jobs: - test: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - node-version: ["1.8", "2.5", "3.3"] - include: - - node-version: "1.8" - npm-i: "mocha@3.5.3 nyc@10.3.2" - npm-rm: 'iconv' - - node-version: "2.5" - npm-i: "mocha@3.5.3 nyc@10.3.2" - npm-rm: 'iconv' - - node-version: "3.3" - npm-i: "mocha@3.5.3 nyc@10.3.2" - npm-rm: 'iconv' - - steps: - - uses: actions/checkout@v4 - - - name: Install iojs ${{ matrix.node-version }} - shell: bash -eo pipefail -l {0} - run: | - nvm install --default ${{ matrix.node-version }} - dirname "$(nvm which ${{ matrix.node-version }})" >> "$GITHUB_PATH" - - - name: Configure npm - run: | - npm config set loglevel error - npm config set shrinkwrap false - - - name: Remove npm module(s) ${{ matrix.npm-rm }} - run: npm rm --silent --save-dev ${{ matrix.npm-rm }} neostandard @stylistic/eslint-plugin-js @stylistic/eslint-plugin eslint - if: matrix.npm-rm != '' - - - name: Install npm module(s) ${{ matrix.npm-i }} - run: npm install --save-dev ${{ matrix.npm-i }} - if: matrix.npm-i != '' - - - name: Install Node.js dependencies - run: npm install - - - name: List environment - id: list_env - shell: bash - run: | - echo "node@$(node -v)" - echo "npm@$(npm -v)" - npm -s ls ||: - (npm -s ls --depth=0 ||:) | awk -F'[ @]' 'NR>1 && $2 { print $2 "=" $3 }' >> "$GITHUB_OUTPUT" - - - name: Run tests - shell: bash - run: npm run test - diff --git a/encodings/dbcs-codec.js b/encodings/dbcs-codec.js index bfec7f2e..d7752f13 100644 --- a/encodings/dbcs-codec.js +++ b/encodings/dbcs-codec.js @@ -1,5 +1,5 @@ "use strict" -var Buffer = require("safer-buffer").Buffer +var Buffer = require("buffer").Buffer // Multibyte codec. In this scheme, a character is represented by 1 or more bytes. // Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences. diff --git a/encodings/internal.js b/encodings/internal.js index 4e5c3ff2..87ab0646 100644 --- a/encodings/internal.js +++ b/encodings/internal.js @@ -1,5 +1,5 @@ "use strict" -var Buffer = require("safer-buffer").Buffer +var Buffer = require("buffer").Buffer // Export Node.js internal encodings. diff --git a/encodings/sbcs-codec.js b/encodings/sbcs-codec.js index 0e2fc924..e59faf2e 100644 --- a/encodings/sbcs-codec.js +++ b/encodings/sbcs-codec.js @@ -1,5 +1,5 @@ "use strict" -var Buffer = require("safer-buffer").Buffer +var Buffer = require("buffer").Buffer // Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that // correspond to encoded bytes (if 128 - then lower half is ASCII). diff --git a/encodings/utf16.js b/encodings/utf16.js index ae60d98e..5373a9d1 100644 --- a/encodings/utf16.js +++ b/encodings/utf16.js @@ -1,5 +1,5 @@ "use strict" -var Buffer = require("safer-buffer").Buffer +var Buffer = require("buffer").Buffer // Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js diff --git a/encodings/utf32.js b/encodings/utf32.js index 72317893..0a24bb9c 100644 --- a/encodings/utf32.js +++ b/encodings/utf32.js @@ -1,6 +1,6 @@ "use strict" -var Buffer = require("safer-buffer").Buffer +var Buffer = require("buffer").Buffer // == UTF32-LE/BE codec. ========================================================== diff --git a/encodings/utf7.js b/encodings/utf7.js index fe72a9d9..4aa1e018 100644 --- a/encodings/utf7.js +++ b/encodings/utf7.js @@ -1,5 +1,5 @@ "use strict" -var Buffer = require("safer-buffer").Buffer +var Buffer = require("buffer").Buffer // UTF-7 codec, according to https://tools.ietf.org/html/rfc2152 // See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3 diff --git a/eslint.config.js b/eslint.config.js index 34c0efd5..b789593f 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -12,7 +12,6 @@ module.exports = [ }), { rules: { - "object-shorthand": ["off"], // Compatibility with older code "@stylistic/quotes": [2, "double"], // Prevent many change of code "new-cap": ["off"], // We need improve this "no-labels": ["off"], // Can remove the labels? diff --git a/generation/gen-sbcs.js b/generation/gen-sbcs.js index f82bd0f4..95a183c6 100644 --- a/generation/gen-sbcs.js +++ b/generation/gen-sbcs.js @@ -1,7 +1,7 @@ var fs = require("fs"); var path = require("path"); var Iconv = require("iconv").Iconv; -var Buffer = require("safer-buffer").Buffer; +var Buffer = require("buffer").Buffer; // Generate encoding families using original iconv. var destFileName = "encodings/sbcs-data-generated.js"; diff --git a/generation/research/get-iconv-encodings.js b/generation/research/get-iconv-encodings.js index da66df73..964c28e6 100644 --- a/generation/research/get-iconv-encodings.js +++ b/generation/research/get-iconv-encodings.js @@ -5,7 +5,7 @@ var iconv = require('iconv'), crypto = require('crypto'); -var Buffer = require("safer-buffer").Buffer; +var Buffer = require("buffer").Buffer; var skipEncodings = {}; diff --git a/lib/index.js b/lib/index.js index e3c5c4c4..9f36e45e 100644 --- a/lib/index.js +++ b/lib/index.js @@ -1,7 +1,6 @@ "use strict" -var Buffer = require("safer-buffer").Buffer -var objectAssign = require("object-assign") +var Buffer = require("buffer").Buffer var bomHandling = require("./bom-handling") var iconv = module.exports @@ -64,7 +63,7 @@ iconv._codecDataCache = Object.create(null) iconv.getCodec = function getCodec (encoding) { if (!iconv.encodings) { var raw = require("../encodings") - iconv.encodings = objectAssign(Object.create(null), raw) // Lazy load all encoding definitions. + iconv.encodings = Object.assign(Object.create(null), raw) // Lazy load all encoding definitions. } // Canonicalize encoding name: strip all non-alphanumeric chars and appended year. diff --git a/lib/streams.js b/lib/streams.js index ebfed8e0..9e37a633 100644 --- a/lib/streams.js +++ b/lib/streams.js @@ -1,6 +1,6 @@ "use strict" -var Buffer = require("safer-buffer").Buffer +var Buffer = require("buffer").Buffer // NOTE: Due to 'stream' module being pretty large (~100Kb, significant in browser environments), // we opt to dependency-inject it instead of creating a hard dependency. @@ -99,7 +99,7 @@ module.exports = function (streamModule) { } return { - IconvLiteEncoderStream: IconvLiteEncoderStream, - IconvLiteDecoderStream: IconvLiteDecoderStream + IconvLiteEncoderStream, + IconvLiteDecoderStream } } diff --git a/package.json b/package.json index f4ceee25..06830104 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "url": "git://github.com/ashtuchkin/iconv-lite.git" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" }, "scripts": { "lint": "eslint", @@ -48,9 +48,5 @@ "request": "^2.88.2", "semver": "^6.3.0", "unorm": "^1.6.0" - }, - "dependencies": { - "object-assign": ">= 4.1.1 < 5.0.0", - "safer-buffer": ">= 2.1.2 < 3.0.0" } } diff --git a/test/big5-test.js b/test/big5-test.js index 050a24aa..268eec5f 100644 --- a/test/big5-test.js +++ b/test/big5-test.js @@ -1,5 +1,5 @@ var assert = require("assert") -var Buffer = require("safer-buffer").Buffer +var Buffer = require("buffer").Buffer var join = require("path").join var iconv = require(join(__dirname, "/../")) diff --git a/test/bom-test.js b/test/bom-test.js index 9a08b3b7..58cb976c 100644 --- a/test/bom-test.js +++ b/test/bom-test.js @@ -1,5 +1,5 @@ var assert = require("assert") -var Buffer = require("safer-buffer").Buffer +var Buffer = require("buffer").Buffer var join = require("path").join var iconv = require(join(__dirname, "/../")) @@ -71,13 +71,13 @@ describe("BOM Handling", function () { var stripBOM = function () { bomStripped = true } var body = Buffer.concat([utf8BOM, Buffer.from(sampleStr)]) - assert.equal(iconv.decode(body, "utf8", { stripBOM: stripBOM }), sampleStr) + assert.equal(iconv.decode(body, "utf8", { stripBOM }), sampleStr) assert(bomStripped) bomStripped = false body = Buffer.from(sampleStr) - assert.equal(iconv.decode(body, "utf8", { stripBOM: stripBOM }), sampleStr) + assert.equal(iconv.decode(body, "utf8", { stripBOM }), sampleStr) assert(!bomStripped) }) }) diff --git a/test/cesu8-test.js b/test/cesu8-test.js index 58d8e8c8..20cabdf2 100644 --- a/test/cesu8-test.js +++ b/test/cesu8-test.js @@ -1,5 +1,5 @@ var assert = require("assert") -var Buffer = require("safer-buffer").Buffer +var Buffer = require("buffer").Buffer var join = require("path").join var iconv = require(join(__dirname, "/../")) diff --git a/test/cyrillic-test.js b/test/cyrillic-test.js index ad7129d9..8a9f2169 100644 --- a/test/cyrillic-test.js +++ b/test/cyrillic-test.js @@ -1,5 +1,5 @@ var assert = require("assert") -var Buffer = require("safer-buffer").Buffer +var Buffer = require("buffer").Buffer var join = require("path").join var iconv = require(join(__dirname, "/../")) diff --git a/test/dbcs-test.js b/test/dbcs-test.js index a969b76a..7c8e9c37 100644 --- a/test/dbcs-test.js +++ b/test/dbcs-test.js @@ -1,5 +1,5 @@ var assert = require("assert") -var Buffer = require("safer-buffer").Buffer +var Buffer = require("buffer").Buffer var join = require("path").join var iconv = require(join(__dirname, "/../")) @@ -560,7 +560,7 @@ describe("Full DBCS encoding tests", function () { { return } } - errors.push({ input: inp.toString("hex"), strExpected: strExpected, strActual: strActual }) + errors.push({ input: inp.toString("hex"), strExpected, strActual }) }) if (errors.length > 0) { @@ -606,7 +606,7 @@ describe("Full DBCS encoding tests", function () { if (iconvChgs[str] == str1) { continue } // Skip iconv changes. - errors.push({ input: strToHex(str), inputChar: str, strExpected: strExpected, strActual: strActual }) + errors.push({ input: strToHex(str), inputChar: str, strExpected, strActual }) } if (errors.length > 0) { diff --git a/test/gbk-test.js b/test/gbk-test.js index 8fa2bcfe..928c46aa 100644 --- a/test/gbk-test.js +++ b/test/gbk-test.js @@ -1,6 +1,6 @@ var fs = require("fs") var assert = require("assert") -var Buffer = require("safer-buffer").Buffer +var Buffer = require("buffer").Buffer var join = require("path").join var iconv = require(join(__dirname, "/../")) diff --git a/test/greek-test.js b/test/greek-test.js index 8ebfa158..2f880ddc 100644 --- a/test/greek-test.js +++ b/test/greek-test.js @@ -1,5 +1,5 @@ var assert = require("assert") -var Buffer = require("safer-buffer").Buffer +var Buffer = require("buffer").Buffer var join = require("path").join var iconv = require(join(__dirname, "/../")) diff --git a/test/main-test.js b/test/main-test.js index 1094cc9e..06147465 100644 --- a/test/main-test.js +++ b/test/main-test.js @@ -1,5 +1,5 @@ var assert = require("assert") -var Buffer = require("safer-buffer").Buffer +var Buffer = require("buffer").Buffer var join = require("path").join var iconv = require(join(__dirname, "/../")) diff --git a/test/sbcs-test.js b/test/sbcs-test.js index 190cd6ec..96cf4c4c 100644 --- a/test/sbcs-test.js +++ b/test/sbcs-test.js @@ -1,6 +1,6 @@ var assert = require("assert") var unorm = require("unorm") -var Buffer = require("safer-buffer").Buffer +var Buffer = require("buffer").Buffer var join = require("path").join var iconv = require(join(__dirname, "/../")) @@ -75,7 +75,7 @@ describe("Full SBCS encoding tests", function () { var strActual = iconv.decode(buf, enc) var strExpected = convertWithDefault(conv, buf, iconv.defaultCharUnicode).toString() - if (strActual != strExpected) { errors.push({ input: buf.toString("hex"), strExpected: strExpected, strActual: strActual }) } + if (strActual != strExpected) { errors.push({ input: buf.toString("hex"), strExpected, strActual }) } } if (errors.length > 0) { assert.fail(null, null, "Decoding mismatch: | | | | \n" + @@ -133,7 +133,7 @@ describe("Full SBCS encoding tests", function () { if (iconvEquivChars[enc] && iconvEquivChars[enc][str] && strExpected == iconv.encode(iconvEquivChars[enc][str], enc).toString("hex")) { continue } - errors.push({ input: strToHex(str), inputChar: str, strExpected: strExpected, strActual: strActual }) + errors.push({ input: strToHex(str), inputChar: str, strExpected, strActual }) } if (errors.length > 0) { diff --git a/test/shiftjis-test.js b/test/shiftjis-test.js index 2cf926ba..6a18de69 100644 --- a/test/shiftjis-test.js +++ b/test/shiftjis-test.js @@ -1,5 +1,5 @@ var assert = require("assert") -var Buffer = require("safer-buffer").Buffer +var Buffer = require("buffer").Buffer var join = require("path").join var iconv = require(join(__dirname, "/../")) diff --git a/test/streams-test.js b/test/streams-test.js index 1c5276c0..3938fa3a 100644 --- a/test/streams-test.js +++ b/test/streams-test.js @@ -1,7 +1,7 @@ var mocha = require("mocha") var describeMocha = mocha.describe var assert = require("assert") -var Buffer = require("safer-buffer").Buffer +var Buffer = require("buffer").Buffer var semver = require("semver") var join = require("path").join var iconv = require(join(__dirname, "/../")) @@ -327,7 +327,7 @@ describe("Encoding using internal modules with surrogates in separate chunks:", function checkUtf8EncodeStream (input) { return checkEncodeStream({ encoding: "utf8", - input: input, + input, output: Buffer.from(input.join(""), "utf8").toString("hex") }) } diff --git a/test/turkish-test.js b/test/turkish-test.js index 6e170f20..9f4577fa 100644 --- a/test/turkish-test.js +++ b/test/turkish-test.js @@ -1,5 +1,5 @@ var assert = require("assert") -var Buffer = require("safer-buffer").Buffer +var Buffer = require("buffer").Buffer var join = require("path").join var iconv = require(join(__dirname, "/../")) @@ -11,7 +11,7 @@ var encodings = [{ variations: ["windows-1254", "win-1254", "win1254", "cp1254", "cp-1254", 1254], strings: { empty: "", - ascii: ascii, + ascii, turkish: "€‚ƒ„…†‡ˆ‰Š‹Œ‘’“”•–—˜™š›œŸ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ", untranslatable: "\x81\x8d\x8e\x8f\x90\x9d\x9e" }, @@ -34,7 +34,7 @@ var encodings = [{ variations: ["iso-8859-9", "turkish", "turkish8", "cp28599", "cp-28599", 28599], strings: { empty: "", - ascii: ascii, + ascii, turkish: "\xa0¡¢£¤¥¦§¨©ª«¬\xad®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ", untranslatable: "" }, diff --git a/test/utf16-test.js b/test/utf16-test.js index 0f98c76d..a930db8f 100644 --- a/test/utf16-test.js +++ b/test/utf16-test.js @@ -1,5 +1,5 @@ var assert = require("assert") -var Buffer = require("safer-buffer").Buffer +var Buffer = require("buffer").Buffer var join = require("path").join var iconv = require(join(__dirname, "/../")) diff --git a/test/utf32-test.js b/test/utf32-test.js index f43156c5..fcea0653 100644 --- a/test/utf32-test.js +++ b/test/utf32-test.js @@ -1,5 +1,5 @@ var assert = require("assert") -var Buffer = require("safer-buffer").Buffer +var Buffer = require("buffer").Buffer var join = require("path").join var iconv = require(join(__dirname, "/../")) diff --git a/test/utf7-test.js b/test/utf7-test.js index 41bf93d0..62b677bf 100644 --- a/test/utf7-test.js +++ b/test/utf7-test.js @@ -1,5 +1,5 @@ var assert = require("assert") -var Buffer = require("safer-buffer").Buffer +var Buffer = require("buffer").Buffer var join = require("path").join var iconv = require(join(__dirname, "/../"))