Skip to content
Draft
Show file tree
Hide file tree
Changes from 11 commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
b97ddcb
feat: turborepo setup
abretonc7s Jan 15, 2025
2d70abd
feat: new nextjs playground
abretonc7s Jan 15, 2025
d6ffb1e
feat: cleanup
abretonc7s Jan 15, 2025
c805f42
feat: upgrade metamask/providers
abretonc7s Jan 15, 2025
65c0e80
feat: wip
abretonc7s Jan 15, 2025
5b38b05
Merge remote-tracking branch 'origin/main' into ab/multichainapi
abretonc7s Jan 15, 2025
f03d7bd
feat: wip
abretonc7s Jan 16, 2025
3a88876
feat: wip
abretonc7s Jan 16, 2025
a492ac8
feat: wip
abretonc7s Jan 17, 2025
2264362
feat: wip
abretonc7s Jan 17, 2025
9fdc310
feat: wip
abretonc7s Jan 17, 2025
b8dab41
feat: wip
abretonc7s Jan 20, 2025
f1b60e3
feat: wip
abretonc7s Jan 20, 2025
a479b31
feat: cleanup
abretonc7s Jan 20, 2025
ebffdfb
feat: cleanup
abretonc7s Jan 20, 2025
d020fb3
feat: wip
abretonc7s Jan 20, 2025
005d0ef
Merge remote-tracking branch 'origin/main' into ab/multichainapi
abretonc7s Jan 21, 2025
0796b88
feat: wip
abretonc7s Jan 21, 2025
a9e8b22
feat: wip
abretonc7s Jan 21, 2025
f6a8210
feat: wip
abretonc7s Jan 21, 2025
ee0d2ae
feat: cleanup
abretonc7s Jan 22, 2025
2ff60a0
feat: wip
abretonc7s Jan 22, 2025
6ed73e6
feat: wip
abretonc7s Jan 22, 2025
5fb57f5
docs: readme
abretonc7s Jan 23, 2025
dfeeaab
feat: wip
abretonc7s Jan 23, 2025
3ce12fc
docs: wip
abretonc7s Jan 23, 2025
74d9b5a
feat: wip
abretonc7s Jan 23, 2025
6be0784
feat: adding tests
abretonc7s Jan 23, 2025
41882fc
feat: merge remote-tracking branch 'origin/main' into ab/multichainapi
abretonc7s Feb 12, 2025
b7232e4
feat: wip
abretonc7s Feb 12, 2025
cab12c4
fix request bug
chakra-guy Feb 12, 2025
d57e5da
feat: nav header
abretonc7s Feb 13, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
"packages/sdk-socket-server-next",
"packages/sdk-install-modal-web",
"packages/sdk-communication-layer",
"packages/multichainapi",
"packages/sdk",
"packages/sdk-react",
"packages/sdk-react-native",
Expand All @@ -34,7 +35,7 @@
"postinstall": "patch-package",
"link-packages": "./scripts/link-packages.sh",
"prepare": "husky install",
"dev:core": "turbo run dev --parallel --filter=@metamask/sdk-communication-layer --filter=@metamask/sdk --filter=@metamask/sdk-react",
"dev:core": "turbo run dev --parallel --filter=@metamask/sdk-communication-layer --filter=@metamask/multichainapi --filter=@metamask/sdk --filter=@metamask/sdk-react",
"lint": "yarn workspaces foreach --no-private run lint",
"lint:changelogs": "yarn workspaces foreach --no-private run lint:changelog",
"lint:eslint": "yarn workspaces foreach --no-private run lint:eslint",
Expand Down
45 changes: 45 additions & 0 deletions packages/multichainapi/.eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
const path = require('path');

