From 9fe140d7e3b2015fa0614a946ae6694f47b31231 Mon Sep 17 00:00:00 2001 From: Christian Findlay <16697547+MelbourneDeveloper@users.noreply.github.com> Date: Mon, 8 Jun 2026 10:59:40 +1000 Subject: [PATCH 1/2] Website audit: fix factual inaccuracies, stub out Too Many Cooks, surface dart_node_sql_js - TMC moved to tmc-mcp.dev: homepage cards (en/zh), MCP/vsix READMEs now point there; removed from homepage package ItemList - Correct facts sitewide: pub.dev publisher christianfindlay.com (was dartnode.dev), GitHub MelbourneDeveloper casing, X handle @cfdevelop (was @dart_node) - Unpublished packages (dart_jsx, dart_node_vsix) link to GitHub source instead of 404 pub.dev pages - Add published dart_node_sql_js across homepage (en/zh), nav, API index, docs page (+ new Chinese README/docs/API) - Bump stale install snippets 0.11.0-beta -> 0.13.0-beta; fix nadz ^0.9.0 -> ^0.0.7-beta - Fix broken links: footer /docs/examples -> GitHub examples; 125 broken /api/../ dartdoc cross-links (link rewriter collapses all leading ../) - Correct README/blog code examples to the real package APIs (react, react_native, express, mcp, better_sqlite3, logging) - dart-to-js: -O1 is the dart2js default (not -O2), drop nonexistent build tool, fix --dump-info reference - SEO/social: generate og-image.png (1200x630) + apple-touch-icon.png, remove phantom SearchAction schema, shorten over-long blog title, add nimblesite.co footer copyright - Upgrade eleventy-plugin-techdoc 0.1.0 -> 0.2.0 and @11ty/eleventy -> 3.1.6 --- .gitignore | 1 + packages/dart_logging/README.md | 9 +- packages/dart_logging/README_zh.md | 8 +- packages/dart_node_better_sqlite3/README.md | 37 ++- .../dart_node_better_sqlite3/README_zh.md | 6 +- packages/dart_node_core/README.md | 4 +- packages/dart_node_core/README_zh.md | 4 +- packages/dart_node_express/README.md | 36 ++- packages/dart_node_express/README_zh.md | 26 +- packages/dart_node_mcp/README.md | 29 ++- packages/dart_node_mcp/README_zh.md | 29 ++- packages/dart_node_react/README.md | 186 +++++++------- packages/dart_node_react/README_zh.md | 229 +++++++++--------- packages/dart_node_react_native/README.md | 61 +++-- packages/dart_node_react_native/README_zh.md | 64 +++-- packages/dart_node_sql_js/README_zh.md | 101 ++++++++ packages/dart_node_vsix/README.md | 6 +- packages/dart_node_ws/README.md | 4 +- packages/dart_node_ws/README_zh.md | 4 +- packages/reflux/README.md | 4 +- packages/reflux/README_zh.md | 4 +- website/.gitignore | 2 + website/eleventy.config.js | 8 +- website/package.json | 4 +- website/scripts/copy-readmes.js | 30 ++- website/scripts/generate-api-docs.js | 13 +- website/src/_data/navigation.json | 15 +- website/src/_data/navigation_zh.json | 15 +- website/src/_data/site.json | 12 +- website/src/_includes/layouts/base.njk | 18 +- .../src/assets/images/apple-touch-icon.png | Bin 0 -> 8667 bytes website/src/assets/images/og-image.png | Bin 0 -> 204414 bytes .../src/blog/build-react-website-with-dart.md | 47 +++- website/src/blog/introducing-dart-node.md | 8 +- website/src/docs/dart-to-js.md | 16 +- website/src/docs/getting-started.md | 12 +- website/src/index.njk | 40 +-- website/src/zh/api/index.md | 5 + website/src/zh/blog/introducing-dart-node.md | 6 +- website/src/zh/docs/dart-to-js.md | 16 +- website/src/zh/docs/getting-started.md | 6 +- website/src/zh/index.njk | 18 +- 42 files changed, 718 insertions(+), 425 deletions(-) create mode 100644 packages/dart_node_sql_js/README_zh.md create mode 100644 website/src/assets/images/apple-touch-icon.png create mode 100644 website/src/assets/images/og-image.png diff --git a/.gitignore b/.gitignore index 9b88697..7b13823 100644 --- a/.gitignore +++ b/.gitignore @@ -105,6 +105,7 @@ website/src/zh/api/dart_node_react/ website/src/zh/api/dart_node_react_native/ website/src/zh/api/dart_node_ws/ website/src/zh/api/dart_node_better_sqlite3/ +website/src/zh/api/dart_node_sql_js/ website/src/zh/api/dart_node_mcp/ website/src/zh/api/dart_logging/ website/src/zh/api/reflux/ diff --git a/packages/dart_logging/README.md b/packages/dart_logging/README.md index 3022ee8..3f4953a 100644 --- a/packages/dart_logging/README.md +++ b/packages/dart_logging/README.md @@ -5,7 +5,7 @@ Pino-style structured logging with child loggers. Provides hierarchical logging ```yaml dependencies: - dart_logging: ^0.11.0-beta + dart_logging: ^0.13.0-beta ``` ## Quick Start @@ -81,9 +81,10 @@ This is useful for adding context that applies to a scope (like a request handle Create custom transports to send logs to different destinations: ```dart -void myTransport(LogEntry entry) { +void myTransport(LogMessage message, LogLevel minimumLogLevel) { + if (message.logLevel.index < minimumLogLevel.index) return; // Send to external service, file, etc. - print('${entry.level}: ${entry.message}'); + print('${message.logLevel}: ${message.message}'); } final context = createLoggingContext( @@ -119,4 +120,4 @@ void main() { ## Source Code -The source code is available on [GitHub](https://github.com/melbournedeveloper/dart_node/tree/main/packages/dart_logging). +The source code is available on [GitHub](https://github.com/MelbourneDeveloper/dart_node/tree/main/packages/dart_logging). diff --git a/packages/dart_logging/README_zh.md b/packages/dart_logging/README_zh.md index b692868..e94d66d 100644 --- a/packages/dart_logging/README_zh.md +++ b/packages/dart_logging/README_zh.md @@ -5,7 +5,7 @@ Pino 风格的结构化日志,支持子日志器。提供具有自动上下文 ```yaml dependencies: - dart_logging: ^0.11.0-beta + dart_logging: ^0.13.0-beta ``` ## 快速开始 @@ -81,9 +81,9 @@ userLogger.info('Action'); // 同时包含 requestId 和 userId 创建自定义传输以将日志发送到不同目的地: ```dart -void myTransport(LogEntry entry) { +void myTransport(LogMessage message, LogLevel minimumLogLevel) { // 发送到外部服务、文件等 - print('${entry.level}: ${entry.message}'); + print('${message.logLevel}: ${message.message}'); } final context = createLoggingContext( @@ -119,4 +119,4 @@ void main() { ## 源代码 -源代码可在 [GitHub](https://github.com/melbournedeveloper/dart_node/tree/main/packages/dart_logging) 上获取。 +源代码可在 [GitHub](https://github.com/MelbourneDeveloper/dart_node/tree/main/packages/dart_logging) 上获取。 diff --git a/packages/dart_node_better_sqlite3/README.md b/packages/dart_node_better_sqlite3/README.md index 1882ef8..d844676 100644 --- a/packages/dart_node_better_sqlite3/README.md +++ b/packages/dart_node_better_sqlite3/README.md @@ -5,8 +5,8 @@ Typed Dart bindings for [better-sqlite3](https://github.com/WiseLibs/better-sqli ```yaml dependencies: - dart_node_better_sqlite3: ^0.11.0-beta - nadz: ^0.9.0 + dart_node_better_sqlite3: ^0.13.0-beta + nadz: ^0.0.7-beta ``` Also install the npm package: @@ -41,7 +41,10 @@ void main() { Error(:final error) => throw Exception(error), }; - final rows = query.all([]); + final rows = switch (query.all()) { + Success(:final value) => value, + Error(:final error) => throw Exception(error), + }; print(rows); db.close(); @@ -93,22 +96,32 @@ final query = switch (db.prepare('SELECT * FROM users WHERE id = ?')) { }; // Get single row -final row = query.get([1]); +final row = switch (query.get([1])) { + Success(:final value) => value, + Error(:final error) => throw Exception(error), +}; // Get all rows -final allRows = query.all([]); +final allRows = switch (query.all()) { + Success(:final value) => value, + Error(:final error) => throw Exception(error), +}; ``` ### Transactions ```dart db.exec('BEGIN'); -try { - // Multiple operations... - db.exec('COMMIT'); -} catch (e) { - db.exec('ROLLBACK'); - rethrow; + +// Multiple operations... +final result = db.exec('INSERT INTO users (name) VALUES (?)'); + +switch (result) { + case Success(): + db.exec('COMMIT'); + case Error(:final error): + db.exec('ROLLBACK'); + throw Exception(error); } ``` @@ -124,4 +137,4 @@ node app.js ## Source Code -The source code is available on [GitHub](https://github.com/melbournedeveloper/dart_node/tree/main/packages/dart_node_better_sqlite3). +The source code is available on [GitHub](https://github.com/MelbourneDeveloper/dart_node/tree/main/packages/dart_node_better_sqlite3). diff --git a/packages/dart_node_better_sqlite3/README_zh.md b/packages/dart_node_better_sqlite3/README_zh.md index e67916b..3bfb955 100644 --- a/packages/dart_node_better_sqlite3/README_zh.md +++ b/packages/dart_node_better_sqlite3/README_zh.md @@ -5,8 +5,8 @@ ```yaml dependencies: - dart_node_better_sqlite3: ^0.11.0-beta - nadz: ^0.9.0 + dart_node_better_sqlite3: ^0.13.0-beta + nadz: ^0.0.7-beta ``` 通过 npm 安装: @@ -124,4 +124,4 @@ node app.js ## 源代码 -源代码可在 [GitHub](https://github.com/melbournedeveloper/dart_node/tree/main/packages/dart_node_better_sqlite3) 上获取。 +源代码可在 [GitHub](https://github.com/MelbourneDeveloper/dart_node/tree/main/packages/dart_node_better_sqlite3) 上获取。 diff --git a/packages/dart_node_core/README.md b/packages/dart_node_core/README.md index a7b4a82..fc64bf1 100644 --- a/packages/dart_node_core/README.md +++ b/packages/dart_node_core/README.md @@ -5,7 +5,7 @@ ```yaml dependencies: - dart_node_core: ^0.11.0-beta + dart_node_core: ^0.13.0-beta ``` ## Core Utilities @@ -90,4 +90,4 @@ void main() { ## Source Code -The source code is available on [GitHub](https://github.com/melbournedeveloper/dart_node/tree/main/packages/dart_node_core). +The source code is available on [GitHub](https://github.com/MelbourneDeveloper/dart_node/tree/main/packages/dart_node_core). diff --git a/packages/dart_node_core/README_zh.md b/packages/dart_node_core/README_zh.md index 80e2821..fb25f44 100644 --- a/packages/dart_node_core/README_zh.md +++ b/packages/dart_node_core/README_zh.md @@ -5,7 +5,7 @@ ```yaml dependencies: - dart_node_core: ^0.11.0-beta + dart_node_core: ^0.13.0-beta ``` ## 核心工具 @@ -90,4 +90,4 @@ void main() { ## 源代码 -源代码可在 [GitHub](https://github.com/melbournedeveloper/dart_node/tree/main/packages/dart_node_core) 上获取。 +源代码可在 [GitHub](https://github.com/MelbourneDeveloper/dart_node/tree/main/packages/dart_node_core) 上获取。 diff --git a/packages/dart_node_express/README.md b/packages/dart_node_express/README.md index d075b82..cd0d00d 100644 --- a/packages/dart_node_express/README.md +++ b/packages/dart_node_express/README.md @@ -6,7 +6,7 @@ Type-safe Express.js bindings for Dart. Build HTTP servers and REST APIs entirel ```yaml dependencies: - dart_node_express: ^0.11.0-beta + dart_node_express: ^0.13.0-beta ``` Also install Express via npm: @@ -50,7 +50,7 @@ app.post('/users', handler((req, res) { })); app.put('/users/:id', handler((req, res) { - final id = req.params['id']; + final id = req.params['id'].toString(); res.jsonMap({'updated': id}); })); @@ -64,8 +64,8 @@ app.delete('/users/:id', handler((req, res) { ```dart app.get('/users/:userId/posts/:postId', handler((req, res) { - final userId = req.params['userId']; - final postId = req.params['postId']; + final userId = req.params['userId'].toString(); + final postId = req.params['postId'].toString(); res.jsonMap({ 'userId': userId, @@ -78,8 +78,8 @@ app.get('/users/:userId/posts/:postId', handler((req, res) { ```dart app.get('/search', handler((req, res) { - final query = req.query['q']; - final page = int.tryParse(req.query['page'] ?? '1') ?? 1; + final query = req.query['q']?.toString(); + final page = int.tryParse(req.query['page']?.toString() ?? '1') ?? 1; res.jsonMap({ 'query': query, @@ -98,7 +98,7 @@ app.post('/api/data', handler((req, res) { final body = req.body; // Headers - final contentType = req.headers['content-type']; + final contentType = req.headers['content-type']?.toString(); // URL path final path = req.path; @@ -188,6 +188,10 @@ app.get('/profile', handler((req, res) { Organize routes with the Router: ```dart +import 'dart:js_interop'; +import 'dart:js_interop_unsafe'; +import 'package:dart_node_express/dart_node_express.dart'; + Router createUserRouter() { final router = Router(); @@ -201,18 +205,28 @@ Router createUserRouter() { })); router.get('/:id', handler((req, res) { - res.jsonMap({'user': req.params['id']}); + res.jsonMap({'user': req.params['id'].toString()}); })); return router; } +// Mount a Router at a path. Express Routers are callable middleware, +// and `use` accepts a path (as JSAny?) plus a middleware JSFunction. +void mountRouter(ExpressApp app, String path, Router router) { + final routerFn = switch (router as JSAny) { + final JSFunction f => f, + _ => throw StateError('Router is not callable'), + }; + app.use(path.toJS, routerFn); +} + void main() { final app = express(); // Mount the router final router = createUserRouter(); - app.use('/api/users', router); + mountRouter(app, '/api/users', router); app.listen(3000); } @@ -312,7 +326,7 @@ void main() { })); // Mount routers - app.use('/api/users', createUserRouter()); + mountRouter(app, '/api/users', createUserRouter()); // Start server app.listen(3000, () { @@ -323,4 +337,4 @@ void main() { ## Source Code -The source code is available on [GitHub](https://github.com/melbournedeveloper/dart_node/tree/main/packages/dart_node_express). +The source code is available on [GitHub](https://github.com/MelbourneDeveloper/dart_node/tree/main/packages/dart_node_express). diff --git a/packages/dart_node_express/README_zh.md b/packages/dart_node_express/README_zh.md index 5f89bf0..2d7ce5c 100644 --- a/packages/dart_node_express/README_zh.md +++ b/packages/dart_node_express/README_zh.md @@ -6,7 +6,7 @@ ```yaml dependencies: - dart_node_express: ^0.11.0-beta + dart_node_express: ^0.13.0-beta ``` 通过 npm 安装 Express: @@ -50,7 +50,7 @@ app.post('/users', handler((req, res) { })); app.put('/users/:id', handler((req, res) { - final id = req.params['id']; + final id = req.params['id'].toString(); res.jsonMap({'updated': id}); })); @@ -64,8 +64,8 @@ app.delete('/users/:id', handler((req, res) { ```dart app.get('/users/:userId/posts/:postId', handler((req, res) { - final userId = req.params['userId']; - final postId = req.params['postId']; + final userId = req.params['userId'].toString(); + final postId = req.params['postId'].toString(); res.jsonMap({ 'userId': userId, @@ -78,8 +78,8 @@ app.get('/users/:userId/posts/:postId', handler((req, res) { ```dart app.get('/search', handler((req, res) { - final query = req.query['q']; - final page = int.tryParse(req.query['page'] ?? '1') ?? 1; + final query = req.query['q'].toString(); + final page = int.tryParse(req.query['page']?.toString() ?? '1') ?? 1; res.jsonMap({ 'query': query, @@ -98,7 +98,7 @@ app.post('/api/data', handler((req, res) { final body = req.body; // 请求头 - final contentType = req.headers['content-type']; + final contentType = req.headers['content-type'].toString(); // URL 路径 final path = req.path; @@ -201,7 +201,7 @@ Router createUserRouter() { })); router.get('/:id', handler((req, res) { - res.jsonMap({'user': req.params['id']}); + res.jsonMap({'user': req.params['id'].toString()}); })); return router; @@ -212,7 +212,9 @@ void main() { // 挂载路由器 final router = createUserRouter(); - app.use('/api/users', router); + if (router case final JSFunction fn) { + app.use('/api/users'.toJS, fn); + } app.listen(3000); } @@ -312,7 +314,9 @@ void main() { })); // 挂载路由器 - app.use('/api/users', createUserRouter()); + if (createUserRouter() case final JSFunction fn) { + app.use('/api/users'.toJS, fn); + } // 启动服务器 app.listen(3000, () { @@ -323,4 +327,4 @@ void main() { ## 源代码 -源代码可在 [GitHub](https://github.com/melbournedeveloper/dart_node/tree/main/packages/dart_node_express) 上获取。 +源代码可在 [GitHub](https://github.com/MelbourneDeveloper/dart_node/tree/main/packages/dart_node_express) 上获取。 diff --git a/packages/dart_node_mcp/README.md b/packages/dart_node_mcp/README.md index 5b68630..8ee11e4 100644 --- a/packages/dart_node_mcp/README.md +++ b/packages/dart_node_mcp/README.md @@ -5,8 +5,8 @@ MCP (Model Context Protocol) server bindings for Dart on Node.js. Build AI tool ```yaml dependencies: - dart_node_mcp: ^0.11.0-beta - nadz: ^0.9.0 + dart_node_mcp: ^0.13.0-beta + nadz: ^0.0.7-beta ``` Also install the npm package: @@ -31,9 +31,17 @@ Future main() async { server.registerTool( 'echo', - (description: 'Echo input back', inputSchema: null), + ( + title: null, + description: 'Echo input back', + inputSchema: null, + outputSchema: null, + annotations: null, + ), (args, meta) async => ( - content: [(type: 'text', text: args['message'] as String)], + content: >[ + {'type': 'text', 'text': args['message'] as String}, + ], isError: false, ), ); @@ -65,6 +73,7 @@ Tools are functions that AI assistants can call. Register them with a name, desc server.registerTool( 'greet', ( + title: null, description: 'Greet a user by name', inputSchema: { 'type': 'object', @@ -73,11 +82,15 @@ server.registerTool( }, 'required': ['name'], }, + outputSchema: null, + annotations: null, ), (args, meta) async { final name = args['name'] as String; return ( - content: [(type: 'text', text: 'Hello, $name!')], + content: >[ + {'type': 'text', 'text': 'Hello, $name!'}, + ], isError: false, ); }, @@ -115,10 +128,10 @@ Add your MCP server to Claude Code: claude mcp add --transport stdio my-server -- node /path/to/server.js ``` -## Example: Too Many Cooks +## Built with dart_node_mcp: Too Many Cooks -The [Too Many Cooks](https://github.com/melbournedeveloper/too_many_cooks) MCP server is built with dart_node_mcp. It provides multi-agent coordination for AI assistants editing the same codebase. +[Too Many Cooks](https://tmc-mcp.dev) is an MCP server originally built with dart_node_mcp that provides multi-agent coordination for AI assistants editing the same codebase. It has since moved to its own home at [tmc-mcp.dev](https://tmc-mcp.dev) and is no longer part of this repository. ## Source Code -The source code is available on [GitHub](https://github.com/melbournedeveloper/dart_node/tree/main/packages/dart_node_mcp). +The source code is available on [GitHub](https://github.com/MelbourneDeveloper/dart_node/tree/main/packages/dart_node_mcp). diff --git a/packages/dart_node_mcp/README_zh.md b/packages/dart_node_mcp/README_zh.md index f3f7019..ad2c5d7 100644 --- a/packages/dart_node_mcp/README_zh.md +++ b/packages/dart_node_mcp/README_zh.md @@ -5,8 +5,8 @@ ```yaml dependencies: - dart_node_mcp: ^0.11.0-beta - nadz: ^0.9.0 + dart_node_mcp: ^0.13.0-beta + nadz: ^0.0.7-beta ``` 通过 npm 安装: @@ -31,9 +31,17 @@ Future main() async { server.registerTool( 'echo', - (description: 'Echo input back', inputSchema: null), + ( + title: null, + description: 'Echo input back', + inputSchema: null, + outputSchema: null, + annotations: null, + ), (args, meta) async => ( - content: [(type: 'text', text: args['message'] as String)], + content: >[ + {'type': 'text', 'text': args['message'] as String}, + ], isError: false, ), ); @@ -65,6 +73,7 @@ final serverResult = McpServer.create((name: 'my-server', version: '1.0.0')); server.registerTool( 'greet', ( + title: null, description: 'Greet a user by name', inputSchema: { 'type': 'object', @@ -73,11 +82,15 @@ server.registerTool( }, 'required': ['name'], }, + outputSchema: null, + annotations: null, ), (args, meta) async { final name = args['name'] as String; return ( - content: [(type: 'text', text: 'Hello, $name!')], + content: >[ + {'type': 'text', 'text': 'Hello, $name!'}, + ], isError: false, ); }, @@ -115,10 +128,10 @@ node server.js claude mcp add --transport stdio my-server -- node /path/to/server.js ``` -## 示例:Too Many Cooks +## 使用 dart_node_mcp 构建:Too Many Cooks -[Too Many Cooks](https://github.com/melbournedeveloper/too_many_cooks) MCP 服务器是使用 dart_node_mcp 构建的。它为编辑同一代码库的 AI 助手提供多智能体协调功能。 +[Too Many Cooks](https://tmc-mcp.dev) 是一个最初使用 dart_node_mcp 构建的 MCP 服务器,为编辑同一代码库的 AI 助手提供多智能体协调功能。它现已迁移到独立站点 [tmc-mcp.dev](https://tmc-mcp.dev),不再是本仓库的一部分。 ## 源代码 -源代码可在 [GitHub](https://github.com/melbournedeveloper/dart_node/tree/main/packages/dart_node_mcp) 上获取。 +源代码可在 [GitHub](https://github.com/MelbourneDeveloper/dart_node/tree/main/packages/dart_node_mcp) 上获取。 diff --git a/packages/dart_node_react/README.md b/packages/dart_node_react/README.md index 4c3ca6e..063aab9 100644 --- a/packages/dart_node_react/README.md +++ b/packages/dart_node_react/README.md @@ -6,7 +6,7 @@ Type-safe React bindings for building web applications in Dart. If you know Reac ```yaml dependencies: - dart_node_react: ^0.11.0-beta + dart_node_react: ^0.13.0-beta ``` Also install React via npm: @@ -24,16 +24,17 @@ ReactElement app() { return div( className: 'app', children: [ - h1(children: [text('Hello, Dart!')]), - p(children: [text('Welcome to React with Dart.')]), + h1('Hello, Dart!'), + pEl('Welcome to React with Dart.'), ], ); } void main() { - final container = document.getElementById('root'); - final root = ReactDOM.createRoot(container); - root.render(app()); + final container = Document.getElementById('root'); + (container != null) + ? ReactDOM.createRoot(container).render(app()) + : throw StateError('Root element not found'); } ``` @@ -45,9 +46,7 @@ void main() { ReactElement greeting({required String name}) { return div( className: 'greeting', - children: [ - text('Hello, $name!'), - ], + child: pEl('Hello, $name!'), ); } @@ -69,8 +68,8 @@ ReactElement userCard({ avatarUrl != null ? img(src: avatarUrl, alt: name) : div(className: 'avatar-placeholder'), - h2(children: [text(name)]), - p(children: [text(email)]), + h2(name), + pEl(email), ], ); } @@ -87,14 +86,14 @@ ReactElement counter() { final count = useState(0); return div(children: [ - p(children: [text('Count: ${count.value}')]), + pEl('Count: ${count.value}'), button( - onClick: (_) => count.setWithUpdater((c) => c + 1), - children: [text('Increment')], + text: 'Increment', + onClick: () => count.setWithUpdater((c) => c + 1), ), button( - onClick: (_) => count.setWithUpdater((c) => c - 1), - children: [text('Decrement')], + text: 'Decrement', + onClick: () => count.setWithUpdater((c) => c - 1), ), ]); } @@ -123,7 +122,7 @@ ReactElement timer() { return () => timer.cancel(); }, []); // Empty deps = run once on mount - return p(children: [text('Seconds: ${seconds.value}')]); + return pEl('Seconds: ${seconds.value}'); } ``` @@ -141,18 +140,23 @@ useLayoutEffect(() { ### useRef ```dart +// A focusable DOM node exposed through a ref. +extension type FocusableElement._(JSObject _) implements JSObject { + external void focus(); +} + ReactElement focusInput() { - final inputRef = useRef(null); + final inputRef = useRef(); void handleClick() { inputRef.current?.focus(); } return div(children: [ - input(ref: inputRef, type: 'text'), + input(type: 'text', props: {'ref': inputRef.jsRef}), button( - onClick: (_) => handleClick(), - children: [text('Focus Input')], + text: 'Focus Input', + onClick: handleClick, ), ]); } @@ -171,7 +175,7 @@ ReactElement expensiveList({required List numbers}) { ); return div(children: [ - p(children: [text('Fibonacci of ${count.value} is $fib')]), + pEl('Fibonacci of ${count.value} is $fib'), ]); } ``` @@ -182,23 +186,31 @@ ReactElement expensiveList({required List numbers}) { ReactElement searchBox({required void Function(String) onSearch}) { final query = useState(''); - // Memoize the callback - final handleSubmit = useCallback( - () => onSearch(query.value), - [query.value, onSearch], - ); + void handleSubmit() => onSearch(query.value); + + // Memoize the callback to pass a stable reference to child components. + final memoizedSubmit = useCallback(handleSubmit, [query.value, onSearch]); return form( - onSubmit: (_) => handleSubmit(), - children: [ + {'onSubmit': memoizedSubmit}, + [ input( value: query.value, - onChange: (e) => query.set(e.target.value), + onChange: (e) => query.set(inputValue(e)), ), - button(type: 'submit', children: [text('Search')]), + button(text: 'Search', onClick: handleSubmit), ], ); } + +// Reads the current value from an input change event. +String inputValue(SyntheticEvent event) => switch (event.target) { + final JSObject target => switch (target['value']) { + final JSString value => value.toDart, + _ => '', + }, + _ => '', +}; ``` ### useDebugValue @@ -219,26 +231,25 @@ useDebugValue( ```dart // Divs and spans div(className: 'container', children: [...]) -span(className: 'highlight', children: [...]) +span('Highlighted text', className: 'highlight') // Headings -h1(children: [text('Title')]) -h2(children: [text('Subtitle')]) +h1('Title') +h2('Subtitle') // Paragraphs and text -p(children: [text('Some text')]) -text('Raw text content') +pEl('Some text') // Links -a(href: 'https://example.com', children: [text('Click me')]) +a(href: 'https://example.com', text: 'Click me') // Images img(src: '/image.png', alt: 'Description') // Forms -form(onSubmit: handleSubmit, children: [...]) +form({'onSubmit': handleSubmit}, [...]) input(type: 'text', value: value, onChange: handleChange) -button(type: 'submit', children: [text('Submit')]) +button(text: 'Submit', onClick: handleClick) ``` ### Lists @@ -249,14 +260,9 @@ ReactElement todoList({required List todos}) { className: 'todo-list', children: todos.map((todo) => li( - key: todo.id, - children: [ - input( - type: 'checkbox', - checked: todo.completed, - ), - text(todo.title), - ], + todo.title, + props: {'key': todo.id}, + className: todo.completed ? 'completed' : '', ) ).toList(), ); @@ -269,8 +275,8 @@ ReactElement todoList({required List todos}) { ReactElement userStatus({required User? user}) { return div(children: [ user != null - ? span(children: [text('Welcome, ${user.name}!')]) - : span(children: [text('Please log in')]), + ? span('Welcome, ${user.name}!') + : span('Please log in'), ]); } ``` @@ -279,18 +285,13 @@ ReactElement userStatus({required User? user}) { ```dart ReactElement interactiveButton() { - void handleClick(MouseEvent e) { - print('Button clicked at (${e.clientX}, ${e.clientY})'); - } - - void handleMouseEnter(MouseEvent e) { - print('Mouse entered'); + void handleClick() { + print('Button clicked'); } return button( + text: 'Click Me', onClick: handleClick, - onMouseEnter: handleMouseEnter, - children: [text('Hover and Click Me')], ); } ``` @@ -302,27 +303,26 @@ ReactElement loginForm() { final email = useState(''); final password = useState(''); - void handleSubmit(Event e) { - e.preventDefault(); + void handleSubmit() { print('Login: ${email.value} / ${password.value}'); } return form( - onSubmit: handleSubmit, - children: [ + {'onSubmit': (JSObject e) => SyntheticEvent.fromJs(e).preventDefault()}, + [ input( type: 'email', value: email.value, - onChange: (e) => email.set(e.target.value), + onChange: (e) => email.set(inputValue(e)), placeholder: 'Email', ), input( type: 'password', value: password.value, - onChange: (e) => password.set(e.target.value), + onChange: (e) => password.set(inputValue(e)), placeholder: 'Password', ), - button(type: 'submit', children: [text('Log In')]), + button(text: 'Log In', onClick: handleSubmit), ], ); } @@ -355,20 +355,32 @@ div( ## Complete Example ```dart +import 'dart:js_interop'; +import 'dart:js_interop_unsafe'; + import 'package:dart_node_react/dart_node_react.dart'; +// Reads the current value from an input change event. +String inputValue(SyntheticEvent event) => switch (event.target) { + final JSObject target => switch (target['value']) { + final JSString value => value.toDart, + _ => '', + }, + _ => '', +}; + ReactElement todoApp() { final todos = useState>([]); - final input = useState(''); + final newTodo = useState(''); void addTodo() { - if (input.value.trim().isEmpty) return; + if (newTodo.value.trim().isEmpty) return; todos.setWithUpdater((prev) => [ ...prev, - Todo(id: DateTime.now().toString(), title: input.value, completed: false), + Todo(id: DateTime.now().toString(), title: newTodo.value, completed: false), ]); - input.set(''); + newTodo.set(''); } void toggleTodo(String id) { @@ -382,37 +394,39 @@ ReactElement todoApp() { return div( className: 'todo-app', children: [ - h1(children: [text('Todo List')]), + h1('Todo List'), form( - onSubmit: (e) { - e.preventDefault(); - addTodo(); + { + 'onSubmit': (JSObject e) { + SyntheticEvent.fromJs(e).preventDefault(); + addTodo(); + }, }, - children: [ + [ input( - value: input.value, - onChange: (e) => input.set(e.target.value), + value: newTodo.value, + onChange: (e) => newTodo.set(inputValue(e)), placeholder: 'What needs to be done?', ), - button(type: 'submit', children: [text('Add')]), + button(text: 'Add', onClick: addTodo), ], ), ul( children: todos.value.map((todo) => li( - key: todo.id, + todo.title, + props: { + 'key': todo.id, + 'onClick': () => toggleTodo(todo.id), + }, className: todo.completed ? 'completed' : '', - onClick: (_) => toggleTodo(todo.id), - children: [text(todo.title)], ) ).toList(), ), - p(children: [ - text('${todos.value.where((t) => !t.completed).length} items left'), - ]), + pEl('${todos.value.where((t) => !t.completed).length} items left'), ], ); } @@ -426,11 +440,13 @@ class Todo { } void main() { - final root = ReactDOM.createRoot(document.getElementById('root')); - root.render(todoApp()); + final root = Document.getElementById('root'); + (root != null) + ? ReactDOM.createRoot(root).render(todoApp()) + : throw StateError('Root element not found'); } ``` ## Source Code -The source code is available on [GitHub](https://github.com/melbournedeveloper/dart_node/tree/main/packages/dart_node_react). +The source code is available on [GitHub](https://github.com/MelbourneDeveloper/dart_node/tree/main/packages/dart_node_react). diff --git a/packages/dart_node_react/README_zh.md b/packages/dart_node_react/README_zh.md index b5ec51a..fc8df43 100644 --- a/packages/dart_node_react/README_zh.md +++ b/packages/dart_node_react/README_zh.md @@ -6,7 +6,7 @@ ```yaml dependencies: - dart_node_react: ^0.11.0-beta + dart_node_react: ^0.13.0-beta ``` 通过 npm 安装 React: @@ -18,22 +18,25 @@ npm install react react-dom ## 快速开始 ```dart +import 'dart:js_interop'; + import 'package:dart_node_react/dart_node_react.dart'; ReactElement app() { return div( className: 'app', children: [ - h1(children: [text('Hello, Dart!')]), - p(children: [text('Welcome to React with Dart.')]), + h1('Hello, Dart!'), + pEl('Welcome to React with Dart.'), ], ); } void main() { - final container = document.getElementById('root'); - final root = ReactDOM.createRoot(container); - root.render(app()); + final container = Document.getElementById('root'); + if (container case final JSObject c) { + createRoot(c).render(app()); + } } ``` @@ -46,7 +49,7 @@ ReactElement greeting({required String name}) { return div( className: 'greeting', children: [ - text('Hello, $name!'), + pEl('Hello, $name!'), ], ); } @@ -69,8 +72,8 @@ ReactElement userCard({ avatarUrl != null ? img(src: avatarUrl, alt: name) : div(className: 'avatar-placeholder'), - h2(children: [text(name)]), - p(children: [text(email)]), + h2(name), + pEl(email), ], ); } @@ -87,14 +90,14 @@ ReactElement counter() { final count = useState(0); return div(children: [ - p(children: [text('Count: ${count.value}')]), + pEl('Count: ${count.value}'), button( - onClick: (_) => count.setWithUpdater((c) => c + 1), - children: [text('Increment')], + text: 'Increment', + onClick: () => count.setWithUpdater((c) => c + 1), ), button( - onClick: (_) => count.setWithUpdater((c) => c - 1), - children: [text('Decrement')], + text: 'Decrement', + onClick: () => count.setWithUpdater((c) => c - 1), ), ]); } @@ -123,7 +126,7 @@ ReactElement timer() { return () => timer.cancel(); }, []); // 空依赖数组 = 仅在挂载时运行一次 - return p(children: [text('Seconds: ${seconds.value}')]); + return pEl('Seconds: ${seconds.value}'); } ``` @@ -142,17 +145,19 @@ useLayoutEffect(() { ```dart ReactElement focusInput() { - final inputRef = useRef(null); + final inputRef = useRef(null); void handleClick() { - inputRef.current?.focus(); + if (inputRef.jsRef.current case final JSObject node) { + node.callMethod('focus'.toJS); + } } return div(children: [ - input(ref: inputRef, type: 'text'), + input(type: 'text', props: {'ref': inputRef.jsRef}), button( - onClick: (_) => handleClick(), - children: [text('Focus Input')], + text: 'Focus Input', + onClick: handleClick, ), ]); } @@ -171,7 +176,7 @@ ReactElement expensiveList({required List numbers}) { ); return div(children: [ - p(children: [text('Fibonacci of ${count.value} is $fib')]), + pEl('Fibonacci of ${count.value} is $fib'), ]); } ``` @@ -188,16 +193,17 @@ ReactElement searchBox({required void Function(String) onSearch}) { [query.value, onSearch], ); - return form( - onSubmit: (_) => handleSubmit(), - children: [ - input( - value: query.value, - onChange: (e) => query.set(e.target.value), - ), - button(type: 'submit', children: [text('Search')]), - ], - ); + return form(null, [ + input( + value: query.value, + onChange: (e) { + if (e.target case final JSObject t) { + if (t['value'] case final JSString s) query.set(s.toDart); + } + }, + ), + button(text: 'Search', props: {'type': 'submit', 'onClick': handleSubmit}), + ]); } ``` @@ -219,26 +225,25 @@ useDebugValue( ```dart // Div 和 span div(className: 'container', children: [...]) -span(className: 'highlight', children: [...]) +span('highlight text', className: 'highlight') // 标题 -h1(children: [text('Title')]) -h2(children: [text('Subtitle')]) +h1('Title') +h2('Subtitle') // 段落和文本 -p(children: [text('Some text')]) -text('Raw text content') +pEl('Some text') // 链接 -a(href: 'https://example.com', children: [text('Click me')]) +a(href: 'https://example.com', text: 'Click me') // 图片 img(src: '/image.png', alt: 'Description') // 表单 -form(onSubmit: handleSubmit, children: [...]) +form(null, [...]) input(type: 'text', value: value, onChange: handleChange) -button(type: 'submit', children: [text('Submit')]) +button(text: 'Submit', props: {'type': 'submit'}) ``` ### 列表 @@ -247,18 +252,14 @@ button(type: 'submit', children: [text('Submit')]) ReactElement todoList({required List todos}) { return ul( className: 'todo-list', - children: todos.map((todo) => - li( - key: todo.id, - children: [ - input( - type: 'checkbox', - checked: todo.completed, + children: todos + .map( + (todo) => li( + todo.title, + props: {'key': todo.id}, ), - text(todo.title), - ], - ) - ).toList(), + ) + .toList(), ); } ``` @@ -269,8 +270,8 @@ ReactElement todoList({required List todos}) { ReactElement userStatus({required User? user}) { return div(children: [ user != null - ? span(children: [text('Welcome, ${user.name}!')]) - : span(children: [text('Please log in')]), + ? span('Welcome, ${user.name}!') + : span('Please log in'), ]); } ``` @@ -279,18 +280,13 @@ ReactElement userStatus({required User? user}) { ```dart ReactElement interactiveButton() { - void handleClick(MouseEvent e) { - print('Button clicked at (${e.clientX}, ${e.clientY})'); - } - - void handleMouseEnter(MouseEvent e) { - print('Mouse entered'); + void handleClick() { + print('Button clicked'); } return button( + text: 'Hover and Click Me', onClick: handleClick, - onMouseEnter: handleMouseEnter, - children: [text('Hover and Click Me')], ); } ``` @@ -302,29 +298,34 @@ ReactElement loginForm() { final email = useState(''); final password = useState(''); - void handleSubmit(Event e) { + void handleSubmit(SyntheticEvent e) { e.preventDefault(); print('Login: ${email.value} / ${password.value}'); } - return form( - onSubmit: handleSubmit, - children: [ - input( - type: 'email', - value: email.value, - onChange: (e) => email.set(e.target.value), - placeholder: 'Email', - ), - input( - type: 'password', - value: password.value, - onChange: (e) => password.set(e.target.value), - placeholder: 'Password', - ), - button(type: 'submit', children: [text('Log In')]), - ], - ); + String readValue(SyntheticEvent e) => switch (e.target) { + final JSObject t => switch (t['value']) { + final JSString s => s.toDart, + _ => '', + }, + _ => '', + }; + + return form({'onSubmit': handleSubmit}, [ + input( + type: 'email', + value: email.value, + onChange: (e) => email.set(readValue(e)), + placeholder: 'Email', + ), + input( + type: 'password', + value: password.value, + onChange: (e) => password.set(readValue(e)), + placeholder: 'Password', + ), + button(text: 'Log In', props: {'type': 'submit'}), + ]); } ``` @@ -355,20 +356,23 @@ div( ## 完整示例 ```dart +import 'dart:js_interop'; +import 'dart:js_interop_unsafe'; + import 'package:dart_node_react/dart_node_react.dart'; ReactElement todoApp() { final todos = useState>([]); - final input = useState(''); + final text = useState(''); void addTodo() { - if (input.value.trim().isEmpty) return; + if (text.value.trim().isEmpty) return; todos.setWithUpdater((prev) => [ ...prev, - Todo(id: DateTime.now().toString(), title: input.value, completed: false), + Todo(id: DateTime.now().toString(), title: text.value, completed: false), ]); - input.set(''); + text.set(''); } void toggleTodo(String id) { @@ -382,37 +386,42 @@ ReactElement todoApp() { return div( className: 'todo-app', children: [ - h1(children: [text('Todo List')]), + h1('Todo List'), - form( - onSubmit: (e) { + form({ + 'onSubmit': (SyntheticEvent e) { e.preventDefault(); addTodo(); }, - children: [ - input( - value: input.value, - onChange: (e) => input.set(e.target.value), - placeholder: 'What needs to be done?', - ), - button(type: 'submit', children: [text('Add')]), - ], - ), + }, [ + input( + value: text.value, + onChange: (e) { + if (e.target case final JSObject t) { + if (t['value'] case final JSString s) text.set(s.toDart); + } + }, + placeholder: 'What needs to be done?', + ), + button(text: 'Add', props: {'type': 'submit'}), + ]), ul( - children: todos.value.map((todo) => - li( - key: todo.id, - className: todo.completed ? 'completed' : '', - onClick: (_) => toggleTodo(todo.id), - children: [text(todo.title)], - ) - ).toList(), + children: todos.value + .map( + (todo) => li( + todo.title, + className: todo.completed ? 'completed' : '', + props: { + 'key': todo.id, + 'onClick': () => toggleTodo(todo.id), + }, + ), + ) + .toList(), ), - p(children: [ - text('${todos.value.where((t) => !t.completed).length} items left'), - ]), + pEl('${todos.value.where((t) => !t.completed).length} items left'), ], ); } @@ -426,11 +435,13 @@ class Todo { } void main() { - final root = ReactDOM.createRoot(document.getElementById('root')); - root.render(todoApp()); + final container = Document.getElementById('root'); + if (container case final JSObject c) { + createRoot(c).render(todoApp()); + } } ``` ## 源代码 -源代码可在 [GitHub](https://github.com/melbournedeveloper/dart_node/tree/main/packages/dart_node_react) 上获取。 +源代码可在 [GitHub](https://github.com/MelbourneDeveloper/dart_node/tree/main/packages/dart_node_react) 上获取。 diff --git a/packages/dart_node_react_native/README.md b/packages/dart_node_react_native/README.md index ab0ea05..851f4f4 100644 --- a/packages/dart_node_react_native/README.md +++ b/packages/dart_node_react_native/README.md @@ -5,8 +5,8 @@ ```yaml dependencies: - dart_node_react_native: ^0.11.0-beta - dart_node_react: ^0.11.0-beta # Required peer dependency + dart_node_react_native: ^0.13.0-beta + dart_node_react: ^0.13.0-beta # Required peer dependency ``` Set up your Expo project: @@ -152,14 +152,30 @@ scrollView( For efficient list rendering: ```dart -ReactElement userList({required List users}) { - return flatList( +ReactElement userList({required JSArray users}) { + ReactElement renderItem(JSObject info) { + final item = info['item']; + return switch (item) { + final JSObject user => userCard(user: user), + _ => view(), + }; + } + + JSAny? keyExtractor(JSObject item, JSNumber index) => + switch (item['id']) { + final JSString id => id, + _ => index, + }; + + return flatList( data: users, - keyExtractor: (user, _) => user.id, - renderItem: (info) => userCard(user: info.item), - ItemSeparatorComponent: () => view( - style: {'height': 1, 'backgroundColor': '#eee'}, - ), + keyExtractor: keyExtractor.toJS, + renderItem: renderItem.toJS, + props: { + 'ItemSeparatorComponent': () => view( + style: {'height': 1, 'backgroundColor': '#eee'}, + ), + }, ); } ``` @@ -169,15 +185,15 @@ ReactElement userList({required List users}) { For displaying images: ```dart -// Local image -image( - source: AssetSource('assets/logo.png'), +// Local image (provide the bundled asset via a require() call) +rnImage( + source: {'uri': 'asset:/logo.png'}, style: {'width': 100, 'height': 100}, ) // Remote image -image( - source: UriSource('https://example.com/image.jpg'), +rnImage( + source: {'uri': 'https://example.com/image.jpg'}, style: {'width': 200, 'height': 150}, resizeMode: 'cover', ) @@ -250,25 +266,26 @@ view( Use with React Navigation (via JS interop): ```dart -// Define screens -ReactElement homeScreen({required NavigationProps nav}) { +// Define screens. React Navigation passes a props object containing +// `navigation` and `route` — use extractScreenProps to read them safely. +ReactElement homeScreen(ScreenProps screen) { return view(children: [ text('Home Screen'), touchableOpacity( - onPress: () => nav.navigate('Details', {'id': 123}), - children: [text('Go to Details')])], + onPress: () => screen.navigation.navigate('Details', {'id': 123}), + children: [text('Go to Details')], ), ]); } -ReactElement detailsScreen({required NavigationProps nav}) { - final id = nav.route.params['id']; +ReactElement detailsScreen(ScreenProps screen) { + final id = screen.route.getParam('id'); return view(children: [ text('Details for $id'), touchableOpacity( - onPress: () => nav.goBack(), - children: [text('Go Back')])], + onPress: () => screen.navigation.goBack(), + children: [text('Go Back')], ), ]); } diff --git a/packages/dart_node_react_native/README_zh.md b/packages/dart_node_react_native/README_zh.md index c7caa84..a3730a4 100644 --- a/packages/dart_node_react_native/README_zh.md +++ b/packages/dart_node_react_native/README_zh.md @@ -5,8 +5,8 @@ ```yaml dependencies: - dart_node_react_native: ^0.11.0-beta - dart_node_react: ^0.11.0-beta # 必需的对等依赖 + dart_node_react_native: ^0.13.0-beta + dart_node_react: ^0.13.0-beta # 必需的对等依赖 ``` 设置您的 Expo 项目: @@ -152,14 +152,28 @@ scrollView( 用于高效的列表渲染: ```dart -ReactElement userList({required List users}) { - return flatList( - data: users, - keyExtractor: (user, _) => user.id, - renderItem: (info) => userCard(user: info.item), - ItemSeparatorComponent: () => view( - style: {'height': 1, 'backgroundColor': '#eee'}, - ), +ReactElement userList({required List users}) { + JSString keyFor(JSObject user, JSNumber index) => + switch (user['id']) { + final JSString id => id, + _ => ''.toJS, + }; + + ReactElement renderUser(JSObject info) => + switch (info['item']) { + final JSObject user => userCard(user: user), + _ => view(), + }; + + return flatList( + data: users.toJS, + keyExtractor: keyFor.toJS, + renderItem: renderUser.toJS, + props: { + 'ItemSeparatorComponent': (() => view( + style: {'height': 1, 'backgroundColor': '#eee'}, + )).toJS, + }, ); } ``` @@ -169,15 +183,15 @@ ReactElement userList({required List users}) { 用于显示图片: ```dart -// 本地图片 -image( - source: AssetSource('assets/logo.png'), +// 本地图片(source 是一个普通的 Map) +rnImage( + source: {'uri': 'asset:/logo.png'}, style: {'width': 100, 'height': 100}, ) // 远程图片 -image( - source: UriSource('https://example.com/image.jpg'), +rnImage( + source: {'uri': 'https://example.com/image.jpg'}, style: {'width': 200, 'height': 150}, resizeMode: 'cover', ) @@ -250,25 +264,29 @@ view( 与 React Navigation 一起使用(通过 JS 互操作): ```dart -// 定义屏幕 -ReactElement homeScreen({required NavigationProps nav}) { +// 定义屏幕。屏幕组件以 JSObject 形式接收 props, +// 使用 extractScreenProps 即可得到带类型的 navigation 和 route。 +ReactElement homeScreen(JSObject props) { + final screen = extractScreenProps(props); + return view(children: [ text('Home Screen'), touchableOpacity( - onPress: () => nav.navigate('Details', {'id': 123}), - children: [text('Go to Details')])], + onPress: () => screen?.navigation.navigate('Details', {'id': 123}), + children: [text('Go to Details')], ), ]); } -ReactElement detailsScreen({required NavigationProps nav}) { - final id = nav.route.params['id']; +ReactElement detailsScreen(JSObject props) { + final screen = extractScreenProps(props); + final id = screen?.route.getParam('id'); return view(children: [ text('Details for $id'), touchableOpacity( - onPress: () => nav.goBack(), - children: [text('Go Back')])], + onPress: () => screen?.navigation.goBack(), + children: [text('Go Back')], ), ]); } diff --git a/packages/dart_node_sql_js/README_zh.md b/packages/dart_node_sql_js/README_zh.md new file mode 100644 index 0000000..c3ed7a4 --- /dev/null +++ b/packages/dart_node_sql_js/README_zh.md @@ -0,0 +1,101 @@ +[sql.js](https://github.com/sql-js/sql.js) 的类型化 Dart 绑定 —— 编译为 +WebAssembly 的 SQLite。为 Node.js 应用提供同步的纯内存 SQLite,并可显式持久化到磁盘。 + +与原生绑定不同,sql.js 无需编译,在任何支持 WebAssembly 的环境中运行方式都一致。 +数据库存在于内存中;你可以通过 `save` 或 `close` 将其持久化到文件。 + +## 安装 + +```yaml +dependencies: + dart_node_sql_js: ^0.13.0-beta + nadz: ^0.0.7-beta +``` + +同时安装 npm 包: + +```bash +npm install sql.js +``` + +## 快速开始 + +```dart +import 'package:dart_node_sql_js/dart_node_sql_js.dart'; +import 'package:nadz/nadz.dart'; + +Future main() async { + // 启动时初始化一次 WebAssembly 运行时。 + final runtime = switch (await initializeSqlJs()) { + Success(:final value) => value, + Error(:final error) => throw Exception(error), + }; + + // 如果 ./my.db 存在则打开它,否则创建一个新数据库。 + final db = switch (openDatabase('./my.db', sqlJs: runtime)) { + Success(:final value) => value, + Error(:final error) => throw Exception(error), + }; + + db.exec('CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)'); + + final insert = switch (db.prepare('INSERT INTO users (name) VALUES (?)')) { + Success(:final value) => value, + Error(:final error) => throw Exception(error), + }; + insert.run(['Alice']); + + final query = switch (db.prepare('SELECT * FROM users')) { + Success(:final value) => value, + Error(:final error) => throw Exception(error), + }; + final rows = switch (query.all()) { + Success(:final value) => value, + Error(:final error) => throw Exception(error), + }; + print(rows); // [{id: 1, name: Alice}] + + // 将内存中的数据库持久化到 ./my.db。 + db.close(); +} +``` + +## 持久化 + +sql.js 完全在内存中运行。序列化它(`export()`)的唯一方式会释放所有存活的预编译语句, +因此该绑定**不会**在每条语句之后写入磁盘。而是: + +- `db.save()` 按需将当前状态刷新到后端文件。 +- `db.close()` 先保存,再释放数据库。 + +重新打开同一路径会加载已持久化的字节。 + +## API + +`initializeSqlJs()` 返回 `Future>`。将该运行时传给 +每一次 `openDatabase` 调用。 + +`openDatabase(path, sqlJs: runtime)` 返回 `Result`,包含: + +| 成员 | 说明 | +|--------|-------------| +| `prepare(sql)` | 准备一条可复用的语句。 | +| `exec(sql)` | 执行一条或多条语句,忽略结果。 | +| `pragma(value)` | 执行 `PRAGMA`。 | +| `save()` | 将内存中的数据库持久化到其文件。 | +| `close()` | 先持久化,再关闭。 | +| `isOpen()` | 数据库是否仍处于打开状态。 | + +预编译的 `Statement` 提供: + +| 成员 | 说明 | +|--------|-------------| +| `all([params])` | 以列名为键的映射列表返回所有行。 | +| `get([params])` | 第一行,或 null。 | +| `run([params])` | 执行,返回 `changes` 和 `lastInsertRowid`。 | + +每个操作都返回 `Result`(来自 [nadz](https://pub.dev/packages/nadz)),而不是抛出异常。 + +## 许可证 + +BSD 3-Clause。参见 [LICENSE](LICENSE)。 diff --git a/packages/dart_node_vsix/README.md b/packages/dart_node_vsix/README.md index 522feed..a354540 100644 --- a/packages/dart_node_vsix/README.md +++ b/packages/dart_node_vsix/README.md @@ -6,7 +6,7 @@ Type-safe VSCode extension API bindings for Dart. Build Visual Studio Code exten ```yaml dependencies: - dart_node_vsix: ^0.11.0-beta + dart_node_vsix: ^0.13.0-beta ``` ## Quick Start @@ -271,8 +271,8 @@ void main() { ## Example -See [too_many_cooks_vscode_extension](https://github.com/melbournedeveloper/too_many_cooks) for a complete real-world example. +Too Many Cooks, an MCP server originally built in this ecosystem, shipped a VSCode extension. It has since moved to its own home at [tmc-mcp.dev](https://tmc-mcp.dev) and is no longer part of this repository. ## Source Code -The source code is available on [GitHub](https://github.com/melbournedeveloper/dart_node/tree/main/packages/dart_node_vsix). +The source code is available on [GitHub](https://github.com/MelbourneDeveloper/dart_node/tree/main/packages/dart_node_vsix). diff --git a/packages/dart_node_ws/README.md b/packages/dart_node_ws/README.md index 4bd3533..0ac64ca 100644 --- a/packages/dart_node_ws/README.md +++ b/packages/dart_node_ws/README.md @@ -6,7 +6,7 @@ Type-safe WebSocket bindings for Node.js, enabling real-time bidirectional commu ```yaml dependencies: - dart_node_ws: ^0.11.0-beta + dart_node_ws: ^0.13.0-beta ``` Also install the ws package via npm: @@ -271,4 +271,4 @@ server.onConnection((client, url) { ## Source Code -The source code is available on [GitHub](https://github.com/melbournedeveloper/dart_node/tree/main/packages/dart_node_ws). +The source code is available on [GitHub](https://github.com/MelbourneDeveloper/dart_node/tree/main/packages/dart_node_ws). diff --git a/packages/dart_node_ws/README_zh.md b/packages/dart_node_ws/README_zh.md index e1898f9..08d9166 100644 --- a/packages/dart_node_ws/README_zh.md +++ b/packages/dart_node_ws/README_zh.md @@ -6,7 +6,7 @@ ```yaml dependencies: - dart_node_ws: ^0.11.0-beta + dart_node_ws: ^0.13.0-beta ``` 通过 npm 安装 ws 包: @@ -271,4 +271,4 @@ server.onConnection((client, url) { ## 源代码 -源代码可在 [GitHub](https://github.com/melbournedeveloper/dart_node/tree/main/packages/dart_node_ws) 上获取。 +源代码可在 [GitHub](https://github.com/MelbourneDeveloper/dart_node/tree/main/packages/dart_node_ws) 上获取。 diff --git a/packages/reflux/README.md b/packages/reflux/README.md index a442c8b..45b7aa3 100644 --- a/packages/reflux/README.md +++ b/packages/reflux/README.md @@ -6,7 +6,7 @@ Reflux is a state management library for **React with Dart** and **Flutter**. It ```yaml dependencies: - reflux: ^0.11.0-beta + reflux: ^0.13.0-beta ``` ## Core Concepts @@ -142,4 +142,4 @@ See the [full API documentation](/api/reflux/) for all available functions and t ## Source Code -The source code is available on [GitHub](https://github.com/melbournedeveloper/dart_node/tree/main/packages/reflux). +The source code is available on [GitHub](https://github.com/MelbourneDeveloper/dart_node/tree/main/packages/reflux). diff --git a/packages/reflux/README_zh.md b/packages/reflux/README_zh.md index b4ec479..3179b96 100644 --- a/packages/reflux/README_zh.md +++ b/packages/reflux/README_zh.md @@ -5,7 +5,7 @@ Reflux 是一个用于 **React with Dart** 和 **Flutter** 的状态管理库。 ```yaml dependencies: - reflux: ^0.11.0-beta + reflux: ^0.13.0-beta ``` ## 核心概念 @@ -141,4 +141,4 @@ timeTravel.redo(); // 前进一步 ## 源代码 -源代码可在 [GitHub](https://github.com/melbournedeveloper/dart_node/tree/main/packages/reflux) 上获取。 +源代码可在 [GitHub](https://github.com/MelbourneDeveloper/dart_node/tree/main/packages/reflux) 上获取。 diff --git a/website/.gitignore b/website/.gitignore index 73fe75f..985b940 100644 --- a/website/.gitignore +++ b/website/.gitignore @@ -9,6 +9,7 @@ src/docs/mcp/index.md src/docs/logging/index.md src/docs/reflux/index.md src/docs/jsx/index.md +src/docs/sql-js/index.md src/zh/docs/core/index.md src/zh/docs/express/index.md src/zh/docs/react/index.md @@ -19,3 +20,4 @@ src/zh/docs/mcp/index.md src/zh/docs/logging/index.md src/zh/docs/reflux/index.md src/zh/docs/jsx/index.md +src/zh/docs/sql-js/index.md diff --git a/website/eleventy.config.js b/website/eleventy.config.js index edf96dc..49754f2 100644 --- a/website/eleventy.config.js +++ b/website/eleventy.config.js @@ -27,8 +27,8 @@ const techdocOptions = { author: "dart_node team", themeColor: "#0E7C6B", stylesheet: "/assets/css/styles.css", - twitterSite: "@dart_node", - twitterCreator: "@dart_node", + twitterSite: "@cfdevelop", + twitterCreator: "@cfdevelop", ogImage: "/assets/images/og-image.png", ogImageWidth: "1200", ogImageHeight: "630", @@ -36,8 +36,8 @@ const techdocOptions = { name: "dart_node", logo: "/assets/images/og-image.png", sameAs: [ - "https://github.com/melbournedeveloper/dart_node", - "https://twitter.com/dart_node", + "https://github.com/MelbourneDeveloper/dart_node", + "https://x.com/cfdevelop", "https://pub.dev/publishers/christianfindlay.com/packages" ] } diff --git a/website/package.json b/website/package.json index b324e49..a918677 100644 --- a/website/package.json +++ b/website/package.json @@ -18,11 +18,11 @@ "update:theme": "npm update eleventy-plugin-techdoc" }, "devDependencies": { - "@11ty/eleventy": "^3.1.2", + "@11ty/eleventy": "^3.1.6", "@babel/core": "^7.28.6", "@playwright/test": "^1.57.0", "babel-plugin-istanbul": "^7.0.1", - "eleventy-plugin-techdoc": "^0.1.0", + "eleventy-plugin-techdoc": "^0.2.0", "istanbul-lib-instrument": "^6.0.3", "jsdom": "^24.1.3", "nyc": "^17.1.0", diff --git a/website/scripts/copy-readmes.js b/website/scripts/copy-readmes.js index b79e3c8..b2ca1d2 100644 --- a/website/scripts/copy-readmes.js +++ b/website/scripts/copy-readmes.js @@ -27,17 +27,31 @@ const packageToDocsMap = { 'dart_node_mcp': { slug: 'mcp', title: 'dart_node_mcp', order: 7, pubdev: 'dart_node_mcp' }, 'dart_logging': { slug: 'logging', title: 'dart_logging', order: 8, pubdev: 'dart_logging' }, 'reflux': { slug: 'reflux', title: 'reflux', order: 9, pubdev: 'reflux' }, - 'dart_jsx': { slug: 'jsx', title: 'dart_jsx', order: 10, pubdev: 'dart_jsx' }, + 'dart_node_sql_js': { slug: 'sql-js', title: 'dart_node_sql_js', order: 10, pubdev: 'dart_node_sql_js' }, + // dart_jsx is not published to pub.dev (publish_to: none) — link to source instead. + 'dart_jsx': { slug: 'jsx', title: 'dart_jsx', order: 11, pubdev: null }, }; -// CTA HTML to inject after installation sections -function getPackageLinksHtml(pubdevPackage, lang = 'en') { - const viewText = lang === 'zh' ? '在 pub.dev 查看' : 'View on pub.dev'; +// CTA HTML to inject after installation sections. +// Published packages link to pub.dev; unpublished ones (pubdev === null) +// link to their source folder on GitHub so the button never 404s. +const repoUrl = 'https://github.com/MelbourneDeveloper/dart_node'; + +function getPackageLinksHtml(config, packageDir, lang = 'en') { const starText = lang === 'zh' ? '给个 Star' : 'Star on GitHub'; + const primary = config.pubdev + ? { + href: `https://pub.dev/packages/${config.pubdev}`, + text: lang === 'zh' ? '在 pub.dev 查看' : 'View on pub.dev', + } + : { + href: `${repoUrl}/tree/main/packages/${packageDir}`, + text: lang === 'zh' ? '在 GitHub 查看源码' : 'View source on GitHub', + }; return ` `; } @@ -97,13 +111,13 @@ function processReadme(content, packageName, config, lang = 'en') { let result = lines.slice(startIndex).join('\n').trim(); // Inject package links after the first code block following "## Installation" or "## 安装" - if (config && config.pubdev) { + if (config) { const installationPattern = lang === 'zh' ? /(## 安装[\s\S]*?```[\s\S]*?```)/ : /(## Installation[\s\S]*?```[\s\S]*?```)/; const installationMatch = result.match(installationPattern); if (installationMatch) { - const packageLinks = getPackageLinksHtml(config.pubdev, lang); + const packageLinks = getPackageLinksHtml(config, packageName, lang); result = result.replace(installationMatch[0], installationMatch[0] + packageLinks); } } diff --git a/website/scripts/generate-api-docs.js b/website/scripts/generate-api-docs.js index b32e06d..9a985db 100644 --- a/website/scripts/generate-api-docs.js +++ b/website/scripts/generate-api-docs.js @@ -40,6 +40,7 @@ const PACKAGES = [ 'dart_node_react_native', 'dart_node_ws', 'dart_node_better_sqlite3', + 'dart_node_sql_js', 'dart_node_mcp', 'dart_logging', 'reflux', @@ -280,8 +281,11 @@ const processContent = (element, packageName, dom, langPrefix = '') => { // Links like ../dart_node_ws/Foo.html -> /api/dart_node_ws/Foo/ // (removing the duplicate package/package structure) - // Apply language prefix for non-English versions - newHref.startsWith('../') && (newHref = newHref.replace(/^\.\.\//, `${langPrefix}/api/`)); + // dartdoc emits one or more leading "../" depending on the source page + // depth (e.g. ../../dart_node_ws/Foo.html). Collapse the entire leading + // "../" run to /api/ so deep pages don't produce /api/../ (404) links. + // Apply language prefix for non-English versions. + newHref.startsWith('../') && (newHref = newHref.replace(/^(?:\.\.\/)+/, `${langPrefix}/api/`)); // Links like Foo.html -> Foo/ (relative, stays same level) // Links like Foo/bar.html -> Foo/bar/ @@ -478,6 +482,11 @@ description: Complete API documentation for all dart_node packages

