diff --git a/contrib/teamcity/build-configurations.yml b/contrib/teamcity/build-configurations.yml --- a/contrib/teamcity/build-configurations.yml +++ b/contrib/teamcity/build-configurations.yml @@ -889,6 +889,7 @@ - modules/mock-chronik-client/ env: JS_PROJECT_ROOT: modules/mock-chronik-client + DEPENDS_ECASHADDRJS: "true" templates: - js-mocha diff --git a/mock-chronik-client.Dockerfile b/mock-chronik-client.Dockerfile new file mode 100644 --- /dev/null +++ b/mock-chronik-client.Dockerfile @@ -0,0 +1,31 @@ +# Copyright (c) 2024 The Bitcoin developers +# Distributed under the MIT software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. + +# Node image for running npm publish + +FROM node:20-buster-slim + +# Build all local dependencies + +# ecashaddrjs +WORKDIR /app/modules/ecashaddrjs +COPY modules/ecashaddrjs/ . +RUN npm ci +RUN npm run build + +# Build mock-chronik-client + +WORKDIR /app/modules/mock-chronik-client + +# Copy only the package files and install necessary dependencies. +# This reduces cache busting when source files are changed. +COPY modules/mock-chronik-client/package.json . +COPY modules/mock-chronik-client/package-lock.json . +RUN npm ci + +# Copy the rest of the project files +COPY . . + +# Publish the module +CMD [ "npm", "publish" ] diff --git a/modules/mock-chronik-client/package-lock.json b/modules/mock-chronik-client/package-lock.json --- a/modules/mock-chronik-client/package-lock.json +++ b/modules/mock-chronik-client/package-lock.json @@ -9,7 +9,7 @@ "version": "1.8.0", "license": "MIT", "dependencies": { - "ecashaddrjs": "^1.5.2" + "ecashaddrjs": "file:../ecashaddrjs" }, "devDependencies": { "mocha": "^10.2.0", @@ -17,6 +17,32 @@ "nyc": "^15.1.0" } }, + "../ecashaddrjs": { + "version": "1.5.6", + "license": "MIT", + "dependencies": { + "big-integer": "1.6.36", + "bs58check": "^3.0.1" + }, + "devDependencies": { + "@babel/cli": "^7.21.0", + "@babel/core": "^7.21.3", + "@babel/preset-env": "^7.20.2", + "babel-loader": "^9.1.2", + "buffer": "^6.0.3", + "chai": "^4.3.7", + "debug": "^4.3.4", + "eslint": "^8.37.0", + "jsdoc": "^4.0.2", + "mocha": "^10.2.0", + "mocha-junit-reporter": "^2.2.0", + "mocha-suppress-logs": "^0.3.1", + "nyc": "^15.1.0", + "random-js": "^2.1.0", + "webpack": "^5.76.2", + "webpack-cli": "^5.0.1" + } + }, "node_modules/@ampproject/remapping": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", @@ -607,17 +633,6 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@noble/hashes": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", - "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -707,19 +722,6 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, - "node_modules/base-x": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", - "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==" - }, - "node_modules/big-integer": { - "version": "1.6.36", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.36.tgz", - "integrity": "sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg==", - "engines": { - "node": ">=0.6" - } - }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -788,23 +790,6 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/bs58": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", - "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", - "dependencies": { - "base-x": "^4.0.0" - } - }, - "node_modules/bs58check": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-3.0.1.tgz", - "integrity": "sha512-hjuuJvoWEybo7Hn/0xOrczQKKEKD63WguEjlhLExYs2wUBcebDC1jDNK17eEAD2lYfw82d5ASC1d7K3SWszjaQ==", - "dependencies": { - "@noble/hashes": "^1.2.0", - "bs58": "^5.0.0" - } - }, "node_modules/caching-transform": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", @@ -1049,13 +1034,8 @@ } }, "node_modules/ecashaddrjs": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/ecashaddrjs/-/ecashaddrjs-1.5.2.tgz", - "integrity": "sha512-zzpDxdVR6SmIym/s1OUo5gEzkH86ztHKbdzuFGet8vUpV0nIejOcW8JiTiq74PHAcIKVb9bQ7ZU7F1Ryw6F6xA==", - "dependencies": { - "big-integer": "1.6.36", - "bs58check": "^3.0.1" - } + "resolved": "../ecashaddrjs", + "link": true }, "node_modules/electron-to-chromium": { "version": "1.4.504", @@ -3219,11 +3199,6 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "@noble/hashes": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", - "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==" - }, "aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -3292,16 +3267,6 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, - "base-x": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", - "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==" - }, - "big-integer": { - "version": "1.6.36", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.36.tgz", - "integrity": "sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg==" - }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -3344,23 +3309,6 @@ "update-browserslist-db": "^1.0.11" } }, - "bs58": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", - "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", - "requires": { - "base-x": "^4.0.0" - } - }, - "bs58check": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-3.0.1.tgz", - "integrity": "sha512-hjuuJvoWEybo7Hn/0xOrczQKKEKD63WguEjlhLExYs2wUBcebDC1jDNK17eEAD2lYfw82d5ASC1d7K3SWszjaQ==", - "requires": { - "@noble/hashes": "^1.2.0", - "bs58": "^5.0.0" - } - }, "caching-transform": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", @@ -3534,12 +3482,26 @@ "dev": true }, "ecashaddrjs": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/ecashaddrjs/-/ecashaddrjs-1.5.2.tgz", - "integrity": "sha512-zzpDxdVR6SmIym/s1OUo5gEzkH86ztHKbdzuFGet8vUpV0nIejOcW8JiTiq74PHAcIKVb9bQ7ZU7F1Ryw6F6xA==", + "version": "file:../ecashaddrjs", "requires": { + "@babel/cli": "^7.21.0", + "@babel/core": "^7.21.3", + "@babel/preset-env": "^7.20.2", + "babel-loader": "^9.1.2", "big-integer": "1.6.36", - "bs58check": "^3.0.1" + "bs58check": "^3.0.1", + "buffer": "^6.0.3", + "chai": "^4.3.7", + "debug": "^4.3.4", + "eslint": "^8.37.0", + "jsdoc": "^4.0.2", + "mocha": "^10.2.0", + "mocha-junit-reporter": "^2.2.0", + "mocha-suppress-logs": "^0.3.1", + "nyc": "^15.1.0", + "random-js": "^2.1.0", + "webpack": "^5.76.2", + "webpack-cli": "^5.0.1" } }, "electron-to-chromium": { diff --git a/modules/mock-chronik-client/package.json b/modules/mock-chronik-client/package.json --- a/modules/mock-chronik-client/package.json +++ b/modules/mock-chronik-client/package.json @@ -1,6 +1,6 @@ { "dependencies": { - "ecashaddrjs": "^1.5.2" + "ecashaddrjs": "file:../ecashaddrjs" }, "name": "mock-chronik-client", "description": "Testing utility to mock the Chronik indexer client and support unit tests that need to mock chronik related API calls.",