/**
* @type {import('eslint').Linter.Config}
*/
module.exports = {
extends: ['@metamask/eslint-config-typescript', '../../.eslintrc.js'],
root: true,
parser: '@typescript-eslint/parser',
parserOptions: {
project: [path.resolve(__dirname, 'tsconfig.eslint.json')],
},

ignorePatterns: [
'.prettierrc.js',
'**/.eslintrc.js',
'jest.config.ts',
'**/dist*/',
'rollup.config.js',
'**/coverage/**',
],

overrides: [
{
files: ['**/*.ts'],
rules: {
'@typescript-eslint/consistent-type-definitions': [
'error',
'interface',
],
'@typescript-eslint/no-floating-promises': 'error',
'no-async-promise-executor': 'error',
'import/no-named-as-default': 0,
'no-shadow': 'off',
'@typescript-eslint/no-shadow': ['error'],
},
},
{
files: ['**/*.d.ts'],
rules: {
'import/unambiguous': 'off',
},
},
],
};
7 changes: 7 additions & 0 deletions packages/multichainapi/jest.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/** @type {import('jest').Config} */
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
testMatch: ['**/*.test.ts'],
collectCoverageFrom: ['src/**/*.ts', '!src/**/*.d.ts'],
};
69 changes: 69 additions & 0 deletions packages/multichainapi/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
{
"name": "@metamask/multichainapi",
"version": "0.1.0",
"description": "CAIP-based multichain API for MetaMask",
"repository": {
"type": "git",
"url": "https://github.com/MetaMask/metamask-sdk",
"directory": "packages/multichainapi"
},
"main": "dist/node/cjs/index.js",
"module": "dist/browser/es/index.js",
"browser": "dist/browser/es/index.js",
"types": "dist/types/src/index.d.ts",
"files": [
"/dist"
],
"scripts": {
"build:types": "tsc --project tsconfig.build.json --emitDeclarationOnly --outDir dist/types",
"build": "yarn build:types && rollup -c --bundleConfigAsCjs",
"build:clean": "yarn clean && yarn build",
"typecheck": "tsc --noEmit",
"clean": "rimraf ./dist",
"lint": "yarn lint:eslint && yarn lint:misc --check",
"lint:changelog": "../../scripts/validate-changelog.sh @metamask/multichainapi",
"lint:eslint": "eslint . --cache --ext js,ts",
"lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write",
"lint:misc": "prettier '**/*.json' '**/*.md' '!CHANGELOG.md' --ignore-path ../../.gitignore",
"test": "jest",
"test:watch": "jest --watch"
},
"dependencies": {
"@babel/runtime": "^7.26.0",
"@metamask/api-specs": "^0.10.13",
"@metamask/utils": "^11.0.1",
"@open-rpc/meta-schema": "^1.14.9",
"@types/chrome": "^0.0.296",
"debug": "^4.3.4",
"eventemitter2": "^6.4.9",
"tslib": "^2.6.2"
},
"devDependencies": {
"@jest/globals": "^29.3.1",
"@lavamoat/allow-scripts": "^3.3.1",
"@metamask/auto-changelog": "3.1.0",
"@metamask/eslint-config": "^6.0.0",
"@metamask/eslint-config-typescript": "^6.0.0",
"@rollup/plugin-commonjs": "^25.0.7",
"@rollup/plugin-json": "^6.0.0",
"@rollup/plugin-node-resolve": "^15.0.2",
"@rollup/plugin-terser": "^0.4.4",
"@rollup/plugin-typescript": "^11.1.6",
"@types/debug": "^4.1.12",
"@types/jest": "^29.5.11",
"@types/node": "^20.1.3",
"@typescript-eslint/eslint-plugin": "^4.26.0",
"@typescript-eslint/parser": "^4.26.0",
"eslint": "^7.30.0",
"jest": "^29.3.1",
"prettier": "^2.3.0",
"rimraf": "^4.4.0",
"rollup": "^4.9.4",
"ts-jest": "^29.0.3",
"typescript": "^5.3.3"
},
"publishConfig": {
"access": "public",
"registry": "https://registry.npmjs.org/"
}
}
73 changes: 73 additions & 0 deletions packages/multichainapi/rollup.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
import typescript from '@rollup/plugin-typescript';
import { nodeResolve } from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
import json from '@rollup/plugin-json';
import terser from '@rollup/plugin-terser';

const packageJson = require('./package.json');

// Dependencies that should be external
const external = [
...Object.keys(packageJson.dependencies || {}),
...Object.keys(packageJson.peerDependencies || {}),
...Object.keys(packageJson.optionalDependencies || {}),
];

/**
* @type {import('rollup').RollupOptions[]}
*/
const configs = [
// Node.js build
{
input: 'src/index.ts',
output: [
{
file: packageJson.main,
format: 'cjs',
sourcemap: true,
exports: 'named',
},
],
external,
plugins: [
typescript({
tsconfig: './tsconfig.build.json',
}),
nodeResolve({
preferBuiltins: true,
exportConditions: ['node'],
}),
commonjs(),
json(),
terser(),
],
},
// Browser build
{
input: 'src/index.ts',
output: [
{
file: packageJson.module,
format: 'es',
sourcemap: true,
exports: 'named',
},
],
external,
plugins: [
typescript({
tsconfig: './tsconfig.build.json',
}),
nodeResolve({
browser: true,
preferBuiltins: false,
exportConditions: ['browser'],
}),
commonjs(),
json(),
terser(),
],
},
];

export default configs;
Loading
Loading