SQLite bindings using better-sqlite3 for Node.js.

+ +

dart_node_sql_js

+

sql.js bindings — SQLite compiled to WebAssembly, in-memory with disk persistence.

+
+

dart_node_mcp

Model Context Protocol (MCP) bindings for AI tool integration.

diff --git a/website/src/_data/navigation.json b/website/src/_data/navigation.json index 97c4a55..5970c15 100644 --- a/website/src/_data/navigation.json +++ b/website/src/_data/navigation.json @@ -14,7 +14,7 @@ }, { "text": "GitHub", - "url": "https://github.com/melbournedeveloper/dart_node", + "url": "https://github.com/MelbourneDeveloper/dart_node", "external": true } ], @@ -67,6 +67,10 @@ "text": "dart_node_better_sqlite3", "url": "/docs/sqlite/" }, + { + "text": "dart_node_sql_js", + "url": "/docs/sql-js/" + }, { "text": "dart_node_mcp", "url": "/docs/mcp/" @@ -100,7 +104,8 @@ }, { "text": "Examples", - "url": "/docs/examples/" + "url": "https://github.com/MelbourneDeveloper/dart_node/tree/main/examples", + "external": true } ] }, @@ -113,11 +118,11 @@ }, { "text": "pub.dev", - "url": "https://pub.dev/publishers/dartnode.dev/packages" + "url": "https://pub.dev/publishers/christianfindlay.com/packages" }, { - "text": "Twitter", - "url": "https://twitter.com/dart_node" + "text": "X (Twitter)", + "url": "https://x.com/cfdevelop" } ] }, diff --git a/website/src/_data/navigation_zh.json b/website/src/_data/navigation_zh.json index 931cd35..1e550fa 100644 --- a/website/src/_data/navigation_zh.json +++ b/website/src/_data/navigation_zh.json @@ -14,7 +14,7 @@ }, { "text": "GitHub", - "url": "https://github.com/melbournedeveloper/dart_node", + "url": "https://github.com/MelbourneDeveloper/dart_node", "external": true } ], @@ -67,6 +67,10 @@ "text": "dart_node_better_sqlite3", "url": "/zh/docs/sqlite/" }, + { + "text": "dart_node_sql_js", + "url": "/zh/docs/sql-js/" + }, { "text": "dart_node_mcp", "url": "/zh/docs/mcp/" @@ -100,7 +104,8 @@ }, { "text": "示例", - "url": "/zh/docs/examples/" + "url": "https://github.com/MelbourneDeveloper/dart_node/tree/main/examples", + "external": true } ] }, @@ -113,11 +118,11 @@ }, { "text": "pub.dev", - "url": "https://pub.dev/publishers/dartnode.dev/packages" + "url": "https://pub.dev/publishers/christianfindlay.com/packages" }, { - "text": "Twitter", - "url": "https://twitter.com/dart_node" + "text": "X (Twitter)", + "url": "https://x.com/cfdevelop" } ] }, diff --git a/website/src/_data/site.json b/website/src/_data/site.json index d4096ed..0abfd29 100644 --- a/website/src/_data/site.json +++ b/website/src/_data/site.json @@ -6,10 +6,10 @@ "author": "dart_node team", "language": "en", "themeColor": "#0E7C6B", - "twitter": "@dart_node", - "twitterSite": "@dart_node", - "twitterCreator": "@dart_node", - "github": "https://github.com/melbournedeveloper/dart_node", + "twitter": "@cfdevelop", + "twitterSite": "@cfdevelop", + "twitterCreator": "@cfdevelop", + "github": "https://github.com/MelbourneDeveloper/dart_node", "stylesheet": "/assets/css/styles.css", "ogImage": "/assets/images/og-image.png", "ogImageWidth": "1200", @@ -19,8 +19,8 @@ "name": "dart_node", "logo": "/assets/images/og-image.png", "sameAs": [ - "https://github.com/melbournedeveloper/dart_node", - "https://twitter.com/dart_node", + "https://github.com/MelbourneDeveloper/dart_node", + "https://x.com/cfdevelop", "https://pub.dev/publishers/christianfindlay.com/packages" ] } diff --git a/website/src/_includes/layouts/base.njk b/website/src/_includes/layouts/base.njk index 80e92e2..ed9b3bc 100644 --- a/website/src/_includes/layouts/base.njk +++ b/website/src/_includes/layouts/base.njk @@ -87,7 +87,7 @@ } - + @@ -319,7 +311,7 @@

