From 31b7987d780d96101fc4fe5810c1f6ec8f668333 Mon Sep 17 00:00:00 2001 From: Andy Haynes Date: Thu, 8 Aug 2024 15:38:06 -0700 Subject: [PATCH] feat: commonJS builds --- packages/accounts/package.json | 14 +++-- packages/accounts/tsconfig.cjs.json | 10 ++++ packages/accounts/tsconfig.json | 2 +- packages/biometric-ed25519/package.json | 13 ++++- packages/biometric-ed25519/tsconfig.cjs.json | 10 ++++ packages/biometric-ed25519/tsconfig.json | 2 +- packages/build/cjsify.js | 58 ++++++++++++++++++++ packages/build/package.json | 9 +++ packages/cookbook/tsconfig.cjs.json | 10 ++++ packages/crypto/package.json | 14 +++-- packages/crypto/tsconfig.cjs.json | 10 ++++ packages/crypto/tsconfig.json | 2 +- packages/iframe-rpc/package.json | 15 +++-- packages/iframe-rpc/tsconfig.cjs.json | 10 ++++ packages/iframe-rpc/tsconfig.json | 2 +- packages/keystores-browser/package.json | 14 +++-- packages/keystores-browser/tsconfig.cjs.json | 10 ++++ packages/keystores-browser/tsconfig.json | 2 +- packages/keystores-node/package.json | 14 +++-- packages/keystores-node/tsconfig.cjs.json | 10 ++++ packages/keystores-node/tsconfig.json | 2 +- packages/keystores/package.json | 14 +++-- packages/keystores/tsconfig.cjs.json | 10 ++++ packages/keystores/tsconfig.json | 2 +- packages/near-api-js/package.json | 18 ++++-- packages/near-api-js/tsconfig.cjs.json | 11 ++++ packages/near-api-js/tsconfig.json | 3 +- packages/providers/package.json | 14 +++-- packages/providers/tsconfig.cjs.json | 10 ++++ packages/providers/tsconfig.json | 2 +- packages/signers/package.json | 14 +++-- packages/signers/tsconfig.cjs.json | 10 ++++ packages/signers/tsconfig.json | 2 +- packages/transactions/package.json | 14 +++-- packages/transactions/tsconfig.cjs.json | 10 ++++ packages/transactions/tsconfig.json | 2 +- packages/tsconfig/cjs.json | 6 +- packages/types/package.json | 14 +++-- packages/types/tsconfig.cjs.json | 10 ++++ packages/types/tsconfig.json | 2 +- packages/utils/package.json | 14 +++-- packages/utils/tsconfig.cjs.json | 10 ++++ packages/utils/tsconfig.json | 2 +- packages/wallet-account/package.json | 14 +++-- packages/wallet-account/tsconfig.cjs.json | 10 ++++ packages/wallet-account/tsconfig.json | 2 +- pnpm-lock.yaml | 44 +++++++++++++++ 47 files changed, 419 insertions(+), 78 deletions(-) create mode 100644 packages/accounts/tsconfig.cjs.json create mode 100644 packages/biometric-ed25519/tsconfig.cjs.json create mode 100755 packages/build/cjsify.js create mode 100644 packages/build/package.json create mode 100644 packages/cookbook/tsconfig.cjs.json create mode 100644 packages/crypto/tsconfig.cjs.json create mode 100644 packages/iframe-rpc/tsconfig.cjs.json create mode 100644 packages/keystores-browser/tsconfig.cjs.json create mode 100644 packages/keystores-node/tsconfig.cjs.json create mode 100644 packages/keystores/tsconfig.cjs.json create mode 100644 packages/near-api-js/tsconfig.cjs.json create mode 100644 packages/providers/tsconfig.cjs.json create mode 100644 packages/signers/tsconfig.cjs.json create mode 100644 packages/transactions/tsconfig.cjs.json create mode 100644 packages/types/tsconfig.cjs.json create mode 100644 packages/utils/tsconfig.cjs.json create mode 100644 packages/wallet-account/tsconfig.cjs.json diff --git a/packages/accounts/package.json b/packages/accounts/package.json index f9ebcca19..f0f90ae53 100644 --- a/packages/accounts/package.json +++ b/packages/accounts/package.json @@ -2,11 +2,12 @@ "name": "@near-js/accounts", "version": "1.2.1", "description": "Classes encapsulating account-specific functionality", - "main": "lib/index.js", + "main": "lib/esm/index.js", "type": "module", "scripts": { - "build": "pnpm compile", - "compile": "tsc -p tsconfig.json", + "build": "pnpm compile:esm && pnpm compile:cjs", + "compile:esm": "tsc -p tsconfig.json", + "compile:cjs": "tsc -p tsconfig.cjs.json && cjsify ./lib/commonjs", "lint": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc", "lint:fix": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc --fix", "test": "jest" @@ -35,6 +36,7 @@ "@types/json-schema": "^7.0.15", "@types/node": "20.0.0", "bs58": "4.0.0", + "build": "workspace:*", "jest": "29.7.0", "near-hello": "0.5.1", "near-workspaces": "3.5.0", @@ -47,8 +49,8 @@ "files": [ "lib" ], - "resolutions": { - "near-sandbox": "0.0.18", - "near-api-js": "4.0.0" + "exports": { + "require": "./lib/commonjs/index.cjs", + "import": "./lib/esm/index.js" } } diff --git a/packages/accounts/tsconfig.cjs.json b/packages/accounts/tsconfig.cjs.json new file mode 100644 index 000000000..83abd57c4 --- /dev/null +++ b/packages/accounts/tsconfig.cjs.json @@ -0,0 +1,10 @@ +{ + "extends": "tsconfig/cjs.json", + "compilerOptions": { + "outDir": "./lib/commonjs", + "lib": ["es2022", "dom"] + }, + "files": [ + "src/index.ts" + ] +} diff --git a/packages/accounts/tsconfig.json b/packages/accounts/tsconfig.json index 38fe05e1b..a353a73d9 100644 --- a/packages/accounts/tsconfig.json +++ b/packages/accounts/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "tsconfig/esm.json", "compilerOptions": { - "outDir": "./lib", + "outDir": "./lib/esm", "lib": ["es2022", "dom"] }, "files": [ diff --git a/packages/biometric-ed25519/package.json b/packages/biometric-ed25519/package.json index a57ff5adc..1cda9de6e 100644 --- a/packages/biometric-ed25519/package.json +++ b/packages/biometric-ed25519/package.json @@ -2,11 +2,13 @@ "name": "@near-js/biometric-ed25519", "description": "JavaScript library to handle webauthn and biometric keys", "version": "1.2.4", - "main": "lib/index.js", - "types": "lib/index.d.ts", + "main": "lib/esm/index.js", + "types": "lib/esm/index.d.ts", "type": "module", "scripts": { - "build": "tsc -p ./tsconfig.json", + "build": "pnpm compile:esm && pnpm compile:cjs", + "compile:esm": "tsc -p tsconfig.json", + "compile:cjs": "tsc -p tsconfig.cjs.json && cjsify ./lib/commonjs", "lint": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc", "lint:fix": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc --fix", "test": "jest" @@ -23,6 +25,7 @@ "asn1-parser": "1.1.8", "borsh": "1.0.0", "buffer": "6.0.3", + "build": "workspace:*", "cbor-js": "^0.1.0", "fido2-lib": "3.4.1" }, @@ -31,5 +34,9 @@ "@types/node": "20.0.0", "jest": "29.7.0", "ts-jest": "29.1.5" + }, + "exports": { + "require": "./lib/commonjs/index.cjs", + "import": "./lib/esm/index.js" } } diff --git a/packages/biometric-ed25519/tsconfig.cjs.json b/packages/biometric-ed25519/tsconfig.cjs.json new file mode 100644 index 000000000..83abd57c4 --- /dev/null +++ b/packages/biometric-ed25519/tsconfig.cjs.json @@ -0,0 +1,10 @@ +{ + "extends": "tsconfig/cjs.json", + "compilerOptions": { + "outDir": "./lib/commonjs", + "lib": ["es2022", "dom"] + }, + "files": [ + "src/index.ts" + ] +} diff --git a/packages/biometric-ed25519/tsconfig.json b/packages/biometric-ed25519/tsconfig.json index aec31f004..b3d721f5c 100644 --- a/packages/biometric-ed25519/tsconfig.json +++ b/packages/biometric-ed25519/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "tsconfig/browser.json", "compilerOptions": { - "outDir": "./lib", + "outDir": "./lib/esm", }, "files": [ "src/index.ts", diff --git a/packages/build/cjsify.js b/packages/build/cjsify.js new file mode 100755 index 000000000..15a5bd0d5 --- /dev/null +++ b/packages/build/cjsify.js @@ -0,0 +1,58 @@ +import { lstat, opendir, readFile, rename, writeFile } from 'node:fs/promises'; +import path from 'node:path'; + +async function enumerateContents(contentPath) { + const dir = await opendir(contentPath); + let files = []; + for await (let entry of dir) { + if (entry.name === 'node_modules') { + continue; + } + + const entryPath = path.join(contentPath, entry.name); + if (entry.isDirectory()) { + files = [...files, ...(await enumerateContents(entryPath))]; + } else if (entry.name.endsWith('.js')) { + files.push(entryPath); + } + } + + return files; +} + +async function cjsIfy() { + const [,, inputPath] = process.argv; + const basePath = path.resolve(process.cwd(), inputPath); + + for (let projectFilePath of await enumerateContents(basePath)) { + let contents = (await readFile(projectFilePath)).toString(); + const relativeImports = [...contents.matchAll(/require\("(\.\.?\/+[^"]+)"\)/ig)]; + for (let localImport of relativeImports) { + const [matchedText, relativePath] = [...localImport]; + if (relativePath.endsWith('.json')) { + continue; + } + + const absolutePath = path.resolve(projectFilePath.split('/').slice(0, -1).join('/'), relativePath); + let isDirectory = false; + try { + isDirectory = (await lstat(absolutePath)).isDirectory(); + } catch { /* lstat has failed because `absolutePath` points to a JS file but is missing the .js extension */ } + + const replacementPath = isDirectory + ? `${relativePath}/index.cjs` + : `${relativePath}.cjs`; + contents = contents.replaceAll(matchedText, `require("${replacementPath}")`); + } + + if (relativeImports.length) { + await writeFile(projectFilePath, contents); + } + + await rename(projectFilePath, [...projectFilePath.split('.').slice(0, -1), 'cjs'].join('.')); + } +} + +(async function() { + await cjsIfy(); +}()); diff --git a/packages/build/package.json b/packages/build/package.json new file mode 100644 index 000000000..4ae992a34 --- /dev/null +++ b/packages/build/package.json @@ -0,0 +1,9 @@ +{ + "name": "build", + "version": "0.0.0", + "type": "module", + "private": true, + "bin": { + "cjsify": "./cjsify.js" + } +} diff --git a/packages/cookbook/tsconfig.cjs.json b/packages/cookbook/tsconfig.cjs.json new file mode 100644 index 000000000..83abd57c4 --- /dev/null +++ b/packages/cookbook/tsconfig.cjs.json @@ -0,0 +1,10 @@ +{ + "extends": "tsconfig/cjs.json", + "compilerOptions": { + "outDir": "./lib/commonjs", + "lib": ["es2022", "dom"] + }, + "files": [ + "src/index.ts" + ] +} diff --git a/packages/crypto/package.json b/packages/crypto/package.json index 3e97c2cc7..652564b50 100644 --- a/packages/crypto/package.json +++ b/packages/crypto/package.json @@ -2,11 +2,12 @@ "name": "@near-js/crypto", "version": "1.2.4", "description": "Abstractions around NEAR-compatible elliptical curves and cryptographic keys", - "main": "lib/index.js", + "main": "lib/esm/index.js", "type": "module", "scripts": { - "build": "pnpm compile", - "compile": "tsc -p tsconfig.json", + "build": "pnpm compile:esm && pnpm compile:cjs", + "compile:esm": "tsc -p tsconfig.json", + "compile:cjs": "tsc -p tsconfig.cjs.json && cjsify ./lib/commonjs", "lint": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc", "lint:fix": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc --fix", "test": "jest" @@ -26,6 +27,7 @@ "@jest/globals": "^29.7.0", "@noble/hashes": "^1.4.0", "@types/node": "20.0.0", + "build": "workspace:*", "jest": "29.7.0", "ts-jest": "29.1.5", "tsconfig": "workspace:*", @@ -33,5 +35,9 @@ }, "files": [ "lib" - ] + ], + "exports": { + "require": "./lib/commonjs/index.cjs", + "import": "./lib/esm/index.js" + } } diff --git a/packages/crypto/tsconfig.cjs.json b/packages/crypto/tsconfig.cjs.json new file mode 100644 index 000000000..83abd57c4 --- /dev/null +++ b/packages/crypto/tsconfig.cjs.json @@ -0,0 +1,10 @@ +{ + "extends": "tsconfig/cjs.json", + "compilerOptions": { + "outDir": "./lib/commonjs", + "lib": ["es2022", "dom"] + }, + "files": [ + "src/index.ts" + ] +} diff --git a/packages/crypto/tsconfig.json b/packages/crypto/tsconfig.json index 6789ead47..75b9dc47a 100644 --- a/packages/crypto/tsconfig.json +++ b/packages/crypto/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "tsconfig/esm.json", "compilerOptions": { - "outDir": "./lib", + "outDir": "./lib/esm", }, "files": [ "src/index.ts" diff --git a/packages/iframe-rpc/package.json b/packages/iframe-rpc/package.json index f2ee2782e..a4a9a339c 100644 --- a/packages/iframe-rpc/package.json +++ b/packages/iframe-rpc/package.json @@ -2,11 +2,13 @@ "name": "@near-js/iframe-rpc", "version": "0.0.2", "description": "IFrame RPC client/server implementation", - "main": "lib/index.js", - "types": "lib/index.d.ts", + "main": "lib/esm/index.js", + "types": "lib/esm/index.d.ts", "type": "module", "scripts": { - "build": "tsc -p ./tsconfig.json" + "build": "pnpm compile:esm && pnpm compile:cjs", + "compile:esm": "tsc -p tsconfig.json", + "compile:cjs": "tsc -p tsconfig.cjs.json && cjsify ./lib/commonjs" }, "keywords": [], "author": "Pagoda", @@ -15,6 +17,11 @@ "events": "3.3.0" }, "devDependencies": { - "@types/node": "18.11.18" + "@types/node": "18.11.18", + "build": "workspace:*" + }, + "exports": { + "require": "./lib/commonjs/index.cjs", + "import": "./lib/esm/index.js" } } diff --git a/packages/iframe-rpc/tsconfig.cjs.json b/packages/iframe-rpc/tsconfig.cjs.json new file mode 100644 index 000000000..83abd57c4 --- /dev/null +++ b/packages/iframe-rpc/tsconfig.cjs.json @@ -0,0 +1,10 @@ +{ + "extends": "tsconfig/cjs.json", + "compilerOptions": { + "outDir": "./lib/commonjs", + "lib": ["es2022", "dom"] + }, + "files": [ + "src/index.ts" + ] +} diff --git a/packages/iframe-rpc/tsconfig.json b/packages/iframe-rpc/tsconfig.json index 34eebe699..91b3dad6b 100644 --- a/packages/iframe-rpc/tsconfig.json +++ b/packages/iframe-rpc/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "tsconfig/browser.json", "compilerOptions": { - "outDir": "./lib", + "outDir": "./lib/esm", "types": ["node"] }, "files": [ diff --git a/packages/keystores-browser/package.json b/packages/keystores-browser/package.json index 57db3c1c3..b6af8c9ba 100644 --- a/packages/keystores-browser/package.json +++ b/packages/keystores-browser/package.json @@ -2,11 +2,12 @@ "name": "@near-js/keystores-browser", "version": "0.0.12", "description": "KeyStore implementation for working with keys in browser LocalStorage", - "main": "lib/index.js", + "main": "lib/esm/index.js", "type": "module", "scripts": { - "build": "pnpm compile", - "compile": "tsc -p tsconfig.json", + "build": "pnpm compile:esm && pnpm compile:cjs", + "compile:esm": "tsc -p tsconfig.json", + "compile:cjs": "tsc -p tsconfig.cjs.json && cjsify ./lib/commonjs", "lint": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc", "lint:fix": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc --fix", "test": "jest" @@ -20,6 +21,7 @@ }, "devDependencies": { "@jest/globals": "^29.7.0", + "build": "workspace:*", "jest": "29.7.0", "localstorage-memory": "1.0.3", "ts-jest": "29.1.5", @@ -28,5 +30,9 @@ }, "files": [ "lib" - ] + ], + "exports": { + "require": "./lib/commonjs/index.cjs", + "import": "./lib/esm/index.js" + } } diff --git a/packages/keystores-browser/tsconfig.cjs.json b/packages/keystores-browser/tsconfig.cjs.json new file mode 100644 index 000000000..83abd57c4 --- /dev/null +++ b/packages/keystores-browser/tsconfig.cjs.json @@ -0,0 +1,10 @@ +{ + "extends": "tsconfig/cjs.json", + "compilerOptions": { + "outDir": "./lib/commonjs", + "lib": ["es2022", "dom"] + }, + "files": [ + "src/index.ts" + ] +} diff --git a/packages/keystores-browser/tsconfig.json b/packages/keystores-browser/tsconfig.json index a5aebcc53..2c49a4679 100644 --- a/packages/keystores-browser/tsconfig.json +++ b/packages/keystores-browser/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "tsconfig/browser.json", "compilerOptions": { - "outDir": "./lib", + "outDir": "./lib/esm", }, "files": [ "src/index.ts" diff --git a/packages/keystores-node/package.json b/packages/keystores-node/package.json index 6ff0062f3..dabe66669 100644 --- a/packages/keystores-node/package.json +++ b/packages/keystores-node/package.json @@ -2,11 +2,12 @@ "name": "@near-js/keystores-node", "version": "0.0.12", "description": "KeyStore implementation for working with keys in the local filesystem", - "main": "lib/index.js", + "main": "lib/esm/index.js", "type": "module", "scripts": { - "build": "pnpm compile", - "compile": "tsc -p tsconfig.json", + "build": "pnpm compile:esm && pnpm compile:cjs", + "compile:esm": "tsc -p tsconfig.json", + "compile:cjs": "tsc -p tsconfig.cjs.json && cjsify ./lib/commonjs", "lint": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc", "lint:fix": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc --fix", "test": "jest" @@ -21,6 +22,7 @@ "devDependencies": { "@jest/globals": "^29.7.0", "@types/node": "20.0.0", + "build": "workspace:*", "jest": "29.7.0", "ts-jest": "29.1.5", "tsconfig": "workspace:*", @@ -28,5 +30,9 @@ }, "files": [ "lib" - ] + ], + "exports": { + "require": "./lib/commonjs/index.cjs", + "import": "./lib/esm/index.js" + } } diff --git a/packages/keystores-node/tsconfig.cjs.json b/packages/keystores-node/tsconfig.cjs.json new file mode 100644 index 000000000..83abd57c4 --- /dev/null +++ b/packages/keystores-node/tsconfig.cjs.json @@ -0,0 +1,10 @@ +{ + "extends": "tsconfig/cjs.json", + "compilerOptions": { + "outDir": "./lib/commonjs", + "lib": ["es2022", "dom"] + }, + "files": [ + "src/index.ts" + ] +} diff --git a/packages/keystores-node/tsconfig.json b/packages/keystores-node/tsconfig.json index 9d8ff26d3..5f3d7bd79 100644 --- a/packages/keystores-node/tsconfig.json +++ b/packages/keystores-node/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "tsconfig/esm.json", "compilerOptions": { - "outDir": "./lib", + "outDir": "./lib/esm", }, "files": [ "src/index.ts" diff --git a/packages/keystores/package.json b/packages/keystores/package.json index b4dfcb1da..0bdd342b8 100644 --- a/packages/keystores/package.json +++ b/packages/keystores/package.json @@ -2,11 +2,12 @@ "name": "@near-js/keystores", "version": "0.0.12", "description": "Key storage and management implementations", - "main": "lib/index.js", + "main": "lib/esm/index.js", "type": "module", "scripts": { - "build": "pnpm compile", - "compile": "tsc -p tsconfig.json", + "build": "pnpm compile:esm && pnpm compile:cjs", + "compile:esm": "tsc -p tsconfig.json", + "compile:cjs": "tsc -p tsconfig.cjs.json && cjsify ./lib/commonjs", "lint": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc", "lint:fix": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc --fix", "test": "jest" @@ -21,6 +22,7 @@ "devDependencies": { "@jest/globals": "^29.7.0", "@types/node": "20.0.0", + "build": "workspace:*", "jest": "29.7.0", "ts-jest": "29.1.5", "tsconfig": "workspace:*", @@ -28,5 +30,9 @@ }, "files": [ "lib" - ] + ], + "exports": { + "require": "./lib/commonjs/index.cjs", + "import": "./lib/esm/index.js" + } } diff --git a/packages/keystores/tsconfig.cjs.json b/packages/keystores/tsconfig.cjs.json new file mode 100644 index 000000000..83abd57c4 --- /dev/null +++ b/packages/keystores/tsconfig.cjs.json @@ -0,0 +1,10 @@ +{ + "extends": "tsconfig/cjs.json", + "compilerOptions": { + "outDir": "./lib/commonjs", + "lib": ["es2022", "dom"] + }, + "files": [ + "src/index.ts" + ] +} diff --git a/packages/keystores/tsconfig.json b/packages/keystores/tsconfig.json index 9d8ff26d3..5f3d7bd79 100644 --- a/packages/keystores/tsconfig.json +++ b/packages/keystores/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "tsconfig/esm.json", "compilerOptions": { - "outDir": "./lib", + "outDir": "./lib/esm", }, "files": [ "src/index.ts" diff --git a/packages/near-api-js/package.json b/packages/near-api-js/package.json index b0fab2c85..b7a654438 100644 --- a/packages/near-api-js/package.json +++ b/packages/near-api-js/package.json @@ -7,9 +7,9 @@ "url": "git+https://github.com/near/near-api-js.git" }, "homepage": "https://github.com/near/near-api-js", - "main": "lib/index.js", - "browser": "lib/browser-index.js", - "types": "lib/index.d.ts", + "main": "lib/esm/index.js", + "browser": "lib/commonjs/browser-index.cjs", + "types": "lib/esm/index.d.ts", "type": "module", "dependencies": { "@near-js/accounts": "workspace:*", @@ -34,6 +34,7 @@ "browserify": "16.2.3", "bs58": "4.0.0", "buffer": "6.0.3", + "build": "workspace:*", "bundlewatch": "0.3.1", "concurrently": "7.3.0", "danger": "11.1.1", @@ -58,9 +59,10 @@ "bundle:all": "pnpm bundle && pnpm bundle:minified", "bundle": "esbuild browser-exports.js --bundle --outfile=dist/near-api-js.js --define:global=window --inject:esbuild.inject.js", "bundle:minified": "esbuild browser-exports.js --bundle --minify --outfile=dist/near-api-js.min.js --define:global=window --inject:esbuild.inject.js", - "compile": "tsc -p ./tsconfig.json", + "compile:esm": "tsc -p ./tsconfig.json", + "compile:cjs": "tsc -p ./tsconfig.cjs.json && cjsify ./lib/commonjs", "dev": "pnpm compile -w", - "build": "pnpm compile && pnpm bundle:all", + "build": "pnpm compile:esm && pnpm compile:cjs && pnpm dist", "test": "jest --passWithNoTests", "lint": "concurrently \"pnpm:lint:*(!fix) --no-error-on-unmatched-pattern\"", "lint:src": "eslint --ext .ts src", @@ -85,5 +87,9 @@ "dist", "browser-exports.js" ], - "author": "NEAR Inc" + "author": "NEAR Inc", + "exports": { + "require": "./lib/commonjs/index.cjs", + "import": "./lib/esm/index.js" + } } diff --git a/packages/near-api-js/tsconfig.cjs.json b/packages/near-api-js/tsconfig.cjs.json new file mode 100644 index 000000000..e7466bf3b --- /dev/null +++ b/packages/near-api-js/tsconfig.cjs.json @@ -0,0 +1,11 @@ +{ + "extends": "tsconfig/cjs.json", + "compilerOptions": { + "outDir": "./lib/commonjs", + "lib": ["es2022", "dom"] + }, + "files": [ + "src/index.ts", + "src/browser-index.ts" + ] +} diff --git a/packages/near-api-js/tsconfig.json b/packages/near-api-js/tsconfig.json index fd583f4e2..9895257d0 100644 --- a/packages/near-api-js/tsconfig.json +++ b/packages/near-api-js/tsconfig.json @@ -5,10 +5,9 @@ "es2022", "dom" ], - "outDir": "./lib" + "outDir": "./lib/esm" }, "files": [ "src/index.ts", - "src/browser-index.ts", ], } \ No newline at end of file diff --git a/packages/providers/package.json b/packages/providers/package.json index 981b4f082..b9c5ffc1a 100644 --- a/packages/providers/package.json +++ b/packages/providers/package.json @@ -2,11 +2,12 @@ "name": "@near-js/providers", "version": "0.2.2", "description": "Library of implementations for interfacing with the NEAR blockchain", - "main": "lib/index.js", + "main": "lib/esm/index.js", "type": "module", "scripts": { - "build": "pnpm compile", - "compile": "tsc -p tsconfig.json", + "build": "pnpm compile:esm && pnpm compile:cjs", + "compile:esm": "tsc -p tsconfig.json", + "compile:cjs": "tsc -p tsconfig.cjs.json && cjsify ./lib/commonjs", "lint": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc", "lint:fix": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc --fix", "test": "jest" @@ -25,6 +26,7 @@ "devDependencies": { "@jest/globals": "^29.7.0", "@types/node": "20.0.0", + "build": "workspace:*", "jest": "29.7.0", "near-workspaces": "3.5.0", "ts-jest": "29.1.5", @@ -37,8 +39,8 @@ "files": [ "lib" ], - "resolutions": { - "near-sandbox": "0.0.18", - "near-api-js": "4.0.0" + "exports": { + "require": "./lib/commonjs/index.cjs", + "import": "./lib/esm/index.js" } } diff --git a/packages/providers/tsconfig.cjs.json b/packages/providers/tsconfig.cjs.json new file mode 100644 index 000000000..83abd57c4 --- /dev/null +++ b/packages/providers/tsconfig.cjs.json @@ -0,0 +1,10 @@ +{ + "extends": "tsconfig/cjs.json", + "compilerOptions": { + "outDir": "./lib/commonjs", + "lib": ["es2022", "dom"] + }, + "files": [ + "src/index.ts" + ] +} diff --git a/packages/providers/tsconfig.json b/packages/providers/tsconfig.json index 38fe05e1b..a353a73d9 100644 --- a/packages/providers/tsconfig.json +++ b/packages/providers/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "tsconfig/esm.json", "compilerOptions": { - "outDir": "./lib", + "outDir": "./lib/esm", "lib": ["es2022", "dom"] }, "files": [ diff --git a/packages/signers/package.json b/packages/signers/package.json index d7ea5ac09..0a4159d8e 100644 --- a/packages/signers/package.json +++ b/packages/signers/package.json @@ -2,11 +2,12 @@ "name": "@near-js/signers", "version": "0.1.4", "description": "Modules for cryptographically signing messages", - "main": "lib/index.js", + "main": "lib/esm/index.js", "type": "module", "scripts": { - "build": "pnpm compile", - "compile": "tsc -p tsconfig.json", + "build": "pnpm compile:esm && pnpm compile:cjs", + "compile:esm": "tsc -p tsconfig.json", + "compile:cjs": "tsc -p tsconfig.cjs.json && cjsify ./lib/commonjs", "lint": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc", "lint:fix": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc --fix", "test": "jest" @@ -22,6 +23,7 @@ "devDependencies": { "@jest/globals": "^29.7.0", "@types/node": "20.0.0", + "build": "workspace:*", "jest": "29.7.0", "ts-jest": "29.1.5", "tsconfig": "workspace:*", @@ -29,5 +31,9 @@ }, "files": [ "lib" - ] + ], + "exports": { + "require": "./lib/commonjs/index.cjs", + "import": "./lib/esm/index.js" + } } diff --git a/packages/signers/tsconfig.cjs.json b/packages/signers/tsconfig.cjs.json new file mode 100644 index 000000000..83abd57c4 --- /dev/null +++ b/packages/signers/tsconfig.cjs.json @@ -0,0 +1,10 @@ +{ + "extends": "tsconfig/cjs.json", + "compilerOptions": { + "outDir": "./lib/commonjs", + "lib": ["es2022", "dom"] + }, + "files": [ + "src/index.ts" + ] +} diff --git a/packages/signers/tsconfig.json b/packages/signers/tsconfig.json index 9d8ff26d3..5f3d7bd79 100644 --- a/packages/signers/tsconfig.json +++ b/packages/signers/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "tsconfig/esm.json", "compilerOptions": { - "outDir": "./lib", + "outDir": "./lib/esm", }, "files": [ "src/index.ts" diff --git a/packages/transactions/package.json b/packages/transactions/package.json index 014b38e07..c5bff94b4 100644 --- a/packages/transactions/package.json +++ b/packages/transactions/package.json @@ -2,11 +2,12 @@ "name": "@near-js/transactions", "version": "1.2.2", "description": "Functions and data types for transactions on NEAR", - "main": "lib/index.js", + "main": "lib/esm/index.js", "type": "module", "scripts": { - "build": "pnpm compile", - "compile": "tsc -p tsconfig.json", + "build": "pnpm compile:esm && pnpm compile:cjs", + "compile:esm": "tsc -p tsconfig.json", + "compile:cjs": "tsc -p tsconfig.cjs.json && cjsify ./lib/commonjs", "lint": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc", "lint:fix": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc --fix", "test": "jest" @@ -26,6 +27,7 @@ "@jest/globals": "^29.7.0", "@near-js/keystores": "workspace:*", "@types/node": "20.0.0", + "build": "workspace:*", "jest": "29.7.0", "ts-jest": "29.1.5", "tsconfig": "workspace:*", @@ -33,5 +35,9 @@ }, "files": [ "lib" - ] + ], + "exports": { + "require": "./lib/commonjs/index.cjs", + "import": "./lib/esm/index.js" + } } diff --git a/packages/transactions/tsconfig.cjs.json b/packages/transactions/tsconfig.cjs.json new file mode 100644 index 000000000..83abd57c4 --- /dev/null +++ b/packages/transactions/tsconfig.cjs.json @@ -0,0 +1,10 @@ +{ + "extends": "tsconfig/cjs.json", + "compilerOptions": { + "outDir": "./lib/commonjs", + "lib": ["es2022", "dom"] + }, + "files": [ + "src/index.ts" + ] +} diff --git a/packages/transactions/tsconfig.json b/packages/transactions/tsconfig.json index 9d8ff26d3..5f3d7bd79 100644 --- a/packages/transactions/tsconfig.json +++ b/packages/transactions/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "tsconfig/esm.json", "compilerOptions": { - "outDir": "./lib", + "outDir": "./lib/esm", }, "files": [ "src/index.ts" diff --git a/packages/tsconfig/cjs.json b/packages/tsconfig/cjs.json index d259f7f0f..c91f19df0 100644 --- a/packages/tsconfig/cjs.json +++ b/packages/tsconfig/cjs.json @@ -1,6 +1,8 @@ { "extends": "./base.json", - "module": "commonjs", "target": "es6", - "lib": ["es6"] + "lib": ["es6"], + "compilerOptions": { + "module": "commonjs" + } } diff --git a/packages/types/package.json b/packages/types/package.json index 8885133f7..c522cff68 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -2,11 +2,12 @@ "name": "@near-js/types", "version": "0.2.1", "description": "TypeScript types for working with the Near JS API", - "main": "lib/index.js", + "main": "lib/esm/index.js", "type": "module", "scripts": { - "build": "pnpm compile", - "compile": "tsc -p tsconfig.json", + "build": "pnpm compile:esm && pnpm compile:cjs", + "compile:esm": "tsc -p tsconfig.json", + "compile:cjs": "tsc -p tsconfig.cjs.json && cjsify ./lib/commonjs", "lint": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts", "lint:fix": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts --fix" }, @@ -15,6 +16,7 @@ "license": "ISC", "devDependencies": { "@types/node": "20.0.0", + "build": "workspace:*", "jest": "29.7.0", "ts-jest": "29.1.5", "tsconfig": "workspace:*", @@ -22,5 +24,9 @@ }, "files": [ "lib" - ] + ], + "exports": { + "require": "./lib/commonjs/index.cjs", + "import": "./lib/esm/index.js" + } } diff --git a/packages/types/tsconfig.cjs.json b/packages/types/tsconfig.cjs.json new file mode 100644 index 000000000..83abd57c4 --- /dev/null +++ b/packages/types/tsconfig.cjs.json @@ -0,0 +1,10 @@ +{ + "extends": "tsconfig/cjs.json", + "compilerOptions": { + "outDir": "./lib/commonjs", + "lib": ["es2022", "dom"] + }, + "files": [ + "src/index.ts" + ] +} diff --git a/packages/types/tsconfig.json b/packages/types/tsconfig.json index 9d8ff26d3..5f3d7bd79 100644 --- a/packages/types/tsconfig.json +++ b/packages/types/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "tsconfig/esm.json", "compilerOptions": { - "outDir": "./lib", + "outDir": "./lib/esm", }, "files": [ "src/index.ts" diff --git a/packages/utils/package.json b/packages/utils/package.json index 99d58caae..632a5a5f8 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -2,11 +2,12 @@ "name": "@near-js/utils", "version": "0.2.2", "description": "Common methods and constants for the NEAR API JavaScript client", - "main": "lib/index.js", + "main": "lib/esm/index.js", "type": "module", "scripts": { - "build": "pnpm compile", - "compile": "tsc -p tsconfig.json", + "build": "pnpm compile:esm && pnpm compile:cjs", + "compile:esm": "tsc -p tsconfig.json", + "compile:cjs": "tsc -p tsconfig.cjs.json && cjsify ./lib/commonjs", "lint": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc", "lint:fix": "eslint -c ../../.eslintrc.ts.yml src/**/*.ts test/**/*.ts --no-eslintrc --fix", "test": "jest" @@ -23,6 +24,7 @@ "devDependencies": { "@jest/globals": "^29.7.0", "@types/node": "20.0.0", + "build": "workspace:*", "jest": "29.7.0", "ts-jest": "29.1.5", "tsconfig": "workspace:*", @@ -30,5 +32,9 @@ }, "files": [ "lib" - ] + ], + "exports": { + "require": "./lib/commonjs/index.cjs", + "import": "./lib/esm/index.js" + } } diff --git a/packages/utils/tsconfig.cjs.json b/packages/utils/tsconfig.cjs.json new file mode 100644 index 000000000..83abd57c4 --- /dev/null +++ b/packages/utils/tsconfig.cjs.json @@ -0,0 +1,10 @@ +{ + "extends": "tsconfig/cjs.json", + "compilerOptions": { + "outDir": "./lib/commonjs", + "lib": ["es2022", "dom"] + }, + "files": [ + "src/index.ts" + ] +} diff --git a/packages/utils/tsconfig.json b/packages/utils/tsconfig.json index 9d8ff26d3..5f3d7bd79 100644 --- a/packages/utils/tsconfig.json +++ b/packages/utils/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "tsconfig/esm.json", "compilerOptions": { - "outDir": "./lib", + "outDir": "./lib/esm", }, "files": [ "src/index.ts" diff --git a/packages/wallet-account/package.json b/packages/wallet-account/package.json index 6ba4cdff3..ef203145b 100644 --- a/packages/wallet-account/package.json +++ b/packages/wallet-account/package.json @@ -2,11 +2,12 @@ "name": "@near-js/wallet-account", "version": "1.2.2", "description": "Dependencies for the NEAR API JavaScript client in the browser", - "main": "lib/index.js", + "main": "lib/esm/index.js", "type": "module", "scripts": { - "build": "pnpm compile", - "compile": "tsc -p tsconfig.json", + "build": "pnpm compile:esm && pnpm compile:cjs", + "compile:esm": "tsc -p tsconfig.json", + "compile:cjs": "tsc -p tsconfig.cjs.json && cjsify ./lib/commonjs", "test": "jest" }, "keywords": [], @@ -26,6 +27,7 @@ "devDependencies": { "@jest/globals": "^29.7.0", "@types/node": "20.0.0", + "build": "workspace:*", "jest": "29.7.0", "localstorage-memory": "1.0.3", "ts-jest": "29.1.5", @@ -34,5 +36,9 @@ }, "files": [ "lib" - ] + ], + "exports": { + "require": "./lib/commonjs/index.cjs", + "import": "./lib/esm/index.js" + } } diff --git a/packages/wallet-account/tsconfig.cjs.json b/packages/wallet-account/tsconfig.cjs.json new file mode 100644 index 000000000..83abd57c4 --- /dev/null +++ b/packages/wallet-account/tsconfig.cjs.json @@ -0,0 +1,10 @@ +{ + "extends": "tsconfig/cjs.json", + "compilerOptions": { + "outDir": "./lib/commonjs", + "lib": ["es2022", "dom"] + }, + "files": [ + "src/index.ts" + ] +} diff --git a/packages/wallet-account/tsconfig.json b/packages/wallet-account/tsconfig.json index b057ef2f4..c228e5cdf 100644 --- a/packages/wallet-account/tsconfig.json +++ b/packages/wallet-account/tsconfig.json @@ -2,7 +2,7 @@ "extends": "tsconfig/browser.json", "compilerOptions": { "preserveSymlinks": false, - "outDir": "./lib", + "outDir": "./lib/esm", }, "files": [ "src/index.ts" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d8ce04c6f..be4d86513 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -112,6 +112,9 @@ importers: bs58: specifier: 4.0.0 version: 4.0.0 + build: + specifier: workspace:* + version: link:../build jest: specifier: 29.7.0 version: 29.7.0(@types/node@20.0.0)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)) @@ -163,6 +166,9 @@ importers: buffer: specifier: 6.0.3 version: 6.0.3 + build: + specifier: workspace:* + version: link:../build cbor-js: specifier: ^0.1.0 version: 0.1.0 @@ -183,6 +189,8 @@ importers: specifier: 29.1.5 version: 29.1.5(@babel/core@7.24.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(esbuild@0.21.5)(jest@29.7.0(@types/node@20.0.0)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)))(typescript@5.4.5) + packages/build: {} + packages/cookbook: dependencies: '@near-js/accounts': @@ -240,6 +248,9 @@ importers: '@types/node': specifier: 20.0.0 version: 20.0.0 + build: + specifier: workspace:* + version: link:../build jest: specifier: 29.7.0 version: 29.7.0(@types/node@20.0.0)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)) @@ -262,6 +273,9 @@ importers: '@types/node': specifier: 18.11.18 version: 18.11.18 + build: + specifier: workspace:* + version: link:../build packages/keystores: dependencies: @@ -278,6 +292,9 @@ importers: '@types/node': specifier: 20.0.0 version: 20.0.0 + build: + specifier: workspace:* + version: link:../build jest: specifier: 29.7.0 version: 29.7.0(@types/node@20.0.0)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)) @@ -303,6 +320,9 @@ importers: '@jest/globals': specifier: ^29.7.0 version: 29.7.0 + build: + specifier: workspace:* + version: link:../build jest: specifier: 29.7.0 version: 29.7.0(@types/node@20.5.1)(ts-node@10.9.2(@types/node@20.5.1)(typescript@5.4.5)) @@ -334,6 +354,9 @@ importers: '@types/node': specifier: 20.0.0 version: 20.0.0 + build: + specifier: workspace:* + version: link:../build jest: specifier: 29.7.0 version: 29.7.0(@types/node@20.0.0)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)) @@ -410,6 +433,9 @@ importers: buffer: specifier: 6.0.3 version: 6.0.3 + build: + specifier: workspace:* + version: link:../build bundlewatch: specifier: 0.3.1 version: 0.3.1 @@ -490,6 +516,9 @@ importers: '@types/node': specifier: 20.0.0 version: 20.0.0 + build: + specifier: workspace:* + version: link:../build jest: specifier: 29.7.0 version: 29.7.0(@types/node@20.0.0)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)) @@ -524,6 +553,9 @@ importers: '@types/node': specifier: 20.0.0 version: 20.0.0 + build: + specifier: workspace:* + version: link:../build jest: specifier: 29.7.0 version: 29.7.0(@types/node@20.0.0)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)) @@ -567,6 +599,9 @@ importers: '@types/node': specifier: 20.0.0 version: 20.0.0 + build: + specifier: workspace:* + version: link:../build jest: specifier: 29.7.0 version: 29.7.0(@types/node@20.0.0)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)) @@ -587,6 +622,9 @@ importers: '@types/node': specifier: 20.0.0 version: 20.0.0 + build: + specifier: workspace:* + version: link:../build jest: specifier: 29.7.0 version: 29.7.0(@types/node@20.0.0)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)) @@ -621,6 +659,9 @@ importers: '@types/node': specifier: 20.0.0 version: 20.0.0 + build: + specifier: workspace:* + version: link:../build jest: specifier: 29.7.0 version: 29.7.0(@types/node@20.0.0)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5)) @@ -670,6 +711,9 @@ importers: '@types/node': specifier: 20.0.0 version: 20.0.0 + build: + specifier: workspace:* + version: link:../build jest: specifier: 29.7.0 version: 29.7.0(@types/node@20.0.0)(ts-node@10.9.2(@types/node@20.0.0)(typescript@5.4.5))