{"id":13457701,"url":"https://github.com/darukjs/daruk","last_synced_at":"2025-05-15T15:03:42.799Z","repository":{"id":34293769,"uuid":"175118348","full_name":"darukjs/daruk","owner":"darukjs","description":"a node.js web framework based on typescript","archived":false,"fork":false,"pushed_at":"2024-02-29T07:20:29.000Z","size":1821,"stargazers_count":936,"open_issues_count":9,"forks_count":79,"subscribers_count":33,"default_branch":"2.0","last_synced_at":"2024-04-14T09:04:51.098Z","etag":null,"topics":["node-framework","nodejs","typescript"],"latest_commit_sha":null,"homepage":"http://darukjs.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/darukjs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2019-03-12T02:19:13.000Z","updated_at":"2024-03-16T06:16:32.000Z","dependencies_parsed_at":"2024-04-14T03:37:30.567Z","dependency_job_id":"69a36225-779a-4b2c-a3ed-16de071744a5","html_url":"https://github.com/darukjs/daruk","commit_stats":{"total_commits":447,"total_committers":28,"mean_commits":"15.964285714285714","dds":"0.33333333333333337","last_synced_commit":"1067ba33304478a961c1f319d2380c8320afb8f3"},"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darukjs%2Fdaruk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darukjs%2Fdaruk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darukjs%2Fdaruk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darukjs%2Fdaruk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/darukjs","download_url":"https://codeload.github.com/darukjs/daruk/tar.gz/refs/heads/2.0","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247615415,"owners_count":20967188,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["node-framework","nodejs","typescript"],"created_at":"2024-07-31T09:00:33.921Z","updated_at":"2025-04-07T23:01:49.896Z","avatar_url":"https://github.com/darukjs.png","language":"TypeScript","readme":"\u003cp align=\"center\"\u003e\u003cimg width=\"90%\" src=\"https://user-images.githubusercontent.com/289225/56637111-66140f00-669d-11e9-8ea9-501a37528e01.png\" alt=\"daruk web framework for nodejs\"\u003e\u003c/p\u003e\n\n\u003chr\u003e\n\n[![NPM version][npm-image]][npm-url]\n[![build status][travis-image]][travis-url]\n[![PR's Welcome][pr-welcoming-image]][pr-welcoming-url]\n![GitHub closed issues](https://img.shields.io/github/issues-closed/darukjs/daruk.svg)\n![npm](https://img.shields.io/npm/dm/daruk.svg)\n[![codecov](https://codecov.io/gh/darukjs/daruk/branch/developer/graph/badge.svg)](https://codecov.io/gh/darukjs/daruk)\n![GitHub top language](https://img.shields.io/github/languages/top/darukjs/daruk.svg)\n![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/darukjs/daruk.svg)\n[![Package Quality](https://npm.packagequality.com/shield/daruk.svg)](https://packagequality.com/#?package=daruk)\n[![All Contributors](https://img.shields.io/badge/all_contributors-13-orange.svg?style=flat-square)](#contributors)\n![GitHub last commit (branch)](https://img.shields.io/github/last-commit/darukjs/daruk/2.0.svg)\n[![Gitter](https://badges.gitter.im/daruk_framework/community.svg)](https://gitter.im/daruk_framework/community?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge)\n[![start with why](https://img.shields.io/badge/start%20with-why%3F-brightgreen.svg?style=flat)](https://v.youku.com/v_show/id_XNDExMjA5MTI2NA==.html?spm=a2hzp.8244740.0.0)\n![GitHub language count](https://img.shields.io/github/languages/count/darukjs/daruk.svg)\n![APM](https://img.shields.io/apm/l/vim-mode.svg)\n[![Build Status](https://dev.azure.com/designsor/daruk/_apis/build/status/darukjs.daruk?branchName=developer)](https://dev.azure.com/designsor/daruk/_build/latest?definitionId=3\u0026branchName=developer)\n\n## 讨论群\n\nhttps://github.com/darukjs/daruk/issues/129\n\n## 开源实践\n\nhttp://blog.7hds.com/  博客后端\n\nhttps://github.com/hedongshu/hds-blog-api\n\n## Daruk\n\n[Daruk](https://darukjs.com) 是一款基于 Koa2，使用 Typescript 开发的轻量级 web 框架。Daruk 的初衷是让人们可以更方便的开发 Nodejs Web 应用并能够体会到 Typescript 编程的乐趣。Daruk 本身基于 100%基于 Typescript 开发，使用 inversifyjs 的 IoC 容器管理依赖，让开发者享受最佳的 OOP 和 IoC 的编程体验。\n\n框架内部集成了许多方便灵活的装饰器函数，让开发者可以写更少的代码来完成更多的事情，Daruk2.0 更改了之前严格要求目录约定的范式，提供给开发者更灵活的操作空间来进行项目约束和编写，但是内置的功能并没有缺失，整个框架的开发能力和 Daruk1.0 能力持平。\n\n比如在 Daruk2.0 中，我们可以使用装饰器来快速定义 service，controller，timer，middleware 等能力来编写 web 应用，且提供了一些基本的内置中间件和路由服务等，更灵活的定义，让 Daruk2.0 可以更灵活的定制你的 web 项目和编写测试脚本。\n\nDaruk 来源自塞尔达传说旷野之息里的四英杰之一，拥有在周围张开结界保护自己的力量，框架的目的也是为了给 nodejs server 提供健壮的基础管理能力。\n\nDaruk2.0 同样基于 koa2，目前包含以下核心功能：\n\n- 开启装饰器配置，ts 环境下引入即用，无需脚手架等工具。\n- 提供给开发者编写影响框架内部能力的插件机制\n- 可以自定义目录结构，在启动时使用 API 加载你自己定义的源文件\n- 完整的 typescript 开发体验\n- 服务启动完整生命周期 hook\n- 自定义(性能日志 \u0026 业务日志) 染色功能\n- 支持线上实时性能分析\n- 轻量级的链路追踪\n- 面向对象的 mvc 开发体验\n- 配套的一些周边模块\n\n## Installation \u0026 Quick start\n\n安装\n\n```bash\nmkdir daruk-demo\ncd daruk-demo\nnpm init\nnpm add daruk ts-node typescript\nmkdir src\ntouch src/index.ts\n```\n\n开始编写 web 应用 `src/index.ts`\n\n```typescript\nimport { DarukServer, controller, get, DarukContext } from 'daruk';\n\n(async () =\u003e {\n  const myapp = DarukServer();\n\n  @controller()\n  class Index {\n    @get('/')\n    public async index(ctx: DarukContext) {\n      ctx.body = 'hello world';\n    }\n  }\n\n  await myapp.binding();\n  myapp.listen(3000);\n})();\n```\n\n创建编译时的 `tsconfig.json` 文件\n\n```bash\ntouch tsconfig.json\n```\n\n```json\n{\n  \"compileOnSave\": true,\n  \"compilerOptions\": {\n    \"target\": \"es2017\",\n    \"module\": \"commonjs\",\n    \"sourceMap\": true,\n    \"outDir\": \"./build\",\n    \"rootDir\": \"./src\",\n    \"typeRoots\": [],\n    \"types\": [],\n    \"experimentalDecorators\": true,\n    \"emitDecoratorMetadata\": true\n  },\n  \"exclude\": [\"node_modules\"],\n  \"include\": [\"./src/**/*.ts\"]\n}\n```\n\n编辑 `package.json` 的启动和编译脚本\n\n```json\n{\n  \"scripts\": {\n    \"dev\": \"NODE_ENV=dev ts-node --project tsconfig.json --files src/index.ts\",\n    \"build\": \"tsc\"\n  }\n}\n```\n\n启动服务\n\n```bash\nnpm run dev\n\u003e NODE_ENV=dev ts-node --project tsconfig.json --files src/index.ts\n[2020-9-1 19:52:12] [debug] [init] [router] get - /\n```\n\n打包脚本并启动编译后的脚本\n\n```bash\nnpm run build\nnode build/index.js\n```\n\n## Docs\n\n查看 Daruk 文档[快速开始](https://darukjs.com/)吧！ TypeDoc 则可以从这里开始 [API DOC](https://doc.darukjs.com/)吧！\n\n## Example\n\n查看实际的 web 服务例子 [example](https://github.com/darukjs/daruk/tree/2.0/example)\n\n[daruk-demo](https://github.com/darukjs/daruk-demo)\n\n使用腾讯云应用一键部署：\n\n[\u003cimg src=\"https://user-images.githubusercontent.com/289225/104697551-e5d3ee00-574a-11eb-998a-e90b986210a3.png\" width=\"100\"\u003e](https://www.cloudbase.net/marketplace.html)\n\n## How to Contribute\n\nPlease let us know how can we help. Do check out issues for bug reports or suggestions first.\n\nTo become a contributor, please follow our [contributing guide](https://github.com/darukjs/daruk/blob/2.0/CONTRIBUTING.md)\n\n[npm-image]: https://img.shields.io/npm/v/daruk.svg?style=flat-square\n[npm-url]: https://www.npmjs.com/package/daruk\n[travis-image]: https://api.travis-ci.com/darukjs/daruk.svg?branch=developer\n[travis-url]: https://travis-ci.com/darukjs/daruk\n[pr-welcoming-image]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\n[pr-welcoming-url]: https://github.com/darukjs/daruk/pull/new\n\n## Some companies using Daruk\n\n\u003cimg src=\"https://user-images.githubusercontent.com/289225/104697186-59c1c680-574a-11eb-9e48-bec9d52171ce.png\" width=\"150\"\u003e \u003cimg src=\"https://user-images.githubusercontent.com/289225/104696847-d607da00-5749-11eb-8975-92261baa22f5.png\" width=\"150\"\u003e \u003cimg src=\"https://user-images.githubusercontent.com/15033260/104886723-2af35c80-59a5-11eb-8a93-590b73df4ef6.png\" width=\"150\"\u003e \u003cimg src=\"https://user-images.githubusercontent.com/289225/104888850-4c097c80-59a8-11eb-95bf-c51e448957e2.png\" width=\"150\"\u003e \u003cimg src=\"https://user-images.githubusercontent.com/289225/104888945-6ba0a500-59a8-11eb-9030-fb06b4827b51.png\" width=\"150\"\u003e\n\n\n## Contributors\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://www.tuer.me\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/289225?v=4?s=40\" width=\"40px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003exiaojue\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/darukjs/daruk/commits?author=xiaojue\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#design-xiaojue\" title=\"Design\"\u003e🎨\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/Youjingyu\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/15033260?v=4?s=40\" width=\"40px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ewhale\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/darukjs/daruk/commits?author=Youjingyu\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/darukjs/daruk/commits?author=Youjingyu\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/imakan\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/11512704?v=4?s=40\" width=\"40px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eimakan\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/darukjs/daruk/commits?author=imakan\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/dxil\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/17681925?v=4?s=40\" width=\"40px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ecuzz\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/darukjs/daruk/commits?author=dxil\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/darukjs/daruk/commits?author=dxil\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://www.himself65.com\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/14026360?v=4?s=40\" width=\"40px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003e扩散性百万甜面包\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/darukjs/daruk/commits?author=Himself65\" title=\"Tests\"\u003e⚠️\u003c/a\u003e \u003ca href=\"https://github.com/darukjs/daruk/commits?author=Himself65\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/myluluy\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/4242799?v=4?s=40\" width=\"40px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003earck.liu\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/darukjs/daruk/commits?author=myluluy\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/darukjs/daruk/commits?author=myluluy\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/Zheaoli\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/7054676?s=400\u0026v=4?s=40\" width=\"40px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eManjusaka\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/darukjs/daruk/commits?author=Zheaoli\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/KenyeeC\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/18223471?v=4?s=40\" width=\"40px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eKenyeeCheung\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/darukjs/daruk/commits?author=KenyeeC\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/ChasLui\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/10083758?v=4?s=40\" width=\"40px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eChasLui\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/darukjs/daruk/commits?author=ChasLui\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/zhmushan\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/24505451?v=4?s=40\" width=\"40px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003e木杉\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/darukjs/daruk/commits?author=zhmushan\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://icepy.me\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/3321837?v=4?s=40\" width=\"40px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eicepy\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/darukjs/daruk/commits?author=icepy\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/zgayjjf\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/24718872?v=4?s=40\" width=\"40px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ejeffjing\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/darukjs/daruk/commits?author=zgayjjf\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/yiliang114\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/11473889?v=4?s=40\" width=\"40px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eyiliang\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/darukjs/daruk/commits?author=yiliang114\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/imakan\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/11512704?v=4?s=40\" width=\"40px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eimakan\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/darukjs/daruk/commits?author=imakan\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://www.zhihu.com/people/mrno-64/posts\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/45007226?v=4?s=40\" width=\"40px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eWangHan\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/darukjs/daruk/commits?author=sewerganger\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/zuigzm\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/16127180?v=4?s=40\" width=\"40px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ezuigzm\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/darukjs/daruk/issues?q=author%3Azuigzm\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"https://github.com/darukjs/daruk/commits?author=zuigzm\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/Chersquwn\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/8766318?v=4?s=40\" width=\"40px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003e南北\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/darukjs/daruk/commits?author=Chersquwn\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/darukjs/daruk/commits?author=Chersquwn\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/myywlc\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/19363050?v=4?s=40\" width=\"40px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003e凌\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/darukjs/daruk/commits?author=myywlc\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/darukjs/daruk/commits?author=myywlc\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://huzerui.com/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/15864345?v=4?s=40\" width=\"40px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eZerui Hu\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/darukjs/daruk/commits?author=alex1504\" title=\"Tests\"\u003e⚠️\u003c/a\u003e \u003ca href=\"https://github.com/darukjs/daruk/commits?author=alex1504\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/xiaoqiang1999\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/40377409?v=4?s=40\" width=\"40px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003e薛定谔の狗狗\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/darukjs/daruk/commits?author=xiaoqiang1999\" title=\"Tests\"\u003e⚠️\u003c/a\u003e \u003ca href=\"https://github.com/darukjs/daruk/commits?author=xiaoqiang1999\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n","funding_links":[],"categories":["TypeScript","Repository","Projects Using Zod"],"sub_categories":["Web Frameworks"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarukjs%2Fdaruk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdarukjs%2Fdaruk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarukjs%2Fdaruk/lists"}