{{ section.title }}

@@ -333,14 +325,14 @@ {% if lang == 'zh' %}给个 Star{% else %}Star on GitHub{% endif %} - + {% if lang == 'zh' %}在 pub.dev 点赞{% else %}Like on pub.dev{% endif %} diff --git a/website/src/assets/images/apple-touch-icon.png b/website/src/assets/images/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4d71e236de8f642873613f65fe85ed9c771cd07f GIT binary patch literal 8667 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 #Bicg`7ypMC~E}2O& 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 Tyr3ZB9TIKzXKLS`Scm;TS=9hh literal 0 HcmV?d00001 diff --git a/website/src/assets/images/og-image.png b/website/src/assets/images/og-image.png new file mode 100644 index 0000000000000000000000000000000000000000..6dfdd1ecde5161e880f89139f0e3fcdf4e3325ce GIT binary patch literal 204414 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

8Nn{-lJwf$7B2X%PC( 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 O!O>LHQ*BVTjs72Bqe_hc literal 0 HcmV?d00001 diff --git a/website/src/blog/build-react-website-with-dart.md b/website/src/blog/build-react-website-with-dart.md index d2e3ae5..030850a 100644 --- a/website/src/blog/build-react-website-with-dart.md +++ b/website/src/blog/build-react-website-with-dart.md @@ -42,8 +42,8 @@ environment: sdk: ^3.0.0 dependencies: - dart_node_core: ^0.11.0-beta - dart_node_react: ^0.11.0-beta + dart_node_core: ^0.13.0-beta + dart_node_react: ^0.13.0-beta ``` Run `dart pub get`. Done. No webpack config. No babel. No 47 dev dependencies fighting each other. @@ -93,11 +93,11 @@ ReactElement Counter() => createElement( h2('Count: ${count.value}'), button( text: 'Increment', - onClick: (_) => count.setWithUpdater((c) => c + 1), + onClick: () => count.setWithUpdater((c) => c + 1), ), button( text: 'Reset', - onClick: (_) => count.set(0), + onClick: () => count.set(0), ), ], ); @@ -115,7 +115,29 @@ No more `useState(undefined)` gymnastics. Just `useState(0)` ## Building Forms (The Part Everyone Dreads) -Forms don't have to be painful. Here's a login form that actually works: +Forms don't have to be painful. The `input` function gives you an `onChange` +callback that receives a typed `SyntheticEvent`. To read the current value, write +a tiny helper that pulls `target.value` off the event: + +```dart +import 'dart:js_interop'; +import 'dart:js_interop_unsafe'; +import 'package:dart_node_react/dart_node_react.dart'; + +/// Extract the input value from a change event. +JSString getInputValue(SyntheticEvent event) { + final target = event.target; + return switch (target) { + final JSObject t => switch (t['value']) { + final JSString v => v, + _ => throw StateError('Input value is not a string'), + }, + _ => throw StateError('Event target is not an object'), + }; +} +``` + +Now the login form is just a handful of typed elements: ```dart ReactElement LoginForm() => createElement( @@ -195,7 +217,7 @@ ReactElement UserList() => createElement( else ul( children: usersState.value - .map((user) => li(child: span(user))) + .map((user) => li(user)) .toList(), ), ], @@ -224,8 +246,8 @@ ReactElement PageLayout() => createElement( className: 'main-content', children: [ section( - className: 'hero', - children: [ + {'className': 'hero'}, + [ h2('Welcome'), pEl('Build type-safe React apps with Dart.'), ], @@ -318,16 +340,17 @@ ReactElement TaskManager() => createElement( button(text: 'Add', onClick: addTask), ], ), - ul( + div( className: 'task-list', children: tasksState.value.indexed .map( - (item) => li( + (item) => div( + className: 'task-item', children: [ span(item.$2), button( text: 'Delete', - onClick: (_) => removeTask(item.$1), + onClick: () => removeTask(item.$1), ), ], ), @@ -344,7 +367,7 @@ State management, event handling, list rendering. All type-safe. All Dart. ## What's Next? -You've got the basics. Now go build something. Explore [more hooks](/api/dart_node_react/) like `useMemo` and `useCallback`. Check out the [full-stack example](https://github.com/AstroCodez/dart_node/tree/main/examples/frontend) with authentication, API integration, and WebSocket support. +You've got the basics. Now go build something. Explore [more hooks](/api/dart_node_react/) like `useMemo` and `useCallback`. Check out the [full-stack example](https://github.com/MelbourneDeveloper/dart_node/tree/main/examples/frontend) with authentication, API integration, and WebSocket support. No more fighting with type coercion. No more `any` escape hatches. Just clean, type-safe React apps in a language that respects your time. diff --git a/website/src/blog/introducing-dart-node.md b/website/src/blog/introducing-dart-node.md index 3fa1ee0..a03736d 100644 --- a/website/src/blog/introducing-dart-node.md +++ b/website/src/blog/introducing-dart-node.md @@ -1,6 +1,6 @@ --- layout: layouts/blog.njk -title: "Introducing dart_node: Full-Stack Dart for the JavaScript Ecosystem" +title: "Introducing dart_node: Full-Stack Dart for JavaScript" description: "We're excited to announce dart_node, a framework for building React, React Native, and Express applications entirely in Dart." date: 2024-01-15 author: "dart_node team" @@ -103,8 +103,8 @@ ReactElement counter() { final count = useState(0); return button( - onClick: (_) => count.setWithUpdater((c) => c + 1), - children: [text('Count: ${count.value}')], + text: 'Count: ${count.value}', + onClick: () => count.setWithUpdater((c) => c + 1), ); } ``` @@ -117,7 +117,7 @@ React Native bindings for mobile development. Use with Expo for a complete mobil ReactElement app() { return safeAreaView(children: [ view(style: {'padding': 20}, children: [ - rnText(children: [text('Hello from Dart!')]), + text('Hello from Dart!'), ]), ]); } diff --git a/website/src/docs/dart-to-js.md b/website/src/docs/dart-to-js.md index 4edf729..800078f 100644 --- a/website/src/docs/dart-to-js.md +++ b/website/src/docs/dart-to-js.md @@ -34,11 +34,11 @@ dart compile js lib/main.dart -o build/main.js -O2 | Level | Description | Use Case | |-------|-------------|----------| -| `-O0` | No optimization | Debugging | -| `-O1` | Basic optimization | Development | -| `-O2` | Full optimization (default) | Production | -| `-O3` | Aggressive optimization | Maximum performance | -| `-O4` | Most aggressive | When size/speed is critical | +| `-O0` | No optimizations | Debugging only | +| `-O1` | Default: whole-program analysis and inlining | Development / default | +| `-O2` | Safe production-oriented optimizations (e.g. minification) | Production | +| `-O3` | Potentially unsafe optimizations | Maximum performance | +| `-O4` | More aggressive unsafe optimizations | When size/speed is critical | ## Node.js Compatibility @@ -55,10 +55,10 @@ void main() { } ``` -Or use our build tool (recommended): +Wrap this in a small build script and run it after `dart compile js`: ```bash -dart run tools/build/build.dart my_app +dart compile js web/app.dart -o build/app.js -O2 ``` ## Output Structure @@ -180,7 +180,7 @@ Future main(List args) async { 4. **Prefer `const`** - Constant values are evaluated at compile time -5. **Profile your output** - Check the `.js.info` file for size breakdown: +5. **Profile your output** - Use the `--dump-info` output for a size breakdown: ```bash dart compile js lib/main.dart -o build/main.js --dump-info diff --git a/website/src/docs/getting-started.md b/website/src/docs/getting-started.md index ca36eb0..ed50e1b 100644 --- a/website/src/docs/getting-started.md +++ b/website/src/docs/getting-started.md @@ -103,7 +103,7 @@ faq: Welcome to dart_node! This guide will help you build your first application using Dart for the JavaScript ecosystem.

@@ -137,8 +137,8 @@ environment: sdk: ^3.10.0 dependencies: - dart_node_core: ^0.11.0-beta - dart_node_express: ^0.11.0-beta + dart_node_core: ^0.13.0-beta + dart_node_express: ^0.13.0-beta ``` Then run: @@ -236,7 +236,7 @@ Now that you have a basic server running, explore: ## Example Projects -Check out the [examples directory](https://github.com/melbournedeveloper/dart_node/tree/main/examples) for complete working applications: +Check out the [examples directory](https://github.com/MelbourneDeveloper/dart_node/tree/main/examples) for complete working applications: - **backend/** - Express server with REST API - **frontend/** - React web application @@ -247,5 +247,5 @@ Check out the [examples directory](https://github.com/melbournedeveloper/dart_no If dart_node is useful to you, please consider: - [Star the repository on GitHub](https://github.com/MelbourneDeveloper/dart_node) - It helps others discover the project -- [Like the packages on pub.dev](https://pub.dev/publishers/dartnode.dev/packages) - Boost visibility in the Dart ecosystem -- [Share on social media](https://twitter.com/intent/tweet?text=Check%20out%20dart_node%20-%20Full-Stack%20Dart%20for%20React,%20React%20Native,%20and%20Express!%20https://dartnode.dev) - Spread the word +- [Like the packages on pub.dev](https://pub.dev/publishers/christianfindlay.com/packages) - Boost visibility in the Dart ecosystem +- [Share on social media](https://twitter.com/intent/tweet?text=Check%20out%20dart_node%20-%20Full-Stack%20Dart%20for%20React,%20React%20Native,%20and%20Express!%20https://dartnode.org) - Spread the word diff --git a/website/src/index.njk b/website/src/index.njk index da9d7c7..34a21b7 100644 --- a/website/src/index.njk +++ b/website/src/index.njk @@ -61,13 +61,13 @@ keywords: "dart_node, Dart JavaScript, Dart React, Dart Express, Dart Node.js, T {"@type": "ListItem", "position": 3, "name": "dart_node_react", "description": "React bindings with hooks and JSX-like syntax", "url": "https://dartnode.org/docs/react/"}, {"@type": "ListItem", "position": 4, "name": "dart_node_react_native", "description": "React Native + Expo bindings for mobile development", "url": "https://dartnode.org/docs/react-native/"}, {"@type": "ListItem", "position": 5, "name": "dart_node_ws", "description": "WebSocket bindings for real-time communication", "url": "https://dartnode.org/docs/websockets/"}, - {"@type": "ListItem", "position": 6, "name": "dart_node_better_sqlite3", "description": "Synchronous SQLite3 bindings with WAL mode", "url": "https://dartnode.org/docs/sqlite/"}, - {"@type": "ListItem", "position": 7, "name": "dart_node_mcp", "description": "Model Context Protocol server for AI tools", "url": "https://dartnode.org/docs/mcp/"}, - {"@type": "ListItem", "position": 8, "name": "reflux", "description": "Redux-style state container with pattern matching", "url": "https://dartnode.org/docs/reflux/"}, - {"@type": "ListItem", "position": 9, "name": "dart_logging", "description": "Pino-style structured logging", "url": "https://dartnode.org/docs/logging/"}, - {"@type": "ListItem", "position": 10, "name": "dart_jsx", "description": "JSX transpiler for Dart", "url": "https://dartnode.org/docs/jsx/"}, - {"@type": "ListItem", "position": 11, "name": "dart_node_vsix", "description": "VSCode extension API bindings for building extensions in Dart", "url": "https://dartnode.org/docs/vsix/"}, - {"@type": "ListItem", "position": 12, "name": "too-many-cooks", "description": "Multi-agent coordination MCP server", "url": "https://dartnode.org/docs/too-many-cooks/"} + {"@type": "ListItem", "position": 6, "name": "dart_node_better_sqlite3", "description": "Synchronous native SQLite3 bindings with WAL mode", "url": "https://dartnode.org/docs/sqlite/"}, + {"@type": "ListItem", "position": 7, "name": "dart_node_sql_js", "description": "Typed bindings for sql.js — SQLite compiled to WebAssembly", "url": "https://dartnode.org/docs/sql-js/"}, + {"@type": "ListItem", "position": 8, "name": "dart_node_mcp", "description": "Model Context Protocol server for AI tools", "url": "https://dartnode.org/docs/mcp/"}, + {"@type": "ListItem", "position": 9, "name": "reflux", "description": "Redux-style state container with pattern matching", "url": "https://dartnode.org/docs/reflux/"}, + {"@type": "ListItem", "position": 10, "name": "dart_logging", "description": "Pino-style structured logging", "url": "https://dartnode.org/docs/logging/"}, + {"@type": "ListItem", "position": 11, "name": "dart_jsx", "description": "JSX transpiler for Dart", "url": "https://dartnode.org/docs/jsx/"}, + {"@type": "ListItem", "position": 12, "name": "dart_node_vsix", "description": "VSCode extension API bindings for building extensions in Dart", "url": "https://github.com/MelbourneDeveloper/dart_node/tree/main/packages/dart_node_vsix"} ] } @@ -89,7 +89,7 @@ keywords: "dart_node, Dart JavaScript, Dart React, Dart Express, Dart Node.js, T
@@ -320,13 +320,23 @@ ReactElement counter() {
S

dart_node_better_sqlite3

-

Typed bindings for better-sqlite3 with synchronous SQLite3 and WAL mode.

+

Typed bindings for better-sqlite3 with synchronous native SQLite3 and WAL mode.

+
+
Q
+

dart_node_sql_js

+

Typed bindings for sql.js — SQLite compiled to WebAssembly. In-memory, no native build, with explicit disk persistence.

+ +
+
X

reflux

@@ -353,7 +363,7 @@ ReactElement counter() {

JSX transpiler for Dart — write JSX syntax that compiles to dart_node_react calls.

@@ -362,18 +372,16 @@ ReactElement counter() {

dart_node_vsix

VSCode extension API bindings for building Visual Studio Code extensions in Dart.

T
-

too-many-cooks

-

Multi-agent coordination MCP server for AI agents editing codebases simultaneously.

+

Too Many Cooks

+

Multi-agent coordination MCP server, originally built with dart_node_mcp. It has moved to its own home and is no longer part of this repo.

diff --git a/website/src/zh/api/index.md b/website/src/zh/api/index.md index faf5619..5054461 100644 --- a/website/src/zh/api/index.md +++ b/website/src/zh/api/index.md @@ -41,6 +41,11 @@ description: 所有 dart_node 包的完整 API 文档

使用 better-sqlite3 的 SQLite 绑定。

+ +

dart_node_sql_js

+

sql.js 绑定 —— 编译为 WebAssembly 的 SQLite,纯内存运行并可持久化到磁盘。

+
+

dart_node_mcp

模型上下文协议(MCP)绑定,用于 AI 工具集成。

diff --git a/website/src/zh/blog/introducing-dart-node.md b/website/src/zh/blog/introducing-dart-node.md index 4513659..bb84dd8 100644 --- a/website/src/zh/blog/introducing-dart-node.md +++ b/website/src/zh/blog/introducing-dart-node.md @@ -105,8 +105,8 @@ ReactElement counter() { final count = useState(0); return button( - onClick: (_) => count.setWithUpdater((c) => c + 1), - children: [text('Count: ${count.value}')], + text: 'Count: ${count.value}', + onClick: () => count.setWithUpdater((c) => c + 1), ); } ``` @@ -119,7 +119,7 @@ ReactElement counter() { ReactElement app() { return safeAreaView(children: [ view(style: {'padding': 20}, children: [ - rnText(children: [text('Hello from Dart!')]), + text('Hello from Dart!'), ]), ]); } diff --git a/website/src/zh/docs/dart-to-js.md b/website/src/zh/docs/dart-to-js.md index 020dfa9..8e28f3a 100644 --- a/website/src/zh/docs/dart-to-js.md +++ b/website/src/zh/docs/dart-to-js.md @@ -36,11 +36,11 @@ dart compile js lib/main.dart -o build/main.js -O2 | 级别 | 说明 | 使用场景 | |-------|-------------|----------| -| `-O0` | 无优化 | 调试 | -| `-O1` | 基本优化 | 开发 | -| `-O2` | 完全优化(默认) | 生产 | -| `-O3` | 激进优化 | 最高性能 | -| `-O4` | 最激进 | 对大小/速度要求严格时 | +| `-O0` | 不做优化 | 仅调试 | +| `-O1` | 默认:全程序分析与内联 | 开发 / 默认 | +| `-O2` | 安全的、面向生产的优化(如压缩) | 生产 | +| `-O3` | 可能不安全的优化 | 最高性能 | +| `-O4` | 更激进的不安全优化 | 对大小/速度要求严格时 | ## Node.js 兼容性 @@ -57,10 +57,10 @@ void main() { } ``` -或使用我们的构建工具(推荐): +将其包装成一个小的构建脚本,并在 `dart compile js` 之后运行: ```bash -dart run tools/build/build.dart my_app +dart compile js web/app.dart -o build/app.js -O2 ``` ## 输出结构 @@ -182,7 +182,7 @@ Future main(List args) async { 4. **优先使用 `const`** - 常量值在编译时计算 -5. **分析输出** - 检查 `.js.info` 文件了解大小分布: +5. **分析输出** - 使用 `--dump-info` 的输出了解大小分布: ```bash dart compile js lib/main.dart -o build/main.js --dump-info diff --git a/website/src/zh/docs/getting-started.md b/website/src/zh/docs/getting-started.md index 4c331c1..d0cf204 100644 --- a/website/src/zh/docs/getting-started.md +++ b/website/src/zh/docs/getting-started.md @@ -41,8 +41,8 @@ environment: sdk: ^3.10.0 dependencies: - dart_node_core: ^0.11.0-beta - dart_node_express: ^0.11.0-beta + dart_node_core: ^0.13.0-beta + dart_node_express: ^0.13.0-beta ``` 然后运行: @@ -140,7 +140,7 @@ Dart 代码在运行时使用 JS 互操作来调用这些 npm 包。 ## 示例项目 -查看 [示例目录](https://github.com/melbournedeveloper/dart_node/tree/main/examples) 获取完整的工作应用程序: +查看 [示例目录](https://github.com/MelbourneDeveloper/dart_node/tree/main/examples) 获取完整的工作应用程序: - **backend/** - 带 REST API 的 Express 服务器 - **frontend/** - React Web 应用程序 diff --git a/website/src/zh/index.njk b/website/src/zh/index.njk index 417fe9e..bb7c902 100644 --- a/website/src/zh/index.njk +++ b/website/src/zh/index.njk @@ -212,7 +212,14 @@ ReactElement counter() {
S

dart_node_better_sqlite3

-

better-sqlite3 的类型化绑定,支持同步 SQLite3 和 WAL 模式。

+

better-sqlite3 的类型化绑定,支持同步原生 SQLite3 和 WAL 模式。

+
+ +
@@ -231,20 +238,21 @@ ReactElement counter() {
J

dart_jsx

Dart 的 JSX 转译器 — JSX 语法编译为 dart_node_react 调用。

+ 了解更多 →
V

dart_node_vsix

VSCode 扩展 API 绑定,使用 Dart 构建 Visual Studio Code 扩展。

- 了解更多 → + 在 GitHub 查看源码 →
T
-

too-many-cooks

-

多 AI 代理协调 MCP 服务器,用于多个代理同时编辑代码库。

- 了解更多 → +

Too Many Cooks

+

多 AI 代理协调 MCP 服务器,最初使用 dart_node_mcp 构建。它已迁移到独立站点,不再是本仓库的一部分。

+ tmc-mcp.dev →
From f6ba8353eab107a3276e872344afefb5089f7e0d Mon Sep 17 00:00:00 2001 From: Christian Findlay <16697547+MelbourneDeveloper@users.noreply.github.com> Date: Mon, 8 Jun 2026 12:24:10 +1000 Subject: [PATCH 2/2] Sync website package-lock with upgraded eleventy-plugin-techdoc 0.2.0 CI's npm ci requires package-lock.json to match package.json; the lockfile still pinned eleventy-plugin-techdoc 0.1.0 / @11ty/eleventy 3.1.2 while package.json was bumped to ^0.2.0 / ^3.1.6. Regenerate so npm ci passes. --- website/package-lock.json | 513 ++++++++++++++++++-------------------- 1 file changed, 236 insertions(+), 277 deletions(-) diff --git a/website/package-lock.json b/website/package-lock.json index d4ef921..5beaa96 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -8,11 +8,11 @@ "name": "dart-node-website", "version": "1.0.0", "devDependencies": { - "@11ty/eleventy": "^3.1.2", + "@11ty/eleventy": "^3.1.6", "@babel/core": "^7.28.6", "@playwright/test": "^1.57.0", "babel-plugin-istanbul": "^7.0.1", - "eleventy-plugin-techdoc": "^0.1.0", + "eleventy-plugin-techdoc": "^0.2.0", "istanbul-lib-instrument": "^6.0.3", "jsdom": "^24.1.3", "nyc": "^17.1.0", @@ -20,9 +20,9 @@ } }, "node_modules/@11ty/dependency-tree": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@11ty/dependency-tree/-/dependency-tree-4.0.0.tgz", - "integrity": "sha512-PTOnwM8Xt+GdJmwRKg4pZ8EKAgGoK7pedZBfNSOChXu8MYk2FdEsxdJYecX4t62owpGw3xK60q9TQv/5JI59jw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@11ty/dependency-tree/-/dependency-tree-4.0.2.tgz", + "integrity": "sha512-RTF6VTZHatYf7fSZBUN3RKwiUeJh5dhWV61gDPrHhQF2/gzruAkYz8yXuvGLx3w3ZBKreGrR+MfYpSVkdbdbLA==", "dev": true, "license": "MIT", "dependencies": { @@ -30,9 +30,9 @@ } }, "node_modules/@11ty/dependency-tree-esm": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@11ty/dependency-tree-esm/-/dependency-tree-esm-2.0.2.tgz", - "integrity": "sha512-kSTmXneksQLBhwsfqjxiSi9ecRKENXmRtT5RG95rFoWSI8kkwLcGlYpoXsPkCD9uQwSU1rmDzXBDnqUJlWaIyw==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@11ty/dependency-tree-esm/-/dependency-tree-esm-2.0.4.tgz", + "integrity": "sha512-MYKC0Ac77ILr1HnRJalzKDlb9Z8To3kXQCltx299pUXXUFtJ1RIONtULlknknqW8cLe19DLVgmxVCtjEFm7h0A==", "dev": true, "license": "MIT", "dependencies": { @@ -43,45 +43,45 @@ } }, "node_modules/@11ty/eleventy": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@11ty/eleventy/-/eleventy-3.1.2.tgz", - "integrity": "sha512-IcsDlbXnBf8cHzbM1YBv3JcTyLB35EK88QexmVyFdVJVgUU6bh9g687rpxryJirHzo06PuwnYaEEdVZQfIgRGg==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@11ty/eleventy/-/eleventy-3.1.6.tgz", + "integrity": "sha512-ZlSiR1PLdS2lv7TelBgWAhcvMiLNZkPBlLEb+lh7kGYZ+Mk0bo9qcYgVsewvw9W7Em0RH3wd01h5fAstNDh0zA==", "dev": true, "license": "MIT", "dependencies": { - "@11ty/dependency-tree": "^4.0.0", - "@11ty/dependency-tree-esm": "^2.0.0", + "@11ty/dependency-tree": "^4.0.2", + "@11ty/dependency-tree-esm": "^2.0.4", "@11ty/eleventy-dev-server": "^2.0.8", - "@11ty/eleventy-plugin-bundle": "^3.0.6", + "@11ty/eleventy-plugin-bundle": "^3.0.7", "@11ty/eleventy-utils": "^2.0.7", "@11ty/lodash-custom": "^4.17.21", - "@11ty/posthtml-urls": "^1.0.1", - "@11ty/recursive-copy": "^4.0.2", + "@11ty/posthtml-urls": "^1.0.3", + "@11ty/recursive-copy": "^4.0.4", "@sindresorhus/slugify": "^2.2.1", "bcp-47-normalize": "^2.3.0", "chokidar": "^3.6.0", - "debug": "^4.4.1", + "debug": "^4.4.3", "dependency-graph": "^1.0.0", "entities": "^6.0.1", "filesize": "^10.1.6", "gray-matter": "^4.0.3", "iso-639-1": "^3.1.5", - "js-yaml": "^4.1.0", + "js-yaml": "^4.1.1", "kleur": "^4.1.5", - "liquidjs": "^10.21.1", - "luxon": "^3.6.1", - "markdown-it": "^14.1.0", + "liquidjs": "^10.27.0", + "luxon": "^3.7.2", + "markdown-it": "^14.2.0", "minimist": "^1.2.8", - "moo": "^0.5.2", + "moo": "0.5.2", "node-retrieve-globals": "^6.0.1", "nunjucks": "^3.2.4", - "picomatch": "^4.0.2", + "picomatch": "^4.0.4", "please-upgrade-node": "^3.2.0", - "posthtml": "^0.16.6", + "posthtml": "^0.16.7", "posthtml-match-helper": "^2.0.3", - "semver": "^7.7.2", - "slugify": "^1.6.6", - "tinyglobby": "^0.2.14" + "semver": "^7.8.1", + "slugify": "^1.6.9", + "tinyglobby": "^0.2.16" }, "bin": { "eleventy": "cmd.cjs" @@ -126,29 +126,19 @@ } }, "node_modules/@11ty/eleventy-navigation": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@11ty/eleventy-navigation/-/eleventy-navigation-0.3.5.tgz", - "integrity": "sha512-4aKW5aIQDFed8xs1G1pWcEiFPcDSwZtA4IH1eERtoJ+Xy+/fsoe0pzbDmw84bHZ9ACny5jblENhfZhcCxklqQw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@11ty/eleventy-navigation/-/eleventy-navigation-1.0.5.tgz", + "integrity": "sha512-zb6xe29cM9viSdYtZywKIkJw2HIROyBINdBcFWC9uD0c/jYOTAex5nwy3HNEuh5t6/Ld/S9V4gEizfmeYuYpCQ==", "dev": true, "license": "MIT", "dependencies": { - "dependency-graph": "^0.11.0" + "dependency-graph": "^1.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/11ty" } }, - "node_modules/@11ty/eleventy-navigation/node_modules/dependency-graph": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", - "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, "node_modules/@11ty/eleventy-plugin-bundle": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@11ty/eleventy-plugin-bundle/-/eleventy-plugin-bundle-3.0.7.tgz", @@ -169,16 +159,16 @@ } }, "node_modules/@11ty/eleventy-plugin-rss": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@11ty/eleventy-plugin-rss/-/eleventy-plugin-rss-2.0.4.tgz", - "integrity": "sha512-LF60sGVlxGTryQe3hTifuzrwF8R7XbrNsM2xfcDcNMSliLN4kmB+7zvoLRySRx0AQDjqhPTAeeeT0ra6/9zHUQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@11ty/eleventy-plugin-rss/-/eleventy-plugin-rss-3.0.0.tgz", + "integrity": "sha512-kKW4DcR57xAyRx0e8gNhKh56ahHVEaAj8/TuXQDnw+B46ig2bWADJAlyj/GdV37IG5ja9dZ4SgKZrs/CHz6YWQ==", "dev": true, "license": "MIT", "dependencies": { - "@11ty/eleventy-utils": "^2.0.0", - "@11ty/posthtml-urls": "^1.0.1", - "debug": "^4.4.0", - "posthtml": "^0.16.6" + "@11ty/eleventy-utils": "^2.0.7", + "@11ty/posthtml-urls": "^1.0.2", + "debug": "^4.4.3", + "posthtml": "^0.16.7" }, "funding": { "type": "opencollective", @@ -228,9 +218,9 @@ } }, "node_modules/@11ty/posthtml-urls": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@11ty/posthtml-urls/-/posthtml-urls-1.0.1.tgz", - "integrity": "sha512-6EFN/yYSxC/OzYXpq4gXDyDMlX/W+2MgCvvoxf11X1z76bqkqFJ8eep5RiBWfGT5j0323a1pwpelcJJdR46MCw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@11ty/posthtml-urls/-/posthtml-urls-1.0.3.tgz", + "integrity": "sha512-1YvhnkaNlFnnJic1rBMWmTC2adbuy+JQiBfl1Hecr1Wjjik1pQZmGyk/eC9zKX/FQv52s2Nht1Gi/UwhYqrBeg==", "dev": true, "license": "MIT", "dependencies": { @@ -244,15 +234,15 @@ } }, "node_modules/@11ty/recursive-copy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@11ty/recursive-copy/-/recursive-copy-4.0.2.tgz", - "integrity": "sha512-174nFXxL/6KcYbLYpra+q3nDbfKxLxRTNVY1atq2M1pYYiPfHse++3IFNl8mjPFsd7y2qQjxLORzIjHMjL3NDQ==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@11ty/recursive-copy/-/recursive-copy-4.0.4.tgz", + "integrity": "sha512-oI7m8pa7/IAU/3lqRU9vjBbs20iKFo7x+1K9kT3aVira6scc1X9MjBdgLCHzLJeJ7iB6wydioA+kr9/qPnvmlQ==", "dev": true, "license": "ISC", "dependencies": { "errno": "^1.0.0", "junk": "^3.1.0", - "maximatch": "^0.1.0", + "minimatch": "^3.1.5", "slash": "^3.0.0" }, "engines": { @@ -676,30 +666,29 @@ } }, "node_modules/@inquirer/ansi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", - "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-2.0.7.tgz", + "integrity": "sha512-3eTuUO1vH2cZm2ZKHeQxnOqlTi9EfZDGgIe3BL3I4u+rJHocr9Fz86M4fjYABPvFnQG/gGK551HqDiIcETwU6Q==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" } }, "node_modules/@inquirer/checkbox": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.2.tgz", - "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-5.2.1.tgz", + "integrity": "sha512-b6xmA/VlTe0ZgDQHDui+Nav470u7u49nRd8/iuhOcQPO9Ch7lGuogydhi2VOmNlZ+zXcM8IcPuNSwQcdJaF/kw==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" + "@inquirer/ansi": "^2.0.7", + "@inquirer/core": "^11.2.1", + "@inquirer/figures": "^2.0.7", + "@inquirer/type": "^4.0.7" }, "engines": { - "node": ">=18" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" }, "peerDependencies": { "@types/node": ">=18" @@ -711,17 +700,17 @@ } }, "node_modules/@inquirer/confirm": { - "version": "5.1.21", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", - "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.1.1.tgz", + "integrity": "sha512-eb8DBZcz/2qHWQda4rk2JiQk5h9QV/cVHi1yjt0f69WFZMRFn0sJTye3EAP8icut8UDMjQPsaH5KbcOogefrFQ==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" + "@inquirer/core": "^11.2.1", + "@inquirer/type": "^4.0.7" }, "engines": { - "node": ">=18" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" }, "peerDependencies": { "@types/node": ">=18" @@ -733,23 +722,22 @@ } }, "node_modules/@inquirer/core": { - "version": "10.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", - "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-11.2.1.tgz", + "integrity": "sha512-Qd6GJT1yVyrZZCfN8W2qKF5ApmqryXRhRKCuip8h01x2w/esJQ2XIYc6f9abMIHgKQdBfFTSOdbHRLAhuM09UA==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", + "@inquirer/ansi": "^2.0.7", + "@inquirer/figures": "^2.0.7", + "@inquirer/type": "^4.0.7", "cli-width": "^4.1.0", - "mute-stream": "^2.0.0", - "signal-exit": "^4.1.0", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.3" + "fast-wrap-ansi": "^0.2.0", + "mute-stream": "^3.0.0", + "signal-exit": "^4.1.0" }, "engines": { - "node": ">=18" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" }, "peerDependencies": { "@types/node": ">=18" @@ -774,18 +762,18 @@ } }, "node_modules/@inquirer/editor": { - "version": "4.2.23", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.23.tgz", - "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-5.2.2.tgz", + "integrity": "sha512-ZRVd/oD+sYsUd5zVm0NflqEzlqfYCyHNsqkHl2oWXEUHs12tCbcSFi+wVFEvD8+LGRaMUsVrE7qeo6lSG/S1Vg==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/external-editor": "^1.0.3", - "@inquirer/type": "^3.0.10" + "@inquirer/core": "^11.2.1", + "@inquirer/external-editor": "^3.0.3", + "@inquirer/type": "^4.0.7" }, "engines": { - "node": ">=18" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" }, "peerDependencies": { "@types/node": ">=18" @@ -797,18 +785,17 @@ } }, "node_modules/@inquirer/expand": { - "version": "4.0.23", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.23.tgz", - "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-5.1.1.tgz", + "integrity": "sha512-YmQpenjbFSHAK3sOd44puHh3V1KXXr+JiNpUztoSQ4drLh2rTVzTap/YtlAVu/5xavifIlBfNEzJ/neZJ1a/1g==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" + "@inquirer/core": "^11.2.1", + "@inquirer/type": "^4.0.7" }, "engines": { - "node": ">=18" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" }, "peerDependencies": { "@types/node": ">=18" @@ -820,17 +807,17 @@ } }, "node_modules/@inquirer/external-editor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", - "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-3.0.3.tgz", + "integrity": "sha512-6thf5I8q7lZwzGLAxPaaGEREEkZ3nyePPDQ1oyobblxmEE8mqTLguScP7pDjUTAibiyb4hfXl+qjUEJ+di/aNA==", "dev": true, "license": "MIT", "dependencies": { "chardet": "^2.1.1", - "iconv-lite": "^0.7.0" + "iconv-lite": "^0.7.2" }, "engines": { - "node": ">=18" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" }, "peerDependencies": { "@types/node": ">=18" @@ -859,27 +846,27 @@ } }, "node_modules/@inquirer/figures": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", - "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-2.0.7.tgz", + "integrity": "sha512-aJ8TBPOGB6f/2qziPfElISTCEd5XOYTFckA2SGjhNmiKzfK/u4ot3v0DUzGVdUnKjN10EqnnEPck36BkyfLnJw==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" } }, "node_modules/@inquirer/input": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.3.1.tgz", - "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-5.1.2.tgz", + "integrity": "sha512-9K/DDBSQpOyZSkt6sOVP9Vo0TR7atX2kuILsUu0x3wVcVbe97lJwIJKMLdMw25tDYuXl/qp6erT0Xs1rfmcfZg==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" + "@inquirer/core": "^11.2.1", + "@inquirer/type": "^4.0.7" }, "engines": { - "node": ">=18" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" }, "peerDependencies": { "@types/node": ">=18" @@ -891,17 +878,17 @@ } }, "node_modules/@inquirer/number": { - "version": "3.0.23", - "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.23.tgz", - "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-4.1.1.tgz", + "integrity": "sha512-XF4IXAbPnGPgw0wsbC/i2tPcyfdZgDpUlhsqU0SfT4IRIGWha6Xm9VRgN5yYxJq+jnyXlfXI/nQ3ulfk0iEICA==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" + "@inquirer/core": "^11.2.1", + "@inquirer/type": "^4.0.7" }, "engines": { - "node": ">=18" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" }, "peerDependencies": { "@types/node": ">=18" @@ -913,18 +900,18 @@ } }, "node_modules/@inquirer/password": { - "version": "4.0.23", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.23.tgz", - "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-5.1.1.tgz", + "integrity": "sha512-3XBfF7DAsp5qeDsvN5Rd1HmbNokVvEQoUM0QLrRcybC9nX96w3Pbmu7qUsb3IT3J3jBvs2+mTXaKHOUsgHMLzg==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" + "@inquirer/ansi": "^2.0.7", + "@inquirer/core": "^11.2.1", + "@inquirer/type": "^4.0.7" }, "engines": { - "node": ">=18" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" }, "peerDependencies": { "@types/node": ">=18" @@ -936,25 +923,25 @@ } }, "node_modules/@inquirer/prompts": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.10.1.tgz", - "integrity": "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-8.5.2.tgz", + "integrity": "sha512-IYR/3C/paEVVQYQvdDlFZVjRCJVYHHON0XXMH91KO9GSxs0TdKYWlUdvfQl2EfAHDxUaN3IBffkE/BDTh5nJ6g==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/checkbox": "^4.3.2", - "@inquirer/confirm": "^5.1.21", - "@inquirer/editor": "^4.2.23", - "@inquirer/expand": "^4.0.23", - "@inquirer/input": "^4.3.1", - "@inquirer/number": "^3.0.23", - "@inquirer/password": "^4.0.23", - "@inquirer/rawlist": "^4.1.11", - "@inquirer/search": "^3.2.2", - "@inquirer/select": "^4.4.2" + "@inquirer/checkbox": "^5.2.1", + "@inquirer/confirm": "^6.1.1", + "@inquirer/editor": "^5.2.2", + "@inquirer/expand": "^5.1.1", + "@inquirer/input": "^5.1.2", + "@inquirer/number": "^4.1.1", + "@inquirer/password": "^5.1.1", + "@inquirer/rawlist": "^5.3.1", + "@inquirer/search": "^4.2.1", + "@inquirer/select": "^5.2.1" }, "engines": { - "node": ">=18" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" }, "peerDependencies": { "@types/node": ">=18" @@ -966,18 +953,17 @@ } }, "node_modules/@inquirer/rawlist": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.11.tgz", - "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-5.3.1.tgz", + "integrity": "sha512-QqdTqQddL3qPX/PPrjobpsO25NZ4dWXgTLenrR445L2ptLEYE6Z+PD5c5CNDJNx4ugRgELAIpSIJxZaO2jJ2Og==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" + "@inquirer/core": "^11.2.1", + "@inquirer/type": "^4.0.7" }, "engines": { - "node": ">=18" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" }, "peerDependencies": { "@types/node": ">=18" @@ -989,19 +975,18 @@ } }, "node_modules/@inquirer/search": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.2.tgz", - "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-4.2.1.tgz", + "integrity": "sha512-xJj8QWKRSrfKoBIITLZK61dD3zwo0Rz11fgDImku30/Oe81zMdIdGgrLY2h6RkJ+KZ/GhNYIRMKnH/62qBTA5g==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" + "@inquirer/core": "^11.2.1", + "@inquirer/figures": "^2.0.7", + "@inquirer/type": "^4.0.7" }, "engines": { - "node": ">=18" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" }, "peerDependencies": { "@types/node": ">=18" @@ -1013,20 +998,19 @@ } }, "node_modules/@inquirer/select": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.2.tgz", - "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-5.2.1.tgz", + "integrity": "sha512-FlDndEUww8m7BfukO2nJa25vhD+H5jxxCv4oGioKqzyWz3nPHhhw4LKdYRSlXuAx7DsdWia7iyaBPKKS95Evfw==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" + "@inquirer/ansi": "^2.0.7", + "@inquirer/core": "^11.2.1", + "@inquirer/figures": "^2.0.7", + "@inquirer/type": "^4.0.7" }, "engines": { - "node": ">=18" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" }, "peerDependencies": { "@types/node": ">=18" @@ -1038,13 +1022,13 @@ } }, "node_modules/@inquirer/type": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", - "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-4.0.7.tgz", + "integrity": "sha512-t28inv14nMQ1PhKpsJPY+kEs/c00qzeCOS2gTNRyTjG5d6qsVA2fItxW4hkvGZ5lvanGLdtCzVIx5dwdRpN1+g==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" }, "peerDependencies": { "@types/node": ">=18" @@ -1377,49 +1361,6 @@ "dev": true, "license": "Python-2.0" }, - "node_modules/array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-uniq": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", @@ -2003,16 +1944,16 @@ "license": "ISC" }, "node_modules/eleventy-plugin-techdoc": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/eleventy-plugin-techdoc/-/eleventy-plugin-techdoc-0.1.0.tgz", - "integrity": "sha512-XAMXG5j+jpOpmojAet5ZwSyB7hV5JhFkAW6viZn9nxu0BjLUwg7hMQ7MKmpyKdWZiBjOQpcHlDmSgK75pD2qTw==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eleventy-plugin-techdoc/-/eleventy-plugin-techdoc-0.2.0.tgz", + "integrity": "sha512-4bDYIPMk/maqXyX0+LTYHc8HdgmqAa2WtKISq2llMz/RUz65MsP60hfx+XMtbnRPP3Dkonf+65rKpbLD+PU20A==", "dev": true, "license": "MIT", "dependencies": { - "@11ty/eleventy-navigation": "^0.3.5", - "@11ty/eleventy-plugin-rss": "^2.0.2", + "@11ty/eleventy-navigation": "^1.0.5", + "@11ty/eleventy-plugin-rss": "^3.0.0", "@11ty/eleventy-plugin-syntaxhighlight": "^5.0.0", - "@inquirer/prompts": "^7.0.0", + "@inquirer/prompts": "^8.5.2", "markdown-it": "^14.1.0", "markdown-it-anchor": "^9.2.0" }, @@ -2212,6 +2153,33 @@ "node": ">=0.10.0" } }, + "node_modules/fast-string-truncated-width": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz", + "integrity": "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-string-width": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-string-width/-/fast-string-width-3.0.2.tgz", + "integrity": "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-string-truncated-width": "^3.0.2" + } + }, + "node_modules/fast-wrap-ansi": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.2.2.tgz", + "integrity": "sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-string-width": "^3.0.2" + } + }, "node_modules/fdir": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", @@ -3251,19 +3219,29 @@ } }, "node_modules/linkify-it": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", - "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.1.tgz", + "integrity": "sha512-wVoTjP4Q6R0NW5hiZkVJaFZPWgtXfoGF+6LucL3/FtiNjmcHhYjEr5f1Kqjirc1nBW07J/ZuRFumqr2oqccEWg==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/markdown-it" + } + ], "license": "MIT", "dependencies": { "uc.micro": "^2.0.0" } }, "node_modules/liquidjs": { - "version": "10.24.0", - "resolved": "https://registry.npmjs.org/liquidjs/-/liquidjs-10.24.0.tgz", - "integrity": "sha512-TAUNAdgwaAXjjcUFuYVJm9kOVH7zc0mTKxsG9t9Lu4qdWjB2BEblyVIYpjWcmJLMGgiYqnGNJjpNMHx0gp/46A==", + "version": "10.27.0", + "resolved": "https://registry.npmjs.org/liquidjs/-/liquidjs-10.27.0.tgz", + "integrity": "sha512-tw/OA59K7aIBlMKIrKlumr37fiZUheShVHXY8cVctWisgY1p9mc5hreOvlreoS0wTiwlWk14Ya7305c2a/Cg5w==", "dev": true, "license": "MIT", "dependencies": { @@ -3352,15 +3330,25 @@ } }, "node_modules/markdown-it": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", - "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.2.0.tgz", + "integrity": "sha512-1TGiQiJVRQ3NPmZH6sx5Cfnmg6GQm9jvC1ch4TK511NjSJvjzKLzn5pPfZRNZkRPZP0HqCioSndqH8v2nRaWVQ==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/markdown-it" + } + ], "license": "MIT", "dependencies": { "argparse": "^2.0.1", "entities": "^4.4.0", - "linkify-it": "^5.0.0", + "linkify-it": "^5.0.1", "mdurl": "^2.0.0", "punycode.js": "^2.3.1", "uc.micro": "^2.1.0" @@ -3403,22 +3391,6 @@ "node": ">= 0.4" } }, - "node_modules/maximatch": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/maximatch/-/maximatch-0.1.0.tgz", - "integrity": "sha512-9ORVtDUFk4u/NFfo0vG/ND/z7UQCVZBL539YW0+U1I7H1BkZwizcPx5foFv7LCPcBnm2U6RjFnQOsIvN4/Vm2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-differ": "^1.0.0", - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "minimatch": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/mdurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", @@ -3467,9 +3439,9 @@ } }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -3521,13 +3493,13 @@ "license": "MIT" }, "node_modules/mute-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", - "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-3.0.0.tgz", + "integrity": "sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==", "dev": true, "license": "ISC", "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/node-preload": { @@ -3816,9 +3788,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", "engines": { @@ -4163,9 +4135,9 @@ } }, "node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.2.tgz", + "integrity": "sha512-c8jsqUZm3omBOI66G90z1Dyw5z622G8oLG+omfsHBJf3CWQTlOcwOjvOG6wtiNfW6anKm/eA39LMwMtMez2TiQ==", "dev": true, "license": "ISC", "bin": { @@ -4260,9 +4232,9 @@ } }, "node_modules/slugify": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz", - "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==", + "version": "1.6.9", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.9.tgz", + "integrity": "sha512-vZ7rfeehZui7wQs438JXBckYLkIIdfHOXsaVEUMyS5fHo1483l1bMdo0EDSWYclY0yZKFOipDy4KHuKs6ssvdg==", "dev": true, "license": "MIT", "engines": { @@ -4425,14 +4397,14 @@ } }, "node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", "dev": true, "license": "MIT", "dependencies": { "fdir": "^6.5.0", - "picomatch": "^4.0.3" + "picomatch": "^4.0.4" }, "engines": { "node": ">=12.0.0" @@ -4828,19 +4800,6 @@ "engines": { "node": ">=6" } - }, - "node_modules/yoctocolors-cjs": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", - "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } } } }