From 0b908aa6291d026ae70a06b6d03dae93d0b0a08a Mon Sep 17 00:00:00 2001 From: Hanssen0 Date: Thu, 9 Jan 2025 00:30:50 +0800 Subject: [PATCH] feat: export backend packages in @ckb-ccc/shell --- .changeset/large-points-obey.md | 7 ++ README.md | 2 +- packages/ccc/package.json | 2 +- packages/ccc/src/advancedBarrel.ts | 2 +- packages/ccc/src/barrel.ts | 2 +- packages/ccc/src/signersController.ts | 2 +- .../connected/(tools)/TransferUdt/page.tsx | 4 +- packages/playground/src/app/execute/index.ts | 4 -- packages/shell/.npmignore | 21 ++++++ packages/shell/.prettierignore | 13 ++++ packages/shell/.prettierrc | 5 ++ packages/shell/README.md | 41 ++++++++++++ packages/shell/eslint.config.mjs | 45 +++++++++++++ .../misc/basedirs/dist.commonjs/package.json | 3 + .../shell/misc/basedirs/dist/package.json | 3 + packages/shell/package.json | 64 +++++++++++++++++++ packages/shell/src/advanced.ts | 2 + packages/shell/src/advancedBarrel.ts | 2 + packages/shell/src/barrel.ts | 4 ++ packages/shell/src/index.ts | 2 + packages/shell/tsconfig.base.json | 22 +++++++ packages/shell/tsconfig.commonjs.json | 8 +++ packages/shell/tsconfig.json | 8 +++ packages/shell/typedoc.json | 6 ++ packages/spore/package.json | 10 +++ packages/spore/src/advanced.ts | 6 +- packages/spore/src/advancedBarrel.ts | 4 ++ packages/spore/src/barrel.ts | 4 ++ packages/spore/src/index.ts | 6 +- pnpm-lock.yaml | 52 ++++++++++++++- 30 files changed, 333 insertions(+), 23 deletions(-) create mode 100644 .changeset/large-points-obey.md create mode 100644 packages/shell/.npmignore create mode 100644 packages/shell/.prettierignore create mode 100644 packages/shell/.prettierrc create mode 100644 packages/shell/README.md create mode 100644 packages/shell/eslint.config.mjs create mode 100644 packages/shell/misc/basedirs/dist.commonjs/package.json create mode 100644 packages/shell/misc/basedirs/dist/package.json create mode 100644 packages/shell/package.json create mode 100644 packages/shell/src/advanced.ts create mode 100644 packages/shell/src/advancedBarrel.ts create mode 100644 packages/shell/src/barrel.ts create mode 100644 packages/shell/src/index.ts create mode 100644 packages/shell/tsconfig.base.json create mode 100644 packages/shell/tsconfig.commonjs.json create mode 100644 packages/shell/tsconfig.json create mode 100644 packages/shell/typedoc.json create mode 100644 packages/spore/src/advancedBarrel.ts create mode 100644 packages/spore/src/barrel.ts diff --git a/.changeset/large-points-obey.md b/.changeset/large-points-obey.md new file mode 100644 index 00000000..34ad023f --- /dev/null +++ b/.changeset/large-points-obey.md @@ -0,0 +1,7 @@ +--- +"@ckb-ccc/spore": minor +"@ckb-ccc/shell": minor +"@ckb-ccc/ccc": minor +--- + +feat: export backend packages in @ckb-ccc/shell diff --git a/README.md b/README.md index 1b307d8b..e209b7e4 100644 --- a/README.md +++ b/README.md @@ -131,7 +131,7 @@ Follow the prompts to select your preferred framework template and start buildin We design CCC for both front-end and back-end developers. You need only one package to fulfil all your needs: -- [NodeJS](https://www.npmjs.com/package/@ckb-ccc/core): `npm install @ckb-ccc/core` +- [NodeJS](https://www.npmjs.com/package/@ckb-ccc/shell): `npm install @ckb-ccc/shell` - [Custom UI](https://www.npmjs.com/package/@ckb-ccc/ccc): `npm install @ckb-ccc/ccc` - [Web Component](https://www.npmjs.com/package/@ckb-ccc/connector): `npm install @ckb-ccc/connector` - [React](https://www.npmjs.com/package/@ckb-ccc/connector-react) ([Docs](https://docs.ckbccc.com/modules/_ckb_ccc_connector_react.html)): `npm install @ckb-ccc/connector-react` diff --git a/packages/ccc/package.json b/packages/ccc/package.json index bf27f49f..41cdef12 100644 --- a/packages/ccc/package.json +++ b/packages/ccc/package.json @@ -56,7 +56,7 @@ "access": "public" }, "dependencies": { - "@ckb-ccc/core": "workspace:*", + "@ckb-ccc/shell": "workspace:*", "@ckb-ccc/eip6963": "workspace:*", "@ckb-ccc/joy-id": "workspace:*", "@ckb-ccc/nip07": "workspace:*", diff --git a/packages/ccc/src/advancedBarrel.ts b/packages/ccc/src/advancedBarrel.ts index e971a818..cc735949 100644 --- a/packages/ccc/src/advancedBarrel.ts +++ b/packages/ccc/src/advancedBarrel.ts @@ -1,7 +1,7 @@ -export * from "@ckb-ccc/core/advancedBarrel"; export * from "@ckb-ccc/eip6963/advanced"; export * from "@ckb-ccc/nip07/advanced"; export * from "@ckb-ccc/okx/advanced"; +export * from "@ckb-ccc/shell/advancedBarrel"; export * from "@ckb-ccc/uni-sat/advanced"; export * from "@ckb-ccc/utxo-global/advanced"; export * from "@ckb-ccc/xverse/advanced"; diff --git a/packages/ccc/src/barrel.ts b/packages/ccc/src/barrel.ts index 9720265f..8b46c112 100644 --- a/packages/ccc/src/barrel.ts +++ b/packages/ccc/src/barrel.ts @@ -1,9 +1,9 @@ -export * from "@ckb-ccc/core/barrel"; export * from "@ckb-ccc/eip6963"; export * from "@ckb-ccc/joy-id"; export * from "@ckb-ccc/nip07"; export * from "@ckb-ccc/okx"; export * from "@ckb-ccc/rei"; +export * from "@ckb-ccc/shell/barrel"; export * from "@ckb-ccc/uni-sat"; export * from "@ckb-ccc/utxo-global"; export * from "@ckb-ccc/xverse"; diff --git a/packages/ccc/src/signersController.ts b/packages/ccc/src/signersController.ts index 55171e33..05e58dea 100644 --- a/packages/ccc/src/signersController.ts +++ b/packages/ccc/src/signersController.ts @@ -1,9 +1,9 @@ -import { ccc } from "@ckb-ccc/core"; import { Eip6963 } from "@ckb-ccc/eip6963"; import { JoyId } from "@ckb-ccc/joy-id"; import { Nip07 } from "@ckb-ccc/nip07"; import { Okx } from "@ckb-ccc/okx"; import { Rei } from "@ckb-ccc/rei"; +import { ccc } from "@ckb-ccc/shell"; import { UniSat } from "@ckb-ccc/uni-sat"; import { UtxoGlobal } from "@ckb-ccc/utxo-global"; import { Xverse } from "@ckb-ccc/xverse"; diff --git a/packages/demo/src/app/connected/(tools)/TransferUdt/page.tsx b/packages/demo/src/app/connected/(tools)/TransferUdt/page.tsx index 7922f6cc..28506897 100644 --- a/packages/demo/src/app/connected/(tools)/TransferUdt/page.tsx +++ b/packages/demo/src/app/connected/(tools)/TransferUdt/page.tsx @@ -8,7 +8,6 @@ import { Textarea } from "@/src/components/Textarea"; import { useGetExplorerLink } from "@/src/utils"; import { useApp } from "@/src/context"; import { ButtonsPanel } from "@/src/components/ButtonsPanel"; -import { Udt } from "@ckb-ccc/udt"; export default function TransferUdt() { const { client } = ccc.useCcc(); @@ -84,8 +83,7 @@ export default function TransferUdt() { .split("\n") .map((addr) => ccc.Address.fromString(addr, signer.client)), ); - - const udt = new Udt( + const udt = new ccc.udt.Udt( { txHash: udtTxHash, index: udtIndex, diff --git a/packages/playground/src/app/execute/index.ts b/packages/playground/src/app/execute/index.ts index 905110f9..324c96da 100644 --- a/packages/playground/src/app/execute/index.ts +++ b/packages/playground/src/app/execute/index.ts @@ -1,8 +1,6 @@ import { ccc } from "@ckb-ccc/connector-react"; import * as cccLib from "@ckb-ccc/ccc"; -import * as cccSporeLib from "@ckb-ccc/spore"; import * as cccAdvancedLib from "@ckb-ccc/ccc/advanced"; -import * as cccSporeAdvancedLib from "@ckb-ccc/spore/advanced"; import { ReactNode } from "react"; import ts from "typescript"; import { vlqDecode } from "./vlq"; @@ -60,8 +58,6 @@ export async function execute( "@ckb-ccc/core/advanced": cccAdvancedLib, "@ckb-ccc/ccc": cccLib, "@ckb-ccc/ccc/advanced": cccAdvancedLib, - "@ckb-ccc/spore": cccSporeLib, - "@ckb-ccc/spore/advanced": cccSporeAdvancedLib, "@ckb-ccc/playground": { render: async (tx: ccc.Transaction | unknown) => { if (!(tx instanceof ccc.Transaction)) { diff --git a/packages/shell/.npmignore b/packages/shell/.npmignore new file mode 100644 index 00000000..7a88408a --- /dev/null +++ b/packages/shell/.npmignore @@ -0,0 +1,21 @@ +node_modules/ +misc/ + +*test.js +*test.ts +*test.d.ts +*test.d.ts.map +*spec.js +*spec.ts +*spec.d.ts +*spec.d.ts.map + +tsconfig.json +tsconfig.*.json +eslint.config.mjs +.prettierrc +.prettierignore + +tsconfig.tsbuildinfo +tsconfig.*.tsbuildinfo +.github/ diff --git a/packages/shell/.prettierignore b/packages/shell/.prettierignore new file mode 100644 index 00000000..e7ce6f62 --- /dev/null +++ b/packages/shell/.prettierignore @@ -0,0 +1,13 @@ +node_modules/ + +dist/ +dist.commonjs/ + +.npmignore +.prettierrc +tsconfig.json +eslint.config.mjs +.prettierrc + +tsconfig.tsbuildinfo +.github/ diff --git a/packages/shell/.prettierrc b/packages/shell/.prettierrc new file mode 100644 index 00000000..6390af08 --- /dev/null +++ b/packages/shell/.prettierrc @@ -0,0 +1,5 @@ +{ + "singleQuote": false, + "trailingComma": "all", + "plugins": ["prettier-plugin-organize-imports"] +} diff --git a/packages/shell/README.md b/packages/shell/README.md new file mode 100644 index 00000000..6a831335 --- /dev/null +++ b/packages/shell/README.md @@ -0,0 +1,41 @@ +

+ + Logo + +

+ +

+ CCC Shell +

+ +

+ NPM Version + GitHub commit activity + GitHub last commit + GitHub branch check runs + Playground + App + Docs +

+ +

+ CCC - CKBers' Codebase is a one-stop solution for your CKB JS/TS ecosystem development. +
+ Empower yourself with CCC to discover the unlimited potential of CKB. +
+ Interoperate with wallets from different chain ecosystems. +
+ Fully enabling CKB's Turing completeness and cryptographic freedom power. +

+ +

+ Read more about CCC on our website or GitHub Repo. +

diff --git a/packages/shell/eslint.config.mjs b/packages/shell/eslint.config.mjs new file mode 100644 index 00000000..ca92f09b --- /dev/null +++ b/packages/shell/eslint.config.mjs @@ -0,0 +1,45 @@ +// @ts-check + +import eslint from "@eslint/js"; +import eslintPluginPrettierRecommended from "eslint-plugin-prettier"; +import tseslint from "typescript-eslint"; + +import { dirname } from "path"; +import { fileURLToPath } from "url"; + +export default tseslint.config({ + files: ["**/*.ts"], + extends: [ + eslint.configs.recommended, + ...tseslint.configs.recommendedTypeChecked, + ], + rules: { + "@typescript-eslint/no-unused-vars": [ + "error", + { + args: "all", + argsIgnorePattern: "^_", + caughtErrors: "all", + caughtErrorsIgnorePattern: "^_", + destructuredArrayIgnorePattern: "^_", + varsIgnorePattern: "^_", + ignoreRestSiblings: true, + }, + ], + "@typescript-eslint/unbound-method": ["error", { ignoreStatic: true }], + "@typescript-eslint/no-unsafe-member-access": "off", + "@typescript-eslint/require-await": "off", + "no-empty": "off", + "prefer-const": [ + "error", + { ignoreReadBeforeAssign: true, destructuring: "all" }, + ], + }, + plugins: { prettier: eslintPluginPrettierRecommended }, + languageOptions: { + parserOptions: { + project: true, + tsconfigRootDir: dirname(fileURLToPath(import.meta.url)), + }, + }, +}); diff --git a/packages/shell/misc/basedirs/dist.commonjs/package.json b/packages/shell/misc/basedirs/dist.commonjs/package.json new file mode 100644 index 00000000..5bbefffb --- /dev/null +++ b/packages/shell/misc/basedirs/dist.commonjs/package.json @@ -0,0 +1,3 @@ +{ + "type": "commonjs" +} diff --git a/packages/shell/misc/basedirs/dist/package.json b/packages/shell/misc/basedirs/dist/package.json new file mode 100644 index 00000000..aead43de --- /dev/null +++ b/packages/shell/misc/basedirs/dist/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} \ No newline at end of file diff --git a/packages/shell/package.json b/packages/shell/package.json new file mode 100644 index 00000000..895ea59a --- /dev/null +++ b/packages/shell/package.json @@ -0,0 +1,64 @@ +{ + "name": "@ckb-ccc/shell", + "version": "1.0.7", + "description": "Backend Shell of CCC - CKBer's Codebase. Common Chains Connector.", + "author": "Hanssen0 ", + "license": "MIT", + "private": false, + "homepage": "https://github.com/ckb-devrel/ccc", + "repository": { + "type": "git", + "url": "git://github.com/ckb-devrel/ccc.git" + }, + "sideEffects": false, + "main": "dist.commonjs/index.js", + "module": "dist/index.js", + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist.commonjs/index.js", + "default": "./dist.commonjs/index.js" + }, + "./barrel": { + "import": "./dist/barrel.js", + "require": "./dist.commonjs/barrel.js", + "default": "./dist.commonjs/barrel.js" + }, + "./advancedBarrel": { + "import": "./dist/advancedBarrel.js", + "require": "./dist.commonjs/advancedBarrel.js", + "default": "./dist.commonjs/advancedBarrel.js" + }, + "./advanced": { + "import": "./dist/advanced.js", + "require": "./dist.commonjs/advanced.js", + "default": "./dist.commonjs/advanced.js" + } + }, + "scripts": { + "build": "rimraf ./dist && rimraf ./dist.commonjs && tsc && tsc --project tsconfig.commonjs.json && copyfiles -u 2 misc/basedirs/**/* .", + "lint": "eslint ./src", + "format": "prettier --write . && eslint --fix ./src" + }, + "devDependencies": { + "@eslint/js": "^9.1.1", + "copyfiles": "^2.4.1", + "eslint": "^9.1.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.1.3", + "prettier": "^3.2.5", + "prettier-plugin-organize-imports": "^3.2.4", + "rimraf": "^5.0.5", + "typescript": "^5.4.5", + "typescript-eslint": "^7.7.0" + }, + "publishConfig": { + "access": "public" + }, + "dependencies": { + "@ckb-ccc/core": "workspace:*", + "@ckb-ccc/spore": "workspace:*", + "@ckb-ccc/udt": "workspace:*", + "@ckb-ccc/ssri": "workspace:*" + } +} diff --git a/packages/shell/src/advanced.ts b/packages/shell/src/advanced.ts new file mode 100644 index 00000000..39f50055 --- /dev/null +++ b/packages/shell/src/advanced.ts @@ -0,0 +1,2 @@ +export * from "./advancedBarrel.js"; +export * as cccA from "./advancedBarrel.js"; diff --git a/packages/shell/src/advancedBarrel.ts b/packages/shell/src/advancedBarrel.ts new file mode 100644 index 00000000..ec239348 --- /dev/null +++ b/packages/shell/src/advancedBarrel.ts @@ -0,0 +1,2 @@ +export * from "@ckb-ccc/core/advancedBarrel"; +export { sporeA } from "@ckb-ccc/spore/advanced"; diff --git a/packages/shell/src/barrel.ts b/packages/shell/src/barrel.ts new file mode 100644 index 00000000..9cca15d6 --- /dev/null +++ b/packages/shell/src/barrel.ts @@ -0,0 +1,4 @@ +export * from "@ckb-ccc/core/barrel"; +export { spore } from "@ckb-ccc/spore"; +export { ssri } from "@ckb-ccc/ssri"; +export { udt } from "@ckb-ccc/udt"; diff --git a/packages/shell/src/index.ts b/packages/shell/src/index.ts new file mode 100644 index 00000000..6784179f --- /dev/null +++ b/packages/shell/src/index.ts @@ -0,0 +1,2 @@ +export * from "./barrel.js"; +export * as ccc from "./barrel.js"; diff --git a/packages/shell/tsconfig.base.json b/packages/shell/tsconfig.base.json new file mode 100644 index 00000000..7e5ac952 --- /dev/null +++ b/packages/shell/tsconfig.base.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "target": "es2020", + "incremental": true, + "allowJs": true, + "importHelpers": false, + "declaration": true, + "declarationMap": true, + "experimentalDecorators": true, + "useDefineForClassFields": false, + "esModuleInterop": true, + "strict": true, + "noImplicitAny": true, + "strictBindCallApply": true, + "strictNullChecks": true, + "alwaysStrict": true, + "noFallthroughCasesInSwitch": true, + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true + }, + "include": ["src/**/*"] +} diff --git a/packages/shell/tsconfig.commonjs.json b/packages/shell/tsconfig.commonjs.json new file mode 100644 index 00000000..76a25e98 --- /dev/null +++ b/packages/shell/tsconfig.commonjs.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.base.json", + "compilerOptions": { + "module": "NodeNext", + "moduleResolution": "NodeNext", + "outDir": "./dist.commonjs" + } +} diff --git a/packages/shell/tsconfig.json b/packages/shell/tsconfig.json new file mode 100644 index 00000000..df22faec --- /dev/null +++ b/packages/shell/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.base.json", + "compilerOptions": { + "module": "ESNext", + "moduleResolution": "Bundler", + "outDir": "./dist", + } +} diff --git a/packages/shell/typedoc.json b/packages/shell/typedoc.json new file mode 100644 index 00000000..043f273b --- /dev/null +++ b/packages/shell/typedoc.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://typedoc.org/schema.json", + "entryPoints": ["./src/index.ts", "./src/advanced.ts"], + "extends": ["../../typedoc.base.json"], + "name": "@ckb-ccc shell" +} diff --git a/packages/spore/package.json b/packages/spore/package.json index 3d4c805c..40cb7944 100644 --- a/packages/spore/package.json +++ b/packages/spore/package.json @@ -19,10 +19,20 @@ "require": "./dist.commonjs/index.js", "default": "./dist.commonjs/index.js" }, + "./barrel": { + "import": "./dist/barrel.js", + "require": "./dist.commonjs/barrel.js", + "default": "./dist.commonjs/barrel.js" + }, "./advanced": { "import": "./dist/advanced.js", "require": "./dist.commonjs/advanced.js", "default": "./dist.commonjs/advanced.js" + }, + "./advancedBarrel": { + "import": "./dist/advancedBarrel.js", + "require": "./dist.commonjs/advancedBarrel.js", + "default": "./dist.commonjs/advancedBarrel.js" } }, "scripts": { diff --git a/packages/spore/src/advanced.ts b/packages/spore/src/advanced.ts index 321b7e9d..ddafe885 100644 --- a/packages/spore/src/advanced.ts +++ b/packages/spore/src/advanced.ts @@ -1,4 +1,2 @@ -export * from "./cobuild/index.js"; -export * from "./codec/index.js"; -export * from "./predefined/advanced.js"; -export * from "./spore/advanced.js"; +export * from "./advancedBarrel.js"; +export * as sporeA from "./advancedBarrel.js"; diff --git a/packages/spore/src/advancedBarrel.ts b/packages/spore/src/advancedBarrel.ts new file mode 100644 index 00000000..321b7e9d --- /dev/null +++ b/packages/spore/src/advancedBarrel.ts @@ -0,0 +1,4 @@ +export * from "./cobuild/index.js"; +export * from "./codec/index.js"; +export * from "./predefined/advanced.js"; +export * from "./spore/advanced.js"; diff --git a/packages/spore/src/barrel.ts b/packages/spore/src/barrel.ts new file mode 100644 index 00000000..cd38a1fb --- /dev/null +++ b/packages/spore/src/barrel.ts @@ -0,0 +1,4 @@ +export * from "./cluster/index.js"; +export * as dob from "./dob/index.js"; +export * from "./predefined/index.js"; +export * from "./spore/index.js"; diff --git a/packages/spore/src/index.ts b/packages/spore/src/index.ts index cd38a1fb..671b78e2 100644 --- a/packages/spore/src/index.ts +++ b/packages/spore/src/index.ts @@ -1,4 +1,2 @@ -export * from "./cluster/index.js"; -export * as dob from "./dob/index.js"; -export * from "./predefined/index.js"; -export * from "./spore/index.js"; +export * from "./barrel.js"; +export * as spore from "./barrel.js"; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7a6ee556..a163032e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -43,9 +43,6 @@ importers: packages/ccc: dependencies: - '@ckb-ccc/core': - specifier: workspace:* - version: link:../core '@ckb-ccc/eip6963': specifier: workspace:* version: link:../eip6963 @@ -61,6 +58,9 @@ importers: '@ckb-ccc/rei': specifier: workspace:* version: link:../rei + '@ckb-ccc/shell': + specifier: workspace:* + version: link:../shell '@ckb-ccc/uni-sat': specifier: workspace:* version: link:../uni-sat @@ -854,6 +854,52 @@ importers: specifier: ^7.7.0 version: 7.18.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) + packages/shell: + dependencies: + '@ckb-ccc/core': + specifier: workspace:* + version: link:../core + '@ckb-ccc/spore': + specifier: workspace:* + version: link:../spore + '@ckb-ccc/ssri': + specifier: workspace:* + version: link:../ssri + '@ckb-ccc/udt': + specifier: workspace:* + version: link:../udt + devDependencies: + '@eslint/js': + specifier: ^9.1.1 + version: 9.9.0 + copyfiles: + specifier: ^2.4.1 + version: 2.4.1 + eslint: + specifier: ^9.1.0 + version: 9.9.0(jiti@1.21.6) + eslint-config-prettier: + specifier: ^9.1.0 + version: 9.1.0(eslint@9.9.0(jiti@1.21.6)) + eslint-plugin-prettier: + specifier: ^5.1.3 + version: 5.2.1(@types/eslint@9.6.0)(eslint-config-prettier@9.1.0(eslint@9.9.0(jiti@1.21.6)))(eslint@9.9.0(jiti@1.21.6))(prettier@3.3.3) + prettier: + specifier: ^3.2.5 + version: 3.3.3 + prettier-plugin-organize-imports: + specifier: ^3.2.4 + version: 3.2.4(prettier@3.3.3)(typescript@5.5.4) + rimraf: + specifier: ^5.0.5 + version: 5.0.10 + typescript: + specifier: ^5.4.5 + version: 5.5.4 + typescript-eslint: + specifier: ^7.7.0 + version: 7.18.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4) + packages/spore: dependencies: '@ckb-ccc/core':