create-blocklet 0.9.25 → 0.9.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/index.js +46 -5
  2. package/package.json +1 -1
  3. package/templates/component-studio/.cursor/rules/@metadata-json.mdc +549 -0
  4. package/templates/component-studio/.cursor/rules/component-studio.mdc +138 -0
  5. package/templates/component-studio/.cursor/rules/index-tsx.mdc +192 -0
  6. package/templates/component-studio/.init-component-studio +0 -0
  7. package/templates/component-studio/README.md +44 -0
  8. package/templates/component-studio/_theme.tsx +4 -0
  9. package/templates/component-studio/api/dev.ts +21 -0
  10. package/templates/component-studio/api/src/index.ts +50 -0
  11. package/templates/component-studio/api/src/libs/auth.ts +17 -0
  12. package/templates/component-studio/api/src/libs/env.ts +6 -0
  13. package/templates/component-studio/api/src/libs/logger.ts +3 -0
  14. package/templates/component-studio/api/src/routes/index.ts +12 -0
  15. package/templates/component-studio/api/third.d.ts +17 -0
  16. package/templates/component-studio/biome.json +53 -0
  17. package/templates/component-studio/blocklet.md +8 -0
  18. package/templates/component-studio/blocklet.yml +58 -0
  19. package/templates/component-studio/index.html +15 -0
  20. package/templates/component-studio/logo.png +0 -0
  21. package/templates/component-studio/package.json +117 -0
  22. package/templates/component-studio/scripts/build-clean.mjs +6 -0
  23. package/templates/component-studio/scripts/bump-version.mjs +39 -0
  24. package/templates/component-studio/scripts/init-component-studio.mjs +21 -0
  25. package/templates/component-studio/src/HelloWorld/@metadata.json +433 -0
  26. package/templates/component-studio/src/HelloWorld/index.tsx +560 -0
  27. package/templates/component-studio/template-info.json +12 -0
  28. package/templates/component-studio/tsconfig.api.json +12 -0
  29. package/templates/component-studio/tsconfig.json +102 -0
  30. package/templates/component-studio/vite-server.config.ts +20 -0
  31. package/templates/component-studio/vite.config.ts +28 -0
  32. package/templates/did-connect-dapp/package.json +1 -1
  33. package/templates/did-wallet-dapp/package.json +1 -1
  34. package/templates/react-aigne-dapp/package.json +1 -1
  35. package/templates/react-dapp/package.json +1 -1
  36. package/templates/react-dapp-ts/package.json +1 -1
  37. package/templates/react-gun-dapp/package.json +1 -1
  38. package/templates/react-static/package.json +1 -1
  39. package/templates/solidjs-dapp/package.json +1 -1
  40. package/templates/solidjs-static/package.json +1 -1
  41. package/templates/svelte-dapp/package.json +1 -1
  42. package/templates/svelte-static/package.json +1 -1
  43. package/templates/todo-list-example/package.json +1 -1
  44. package/templates/vue-dapp/package.json +1 -1
  45. package/templates/vue-static/package.json +1 -1
  46. package/templates/vue-ts-static/package.json +1 -1
  47. package/templates/vue2-dapp/package.json +1 -1
  48. package/templates/vue2-static/package.json +1 -1
@@ -0,0 +1,117 @@
1
+ {
2
+ "name": "template-component-studio",
3
+ "description": "A Blocklet to help you develop components for Pages Kit",
4
+ "private": true,
5
+ "version": "0.1.0",
6
+ "engines": {
7
+ "npm": "please-use-pnpm",
8
+ "yarn": "please-use-pnpm",
9
+ "node": ">=18",
10
+ "pnpm": ">=9"
11
+ },
12
+ "scripts": {
13
+ "dev": "COMPONENT_STORE_URL=https://test.store.blocklet.dev blocklet dev",
14
+ "lint": "biome check . && tsc --noEmit",
15
+ "lint:fix": "biome check --apply .",
16
+ "format": "biome format --write .",
17
+ "start": "vite-node -c vite-server.config.ts -w api/dev.ts",
18
+ "clean": "node scripts/build-clean.mjs",
19
+ "bundle": "tsc --noEmit && npm run bundle:client && npm run bundle:api",
20
+ "bundle:client": "vite build",
21
+ "bundle:api": "npm run clean && tsc -p tsconfig.api.json && blocklet bundle --compact --create-release",
22
+ "deploy": "npm run bundle && blocklet deploy .blocklet/bundle",
23
+ "upload": "npm run bundle && blocklet upload .blocklet/release/blocklet.json",
24
+ "prepare": "npx simple-git-hooks",
25
+ "bump-version": "zx --quiet scripts/bump-version.mjs",
26
+ "dev-front": "vite serve .",
27
+ "build-lib": "node -r dotenv-flow/config -e \"require('@blocklet/pages-kit-block-studio/build-lib')\"",
28
+ "update:deps": "taze -r -n '/arcblock|ocap|abtnode|blocklet|did-connect|did-comment|nedb/' -w -f && pnpm install && pnpm run deduplicate",
29
+ "deduplicate": "pnpm dedupe",
30
+ "preinstall": "npx only-allow pnpm",
31
+ "postinstall": "node scripts/init-component-studio.mjs"
32
+ },
33
+ "lint-staged": {
34
+ "*.{mjs,js,jsx,ts,tsx,css,less,scss,json,graphql}": [
35
+ "biome format --write",
36
+ "biome lint --apply"
37
+ ]
38
+ },
39
+ "browserslist": {
40
+ "production": [
41
+ ">0.2%",
42
+ "not dead",
43
+ "not op_mini all"
44
+ ],
45
+ "development": [
46
+ "last 1 chrome version",
47
+ "last 1 firefox version",
48
+ "last 1 safari version"
49
+ ]
50
+ },
51
+ "dependencies": {
52
+ "@arcblock/did-auth": "^1.19.15",
53
+ "@arcblock/did-auth-storage-nedb": "^1.7.1",
54
+ "@arcblock/did-connect": "^2.12.42",
55
+ "@arcblock/ux": "^2.12.42",
56
+ "@blocklet/pages-kit": "^0.4.74",
57
+ "@blocklet/pages-kit-block-studio": "^0.4.74",
58
+ "@blocklet/pages-kit-inner-components": "^0.4.74",
59
+ "@blocklet/pages-kit-runtime": "^0.4.74",
60
+ "@blocklet/sdk": "^1.16.40",
61
+ "@blocklet/studio-ui": "^0.4.254",
62
+ "@blocklet/ui-react": "^2.12.42",
63
+ "@ocap/client": "^1.19.15",
64
+ "@ocap/mcrypto": "^1.19.15",
65
+ "@ocap/wallet": "^1.19.15",
66
+ "axios": "^1.7.9",
67
+ "cookie-parser": "^1.4.7",
68
+ "cors": "^2.8.5",
69
+ "dotenv-flow": "^4.1.0",
70
+ "express": "^4.21.2",
71
+ "express-async-errors": "^3.1.1"
72
+ },
73
+ "devDependencies": {
74
+ "@biomejs/biome": "1.5.3",
75
+ "@blocklet/js-sdk": "^1.16.40",
76
+ "@types/cookie-parser": "^1.4.8",
77
+ "@types/cors": "^2.8.17",
78
+ "@types/dotenv-flow": "^3.3.3",
79
+ "@types/express": "^4.17.21",
80
+ "@types/node": "^20.17.12",
81
+ "@types/react": "^18.3.18",
82
+ "@types/react-dom": "^18.3.5",
83
+ "@vitejs/plugin-react": "^4.3.4",
84
+ "bumpp": "^9.9.3",
85
+ "cross-env": "^7.0.3",
86
+ "import-sort-style-module": "^6.0.0",
87
+ "lint-staged": "^15.3.0",
88
+ "nodemon": "^3.1.9",
89
+ "npm-run-all": "^4.1.5",
90
+ "react": "^18.3.1",
91
+ "react-dom": "^18.3.1",
92
+ "react-router-dom": "^6.26.1",
93
+ "rimraf": "^5.0.10",
94
+ "simple-git-hooks": "^2.11.1",
95
+ "typescript": "^5.7.2",
96
+ "vite": "^5.4.11",
97
+ "vite-node": "^2.1.8",
98
+ "vite-plugin-blocklet": "^0.9.25",
99
+ "vite-plugin-require": "^1.2.14",
100
+ "vite-plugin-svgr": "^4.3.0",
101
+ "vite-tsconfig-paths": "^4.3.2",
102
+ "zx": "^8.3.0"
103
+ },
104
+ "importSort": {
105
+ ".js, .jsx, .mjs": {
106
+ "parser": "babylon",
107
+ "style": "module"
108
+ },
109
+ ".ts, .tsx": {
110
+ "style": "module",
111
+ "parser": "typescript"
112
+ }
113
+ },
114
+ "simple-git-hooks": {
115
+ "pre-commit": "npx lint-staged"
116
+ }
117
+ }
@@ -0,0 +1,6 @@
1
+ /* eslint-disable no-console */
2
+ import { rimrafSync } from 'rimraf';
3
+
4
+ console.log('clean .blocklet folder');
5
+ rimrafSync('.blocklet');
6
+ console.log('clean .blocklet folder done!');
@@ -0,0 +1,39 @@
1
+ /* eslint-disable no-console */
2
+ import { execSync } from 'child_process';
3
+ import { $, chalk, fs } from 'zx';
4
+
5
+ async function main() {
6
+ execSync('bumpp --no-tag --no-commit --no-push package.json', { stdio: 'inherit' });
7
+
8
+ const { version } = await fs.readJSON('package.json');
9
+ await fs.writeFileSync('version', version);
10
+
11
+ console.log(chalk.greenBright(`[info]: start to modify blocklet version to ${version}`));
12
+ await $`blocklet version ${version}`;
13
+ console.log(chalk.greenBright('[info]: blocklet version modified.'));
14
+
15
+ let newChangelog = '';
16
+ try {
17
+ const gitRes = await $`git log --pretty=format:"- %s" "main"...HEAD`;
18
+ newChangelog = gitRes.stdout.trim();
19
+ } catch {
20
+ console.error(chalk.redBright('Could not get git log, please write changelog manually.'));
21
+ }
22
+
23
+ const now = new Date();
24
+ const currentDate = `${now.getFullYear()}-${now.getMonth() + 1}-${now.getDate()}`;
25
+ const title = `## ${version} (${currentDate})`;
26
+
27
+ await fs.ensureFile('CHANGELOG.md');
28
+ const oldChangelog = await fs.readFile('CHANGELOG.md', 'utf8');
29
+ const changelog = [title, newChangelog, oldChangelog].filter((item) => !!item).join('\n\n');
30
+ await fs.writeFile('CHANGELOG.md', changelog);
31
+
32
+ console.log(`\nNow you can make adjustments to ${chalk.cyan('CHANGELOG.md')} . Then press enter to continue.`);
33
+
34
+ process.stdin.setRawMode(true);
35
+ process.stdin.resume();
36
+ process.stdin.on('data', process.exit.bind(process, 0));
37
+ }
38
+
39
+ main();
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env node
2
+ import { execSync } from 'child_process';
3
+ import fs from 'fs';
4
+ import path from 'path';
5
+
6
+ const flagFile = path.join(process.cwd(), '.init-component-studio');
7
+
8
+ // check the flag file is exists
9
+ if (fs.existsSync(flagFile)) {
10
+ try {
11
+ // remove flag file to avoid infinite loop
12
+ fs.unlinkSync(flagFile);
13
+ // execute update:deps script
14
+ console.log('auto updating dependencies...');
15
+ execSync('pnpm run update:deps', { stdio: 'inherit' });
16
+ } catch (error) {
17
+ process.exit(1);
18
+ }
19
+ } else {
20
+ // skip script
21
+ }
@@ -0,0 +1,433 @@
1
+ {
2
+ "id": "KEHGy3vdflE8JGrV",
3
+ "createdAt": "2025-03-20T16:01:56.655Z",
4
+ "updatedAt": "2025-03-21T01:24:04.008Z",
5
+ "name": "HelloWorld",
6
+ "description": "",
7
+ "properties": {
8
+ "gs1rn5jmxfvpxptx": {
9
+ "index": 0,
10
+ "data": {
11
+ "id": "gs1rn5jmxfvpxptx",
12
+ "key": "title",
13
+ "type": "string",
14
+ "visible": true,
15
+ "locales": {
16
+ "zh": {
17
+ "name": "标题",
18
+ "defaultValue": "Hello World"
19
+ },
20
+ "en": {
21
+ "name": "Title",
22
+ "defaultValue": "Hello World"
23
+ }
24
+ }
25
+ }
26
+ },
27
+ "9ajrz12ik7esfk1z": {
28
+ "index": 1,
29
+ "data": {
30
+ "id": "9ajrz12ik7esfk1z",
31
+ "key": "description",
32
+ "type": "string",
33
+ "visible": true,
34
+ "locales": {
35
+ "zh": {
36
+ "name": "描述",
37
+ "defaultValue": "这是你的创意实验室,在这里可以:\n- 设计和构建各类强大组件\n- 将创意转化为可复用代码\n- 打造专属于您的组件库\n释放你的开发潜能,开始创作吧!"
38
+ },
39
+ "en": {
40
+ "name": "Description",
41
+ "defaultValue": "This is your creative lab, where you can:\n- Design and build powerful components\n- Transform ideas into reusable code\n- Create your own component library\nUnleash your development potential and start creating!"
42
+ }
43
+ }
44
+ }
45
+ },
46
+ "3ckcfvf6b7zyskk8": {
47
+ "index": 2,
48
+ "data": {
49
+ "id": "3ckcfvf6b7zyskk8",
50
+ "key": "logo",
51
+ "type": "url",
52
+ "visible": true,
53
+ "locales": {
54
+ "zh": {
55
+ "defaultValue": {
56
+ "url": "/.well-known/service/blocklet/logo?imageFilter=convert&f=png&h=80",
57
+ "mediaKitUrl": "/.well-known/service/blocklet/logo?imageFilter=convert&f=png&h=80"
58
+ },
59
+ "name": "Logo"
60
+ },
61
+ "en": {
62
+ "defaultValue": {
63
+ "url": "/.well-known/service/blocklet/logo?imageFilter=convert&f=png&h=80",
64
+ "mediaKitUrl": "/.well-known/service/blocklet/logo?imageFilter=convert&f=png&h=80"
65
+ },
66
+ "name": "Logo"
67
+ }
68
+ },
69
+ "subProperties": {
70
+ "ML-CDw7LvtlhM_cl": {
71
+ "index": 0,
72
+ "data": {
73
+ "id": "ML-CDw7LvtlhM_cl",
74
+ "key": "url",
75
+ "locales": {
76
+ "en": {
77
+ "name": "url"
78
+ },
79
+ "zh": {
80
+ "name": "url"
81
+ }
82
+ }
83
+ }
84
+ },
85
+ "K-HYgPHtAsmO_mer": {
86
+ "index": 1,
87
+ "data": {
88
+ "id": "K-HYgPHtAsmO_mer",
89
+ "key": "mediaKitUrl",
90
+ "locales": {
91
+ "en": {
92
+ "name": "mediaKitUrl"
93
+ },
94
+ "zh": {
95
+ "name": "mediaKitUrl"
96
+ }
97
+ }
98
+ }
99
+ },
100
+ "evequmAWgWEWZLex": {
101
+ "index": 2,
102
+ "data": {
103
+ "id": "evequmAWgWEWZLex",
104
+ "key": "width",
105
+ "locales": {
106
+ "en": {
107
+ "name": "width"
108
+ },
109
+ "zh": {
110
+ "name": "width"
111
+ }
112
+ }
113
+ }
114
+ },
115
+ "poeAwflRHJeUmfLa": {
116
+ "index": 3,
117
+ "data": {
118
+ "id": "poeAwflRHJeUmfLa",
119
+ "key": "height",
120
+ "locales": {
121
+ "en": {
122
+ "name": "height"
123
+ },
124
+ "zh": {
125
+ "name": "height"
126
+ }
127
+ }
128
+ }
129
+ }
130
+ }
131
+ }
132
+ },
133
+ "x3lqht8ikble1itx": {
134
+ "index": 3,
135
+ "data": {
136
+ "id": "x3lqht8ikble1itx",
137
+ "key": "copyright",
138
+ "type": "string",
139
+ "visible": false,
140
+ "locales": {
141
+ "zh": {
142
+ "name": "版权信息",
143
+ "defaultValue": "由 Component Studio 提供支持"
144
+ },
145
+ "en": {
146
+ "name": "Copyright",
147
+ "defaultValue": "Powered by Component Studio"
148
+ }
149
+ }
150
+ }
151
+ },
152
+ "q0ezdj81v0m14y5m": {
153
+ "index": 4,
154
+ "data": {
155
+ "id": "q0ezdj81v0m14y5m",
156
+ "key": "number",
157
+ "type": "number",
158
+ "visible": true,
159
+ "locales": {
160
+ "zh": {
161
+ "name": "整数",
162
+ "defaultValue": 42
163
+ },
164
+ "en": {
165
+ "name": "Integer",
166
+ "defaultValue": 42
167
+ }
168
+ }
169
+ }
170
+ },
171
+ "bl0rimfebwbencoj": {
172
+ "index": 5,
173
+ "data": {
174
+ "id": "bl0rimfebwbencoj",
175
+ "key": "decimal",
176
+ "type": "decimal",
177
+ "visible": true,
178
+ "locales": {
179
+ "zh": {
180
+ "name": "小数",
181
+ "defaultValue": 3.14
182
+ },
183
+ "en": {
184
+ "name": "Decimal",
185
+ "defaultValue": 3.14
186
+ }
187
+ }
188
+ }
189
+ },
190
+ "gioetxz8d13jabz6": {
191
+ "index": 6,
192
+ "data": {
193
+ "id": "gioetxz8d13jabz6",
194
+ "key": "showCopyright",
195
+ "type": "boolean",
196
+ "visible": true,
197
+ "locales": {
198
+ "zh": {
199
+ "name": "是否展示 Copyright",
200
+ "defaultValue": true
201
+ },
202
+ "en": {
203
+ "name": "Show Description",
204
+ "defaultValue": true
205
+ }
206
+ }
207
+ }
208
+ },
209
+ "yi1oj4rq1eziup1d": {
210
+ "index": 7,
211
+ "data": {
212
+ "id": "yi1oj4rq1eziup1d",
213
+ "key": "titleColor",
214
+ "type": "color",
215
+ "visible": true,
216
+ "locales": {
217
+ "zh": {
218
+ "defaultValue": "rgb(45, 36, 45)",
219
+ "name": "标题颜色"
220
+ },
221
+ "en": {
222
+ "defaultValue": "rgb(44, 39, 44)",
223
+ "name": "Title Color"
224
+ }
225
+ }
226
+ }
227
+ },
228
+ "4f49q5uidkcp5ak4": {
229
+ "index": 8,
230
+ "data": {
231
+ "id": "4f49q5uidkcp5ak4",
232
+ "key": "json",
233
+ "type": "json",
234
+ "visible": true,
235
+ "locales": {
236
+ "zh": {
237
+ "name": "JSON 数据",
238
+ "defaultValue": {
239
+ "foo": "-",
240
+ "bar": "-"
241
+ }
242
+ },
243
+ "en": {
244
+ "name": "JSON Data",
245
+ "defaultValue": {
246
+ "foo": "foo",
247
+ "bar": "bar"
248
+ }
249
+ }
250
+ },
251
+ "subProperties": {
252
+ "gpy89bsxc6ovvlsp": {
253
+ "index": 0,
254
+ "data": {
255
+ "id": "gpy89bsxc6ovvlsp",
256
+ "key": "foo",
257
+ "type": "string",
258
+ "visible": true,
259
+ "locales": {
260
+ "zh": {
261
+ "name": "名称",
262
+ "defaultValue": "-"
263
+ },
264
+ "en": {
265
+ "name": "Foo",
266
+ "defaultValue": "foo"
267
+ }
268
+ }
269
+ }
270
+ },
271
+ "1j34jdhdptp2xm5e": {
272
+ "index": 1,
273
+ "data": {
274
+ "id": "1j34jdhdptp2xm5e",
275
+ "key": "bar",
276
+ "type": "string",
277
+ "visible": true,
278
+ "locales": {
279
+ "zh": {
280
+ "name": "属性",
281
+ "defaultValue": "-"
282
+ },
283
+ "en": {
284
+ "name": "Bar",
285
+ "defaultValue": "bar"
286
+ }
287
+ }
288
+ }
289
+ }
290
+ }
291
+ }
292
+ },
293
+ "lbclpm6mxrp10w2k": {
294
+ "index": 9,
295
+ "data": {
296
+ "id": "lbclpm6mxrp10w2k",
297
+ "key": "array",
298
+ "type": "array",
299
+ "visible": true,
300
+ "locales": {
301
+ "zh": {
302
+ "name": "数组数据",
303
+ "defaultValue": [
304
+ {
305
+ "name": "示例用户",
306
+ "bio": "这是一个示例用户"
307
+ }
308
+ ]
309
+ },
310
+ "en": {
311
+ "name": "Array Data",
312
+ "defaultValue": [
313
+ {
314
+ "name": "Example User",
315
+ "bio": "This is an example user"
316
+ }
317
+ ]
318
+ }
319
+ },
320
+ "subProperties": {
321
+ "1c5vl2p9cn9ryvgh": {
322
+ "index": 0,
323
+ "data": {
324
+ "id": "1c5vl2p9cn9ryvgh",
325
+ "key": "name",
326
+ "type": "string",
327
+ "visible": true,
328
+ "locales": {
329
+ "zh": {
330
+ "name": "姓名",
331
+ "defaultValue": ""
332
+ },
333
+ "en": {
334
+ "name": "Name",
335
+ "defaultValue": ""
336
+ }
337
+ }
338
+ }
339
+ },
340
+ "c5whnccwzqqzaa0w": {
341
+ "index": 1,
342
+ "data": {
343
+ "id": "c5whnccwzqqzaa0w",
344
+ "key": "bio",
345
+ "type": "multiline",
346
+ "visible": true,
347
+ "locales": {
348
+ "zh": {
349
+ "name": "简介",
350
+ "defaultValue": ""
351
+ },
352
+ "en": {
353
+ "name": "Bio",
354
+ "defaultValue": ""
355
+ }
356
+ }
357
+ }
358
+ }
359
+ }
360
+ }
361
+ },
362
+ "s0tund4p07bzizgv": {
363
+ "index": 10,
364
+ "data": {
365
+ "id": "s0tund4p07bzizgv",
366
+ "key": "yaml",
367
+ "type": "yaml",
368
+ "visible": true,
369
+ "locales": {
370
+ "zh": {
371
+ "name": "YAML 配置",
372
+ "defaultValue": ""
373
+ },
374
+ "en": {
375
+ "name": "YAML Configuration",
376
+ "defaultValue": "ya: ya\nml: ml\n"
377
+ }
378
+ },
379
+ "subProperties": {
380
+ "1q8tsreh4k2mhbgs": {
381
+ "index": 0,
382
+ "data": {
383
+ "id": "1q8tsreh4k2mhbgs",
384
+ "key": "ya",
385
+ "type": "string",
386
+ "visible": true,
387
+ "locales": {
388
+ "en": {
389
+ "name": "Ya",
390
+ "defaultValue": "ya"
391
+ }
392
+ }
393
+ }
394
+ },
395
+ "09w8sncxwrj6tldi": {
396
+ "index": 1,
397
+ "data": {
398
+ "id": "09w8sncxwrj6tldi",
399
+ "key": "ml",
400
+ "type": "string",
401
+ "visible": true,
402
+ "locales": {
403
+ "en": {
404
+ "name": "Ml",
405
+ "defaultValue": "ml"
406
+ }
407
+ }
408
+ }
409
+ }
410
+ }
411
+ }
412
+ },
413
+ "8e7g6c61pxcy0q4w": {
414
+ "index": 11,
415
+ "data": {
416
+ "id": "8e7g6c61pxcy0q4w",
417
+ "key": "children",
418
+ "type": "component",
419
+ "visible": true,
420
+ "locales": {
421
+ "zh": {
422
+ "name": "子组件",
423
+ "defaultValue": {}
424
+ },
425
+ "en": {
426
+ "name": "Children Components",
427
+ "defaultValue": {}
428
+ }
429
+ }
430
+ }
431
+ }
432
+ }
433
+ }