-
Notifications
You must be signed in to change notification settings - Fork 1
/
contributing.html
160 lines (157 loc) · 63.5 KB
/
contributing.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Contributing | Ts.ED - A Node.js and TypeScript Framework on top of Express/Koa.js.</title>
<meta name="generator" content="VuePress 1.9.7">
<link canonical="https://tsed.io">
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
<link rel="icon" href="/favicon.ico" type="apple-touch-icon">
<link rel="icon" href="/apple-touch-icon.png" type="image/x-icon" sizes="180x180">
<link rel="icon" href="/favicon-32x32.png" type="image/png" sizes="32x32">
<link rel="icon" href="/favicon-16x16.png" type="image/png" sizes="16x16">
<link rel="manifest" href="/site.webmanifest">
<meta property="og:url" content="https://tsed.io">
<meta property="og:type" content="website">
<meta property="og:site_name" content="Ts.ED - A Node.js and TypeScript Framework on top of Express/Koa.js.">
<meta property="og:title" content="Ts.ED - A Node.js and TypeScript Framework on top of Express/Koa.js.">
<meta property="og:description" content="A Node.js and TypeScript Framework on top of Express/Koa.js. It provides a lot of decorators and guidelines to write your code.">
<meta property="og:image" content="https://tsed.io/tsed-og.png">
<meta property="og:image:width" content="1024">
<meta property="og:image:height" content="1024">
<meta name="twitter:title" content="Ts.ED - A Node.js and TypeScript Framework on top of Express/Koa.js.">
<meta name="twitter:description" content="A Node.js and TypeScript Framework on top of Express/Koa.js. It provides a lot of decorators and guidelines to write your code.">
<meta name="twitter:card" content="summary">
<meta name="description" content="A Node.js and TypeScript Framework on top of Express/Koa.js. It provides a lot of decorators and guidelines to write your code.">
<meta property="og:url" content="https://tsed.io">
<meta property="og:type" content="website">
<meta property="og:site_name" content="Ts.ED - A Node.js and TypeScript Framework on top of Express/Koa.js.">
<meta property="og:title" content="Ts.ED - A Node.js and TypeScript Framework on top of Express/Koa.js.">
<meta property="og:description" content="A Node.js and TypeScript Framework on top of Express/Koa.js. It provides a lot of decorators and guidelines to write your code.">
<meta property="og:image" content="https://tsed.io/tsed-og.png">
<meta property="og:image:width" content="1024">
<meta property="og:image:height" content="1024">
<meta name="twitter:title" content="Ts.ED - A Node.js and TypeScript Framework on top of Express/Koa.js.">
<meta name="twitter:description" content="A Node.js and TypeScript Framework on top of Express/Koa.js. It provides a lot of decorators and guidelines to write your code.">
<meta name="twitter:card" content="summary">
<link rel="preload" href="/assets/css/0.styles.8eca58ea.css" as="style"><link rel="preload" href="/assets/js/app.926b1e9f.js" as="script"><link rel="preload" href="/assets/js/4.9da0d4f2.js" as="script"><link rel="preload" href="/assets/js/18.ce82bc8c.js" as="script"><link rel="prefetch" href="/assets/js/10.192db993.js"><link rel="prefetch" href="/assets/js/11.702ff33b.js"><link rel="prefetch" href="/assets/js/12.98f19144.js"><link rel="prefetch" href="/assets/js/13.ea033dda.js"><link rel="prefetch" href="/assets/js/14.157676d3.js"><link rel="prefetch" href="/assets/js/15.264f34ac.js"><link rel="prefetch" href="/assets/js/16.ebbb675d.js"><link rel="prefetch" href="/assets/js/17.4d71bb18.js"><link rel="prefetch" href="/assets/js/19.db8b0189.js"><link rel="prefetch" href="/assets/js/20.e4bb0b1e.js"><link rel="prefetch" href="/assets/js/21.f071c64f.js"><link rel="prefetch" href="/assets/js/22.c6803fa6.js"><link rel="prefetch" href="/assets/js/23.2e2935a3.js"><link rel="prefetch" href="/assets/js/24.5f568ba3.js"><link rel="prefetch" href="/assets/js/25.a02f2154.js"><link rel="prefetch" href="/assets/js/26.836506b8.js"><link rel="prefetch" href="/assets/js/27.284eaa19.js"><link rel="prefetch" href="/assets/js/28.64295ac6.js"><link rel="prefetch" href="/assets/js/29.74ba7b90.js"><link rel="prefetch" href="/assets/js/3.371dc61f.js"><link rel="prefetch" href="/assets/js/30.a04f40db.js"><link rel="prefetch" href="/assets/js/31.5b3113d3.js"><link rel="prefetch" href="/assets/js/32.0d151cd9.js"><link rel="prefetch" href="/assets/js/33.7b99ed5a.js"><link rel="prefetch" href="/assets/js/34.2c32e2ee.js"><link rel="prefetch" href="/assets/js/35.2d0bfdcd.js"><link rel="prefetch" href="/assets/js/36.e1e1385a.js"><link rel="prefetch" href="/assets/js/37.4f052593.js"><link rel="prefetch" href="/assets/js/38.8bfa9bf2.js"><link rel="prefetch" href="/assets/js/39.3e3809b9.js"><link rel="prefetch" href="/assets/js/40.c4da18dc.js"><link rel="prefetch" href="/assets/js/41.bdbcff63.js"><link rel="prefetch" href="/assets/js/42.c3d8e9dc.js"><link rel="prefetch" href="/assets/js/43.4406fffa.js"><link rel="prefetch" href="/assets/js/44.e4c405bd.js"><link rel="prefetch" href="/assets/js/45.8c5061fd.js"><link rel="prefetch" href="/assets/js/46.8a921dfc.js"><link rel="prefetch" href="/assets/js/47.bbb52a0c.js"><link rel="prefetch" href="/assets/js/48.53baeef5.js"><link rel="prefetch" href="/assets/js/49.e1ef50fd.js"><link rel="prefetch" href="/assets/js/5.a1f37254.js"><link rel="prefetch" href="/assets/js/50.f0284917.js"><link rel="prefetch" href="/assets/js/51.38c0c215.js"><link rel="prefetch" href="/assets/js/52.063fc2cf.js"><link rel="prefetch" href="/assets/js/53.6b162b23.js"><link rel="prefetch" href="/assets/js/54.37763414.js"><link rel="prefetch" href="/assets/js/55.f19906d8.js"><link rel="prefetch" href="/assets/js/56.a43b86d2.js"><link rel="prefetch" href="/assets/js/57.262143e3.js"><link rel="prefetch" href="/assets/js/58.94ddfaf6.js"><link rel="prefetch" href="/assets/js/59.a86395d9.js"><link rel="prefetch" href="/assets/js/6.09d4e604.js"><link rel="prefetch" href="/assets/js/60.c286d79b.js"><link rel="prefetch" href="/assets/js/61.9409f473.js"><link rel="prefetch" href="/assets/js/62.bae71d63.js"><link rel="prefetch" href="/assets/js/63.14342d5a.js"><link rel="prefetch" href="/assets/js/64.e79520c9.js"><link rel="prefetch" href="/assets/js/65.f721616c.js"><link rel="prefetch" href="/assets/js/66.82cff691.js"><link rel="prefetch" href="/assets/js/67.41f4a209.js"><link rel="prefetch" href="/assets/js/68.32f25786.js"><link rel="prefetch" href="/assets/js/69.b46452bf.js"><link rel="prefetch" href="/assets/js/7.37b8c546.js"><link rel="prefetch" href="/assets/js/70.8d384a93.js"><link rel="prefetch" href="/assets/js/71.1f15bb42.js"><link rel="prefetch" href="/assets/js/72.b81551a1.js"><link rel="prefetch" href="/assets/js/73.a80d8fd1.js"><link rel="prefetch" href="/assets/js/74.444fcbac.js"><link rel="prefetch" href="/assets/js/75.3c7f34e9.js"><link rel="prefetch" href="/assets/js/76.9f3bf7e4.js"><link rel="prefetch" href="/assets/js/8.20cd9e80.js"><link rel="prefetch" href="/assets/js/9.47b63b30.js"><link rel="prefetch" href="/assets/js/vendors~docsearch.4f02fe06.js">
<link rel="stylesheet" href="/assets/css/0.styles.8eca58ea.css">
</head>
<body>
<div id="app" data-server-rendered="true"><div class="init"><div class="theme-container with-sidebar"><header class="navbar px-5 flex items-center navbar-box-shadow fixed top-0 fixed top-0 inset-x-0 h-16 bg-white"><div class="flex h-full items-center justify-center md:hidden"><div class="flex cursor-pointer text-xl mr-4"><i class="bx bx-menu"></i></div></div> <div class="flex h-full items-center justify-center m-0 p-0 mr-8"><a href="/" class="router-link-active"><!----> <span class="text-xl text-normal"><strong class="font-medium"><span class='text-blue'>Ts</span>.ED</strong></span></a></div> <div class="flex-1 h-full"><nav class="font-bold hidden lg:flex h-full"><ul class="flex items-center h-full text-gray-dark"><li class="mx-1 content-wrapper py-4"><a href="/getting-started/" title="Getting started | Ts.ED - A Node.js and TypeScript Framework on top of Express/Koa.js." class="link internal px-3 p-1 hover:bg-blue hover:text-white transition-all rounded-small cursor-pointer"><!---->
Getting started
</a></li><li class="mx-1 content-wrapper"><div class="dropdown-wrapper relative flex items-center h-full px-3 py-4 -hover"><div class="flex items-center h-full w-full"><a title="Documentation | Ts.ED - A Node.js and TypeScript Framework on top of Express/Koa.js." class="flex items-center hover:text-gray-darker cursor-pointer transition-all duration-500 ease-in-out"><span>Documentation</span> <i class="bx bx-chevron-down"></i></a></div> <div class="nav-dropdown absolute text-gray-darker z-2"> <ul class="reset-list text-gray-darker"><li><!----> <a href="/docs/configuration.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Configuration</span></a></li><li class="mt-3"><!----> <a href="/docs/controllers.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Controllers</span></a></li><li class="mt-3"><!----> <a href="/docs/providers.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Providers</span></a></li><li class="mt-3"><!----> <a href="/docs/model.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Models</span></a></li><li class="mt-3"><!----> <a href="/docs/converters.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Json Mapper</span></a></li><li class="mt-3"><!----> <a href="/docs/middlewares.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Middlewares</span></a></li><li class="mt-3"><!----> <a href="/docs/pipes.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Pipes</span></a></li><li class="mt-3"><!----> <a href="/docs/interceptors.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Interceptors</span></a></li><li class="mt-3"><!----> <a href="/docs/authentication.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Authentication</span></a></li><li class="mt-3"><!----> <a href="/docs/hooks.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Hooks</span></a></li><li class="mt-3"><!----> <a href="/docs/response-filter.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Response filter</span></a></li><li class="mt-3"><!----> <a href="/docs/exceptions.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Exceptions</span></a></li><li class="mt-3"><!----> <a href="/docs/logger.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Logger</span></a></li><li class="mt-3"><!----> <a href="/docs/request-context.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Context</span></a></li><li class="mt-3"><!----> <a href="/docs/cache.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Cache</span></a></li><li class="mt-3"><!----> <a href="/docs/platform-api.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Platform API</span></a></li><li class="mt-3"><!----> <a href="/docs/command.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Command</span></a></li><li class="mt-3"><!----> <a href="/docs/templating.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Templating</span></a></li><li class="mt-3"><!----> <a href="/docs/validation.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Validation</span></a></li><li class="mt-3"><!----> <a href="/tutorials/session.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Session & Cookies</span></a></li></ul></div></div></li><li class="mx-1 content-wrapper"><div class="dropdown-wrapper relative flex items-center h-full px-3 py-4 -hover"><div class="flex items-center h-full w-full"><a title="Warehouse | Ts.ED - A Node.js and TypeScript Framework on top of Express/Koa.js." class="flex items-center hover:text-gray-darker cursor-pointer transition-all duration-500 ease-in-out"><span>Warehouse</span> <i class="bx bx-chevron-down"></i></a></div> <div class="nav-dropdown absolute text-gray-darker z-2"> <ul class="reset-list text-gray-darker"><li><!----> <a href="/warehouse/" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Explore plugins</span></a></li><li class="mt-3"><!----> <a href="/tutorials/" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Project examples</span></a></li></ul></div></div></li><li class="mx-1 content-wrapper"><div class="dropdown-wrapper relative flex items-center h-full px-3 py-4 -hover"><div class="flex items-center h-full w-full"><a title="Tutorials | Ts.ED - A Node.js and TypeScript Framework on top of Express/Koa.js." class="flex items-center hover:text-gray-darker cursor-pointer transition-all duration-500 ease-in-out"><span>Tutorials</span> <i class="bx bx-chevron-down"></i></a></div> <div class="nav-dropdown absolute text-gray-darker z-2"> <ul class="reset-list text-gray-darker"><li><!----> <a href="/tutorials/ajv.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">AJV</span></a></li><li class="mt-3"><!----> <a href="/tutorials/aws.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">AWS</span></a></li><li class="mt-3"><!----> <a href="/tutorials/agenda.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Agenda</span></a></li><li class="mt-3"><!----> <a href="/tutorials/graphql.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">GraphQL</span></a></li><li class="mt-3"><!----> <a href="/tutorials/ioredis.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">IORedis</span></a></li><li class="mt-3"><!----> <a href="/tutorials/keycloak.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Keycloak</span></a></li><li class="mt-3"><!----> <a href="/tutorials/mikroorm.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">MikroORM</span></a></li><li class="mt-3"><!----> <a href="/tutorials/mongoose.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Mongoose</span></a></li><li class="mt-3"><!----> <a href="/tutorials/oidc.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">OIDC</span></a></li><li class="mt-3"><!----> <a href="/tutorials/objection.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Objection.js</span></a></li><li class="mt-3"><!----> <a href="/tutorials/passport.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Passport.js</span></a></li><li class="mt-3"><!----> <a href="/tutorials/prisma.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Prisma</span></a></li><li class="mt-3"><!----> <a href="/tutorials/serverless.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Serverless</span></a></li><li class="mt-3"><!----> <a href="/tutorials/socket-io.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Socket.io</span></a></li><li class="mt-3"><!----> <a href="/tutorials/stripe.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Stripe</span></a></li><li class="mt-3"><!----> <a href="/tutorials/swagger.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Swagger</span></a></li><li class="mt-3"><!----> <a href="/tutorials/terminus.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Terminus</span></a></li><li class="mt-3"><!----> <a href="/tutorials/typeorm.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">TypeORM</span></a></li></ul></div></div></li><li class="mx-1 content-wrapper"><div class="dropdown-wrapper relative flex items-center h-full px-3 py-4 -hover"><div class="flex items-center h-full w-full"><a title="Extras" class="flex items-center hover:text-gray-darker cursor-pointer transition-all duration-500 ease-in-out"><span></span> <i class="bx bx-dots-horizontal-rounded text-lg"></i></a></div> <div class="nav-dropdown absolute text-gray-darker z-2"> <ul class="reset-list text-gray-darker"><li><!----> <a href="http://cli.tsed.io" target="_blank" rel="noopener noreferrer" class="link external flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><span class="flex-1">Ts.ED CLI</span> <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li class="mt-3"><!----> <a href="http://logger.tsed.io" target="_blank" rel="noopener noreferrer" class="link external flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><span class="flex-1">Ts.ED Logger</span> <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li class="mt-3"><!----> <a href="/team.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Team</span></a></li><li class="mt-3"><!----> <a href="/tutorials/" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Resources</span></a></li><li class="mt-3"><!----> <a href="/contributing.html" aria-current="page" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all router-link-exact-active router-link-active"><!----> <span class="flex-1">Contributes</span></a></li><li class="mt-3"><!----> <a href="/support.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">Support</span></a></li><li class="mt-3"><!----> <a href="/license.html" class="link internal flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><!----> <span class="flex-1">License</span></a></li><li class="mt-3"><!----> <a href="https://api-docs.tsed.io/api.html" target="_blank" rel="noopener noreferrer" class="link external flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><span class="flex-1">Api reference</span> <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></div></div></li></ul></nav></div> <div class="flex h-full"><nav class="hidden sm:flex"><ul class="flex items-center h-full text-gray-dark"><li class="mx-1 content-wrapper"><div class="dropdown-wrapper relative flex items-center h-full px-3 py-4 -hover"><div class="flex items-center h-full w-full"><a class="flex items-center hover:text-gray-darker cursor-pointer transition-all duration-500 ease-in-out"><span>v6.133.1</span> <i class="bx bx-chevron-down"></i></a></div> <div class="nav-dropdown absolute text-gray-darker z-2"> <ul class="reset-list text-gray-darker"><li><!----> <a href="http://tsed.io" target="_blank" rel="noopener noreferrer" class="link external flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><span class="flex-1">v7 (current)</span> <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li class="mt-3"><!----> <a href="http://v5.tsed.io" target="_blank" rel="noopener noreferrer" class="link external flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><span class="flex-1">v5 (obsolete)</span> <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li class="mt-3"><!----> <a href="http://v4.tsed.io" target="_blank" rel="noopener noreferrer" class="link external flex items-center justify-center text-sm block opacity-75 hover:opacity-100 p-0 px-6 mt-1 mb-2 cursor-pointer transition-all"><span class="flex-1">v4 (obsolete)</span> <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></div></div></li></ul></nav></div> <div class="flex items-center h-full"><a title="Github" href="https://github.com/tsedio/tsed" target="_blank" rel="noopener noreferrer" class="p-1 hover:text-blue-active transition-all duration-500 ease-in-out flex flex align-center justify-center lg:text-lg py-4"><i class="bx bxl-github"></i> </a><a title="Slack" href="https://api.tsed.io/rest/slack/tsedio/tsed" target="_blank" rel="noopener noreferrer" class="p-1 hover:text-blue-active transition-all duration-500 ease-in-out flex flex align-center justify-center lg:text-lg py-4"><i class="bx bxl-slack"></i> </a><a title="Twitter" href="https://twitter.com/TsED_io" target="_blank" rel="noopener noreferrer" class="p-1 hover:text-blue-active transition-all duration-500 ease-in-out flex flex align-center justify-center lg:text-lg py-4"><i class="bx bxl-twitter"></i> </a><a title="StackOverflow" href="https://stackoverflow.com/search?q=tsed" target="_blank" rel="noopener noreferrer" class="p-1 hover:text-blue-active transition-all duration-500 ease-in-out flex flex align-center justify-center lg:text-lg py-4"><i class="bx bxl-stack-overflow"></i> </a><a title="Support us" href="https://tsed.io/support.html" target="_blank" rel="noopener noreferrer" show-title="true" class="p-1 hover:text-blue-active transition-all duration-500 ease-in-out flex flex align-center justify-center lg:text-lg py-4"><i class="bx bxs-heart"></i> <span class="hidden sm:block text-sm font-bold ml-1 mr-1">Support us</span></a></div> <div class="flex items-center h-full"><div id="docsearch"></div></div></header> <div class="sidebar-mask"></div> <main class="main-content relative z-2 pt-16"><div><div><div class="relative"><div class="page-header"><div class="bg-gray-lighter z-5 relative"><div class="page-header-container px-5 md:px-10 max-w-site m-auto flex items-center"><div class="flex-1"><div class="transition-all text-xl font-bold md:font-normal md:text-4xl">
Contributing
</div></div> <ul class="flex items-center justify-center text-md -ml-2"><li title="Share"><!----></li> <!----> <li title="View Code Github" class="p-2"><a target="_blank" href="https://github.com/tsedio/tsed/blob/production/docs/contributing.md" class="hover:text-blue-active"><i class="bx bx-code-alt"></i></a></li> <li title="Edit Page" class="p-2"><a target="_blank" href="https://github.com/tsedio/tsed/edit/production/docs/contributing.md" class="hover:text-blue-active"><i class="bx bx-edit"></i></a></li> <li title="Report a Bug" class="p-2 last:pr-0"><a target="_blank" href="https://github.com/tsedio/tsed/issues/new?title=%5BBUG%5D%20Page%20Contributing%20-%20%2Fcontributing" class="hover:text-blue-active"><i class="bx bx-bug"></i></a></li></ul></div></div></div></div> <div class="px-5 md:px-10 max-w-site m-auto"><div class="page-content"><article> <div class="content__default"><h1 id="contributing"><a href="#contributing" class="header-anchor">#</a> Contributing</h1> <h2 id="introduction"><a href="#introduction" class="header-anchor">#</a> Introduction</h2> <p>First, thank you for considering contributing to Ts.ED! It is people like you that make the open source community such a great community! 😊</p> <p>We welcome any type of contribution, not just code. You can help with:</p> <ul><li>QA: file bug reports, the more details you can give the better (e.g. screenshots with the console open).</li> <li>Marketing: writing blog posts, how to's, printing stickers....</li> <li>Community: presenting the project at meetups, organizing a dedicated meetup for the local community....</li> <li>Code: take a look at the <a href="https://github.com/tsedio/tsed/issues" target="_blank" rel="noopener noreferrer">open issues<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>. Even if you can't write code, commenting on them and showing that you care about a given issue matters. It helps us triage them.</li> <li>Money: we welcome financial contributions in full transparency on our <a href="https://opencollective.com/tsed" target="_blank" rel="noopener noreferrer">open collective<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>.</li></ul> <h2 id="your-first-contribution"><a href="#your-first-contribution" class="header-anchor">#</a> Your First Contribution</h2> <p>Working on your first Pull Request? You can learn how from this free series: <a href="https://app.egghead.io/playlists/how-to-contribute-to-an-open-source-project-on-github" target="_blank" rel="noopener noreferrer">How to Contribute to an Open Source Project on GitHub<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>.</p> <h2 id="submitting-code"><a href="#submitting-code" class="header-anchor">#</a> Submitting code</h2> <p>Any code change should be submitted as a pull request. The description should explain what the code does and give steps to execute it. The pull request should also contain tests.</p> <p>The bigger the pull request, the longer it will take to review and merge. Try to break down large pull requests in smaller chunks that are easier to review and merge. It is also always helpful to have some context for your pull request. What was the purpose? Why does it matter to you?</p> <div class="custom-block warning"><p class="custom-block-title">WARNING</p> <p>Ts.ED project uses <a href="https://www.conventionalcommits.org/en/v1.0.0-beta.4/" target="_blank" rel="noopener noreferrer">conventional commits<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> as format commit message.</p> <p>Release note and tagging version are based on the message commits.
If you don't follow the format, our CI won't be able to increment the version correctly and your feature won't be released on NPM.</p> <p>To write your commit message, see <a href="https://www.conventionalcommits.org/en/v1.0.0-beta.4/" target="_blank" rel="noopener noreferrer">convention page here<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></p></div> <h2 id="financial-contributions"><a href="#financial-contributions" class="header-anchor">#</a> Financial contributions</h2> <p>We also welcome financial contributions in full transparency on our open collective. Anyone can file an expense. If the expense makes sense for the development of the community, it will be "merged" in the ledger of our <a href="https://opencollective.com/tsed" target="_blank" rel="noopener noreferrer">open collective<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> by the core contributors, and the person who filed the expense will be reimbursed.</p> <h2 id="questions"><a href="#questions" class="header-anchor">#</a> Questions</h2> <p>If you have any questions, create an <a href="https://github.com/tsedio/tsed/issues" target="_blank" rel="noopener noreferrer">issue<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> (protip: do a quick search first to see if someone else didn't ask the same question before!). You can also reach us at [email protected].</p> <h2 id="how-to-work-on-ts-ed"><a href="#how-to-work-on-ts-ed" class="header-anchor">#</a> How to work on Ts.ED</h2> <h3 id="setup"><a href="#setup" class="header-anchor">#</a> Setup</h3> <p>Clone your fork of the repository:</p> <div class="language-bash line-numbers-mode"><pre class="language-bash"><code>$ <span class="token function">git</span> clone https://github.com/YOUR_USERNAME/tsed.git
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><p>Install npm dependencies with yarn (not with NPM!):</p> <div class="language-bash line-numbers-mode"><pre class="language-bash"><code><span class="token function">yarn</span>
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><blockquote><p>After installing dependencies, yarn/npm run the <code>postinstall</code> hook and mount all packages with <code>npm link</code> (e.g. <code>yarn run repo:bootstrap</code>).</p></blockquote> <p>Compile TypeScript:</p> <div class="language-bash line-numbers-mode"><pre class="language-bash"><code>tsc
<span class="token comment"># or</span>
<span class="token function">yarn</span> tsc
<span class="token comment"># or</span>
<span class="token function">npm</span> run tsc
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br></div></div><h3 id="test"><a href="#test" class="header-anchor">#</a> Test</h3> <div class="language-bash line-numbers-mode"><pre class="language-bash"><code><span class="token function">yarn</span> <span class="token builtin class-name">test</span>
<span class="token comment"># or</span>
<span class="token function">npm</span> run <span class="token builtin class-name">test</span>
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div></div><h3 id="gflow-optional"><a href="#gflow-optional" class="header-anchor">#</a> Gflow (optional)</h3> <p><a href="https://www.npmjs.com/package/gflow" target="_blank" rel="noopener noreferrer">Gflow<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> is a command line tool to help developers with the Git process used in Ts.ED.</p> <p>Gflow helps you create a branch from production, rebase and run the tests before pushing your branch on your remote repository.</p> <div class="language-bash line-numbers-mode"><pre class="language-bash"><code><span class="token function">npm</span> <span class="token function">install</span> -g gflow
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><h3 id="start-a-feature-branch"><a href="#start-a-feature-branch" class="header-anchor">#</a> Start a feature branch</h3> <div class="language-bash line-numbers-mode"><pre class="language-bash"><code><span class="token function">git</span> fetch
<span class="token function">git</span> branch --no-track -b feat-branch-name origin/production <span class="token comment"># !IMPORTANT</span>
<span class="token function">yarn</span>
<span class="token comment">## OR</span>
gflow new feat name_of_feat
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br></div></div><h3 id="commit-push-a-feature"><a href="#commit-push-a-feature" class="header-anchor">#</a> Commit & Push a feature</h3> <p>This command rebases your branch feature from the production branch, runs the test, and pushes your branch.</p> <div class="language-bash line-numbers-mode"><pre class="language-bash"><code><span class="token function">git</span> commit -m <span class="token string">"feat(domain): Your message"</span>
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><blockquote><p>To write your commit message see <a href="https://www.conventionalcommits.org/en/v1.0.0-beta.4/" target="_blank" rel="noopener noreferrer">convention page<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>.</p></blockquote> <p>Then:</p> <div class="language-bash line-numbers-mode"><pre class="language-bash"><code><span class="token function">npm</span> run <span class="token builtin class-name">test</span>
<span class="token function">git</span> fetch
<span class="token function">git</span> rebase origin/production
<span class="token function">git</span> push -f
<span class="token comment"># OR using gflow (run fetch, rebase and push for you)</span>
gflow push
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br></div></div><p>When your feature is ready to review, you can open a PR on Ts.ED github.</p> <h3 id="finish-a-feature-repo-owner-and-maintainers"><a href="#finish-a-feature-repo-owner-and-maintainers" class="header-anchor">#</a> Finish a feature (repo owner and maintainers)</h3> <p>After the PR has been accepted, the feature will be automatically merged on the master branch, but
your feature isn't merged with the production branch.</p> <p>To publish your feature on the production branch you need to run this command:</p> <div class="language-bash line-numbers-mode"><pre class="language-bash"><code>gflow finish
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><div class="custom-block tip"><p class="custom-block-title">NOTE</p> <p>This action works only on the Ts.ED repository (not on your fork).</p></div> <h3 id="write-documentation"><a href="#write-documentation" class="header-anchor">#</a> Write documentation</h3> <p>Ts.ED uses docsify to convert markdown to HTML. In addition, all documentation in your code will be used to generate
the API documentation. To preview your comments on a class you can run this command:</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>npm run doc:serve
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><h3 id="guidelines"><a href="#guidelines" class="header-anchor">#</a> Guidelines</h3> <ul><li>Ts.ED follows the git flow to generate a release note. To write your commit message see <a href="https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y/edit" target="_blank" rel="noopener noreferrer">convention page<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>.</li> <li>Please try to combine multiple commits before pushing.</li> <li>Please use TDD when fixing bugs. This means that you should write a unit test that fails because it reproduces the issue, fixes the issue, and then finally runs the test to ensure that the issue has been resolved. This helps us prevent fixed bugs from happening again in the future.</li> <li>Please keep the test coverage at 100%. Write additional unit tests if necessary.</li> <li>Please create an issue before sending a PR if it is going to change the public interface of Ts.ED or include significant architecture changes.</li> <li>Feel free to ask for help from other members of the Ts.ED team.</li></ul></div> </article> <div class="pt-5"><div class="py-5 flex justify-end text-sm"><p><span class="font-bold pr-1">Last Updated:</span> <span class="time">4/4/2022, 5:59:59 PM</span></p></div> <div class="page-nav pt-5 mb-10"><div class="flex align-center justify-between overflow-hidden"><span class="flex align-center justify-center"><a href="/tutorials/" class="p-2 pr-3 transition duration-500 ease-in-out hover:bg-white-active rounded-small hover:text-white text-md font-medium flex items-center justify-between"><i class="bx bx-chevron-left"></i> <span>
Tutorials
</span></a></span> <span class="flex align-center justify-center"><a href="/support.html" class="p-2 pl-3 transition duration-500 ease-in-out hover:bg-white-active rounded-small hover:text-white text-md font-medium flex items-center justify-between"><span>
Support us
</span> <i class="bx bx-chevron-right"></i></a></span></div></div></div> <section slot="page-bottom" class="other-topics px-3"><h4 class="text-xl mb-4 mt-2 font-semibold">
Other topics
</h4> <ul class="flex justify-start flex-wrap -mx-1"><li class="p-1"><a href="/tutorials/session.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Session & cookies
</a></li><li class="p-1"><a href="/tutorials/passport.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Passport.js
</a></li><li class="p-1"><a href="/tutorials/keycloak.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Keycloak
</a></li><li class="p-1"><a href="/tutorials/prisma.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Prisma
</a></li><li class="p-1"><a href="/tutorials/typeorm.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">TypeORM
</a></li><li class="p-1"><a href="/tutorials/mikroorm.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">MikroORM
</a></li><li class="p-1"><a href="/tutorials/mongoose.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Mongoose
</a></li><li class="p-1"><a href="/tutorials/graphql.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">GraphQL
</a></li><li class="p-1"><a href="/tutorials/socket-io.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Socket.io
</a></li><li class="p-1"><a href="/tutorials/swagger.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Swagger
</a></li><li class="p-1"><a href="/tutorials/ajv.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">AJV
</a></li><li class="p-1"><a href="/tutorials/multer.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Multer
</a></li><li class="p-1"><a href="/tutorials/serve-static-files.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Serve static files
</a></li><li class="p-1"><a href="/tutorials/templating.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Templating
</a></li><li class="p-1"><a href="/tutorials/aws.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Serverless HTTP
</a></li><li class="p-1"><a href="/tutorials/seq.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Seq
</a></li><li class="p-1"><a href="/tutorials/oidc.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">OIDC
</a></li><li class="p-1"><a href="/tutorials/stripe.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Stripe
</a></li><li class="p-1"><a href="/tutorials/agenda.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Agenda
</a></li><li class="p-1"><a href="/tutorials/terminus.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Terminus
</a></li><li class="p-1"><a href="/tutorials/serverless.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Serverless
</a></li><li class="p-1"><a href="/tutorials/ioredis.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">IORedis
</a></li><li class="p-1"><a href="/docs/controllers.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Controllers
</a></li><li class="p-1"><a href="/docs/providers.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Providers
</a></li><li class="p-1"><a href="/docs/model.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Model
</a></li><li class="p-1"><a href="/docs/converters.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">JsonMapper
</a></li><li class="p-1"><a href="/docs/middlewares.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Middlewares
</a></li><li class="p-1"><a href="/docs/pipes.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Pipes
</a></li><li class="p-1"><a href="/docs/interceptors.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Interceptors
</a></li><li class="p-1"><a href="/docs/authentication.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Authentication
</a></li><li class="p-1"><a href="/docs/hooks.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Hooks
</a></li><li class="p-1"><a href="/docs/exceptions.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Exceptions
</a></li><li class="p-1"><a href="/docs/throw-http-exceptions.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Throw HTTP Exceptions
</a></li><li class="p-1"><a href="/docs/cache.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Cache
</a></li><li class="p-1"><a href="/docs/command.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Command
</a></li><li class="p-1"><a href="/docs/response-filter.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Response Filter
</a></li><li class="p-1"><a href="/docs/injection-scopes.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Injection scopes
</a></li><li class="p-1"><a href="/docs/custom-providers.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Custom providers
</a></li><li class="p-1"><a href="/docs/providers-lazy-loading.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Lazy-loading provider
</a></li><li class="p-1"><a href="/docs/custom-endpoint-decorators.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Custom endpoint decorator
</a></li><li class="p-1"><a href="/docs/testing.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Testing
</a></li><li class="p-1"><a href="/docs/not-found-page.html" class="text-xs no-underline py-1 px-2 bg-gray-lighter rounded-small hover:bg-blue hover:text-white">Customize 404
</a></li></ul> </section></div></div> <aside class="page-sidebar fixed overflow-auto"> <ul class="page-sidebar-sub-headers"><li class="page-sidebar-sub-header"><a href="/contributing.html#introduction" class="page-sidebar-link ">Introduction</a></li><li class="page-sidebar-sub-header"><a href="/contributing.html#your-first-contribution" class="page-sidebar-link ">Your First Contribution</a></li><li class="page-sidebar-sub-header"><a href="/contributing.html#submitting-code" class="page-sidebar-link ">Submitting code</a></li><li class="page-sidebar-sub-header"><a href="/contributing.html#financial-contributions" class="page-sidebar-link ">Financial contributions</a></li><li class="page-sidebar-sub-header"><a href="/contributing.html#questions" class="page-sidebar-link ">Questions</a></li><li class="page-sidebar-sub-header"><a href="/contributing.html#how-to-work-on-ts-ed" class="page-sidebar-link ">How to work on Ts.ED</a></li></ul> </aside></div></div></main> <aside class="sidebar -translate-x-100 md:shadow-sidebar md:translate-x-0"> <ul class="reset-list py-5"><li><div class="mb-2"><a href="/getting-started/" class="sidebar-link relative block py-2 font-bold text-gray-darker text-md px-5">Introduction</a></div></li><li><div class="mb-2"><a href="/getting-started/start-with-cli.html" class="sidebar-link relative block py-2 font-bold text-gray-darker text-md px-5">Create new project</a></div></li><li><div class="mb-2"><a href="/getting-started/create-your-first-controller.html" class="sidebar-link relative block py-2 font-bold text-gray-darker text-md px-5">Create your first controller</a></div></li><li><section class="sidebar-group mb-2 collapsable depth-0"><p class="cursor-pointer font-bold text-gray-darker flex items-center justify-center text-md pl-5 pr-2 py-1"><span class="flex-1">Migration</span> <i class="bx bx-chevron-down text-xl transition-all -rotate-90"></i></p> <!----></section></li><li><section class="sidebar-group mb-2 collapsable depth-0"><p class="cursor-pointer font-bold text-gray-darker flex items-center justify-center text-md pl-5 pr-2 py-1"><span class="flex-1">Documentation</span> <i class="bx bx-chevron-down text-xl transition-all -rotate-90"></i></p> <!----></section></li><li><section class="sidebar-group mb-2 collapsable depth-0"><p class="cursor-pointer font-bold text-gray-darker flex items-center justify-center text-md pl-5 pr-2 py-1"><span class="flex-1">Advanced</span> <i class="bx bx-chevron-down text-xl transition-all -rotate-90"></i></p> <!----></section></li><li><section class="sidebar-group mb-2 collapsable depth-0"><p class="cursor-pointer font-bold text-gray-darker flex items-center justify-center text-md pl-5 pr-2 py-1"><span class="flex-1">Plugins</span> <i class="bx bx-chevron-down text-xl transition-all -rotate-90"></i></p> <!----></section></li><li><section class="sidebar-group mb-2 collapsable depth-0"><p class="cursor-pointer font-bold text-gray-darker flex items-center justify-center text-md pl-5 pr-2 py-1 open"><span class="flex-1">Extras</span> <i class="bx bx-chevron-down text-xl transition-all"></i></p> <ul><li><a href="/team.html" class="sidebar-link relative block py-2 pl-7">Our Team</a></li><li><a href="/tutorials/" class="sidebar-link relative block py-2 pl-7">Tutorials</a></li><li><a href="/contributing.html" aria-current="page" class="active sidebar-link relative block py-2 pl-7">Contributing</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/contributing.html#introduction" class="sidebar-link relative block py-2 ">Introduction</a></li><li class="sidebar-sub-header"><a href="/contributing.html#your-first-contribution" class="sidebar-link relative block py-2 ">Your First Contribution</a></li><li class="sidebar-sub-header"><a href="/contributing.html#submitting-code" class="sidebar-link relative block py-2 ">Submitting code</a></li><li class="sidebar-sub-header"><a href="/contributing.html#financial-contributions" class="sidebar-link relative block py-2 ">Financial contributions</a></li><li class="sidebar-sub-header"><a href="/contributing.html#questions" class="sidebar-link relative block py-2 ">Questions</a></li><li class="sidebar-sub-header"><a href="/contributing.html#how-to-work-on-ts-ed" class="sidebar-link relative block py-2 ">How to work on Ts.ED</a></li></ul></li><li><a href="/support.html" class="sidebar-link relative block py-2 pl-7">Support us</a></li><li><a href="/license.html" class="sidebar-link relative block py-2 pl-7">License</a></li><li><a href="https://api-docs.tsed.io/api" class="sidebar-link relative block py-2 pl-7">API References</a></li></ul></section></li></ul> </aside> <footer class="relative z-2"><div class="px-5 md:px-10 max-w-site m-auto"><div class="page-content py-5"><div class="flex items-center"><div class="flex-1"><h4 class="text-xl mb-4 mt-2 px-2 font-semibold">Support us</h4> <div class="content__default"><p>
Ts.ED is an MIT-licensed open source project. It can grow thanks to the support by the
community. If
you'd like to join them, please read more <a href="/support.html">here</a>.
</p> <div class="flex items-center justify-center pt-5 mt-5 mb-5"><a href="https://tsed.io/support.html" title="" target="_blank" rel="noopener noreferrer" class="link external reset-link inline-flex flex-col items-stretch overflow-hidden text-base transition-colors
bg-white-button border-blue text-blue focus:bg-white-button-active focus:border-blue-active
hover:bg-white-button-active hover:border-blue-active focus:text-blue-active hover:text-blue-active
cursor-pointer border-1 border-solid rounded-medium shadow-none"><span class="flex justify-center items-center w-full font-bold px-4 py-1"><span class="m-1 text-center flex justify-center items-center">
Become sponsor
</span></span> <!----></a></div></div></div></div></div></div> <div class="px-5 md:px-10 m-auto bg-code-active relative"><div class="pt-5 pb-8 text-center text-white"><div class="flex items-center"><div class="flex-1 flex items-center justify-center"><a title="Github" href="https://github.com/tsedio/tsed" target="_blank" rel="noopener noreferrer" class="p-1 hover:text-blue-active transition-all duration-500 ease-in-out flex flex align-center justify-center text-xl py-4 mx-2"><i class="bx bxl-github"></i> </a><a title="Slack" href="https://api.tsed.io/rest/slack/tsedio/tsed" target="_blank" rel="noopener noreferrer" class="p-1 hover:text-blue-active transition-all duration-500 ease-in-out flex flex align-center justify-center text-xl py-4 mx-2"><i class="bx bxl-slack"></i> </a><a title="Twitter" href="https://twitter.com/TsED_io" target="_blank" rel="noopener noreferrer" class="p-1 hover:text-blue-active transition-all duration-500 ease-in-out flex flex align-center justify-center text-xl py-4 mx-2"><i class="bx bxl-twitter"></i> </a><a title="StackOverflow" href="https://stackoverflow.com/search?q=tsed" target="_blank" rel="noopener noreferrer" class="p-1 hover:text-blue-active transition-all duration-500 ease-in-out flex flex align-center justify-center text-xl py-4 mx-2"><i class="bx bxl-stack-overflow"></i> </a></div> <div class="absolute top-0 right-0 pt-5 pr-8 pr-10"><div class="relative inline-flex w-auto"><!----> <span class="text-xs py-1 px-2 absolute right-0 rounded-medium rounded-bl-small bg-white text-blue" style="top:-12px;right:-28px;">0</span></div></div></div> <div class="w-full max-w-site m-auto"><div class="flex flex-col sm:flex-row text-center sm:text-left items-start content-center justify-between pt-5 sm:mb-5 sm:py-5"><div class="flex-1 w-full sm:w-auto mb-8 sm:mb-0"><h3 class="font-bold uppercase text-lg pb-4 transition-colors duration-300 ease-linear">
Discover
</h3> <ul class="transition-colors duration-300 ease-linear"><li class="py-2"><a href="/team.html" aria-current="page" class="link internal text-gray-light font-bold hover:text-blue-active"><!---->
Our team
</a></li><li class="py-2"><a href="https://form.typeform.com/to/uJLP7anG" target="_blank" rel="noopener noreferrer" aria-current="page" class="link external text-gray-light font-bold hover:text-blue-active">
Contact us
<!----></a></li></ul></div> <div class="flex-1 w-full sm:w-auto mb-8 sm:mb-0 sm:text-center"><h3 class="font-bold uppercase text-lg pb-4 transition-colors duration-300 ease-linear">
Help
</h3> <ul class="transition-colors duration-300 ease-linear"><li class="py-2"><a href="/tutorials/index.html" aria-current="page" class="link internal text-gray-light font-bold hover:text-blue-active"><!---->
Resources
</a></li><li class="py-2"><a href="https://api.tsed.io/rest/slack/tsedio/tsed" target="_blank" rel="noopener noreferrer" aria-current="page" class="link external text-gray-light font-bold hover:text-blue-active">
Chat with us
<!----></a></li><li class="py-2"><a href="/contributing.html" aria-current="page" class="link internal text-gray-light font-bold hover:text-blue-active router-link-exact-active router-link-active"><!---->
Contribution guide
</a></li></ul></div> <div class="flex-1 w-full sm:w-auto mb-8 sm:mb-0 sm:text-right"><h3 class="font-bold uppercase text-lg pb-4 transition-colors duration-300 ease-linear">
Support
</h3> <ul class="transition-colors duration-300 ease-linear"><li class="py-2"><a href="https://github.com/tsedio/tsed/issues" target="_blank" rel="noopener noreferrer" aria-current="page" class="link external text-gray-light font-bold hover:text-blue-active">
Issues
<!----></a></li><li class="py-2"><a href="/support.html" aria-current="page" class="link internal text-gray-light font-bold hover:text-blue-active"><!---->
Sponsoring & donations
</a></li></ul></div></div></div> <div class="text-sm">
Copyright © 2016-2022 <a href="/license.html" class="text-blue font-bold hover:text-blue-active">MIT License</a> <span class="inline-block text-gray-light px-1">|</span> By
Lenzotti Romain
</div></div></div> </footer></div></div><div class="global-ui"></div></div>
<script src="/assets/js/app.926b1e9f.js" defer></script><script src="/assets/js/4.9da0d4f2.js" defer></script><script src="/assets/js/18.ce82bc8c.js" defer></script>
</body>
</html>