From 0617478d6da9c3952878b014f1683dc76ef81485 Mon Sep 17 00:00:00 2001 From: Pengfei Date: Mon, 2 Dec 2024 15:21:42 +0800 Subject: [PATCH 1/2] fix(create-blocklet): validate project name compliance before creation(#372) --- README.md | 15 +++++++++++++++ packages/create-app/index.js | 30 +++++++++++++++++------------- packages/create-app/lib/utils.js | 4 ++++ pnpm-lock.yaml | 20 +++++++++++++++++--- 4 files changed, 53 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 437e510e..a496ec39 100644 --- a/README.md +++ b/README.md @@ -37,3 +37,18 @@ TBD pnpm install ``` + +## Run the command + +```bash +node packages/create-app/index.js test-demo +``` + +## Change Blocklet Server Command + +Change the file `packages/create-app/lib/constant.js` + +``` +// your command alias +export const BLOCKLET_COMMAND = 'bn'; +``` diff --git a/packages/create-app/index.js b/packages/create-app/index.js index 985f8327..26003dff 100755 --- a/packages/create-app/index.js +++ b/packages/create-app/index.js @@ -1,29 +1,30 @@ #!/usr/bin/env node -import ejs from 'ejs'; +import { isValid, toTypeInfo, types } from '@arcblock/did'; import boxen from 'boxen'; -import { fileURLToPath } from 'url'; import { execSync } from 'child_process'; -import { cd, argv, fs, YAML, chalk, path } from 'zx'; +import ejs from 'ejs'; +import * as envfile from 'envfile'; import ora from 'ora'; import prompts from 'prompts'; -import { isValid, toTypeInfo, types } from '@arcblock/did'; -import * as envfile from 'envfile'; +import { fileURLToPath } from 'url'; +import { argv, cd, chalk, fs, path, YAML } from 'zx'; import { echoBrand, echoDocument } from './lib/arcblock.js'; -import { getUser } from './lib/index.js'; -import { checkServerInstalled, checkServerRunning, checkSatisfiedVersion, getServerDirectory } from './lib/server.js'; import { getBlockletDidList } from './lib/did.js'; import { initGitRepo } from './lib/git.js'; +import { getUser } from './lib/index.js'; +import { checkSatisfiedVersion, checkServerInstalled, checkServerRunning, getServerDirectory } from './lib/server.js'; import { + checkLerna, + checkYarn, copy, emptyDir, + fuzzyQuery, isEmpty, + isValidName, isValidPackageName, toValidPackageName, - fuzzyQuery, - checkLerna, - checkYarn, } from './lib/utils.js'; const { yellow, red, green, cyan, blue, bold } = chalk; @@ -247,18 +248,21 @@ async function init() { let result = {}; const authorInfo = await getUser(); + const transferName = toValidPackageName(defaultProjectName); try { result = await prompts( [ { - type: targetDir && !['.', './'].includes(targetDir) ? null : 'text', + type: isValidName(defaultProjectName) && targetDir && !['.', './'].includes(targetDir) ? null : 'text', name: 'projectName', message: 'Project name:', - initial: defaultProjectName, + initial: transferName, onState: (state) => { - projectName = state.value.trim() || defaultProjectName; + projectName = state.value.trim() || transferName; }, + validate: (value) => + isValidName(value) ? true : 'Please enter a valid project name, only a~z, A~Z, 0~9, - and _ are allowed.', }, { type: () => (!fs.existsSync(targetDir) || isEmpty(targetDir) ? null : 'confirm'), diff --git a/packages/create-app/lib/utils.js b/packages/create-app/lib/utils.js index fe176f8c..bc147212 100644 --- a/packages/create-app/lib/utils.js +++ b/packages/create-app/lib/utils.js @@ -11,6 +11,10 @@ export function copy(src, dest) { } } +export function isValidName(name) { + return /^[a-zA-Z0-9][-a-zA-Z0-9_]{2,128}$/.test(name); +} + export function isValidPackageName(projectName) { return /^(?:@[a-z0-9-*~][a-z0-9-*._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/.test(projectName); } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 51396115..d394e276 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -962,6 +962,15 @@ packages: supports-color: optional: true + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + decode-uri-component@0.2.0: resolution: {integrity: sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==} engines: {node: '>=0.10'} @@ -2897,7 +2906,7 @@ snapshots: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.3.3) '@typescript-eslint/visitor-keys': 7.18.0 - debug: 4.3.6 + debug: 4.3.7 eslint: 8.57.1 optionalDependencies: typescript: 5.3.3 @@ -2920,7 +2929,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 7.14.1(typescript@5.3.3) '@typescript-eslint/utils': 7.14.1(eslint@8.57.1)(typescript@5.3.3) - debug: 4.3.6 + debug: 4.3.7 eslint: 8.57.1 ts-api-utils: 1.3.0(typescript@5.3.3) optionalDependencies: @@ -2953,7 +2962,7 @@ snapshots: dependencies: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 - debug: 4.3.6 + debug: 4.3.7 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.5 @@ -3450,6 +3459,11 @@ snapshots: dependencies: ms: 2.1.2 + debug@4.3.7: + dependencies: + ms: 2.1.3 + optional: true + decode-uri-component@0.2.0: {} decompress-response@3.3.0: From 38e87f3974666ca757b59ba356c75bb528c993c3 Mon Sep 17 00:00:00 2001 From: Pengfei Date: Mon, 2 Dec 2024 16:43:20 +0800 Subject: [PATCH 2/2] chore: update version --- CHANGELOG.md | 4 ++++ package.json | 2 +- packages/create-app/package.json | 2 +- packages/create-app/templates/did-connect-dapp/package.json | 2 +- packages/create-app/templates/did-wallet-dapp/package.json | 2 +- packages/create-app/templates/react-dapp-ts/package.json | 2 +- packages/create-app/templates/react-dapp/package.json | 2 +- packages/create-app/templates/react-gun-dapp/package.json | 2 +- packages/create-app/templates/react-static/package.json | 2 +- packages/create-app/templates/solidjs-dapp/package.json | 2 +- packages/create-app/templates/solidjs-static/package.json | 2 +- packages/create-app/templates/svelte-dapp/package.json | 2 +- packages/create-app/templates/svelte-static/package.json | 2 +- packages/create-app/templates/todo-list-example/package.json | 2 +- packages/create-app/templates/vue-dapp/package.json | 2 +- packages/create-app/templates/vue-static/package.json | 2 +- packages/create-app/templates/vue-ts-static/package.json | 2 +- packages/create-app/templates/vue2-dapp/package.json | 2 +- packages/create-app/templates/vue2-static/package.json | 2 +- plugins/vite-plugin-blocklet/package.json | 2 +- plugins/vite-plugin-wss-hmr/package.json | 2 +- version | 2 +- website/docs/blocklet.yml | 2 +- website/pages/blocklet.yml | 2 +- 24 files changed, 27 insertions(+), 23 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b47ed2c7..d852435e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.9.14 (2024-12-2) + +- fix(create-blocklet): validate project name compliance before creation(#372) + ## 0.9.13 (2024-11-13) - chore(deps): update deps diff --git a/package.json b/package.json index a5e1de79..4be510b1 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "create-blocklet", "private": true, - "version": "0.9.13", + "version": "0.9.14", "description": "", "keywords": [], "author": "", diff --git a/packages/create-app/package.json b/packages/create-app/package.json index f89e3e2b..ab881eee 100644 --- a/packages/create-app/package.json +++ b/packages/create-app/package.json @@ -1,6 +1,6 @@ { "name": "create-blocklet", - "version": "0.9.13", + "version": "0.9.14", "exports": "./index.js", "type": "module", "repository": "git@github.com:blocklet/create-blocklet.git", diff --git a/packages/create-app/templates/did-connect-dapp/package.json b/packages/create-app/templates/did-connect-dapp/package.json index 22e1dd54..f14f49d7 100644 --- a/packages/create-app/templates/did-connect-dapp/package.json +++ b/packages/create-app/templates/did-connect-dapp/package.json @@ -77,7 +77,7 @@ "rimraf": "^5.0.10", "simple-git-hooks": "^2.11.1", "vite": "^5.4.8", - "vite-plugin-blocklet": "^0.9.13", + "vite-plugin-blocklet": "^0.9.14", "vite-plugin-svgr": "^4.2.0", "zx": "^8.1.8" }, diff --git a/packages/create-app/templates/did-wallet-dapp/package.json b/packages/create-app/templates/did-wallet-dapp/package.json index 3c396ebf..288f6db2 100644 --- a/packages/create-app/templates/did-wallet-dapp/package.json +++ b/packages/create-app/templates/did-wallet-dapp/package.json @@ -52,7 +52,7 @@ "simple-git-hooks": "^2.11.1", "vite": "^5.4.8", "vite-node": "^2.1.1", - "vite-plugin-blocklet": "^0.9.13", + "vite-plugin-blocklet": "^0.9.14", "vite-plugin-require": "^1.2.14", "vite-plugin-svgr": "^4.2.0", "zx": "^8.1.8" diff --git a/packages/create-app/templates/react-dapp-ts/package.json b/packages/create-app/templates/react-dapp-ts/package.json index f7d3d5f2..320cb0eb 100644 --- a/packages/create-app/templates/react-dapp-ts/package.json +++ b/packages/create-app/templates/react-dapp-ts/package.json @@ -81,7 +81,7 @@ "ts-node": "^10.9.2", "typescript": "^5.6.2", "vite": "^5.4.8", - "vite-plugin-blocklet": "^0.9.13", + "vite-plugin-blocklet": "^0.9.14", "vite-plugin-svgr": "^4.2.0", "zx": "^8.1.8" }, diff --git a/packages/create-app/templates/react-dapp/package.json b/packages/create-app/templates/react-dapp/package.json index 549922a3..77dd42ec 100644 --- a/packages/create-app/templates/react-dapp/package.json +++ b/packages/create-app/templates/react-dapp/package.json @@ -71,7 +71,7 @@ "rimraf": "^5.0.10", "simple-git-hooks": "^2.11.1", "vite": "^5.4.8", - "vite-plugin-blocklet": "^0.9.13", + "vite-plugin-blocklet": "^0.9.14", "vite-plugin-svgr": "^4.2.0", "zx": "^8.1.8" }, diff --git a/packages/create-app/templates/react-gun-dapp/package.json b/packages/create-app/templates/react-gun-dapp/package.json index f6ebe3bf..41f1e81b 100644 --- a/packages/create-app/templates/react-gun-dapp/package.json +++ b/packages/create-app/templates/react-gun-dapp/package.json @@ -71,7 +71,7 @@ "rimraf": "^5.0.10", "simple-git-hooks": "^2.11.1", "vite": "^5.4.8", - "vite-plugin-blocklet": "^0.9.13", + "vite-plugin-blocklet": "^0.9.14", "vite-plugin-svgr": "^4.2.0", "zx": "^8.1.8" }, diff --git a/packages/create-app/templates/react-static/package.json b/packages/create-app/templates/react-static/package.json index 199b52b0..2a41343a 100644 --- a/packages/create-app/templates/react-static/package.json +++ b/packages/create-app/templates/react-static/package.json @@ -52,7 +52,7 @@ "rimraf": "^5.0.10", "simple-git-hooks": "^2.11.1", "vite": "^5.4.8", - "vite-plugin-blocklet": "^0.9.13", + "vite-plugin-blocklet": "^0.9.14", "vite-plugin-svgr": "^4.2.0", "zx": "^8.1.8" }, diff --git a/packages/create-app/templates/solidjs-dapp/package.json b/packages/create-app/templates/solidjs-dapp/package.json index 943d2514..f38bd181 100644 --- a/packages/create-app/templates/solidjs-dapp/package.json +++ b/packages/create-app/templates/solidjs-dapp/package.json @@ -36,7 +36,7 @@ "rimraf": "^5.0.10", "simple-git-hooks": "^2.11.1", "vite": "^5.4.8", - "vite-plugin-blocklet": "^0.9.13", + "vite-plugin-blocklet": "^0.9.14", "vite-plugin-solid": "^2.10.2", "zx": "^8.1.8" }, diff --git a/packages/create-app/templates/solidjs-static/package.json b/packages/create-app/templates/solidjs-static/package.json index 4ccabcee..4d970d4d 100644 --- a/packages/create-app/templates/solidjs-static/package.json +++ b/packages/create-app/templates/solidjs-static/package.json @@ -32,7 +32,7 @@ "simple-git-hooks": "^2.11.1", "solid-js": "^1.9.1", "vite": "^5.4.8", - "vite-plugin-blocklet": "^0.9.13", + "vite-plugin-blocklet": "^0.9.14", "vite-plugin-solid": "^2.10.2", "zx": "^8.1.8" }, diff --git a/packages/create-app/templates/svelte-dapp/package.json b/packages/create-app/templates/svelte-dapp/package.json index 13419a01..4e59b70f 100644 --- a/packages/create-app/templates/svelte-dapp/package.json +++ b/packages/create-app/templates/svelte-dapp/package.json @@ -44,7 +44,7 @@ "simple-git-hooks": "^2.11.1", "svelte": "^4.2.19", "vite": "^5.4.8", - "vite-plugin-blocklet": "^0.9.13", + "vite-plugin-blocklet": "^0.9.14", "zx": "^8.1.8" }, "lint-staged": { diff --git a/packages/create-app/templates/svelte-static/package.json b/packages/create-app/templates/svelte-static/package.json index 291633ae..b709fc21 100644 --- a/packages/create-app/templates/svelte-static/package.json +++ b/packages/create-app/templates/svelte-static/package.json @@ -25,7 +25,7 @@ "simple-git-hooks": "^2.11.1", "svelte": "^4.2.19", "vite": "^5.4.8", - "vite-plugin-blocklet": "^0.9.13", + "vite-plugin-blocklet": "^0.9.14", "zx": "^8.1.8" }, "lint-staged": { diff --git a/packages/create-app/templates/todo-list-example/package.json b/packages/create-app/templates/todo-list-example/package.json index d5f3c7c0..2eb4a014 100644 --- a/packages/create-app/templates/todo-list-example/package.json +++ b/packages/create-app/templates/todo-list-example/package.json @@ -96,7 +96,7 @@ "ts-node": "^10.9.2", "typescript": "^5.6.2", "vite": "^5.4.8", - "vite-plugin-blocklet": "^0.9.13", + "vite-plugin-blocklet": "^0.9.14", "vite-plugin-svgr": "^4.2.0", "zx": "^8.1.8" }, diff --git a/packages/create-app/templates/vue-dapp/package.json b/packages/create-app/templates/vue-dapp/package.json index 02ed289d..403a6ae4 100644 --- a/packages/create-app/templates/vue-dapp/package.json +++ b/packages/create-app/templates/vue-dapp/package.json @@ -49,7 +49,7 @@ "rimraf": "^5.0.10", "simple-git-hooks": "^2.11.1", "vite": "^5.4.8", - "vite-plugin-blocklet": "^0.9.13", + "vite-plugin-blocklet": "^0.9.14", "vue": "^3.5.10", "zx": "^8.1.8" }, diff --git a/packages/create-app/templates/vue-static/package.json b/packages/create-app/templates/vue-static/package.json index a3133295..6c6256bc 100644 --- a/packages/create-app/templates/vue-static/package.json +++ b/packages/create-app/templates/vue-static/package.json @@ -30,7 +30,7 @@ "rimraf": "^5.0.10", "simple-git-hooks": "^2.11.1", "vite": "^5.4.8", - "vite-plugin-blocklet": "^0.9.13", + "vite-plugin-blocklet": "^0.9.14", "vue": "^3.5.10", "zx": "^8.1.8" }, diff --git a/packages/create-app/templates/vue-ts-static/package.json b/packages/create-app/templates/vue-ts-static/package.json index 247a54c5..e43ec56f 100644 --- a/packages/create-app/templates/vue-ts-static/package.json +++ b/packages/create-app/templates/vue-ts-static/package.json @@ -39,7 +39,7 @@ "taze": "^0.16.9", "typescript": "^5.6.2", "vite": "^5.4.8", - "vite-plugin-blocklet": "^0.9.13", + "vite-plugin-blocklet": "^0.9.14", "vue-tsc": "^2.1.6", "zx": "^8.1.8" }, diff --git a/packages/create-app/templates/vue2-dapp/package.json b/packages/create-app/templates/vue2-dapp/package.json index 5cd2fba0..f7d6d9d1 100644 --- a/packages/create-app/templates/vue2-dapp/package.json +++ b/packages/create-app/templates/vue2-dapp/package.json @@ -48,7 +48,7 @@ "rimraf": "^5.0.10", "simple-git-hooks": "^2.11.1", "vite": "^5.4.8", - "vite-plugin-blocklet": "^0.9.13", + "vite-plugin-blocklet": "^0.9.14", "vue": "^2.7.16", "zx": "^8.1.8" }, diff --git a/packages/create-app/templates/vue2-static/package.json b/packages/create-app/templates/vue2-static/package.json index 29e34bf2..42525c69 100644 --- a/packages/create-app/templates/vue2-static/package.json +++ b/packages/create-app/templates/vue2-static/package.json @@ -30,7 +30,7 @@ "rimraf": "^5.0.10", "simple-git-hooks": "^2.11.1", "vite": "^5.4.8", - "vite-plugin-blocklet": "^0.9.13", + "vite-plugin-blocklet": "^0.9.14", "vue": "^2.7.16", "zx": "^8.1.8" }, diff --git a/plugins/vite-plugin-blocklet/package.json b/plugins/vite-plugin-blocklet/package.json index 435be3f0..14dc7b07 100644 --- a/plugins/vite-plugin-blocklet/package.json +++ b/plugins/vite-plugin-blocklet/package.json @@ -1,7 +1,7 @@ { "name": "vite-plugin-blocklet", "type": "module", - "version": "0.9.13", + "version": "0.9.14", "description": "", "main": "index.js", "files": [ diff --git a/plugins/vite-plugin-wss-hmr/package.json b/plugins/vite-plugin-wss-hmr/package.json index 4a9ae759..54c36680 100644 --- a/plugins/vite-plugin-wss-hmr/package.json +++ b/plugins/vite-plugin-wss-hmr/package.json @@ -1,7 +1,7 @@ { "name": "vite-plugin-wss-hmr", "type": "module", - "version": "0.9.13", + "version": "0.9.14", "description": "", "main": "index.js", "exports": { diff --git a/version b/version index 6af8ded7..69010fa5 100644 --- a/version +++ b/version @@ -1 +1 @@ -0.9.13 \ No newline at end of file +0.9.14 \ No newline at end of file diff --git a/website/docs/blocklet.yml b/website/docs/blocklet.yml index ab00a609..e4de6a66 100644 --- a/website/docs/blocklet.yml +++ b/website/docs/blocklet.yml @@ -13,7 +13,7 @@ repository: type: git url: git+https://github.com/blocklet/create-blocklet.git specVersion: 1.2.8 -version: 0.9.13 +version: 0.9.14 logo: logo.png files: - logo.png diff --git a/website/pages/blocklet.yml b/website/pages/blocklet.yml index 7c8316dc..d4216f09 100644 --- a/website/pages/blocklet.yml +++ b/website/pages/blocklet.yml @@ -13,7 +13,7 @@ repository: type: git url: git+https://github.com/blocklet/create-blocklet.git specVersion: 1.2.8 -version: 0.9.13 +version: 0.9.14 logo: logo.png files: - logo.png