Move experimental web3.js folder out of monorepo (#30072)
This commit is contained in:
parent
79e9c9f8b7
commit
1cab61d3b7
|
@ -1,38 +0,0 @@
|
|||
name: Web3.js Analyze Bundle Size
|
||||
|
||||
on:
|
||||
workflow_run:
|
||||
workflows:
|
||||
- Web3.js Experimental
|
||||
types:
|
||||
- completed
|
||||
|
||||
jobs:
|
||||
compare-bundle-size:
|
||||
name: Compare Bundle Size
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
if: >
|
||||
github.event.workflow_run.event == 'pull_request' &&
|
||||
github.event.workflow_run.conclusion == 'success'
|
||||
|
||||
env:
|
||||
# Configuration for Bundlewatch
|
||||
BUNDLEWATCH_GITHUB_TOKEN: ${{ secrets.BUNDLEWATCH_GITHUB_TOKEN }}
|
||||
CI_COMMIT_SHA: ${{ github.event.pull_request.head.sha || github.sha }}
|
||||
|
||||
steps:
|
||||
- uses: pnpm/action-setup@v2.2.4
|
||||
with:
|
||||
version: 7
|
||||
run_install: false
|
||||
|
||||
- name: Download built bundles
|
||||
uses: dawidd6/action-download-artifact@v2
|
||||
with:
|
||||
workflow: ${{ github.event.workflow_run.workflow_id }}
|
||||
run_id: ${{github.event.workflow_run.id}}
|
||||
name: dist
|
||||
|
||||
- name: Run Bundlewatch
|
||||
run: pnpx bundlewatch
|
|
@ -1,59 +0,0 @@
|
|||
name: Web3.js Experimental
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: ["master"]
|
||||
paths:
|
||||
- "web3.js-experimental/**"
|
||||
- ".github/workflows/web3-experimental.yml"
|
||||
pull_request:
|
||||
types: [opened, synchronize]
|
||||
paths:
|
||||
- "web3.js-experimental/**"
|
||||
- ".github/workflows/web3-experimental.yml"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build
|
||||
timeout-minutes: 15
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
defaults:
|
||||
run:
|
||||
working-directory: web3.js-experimental
|
||||
|
||||
# To use Turborepo Remote Caching, set the following environment variables for the job.
|
||||
env:
|
||||
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
||||
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
|
||||
|
||||
steps:
|
||||
- name: Check out code
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 2
|
||||
|
||||
- uses: pnpm/action-setup@v2.2.4
|
||||
with:
|
||||
version: 7
|
||||
|
||||
- name: Setup Node.js environment
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 16
|
||||
cache: "pnpm"
|
||||
cache-dependency-path: "web3.js-experimental/pnpm-lock.yaml"
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
|
||||
- name: Build
|
||||
run: pnpm build
|
||||
|
||||
- name: Upload build artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: dist
|
||||
path: |
|
||||
./web3.js-experimental/dist/
|
||||
./web3.js-experimental/package.json
|
|
@ -1,3 +0,0 @@
|
|||
{
|
||||
"extends": ["@solana/eslint-config-solana", "@solana/eslint-config-solana/jest"]
|
||||
}
|
|
@ -1,3 +0,0 @@
|
|||
dist/
|
||||
node_modules/
|
||||
.turbo
|
|
@ -1 +0,0 @@
|
|||
auto-install-peers=true
|
|
@ -1,2 +0,0 @@
|
|||
dist/
|
||||
node_modules/
|
|
@ -1,3 +0,0 @@
|
|||
{
|
||||
"ignore_dirs": ["dist", "node_modules"]
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
# Solana JavaScript API
|
||||
|
||||
## Development Environment Setup
|
||||
|
||||
### Speed up build times with remote caching
|
||||
|
||||
Cache build artifacts remotely so that you, others, and the CI server can take advantage of each others' build efforts.
|
||||
|
||||
1. Log the Turborepo CLI into the Solana Vercel account
|
||||
```shell
|
||||
pnpm turbo login
|
||||
```
|
||||
2. Link the repository to the remote cache
|
||||
```shell
|
||||
pnpm turbo link
|
||||
```
|
|
@ -1,11 +0,0 @@
|
|||
import type { Config } from 'jest';
|
||||
|
||||
export default {
|
||||
projects: [
|
||||
'<rootDir>/internal/jest/jest-lint.config.ts',
|
||||
'<rootDir>/internal/jest/jest-prettier.config.ts',
|
||||
'<rootDir>/internal/jest/jest-unit.config.browser.ts',
|
||||
'<rootDir>/internal/jest/jest-unit.config.node.ts',
|
||||
],
|
||||
rootDir: '../../',
|
||||
} as Config;
|
|
@ -1,8 +0,0 @@
|
|||
import type { Config } from 'jest';
|
||||
|
||||
export default {
|
||||
displayName: 'ESLint',
|
||||
rootDir: '../../',
|
||||
runner: 'eslint',
|
||||
testMatch: ['<rootDir>src/**/*.ts', '<rootDir>internal/**'],
|
||||
} as Config;
|
|
@ -1,9 +0,0 @@
|
|||
import type { Config } from 'jest';
|
||||
|
||||
export default {
|
||||
displayName: 'Prettier',
|
||||
moduleFileExtensions: ['js', 'ts', 'json', 'md'],
|
||||
rootDir: '../../',
|
||||
runner: 'prettier',
|
||||
testMatch: ['<rootDir>README.md', '<rootDir>internal/**', '<rootDir>src/**', '<rootDir>*'],
|
||||
} as Config;
|
|
@ -1,15 +0,0 @@
|
|||
import type { Config } from 'jest';
|
||||
import commonConfig from './jest-unit.config.common';
|
||||
|
||||
export default {
|
||||
...commonConfig,
|
||||
displayName: 'Unit Test (Browser)',
|
||||
globals: {
|
||||
...commonConfig.globals,
|
||||
__BROWSER__: true,
|
||||
__NODEJS__: false,
|
||||
__REACTNATIVE__: false,
|
||||
},
|
||||
testEnvironment: 'jsdom',
|
||||
testEnvironmentOptions: {},
|
||||
} as Config;
|
|
@ -1,20 +0,0 @@
|
|||
import type { Config } from 'jest';
|
||||
|
||||
export default {
|
||||
globals: {
|
||||
__DEV__: false,
|
||||
},
|
||||
rootDir: '../../',
|
||||
roots: ['<rootDir>src/'],
|
||||
setupFilesAfterEnv: ['<rootDir>internal/jest/setupFile.ts'],
|
||||
transform: {
|
||||
'^.+\\.(ts|js)$': [
|
||||
'@swc/jest',
|
||||
{
|
||||
jsc: {
|
||||
target: 'es2020',
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
} as Config;
|
|
@ -1,13 +0,0 @@
|
|||
import { Config } from 'jest';
|
||||
import commonConfig from './jest-unit.config.common';
|
||||
|
||||
export default {
|
||||
...commonConfig,
|
||||
displayName: 'Unit Test (Node)',
|
||||
globals: {
|
||||
...commonConfig.globals,
|
||||
__BROWSER__: false,
|
||||
__NODEJS__: true,
|
||||
__REACTNATIVE__: false,
|
||||
},
|
||||
} as Config;
|
|
@ -1,98 +0,0 @@
|
|||
{
|
||||
"name": "@solana/web3.js-experimental",
|
||||
"version": "0.0.0-development",
|
||||
"description": "Solana Javascript API",
|
||||
"exports": {
|
||||
"browser": {
|
||||
"import": "./dist/index.browser.js",
|
||||
"require": "./dist/index.browser.cjs"
|
||||
},
|
||||
"node": {
|
||||
"import": "./dist/index.node.js",
|
||||
"require": "./dist/index.node.cjs"
|
||||
},
|
||||
"react-native": "./dist/index.native.js",
|
||||
"types": "./dist/types/index.d.ts"
|
||||
},
|
||||
"browser": {
|
||||
"./dist/index.node.cjs": "./dist/index.browser.cjs",
|
||||
"./dist/index.node.js": "./dist/index.browser.js"
|
||||
},
|
||||
"jsdelivr": "./dist/index.production.min.js",
|
||||
"umd": "./dist/index.production.min.js",
|
||||
"unpkg": "./dist/index.production.min.js",
|
||||
"main": "./dist/index.node.cjs",
|
||||
"module": "./dist/index.node.js",
|
||||
"react-native": "./dist/index.native.js",
|
||||
"types": "./dist/types/index.d.ts",
|
||||
"type": "module",
|
||||
"files": [
|
||||
"./dist/"
|
||||
],
|
||||
"sideEffects": false,
|
||||
"keywords": [
|
||||
"blockchain",
|
||||
"solana",
|
||||
"web3"
|
||||
],
|
||||
"scripts": {
|
||||
"build": "turbo run compile:js compile:typedefs test:lint test:prettier test:typecheck test:unit:browser test:unit:node test:treeshakability:browser test:treeshakability:native test:treeshakability:node",
|
||||
"compile:js": "tsup",
|
||||
"compile:typedefs": "tsc -p ./tsconfig.declarations.json",
|
||||
"dev": "jest -c ./internal/jest/jest-dev.config.ts --watch",
|
||||
"test:lint": "jest -c ./internal/jest/jest-lint.config.ts --silent",
|
||||
"test:prettier": "jest -c ./internal/jest/jest-prettier.config.ts --silent",
|
||||
"test:typecheck": "tsc --noEmit",
|
||||
"test:unit:browser": "jest -c ./internal/jest/jest-unit.config.browser.ts --silent",
|
||||
"test:unit:node": "jest -c ./internal/jest/jest-unit.config.node.ts --silent",
|
||||
"test:treeshakability:browser": "agadoo dist/index.browser.js",
|
||||
"test:treeshakability:native": "agadoo dist/index.node.js",
|
||||
"test:treeshakability:node": "agadoo dist/index.native.js"
|
||||
},
|
||||
"author": "Solana Labs Maintainers <maintainers@solanalabs.com>",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/solana-labs/solana-web3.js"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "http://github.com/solana-labs/solana-web3.js/issues"
|
||||
},
|
||||
"browserslist": [
|
||||
"supports bigint and not dead",
|
||||
"maintained node versions"
|
||||
],
|
||||
"devDependencies": {
|
||||
"@solana/eslint-config-solana": "^0.0.4",
|
||||
"@solana/prettier-config-solana": "0.0.1",
|
||||
"@swc/core": "^1.3.18",
|
||||
"@swc/jest": "^0.2.23",
|
||||
"@types/jest": "^29.2.3",
|
||||
"@typescript-eslint/eslint-plugin": "^5.43.0",
|
||||
"@typescript-eslint/parser": "^5.43.0",
|
||||
"agadoo": "^2.0.0",
|
||||
"eslint": "^8.27.0",
|
||||
"eslint-plugin-jest": "^27.1.5",
|
||||
"eslint-plugin-react-hooks": "^4.6.0",
|
||||
"eslint-plugin-sort-keys-fix": "^1.1.2",
|
||||
"jest": "^29.3.1",
|
||||
"jest-environment-jsdom": "^29.3.1",
|
||||
"jest-runner-eslint": "^1.1.0",
|
||||
"jest-runner-prettier": "^1.0.0",
|
||||
"postcss": "^8.4.12",
|
||||
"prettier": "^2.7.1",
|
||||
"ts-node": "^10.9.1",
|
||||
"tsup": "6.5.0",
|
||||
"turbo": "^1.6.3",
|
||||
"typescript": "~4.8"
|
||||
},
|
||||
"bundlewatch": {
|
||||
"defaultCompression": "gzip",
|
||||
"files": [
|
||||
{
|
||||
"path": "./dist/index*.js"
|
||||
}
|
||||
]
|
||||
},
|
||||
"prettier": "@solana/prettier-config-solana"
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -1,19 +0,0 @@
|
|||
import rpc from '../rpc';
|
||||
|
||||
describe('rpc', () => {
|
||||
if (__BROWSER__) {
|
||||
it('logs stuff in the browser', () => {
|
||||
const spy = jest.spyOn(console, 'log');
|
||||
rpc();
|
||||
expect(spy).toHaveBeenCalledWith(`This is the browser fork of \`doThing()\``);
|
||||
});
|
||||
}
|
||||
if (__NODEJS__) {
|
||||
it('logs stuff in node', () => {
|
||||
const spy = jest.spyOn(console, 'log');
|
||||
rpc();
|
||||
expect(spy).toHaveBeenCalledWith(`This is the node fork of \`doThing()\``);
|
||||
});
|
||||
}
|
||||
it.todo('does something useful');
|
||||
});
|
|
@ -1,3 +0,0 @@
|
|||
export default function doThing() {
|
||||
return 'This is the browser fork of `doThing()`';
|
||||
}
|
|
@ -1,3 +0,0 @@
|
|||
export default function doThing() {
|
||||
return 'This is the React Native fork of `doThing()`';
|
||||
}
|
|
@ -1,3 +0,0 @@
|
|||
export default function doThing() {
|
||||
return 'This is the node fork of `doThing()`';
|
||||
}
|
|
@ -1,2 +0,0 @@
|
|||
// Clever obfuscation to prevent the build system from inlining the value of `NODE_ENV`
|
||||
export const __DEV__ = /* @__PURE__ */ (() => process['en' + 'v'].NODE_ENV === 'development')();
|
|
@ -1 +0,0 @@
|
|||
export { default as rpc } from './rpc.js';
|
|
@ -1,18 +0,0 @@
|
|||
import doThingBrowser from './doThing.browser';
|
||||
import doThingNative from './doThing.native';
|
||||
import doThingNode from './doThing';
|
||||
|
||||
export default function rpc() {
|
||||
if (__DEV__) {
|
||||
console.debug('We are in development mode.');
|
||||
}
|
||||
if (__BROWSER__) {
|
||||
console.log(doThingBrowser());
|
||||
}
|
||||
if (__NODEJS__) {
|
||||
console.log(doThingNode());
|
||||
}
|
||||
if (__REACTNATIVE__) {
|
||||
console.log(doThingNative());
|
||||
}
|
||||
}
|
|
@ -1,4 +0,0 @@
|
|||
declare const __BROWSER__: boolean;
|
||||
declare const __DEV__: boolean;
|
||||
declare const __NODEJS__: boolean;
|
||||
declare const __REACTNATIVE__: boolean;
|
|
@ -1,10 +0,0 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"declaration": true,
|
||||
"declarationMap": true,
|
||||
"emitDeclarationOnly": true,
|
||||
"outDir": "./dist/types"
|
||||
},
|
||||
"extends": "./tsconfig.json",
|
||||
"include": ["src/index.ts", "src/types"]
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"moduleResolution": "node",
|
||||
"target": "es2020"
|
||||
},
|
||||
"include": ["internal", "src"]
|
||||
}
|
|
@ -1,54 +0,0 @@
|
|||
import { defineConfig, Format, Options } from 'tsup';
|
||||
|
||||
type Platform =
|
||||
| 'browser'
|
||||
| 'node'
|
||||
// React Native
|
||||
| 'native';
|
||||
|
||||
function getBaseConfig(platform: Platform, format: Format[], options: Options): Options[] {
|
||||
return [true, false].map<Options>(isDebugBuild => ({
|
||||
clean: true,
|
||||
define: {
|
||||
__BROWSER__: `${platform === 'browser'}`,
|
||||
__NODEJS__: `${platform === 'node'}`,
|
||||
__REACTNATIVE__: `${platform === 'native'}`,
|
||||
},
|
||||
entry: [`./src/index.ts`],
|
||||
esbuildOptions(options, { format }) {
|
||||
options.minify = format === 'iife' && !isDebugBuild;
|
||||
if (format === 'iife') {
|
||||
options.define = {
|
||||
...options.define,
|
||||
__DEV__: `${isDebugBuild}`,
|
||||
};
|
||||
}
|
||||
options.inject = ['./src/env-shim.ts'];
|
||||
},
|
||||
format,
|
||||
globalName: 'solanaWeb3',
|
||||
name: platform,
|
||||
onSuccess: options.watch ? 'tsc -p ./tsconfig.declarations.json' : undefined,
|
||||
outExtension({ format }) {
|
||||
let extension;
|
||||
if (format === 'iife') {
|
||||
extension = `.${isDebugBuild ? 'development' : 'production.min'}.js`;
|
||||
} else {
|
||||
extension = `.${platform}.${format === 'cjs' ? 'cjs' : 'js'}`;
|
||||
}
|
||||
return {
|
||||
js: extension,
|
||||
};
|
||||
},
|
||||
platform: platform === 'node' ? 'node' : 'browser',
|
||||
pure: ['process'],
|
||||
sourcemap: isDebugBuild,
|
||||
treeshake: true,
|
||||
}));
|
||||
}
|
||||
|
||||
export default defineConfig(options => [
|
||||
...getBaseConfig('node', ['cjs', 'esm'], options),
|
||||
...getBaseConfig('browser', ['cjs', 'esm', 'iife'], options),
|
||||
...getBaseConfig('native', ['esm'], options),
|
||||
]);
|
|
@ -1,49 +0,0 @@
|
|||
{
|
||||
"$schema": "https://turbo.build/schema.json",
|
||||
"pipeline": {
|
||||
"compile:js": {
|
||||
"inputs": ["./src/**"],
|
||||
"outputs": ["dist/**"]
|
||||
},
|
||||
"compile:typedefs": {
|
||||
"dependsOn": ["compile:js"],
|
||||
"inputs": ["./src/**"],
|
||||
"outputs": ["dist/**"]
|
||||
},
|
||||
"test:lint": {
|
||||
"inputs": ["./internal/**", "./src/**"],
|
||||
"outputs": []
|
||||
},
|
||||
"test:prettier": {
|
||||
"inputs": ["./internal/**", "./src/**"],
|
||||
"outputs": []
|
||||
},
|
||||
"test:typecheck": {
|
||||
"inputs": ["./internal/**", "./src/**"],
|
||||
"outputs": []
|
||||
},
|
||||
"test:unit:browser": {
|
||||
"inputs": ["./src/**"],
|
||||
"outputs": []
|
||||
},
|
||||
"test:unit:node": {
|
||||
"inputs": ["./src/**"],
|
||||
"outputs": []
|
||||
},
|
||||
"test:treeshakability:browser": {
|
||||
"dependsOn": ["compile:js"],
|
||||
"outputs": []
|
||||
},
|
||||
"test:treeshakability:native": {
|
||||
"dependsOn": ["compile:js"],
|
||||
"outputs": []
|
||||
},
|
||||
"test:treeshakability:node": {
|
||||
"dependsOn": ["compile:js"],
|
||||
"outputs": []
|
||||
}
|
||||
},
|
||||
"remoteCache": {
|
||||
"signature": true
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue