Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: expressjs/express
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: ef7ad681b245fba023843ce94f6bcb8e275bbb8e
Choose a base ref
...
head repository: expressjs/express
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: b28db2c12c3bd9cd763316824446f79bf81e0686
Choose a head ref

Commits on Aug 3, 2015

  1. Copy the full SHA
    2f8ac67 View commit details

Commits on Nov 7, 2015

  1. Copy the full SHA
    5a4310e View commit details
  2. build: io.js@2.5

    dougwilson committed Nov 7, 2015
    Copy the full SHA
    2f96412 View commit details
  3. build: support io.js 3.x

    dougwilson committed Nov 7, 2015
    Copy the full SHA
    963d795 View commit details
  4. build: mocha@2.3.3

    dougwilson committed Nov 7, 2015
    Copy the full SHA
    1a59246 View commit details
  5. build: istanbul@0.4.0

    dougwilson committed Nov 7, 2015
    Copy the full SHA
    2f37f4b View commit details
  6. build: supertest@1.1.0

    dougwilson committed Nov 7, 2015
    Copy the full SHA
    9665aa2 View commit details
  7. build: should@7.1.1

    dougwilson committed Nov 7, 2015
    Copy the full SHA
    747fccf View commit details
  8. build: ejs@2.3.4

    dougwilson committed Nov 7, 2015
    Copy the full SHA
    5699d64 View commit details
  9. Fix param definition is jsdoc for app.render

    fixes #2741
    AlexKVal authored and dougwilson committed Nov 7, 2015
    Copy the full SHA
    e5ec966 View commit details
  10. tests: add test for res.send() without arguments

    closes #2778
    closes #2783
    Ricardo Bin authored and dougwilson committed Nov 7, 2015
    1
    Copy the full SHA
    7a3b5ae View commit details

Commits on Dec 15, 2015

  1. Add Security document

    closes #2733
    closes #2804
    Rand McKinney authored and dougwilson committed Dec 15, 2015
    Copy the full SHA
    42b9442 View commit details
  2. docs: remove link to Korean translation

    closes #2820
    Young Jae Sim authored and dougwilson committed Dec 15, 2015
    Copy the full SHA
    67116cc View commit details
  3. build: support Node.js 4.x

    closes #2751
    closes #2754
    closes #2757
    dougwilson committed Dec 15, 2015
    Copy the full SHA
    23f021a View commit details
  4. deps: cookie@0.1.5

    closes #2799
    closes #2800
    closes #2801
    ChALkeR authored and dougwilson committed Dec 15, 2015
    Copy the full SHA
    60f8e77 View commit details
  5. docs: fix link to Security.md in Readme.md

    closes #2829
    Rand McKinney authored and dougwilson committed Dec 15, 2015
    Copy the full SHA
    4416fb2 View commit details

Commits on Dec 18, 2015

  1. deps: escape-html@~1.0.3

    dougwilson committed Dec 18, 2015
    Copy the full SHA
    2b2a1b2 View commit details
  2. deps: finalhandler@0.4.1

    dougwilson committed Dec 18, 2015
    Copy the full SHA
    7d93503 View commit details
  3. deps: proxy-addr@~1.0.10

    dougwilson committed Dec 18, 2015
    Copy the full SHA
    c95a107 View commit details
  4. deps: range-parser@~1.0.3

    dougwilson committed Dec 18, 2015
    Copy the full SHA
    4f8167f View commit details
  5. build: istanbul@0.4.1

    dougwilson committed Dec 18, 2015
    Copy the full SHA
    c73b1be View commit details
  6. build: mocha@2.3.4

    dougwilson committed Dec 18, 2015
    Copy the full SHA
    2493239 View commit details
  7. Copy the full SHA
    e44f024 View commit details

Commits on Jan 13, 2016

  1. docs: add link to Gitter

    jordonias authored and Rand McKinney committed Jan 13, 2016
    Copy the full SHA
    f2cf28c View commit details

Commits on Jan 17, 2016

  1. deps: serve-static@~1.10.1

    dougwilson committed Jan 17, 2016
    Copy the full SHA
    bd118c4 View commit details
  2. deps: send@0.13.1

    dougwilson committed Jan 17, 2016
    Copy the full SHA
    53ee474 View commit details
  3. deps: depd@~1.1.0

    dougwilson committed Jan 17, 2016
    Copy the full SHA
    7c8456f View commit details
  4. build: istanbul@0.4.2

    dougwilson committed Jan 17, 2016
    Copy the full SHA
    8eee818 View commit details
  5. Copy the full SHA
    547ea36 View commit details
  6. Copy the full SHA
    1589ce2 View commit details

Commits on Jan 18, 2016

  1. deps: methods@~1.1.2

    dougwilson committed Jan 18, 2016
    Copy the full SHA
    e83eab8 View commit details

Commits on Jan 20, 2016

  1. deps: serve-static@~1.10.2

    dougwilson committed Jan 20, 2016
    Copy the full SHA
    f627ca8 View commit details
  2. deps: parseurl@~1.3.1

    dougwilson committed Jan 20, 2016
    Copy the full SHA
    6847405 View commit details

Commits on Jan 22, 2016

  1. 1
    Copy the full SHA
    e7a02f6 View commit details
  2. 4.13.4

    dougwilson committed Jan 22, 2016
    Copy the full SHA
    193bed2 View commit details

Commits on Feb 10, 2016

  1. Copy the full SHA
    0513655 View commit details
  2. Fix jsdoc comment for res.get

    closes #2882
    andyfleming authored and dougwilson committed Feb 10, 2016
    Copy the full SHA
    b5a2801 View commit details
  3. Copy the full SHA
    4bcbf67 View commit details

Commits on Feb 25, 2016

  1. examples: comment the usage of process.nextTick

    closes #2903
    closes #2908
    Muhammad Saqib authored and dougwilson committed Feb 25, 2016
    Copy the full SHA
    dd2b897 View commit details

Commits on Mar 1, 2016

  1. docs: add base contributing guide

    closes #2918
    mikeal authored and dougwilson committed Mar 1, 2016
    Copy the full SHA
    f3d99a4 View commit details

Commits on May 10, 2016

  1. tests: add test for signed cookie without secret

    closes #2986
    LinusU authored and dougwilson committed May 10, 2016
    Copy the full SHA
    bb84cf9 View commit details
  2. build: Node.js@4.4

    dougwilson committed May 10, 2016
    Copy the full SHA
    8931b23 View commit details

Commits on May 11, 2016

  1. tests: use supertest to check response header values

    closes #2983
    closes #2992
    dougwilson authored and LinusU committed May 11, 2016
    Copy the full SHA
    12bc16e View commit details

Commits on May 13, 2016

  1. docs: update location of expressjs.com repo

    closes #2995
    Rand McKinney authored and dougwilson committed May 13, 2016
    Copy the full SHA
    3d56e73 View commit details

Commits on May 24, 2016

  1. Copy the full SHA
    741a5aa View commit details
  2. build: ejs@2.4.1

    dougwilson committed May 24, 2016
    Copy the full SHA
    20a2548 View commit details
  3. build: istanbul@0.4.3

    dougwilson committed May 24, 2016
    Copy the full SHA
    992cd08 View commit details
  4. build: mocha@2.5.1

    dougwilson committed May 24, 2016
    Copy the full SHA
    d7ae242 View commit details
  5. build: should@8.4.0

    dougwilson committed May 24, 2016
    Copy the full SHA
    fd48bfe View commit details
  6. Copy the full SHA
    e3dd191 View commit details
Showing with 10,638 additions and 2,115 deletions.
  1. +11 −0 .editorconfig
  2. +2 −0 .eslintignore
  3. +8 −0 .eslintrc.yml
  4. +218 −0 .github/workflows/ci.yml
  5. +5 −16 .gitignore
  6. +0 −12 .travis.yml
  7. +92 −0 Charter.md
  8. +139 −0 Code-Of-Conduct.md
  9. +51 −0 Collaborator-Guide.md
  10. +165 −14 Contributing.md
  11. +601 −11 History.md
  12. +125 −0 Readme-Guide.md
  13. +71 −43 Readme.md
  14. +192 −0 Release-Process.md
  15. +46 −0 Security.md
  16. +63 −0 Triager-Guide.md
  17. +101 −7 appveyor.yml
  18. +12 −8 benchmarks/Makefile
  19. +34 −0 benchmarks/README.md
  20. +2 −5 benchmarks/middleware.js
  21. +5 −3 benchmarks/run
  22. +29 −0 examples/README.md
  23. +13 −10 examples/auth/index.js
  24. +0 −48 examples/auth/pass.js
  25. +2 −0 examples/auth/views/head.ejs
  26. +6 −7 examples/auth/views/login.ejs
  27. +0 −31 examples/big-view/index.js
  28. +0 −12 examples/big-view/pets.jade
  29. +3 −1 examples/content-negotiation/db.js
  30. +2 −0 examples/content-negotiation/index.js
  31. +1 −0 examples/content-negotiation/users.js
  32. +6 −8 examples/cookie-sessions/index.js
  33. +4 −3 examples/cookies/index.js
  34. +3 −0 examples/downloads/files/notes/groceries.txt
  35. +15 −10 examples/downloads/index.js
  36. +8 −1 examples/ejs/index.js
  37. +4 −0 examples/ejs/public/stylesheets/style.css
  38. +3 −7 examples/ejs/views/header.html
  39. +2 −2 examples/ejs/views/users.html
  40. +17 −17 examples/error-pages/index.js
  41. +2 −2 examples/error-pages/views/404.ejs
  42. +2 −2 examples/error-pages/views/500.ejs
  43. +2 −0 examples/error-pages/views/error_header.ejs
  44. +2 −0 examples/error-pages/views/index.ejs
  45. +7 −2 examples/error/index.js
  46. +0 −64 examples/expose-data-to-client/index.js
  47. +0 −14 examples/expose-data-to-client/views/page.jade
  48. +3 −1 examples/hello-world/index.js
  49. +0 −51 examples/jade/index.js
  50. +0 −4 examples/jade/public/stylesheets/style.css
  51. +0 −3 examples/jade/views/header.jade
  52. +0 −5 examples/jade/views/layout.jade
  53. +0 −8 examples/jade/views/users/index.jade
  54. +0 −3 examples/jade/views/users/user.jade
  55. +11 −12 examples/markdown/index.js
  56. +2 −0 examples/multi-router/controllers/api_v1.js
  57. +2 −0 examples/multi-router/controllers/api_v2.js
  58. +3 −1 examples/multi-router/index.js
  59. +0 −60 examples/multipart/index.js
  60. +3 −1 examples/mvc/controllers/main/index.js
  61. +2 −0 examples/mvc/controllers/pet/index.js
  62. +2 −0 examples/mvc/controllers/pet/views/edit.ejs
  63. +2 −0 examples/mvc/controllers/pet/views/show.ejs
  64. +2 −0 examples/mvc/controllers/user-pet/index.js
  65. +4 −0 examples/mvc/controllers/user/index.js
  66. +27 −0 examples/mvc/controllers/user/views/edit.hbs
  67. +0 −11 examples/mvc/controllers/user/views/edit.jade
  68. +18 −0 examples/mvc/controllers/user/views/list.hbs
  69. +0 −7 examples/mvc/controllers/user/views/list.jade
  70. +31 −0 examples/mvc/controllers/user/views/show.hbs
  71. +0 −17 examples/mvc/controllers/user/views/show.jade
  72. +3 −1 examples/mvc/db.js
  73. +9 −9 examples/mvc/index.js
  74. +21 −15 examples/mvc/lib/boot.js
  75. +1 −1 examples/mvc/public/style.css
  76. +13 −0 examples/mvc/views/404.ejs
  77. +0 −3 examples/mvc/views/404.jade
  78. +13 −0 examples/mvc/views/5xx.ejs
  79. +0 −3 examples/mvc/views/5xx.jade
  80. +6 −1 examples/online/index.js
  81. +7 −12 examples/params/index.js
  82. +4 −2 examples/resource/index.js
  83. +7 −4 examples/route-map/index.js
  84. +5 −3 examples/route-middleware/index.js
  85. +7 −5 examples/route-separation/index.js
  86. +2 −0 examples/route-separation/post.js
  87. +3 −1 examples/route-separation/site.js
  88. +2 −0 examples/route-separation/user.js
  89. +2 −0 examples/route-separation/views/footer.ejs
  90. +9 −0 examples/route-separation/views/header.ejs
  91. +10 −0 examples/route-separation/views/index.ejs
  92. +0 −6 examples/route-separation/views/index.jade
  93. +0 −6 examples/route-separation/views/layout.jade
  94. +12 −0 examples/route-separation/views/posts/index.ejs
  95. +0 −8 examples/route-separation/views/posts/index.jade
  96. +23 −0 examples/route-separation/views/users/edit.ejs
  97. +0 −12 examples/route-separation/views/users/edit.jade
  98. +14 −0 examples/route-separation/views/users/index.ejs
  99. +0 −9 examples/route-separation/views/users/index.jade
  100. +9 −0 examples/route-separation/views/users/view.ejs
  101. +0 −6 examples/route-separation/views/users/view.jade
  102. +9 −12 examples/search/index.js
  103. +4 −2 examples/search/{ → public}/client.js
  104. +21 −0 examples/search/public/index.html
  105. +0 −15 examples/search/search.jade
  106. +6 −1 examples/session/index.js
  107. +2 −0 examples/session/redis.js
  108. +6 −3 examples/static-files/index.js
  109. +1 −1 examples/static-files/public/js/app.js
  110. +2 −0 examples/vhost/index.js
  111. +3 −1 examples/view-constructor/github-view.js
  112. +4 −3 examples/view-constructor/index.js
  113. +11 −8 examples/view-locals/index.js
  114. +0 −12 examples/view-locals/layout.jade
  115. +0 −8 examples/view-locals/user.jade
  116. +5 −0 examples/view-locals/user.js
  117. +20 −0 examples/view-locals/views/index.ejs
  118. +15 −10 examples/web-service/index.js
  119. +31 −13 lib/application.js
  120. +20 −7 lib/express.js
  121. +9 −2 lib/middleware/init.js
  122. +5 −9 lib/middleware/query.js
  123. +64 −28 lib/request.js
  124. +187 −62 lib/response.js
  125. +63 −35 lib/router/index.js
  126. +26 −21 lib/router/layer.js
  127. +32 −12 lib/router/route.js
  128. +33 −30 lib/utils.js
  129. +11 −2 lib/view.js
  130. +50 −43 package.json
  131. +57 −21 test/Route.js
  132. +158 −23 test/Router.js
  133. +16 −1 test/acceptance/auth.js
  134. +4 −4 test/acceptance/cookie-sessions.js
  135. +7 −12 test/acceptance/cookies.js
  136. +19 −5 test/acceptance/downloads.js
  137. +2 −5 test/acceptance/error-pages.js
  138. +1 −1 test/acceptance/error.js
  139. +21 −0 test/acceptance/hello-world.js
  140. +1 −1 test/acceptance/multi-router.js
  141. +2 −2 test/acceptance/params.js
  142. +1 −1 test/acceptance/route-map.js
  143. +5 −5 test/acceptance/web-service.js
  144. +8 −5 test/app.all.js
  145. +1 −0 test/app.del.js
  146. +15 −12 test/app.engine.js
  147. +8 −10 test/app.head.js
  148. +40 −18 test/app.js
  149. +3 −8 test/app.listen.js
  150. +16 −18 test/app.locals.js
  151. +2 −1 test/app.options.js
  152. +22 −24 test/app.param.js
  153. +62 −50 test/app.render.js
  154. +120 −0 test/app.request.js
  155. +114 −15 test/app.response.js
  156. +2 −0 test/app.route.js
  157. +130 −53 test/app.router.js
  158. +9 −6 test/app.routes.error.js
  159. +33 −18 test/app.use.js
  160. +51 −6 test/config.js
  161. +37 −11 test/exports.js
  162. +790 −0 test/express.json.js
  163. +555 −0 test/express.raw.js
  164. +814 −0 test/express.static.js
  165. +605 −0 test/express.text.js
  166. +866 −0 test/express.urlencoded.js
  167. 0 test/fixtures/broken.send
  168. 0 test/fixtures/empty.txt
  169. +1 −0 test/fixtures/nums.txt
  170. +1 −0 test/fixtures/pets/names.txt
  171. 0 test/fixtures/snow ☃/.gitkeep
  172. +1 −0 test/fixtures/todo.html
  173. +1 −0 test/fixtures/todo.txt
  174. +1 −0 test/fixtures/users/index.html
  175. +1 −0 test/fixtures/users/tobi.txt
  176. +6 −8 test/middleware.basic.js
  177. +0 −3 test/mocha.opts
  178. +1 −0 test/regression.js
  179. +1 −0 test/req.accepts.js
  180. +3 −2 test/req.acceptsCharset.js
  181. +3 −2 test/req.acceptsCharsets.js
  182. +20 −17 test/req.acceptsEncoding.js
  183. +21 −18 test/req.acceptsEncodings.js
  184. +30 −26 test/req.acceptsLanguage.js
  185. +30 −26 test/req.acceptsLanguages.js
  186. +1 −0 test/req.baseUrl.js
  187. +2 −1 test/req.fresh.js
  188. +26 −1 test/req.get.js
  189. +1 −1 test/req.host.js
  190. +51 −1 test/req.hostname.js
  191. +19 −3 test/req.ip.js
  192. +1 −0 test/req.ips.js
  193. +140 −74 test/req.is.js
  194. +2 −2 test/req.param.js
  195. +1 −0 test/req.path.js
  196. +1 −0 test/req.protocol.js
  197. +11 −8 test/req.query.js
  198. +90 −24 test/req.range.js
  199. +7 −4 test/req.route.js
  200. +1 −0 test/req.secure.js
  201. +3 −6 test/req.signedCookies.js
  202. +2 −1 test/req.stale.js
  203. +1 −0 test/req.subdomains.js
  204. +23 −55 test/req.xhr.js
  205. +42 −30 test/res.append.js
  206. +3 −1 test/res.attachment.js
  207. +5 −10 test/res.clearCookie.js
  208. +164 −41 test/res.cookie.js
  209. +395 −10 test/res.download.js
  210. +41 −11 test/res.format.js
  211. +1 −0 test/res.get.js
  212. +39 −1 test/res.json.js
  213. +98 −58 test/res.jsonp.js
  214. +1 −0 test/res.links.js
  215. +5 −6 test/res.locals.js
  216. +367 −4 test/res.location.js
  217. +60 −47 test/res.redirect.js
  218. +48 −24 test/res.render.js
  219. +96 −59 test/res.send.js
  220. +844 −159 test/res.sendFile.js
  221. +1 −1 test/res.sendStatus.js
  222. +14 −0 test/res.set.js
  223. +194 −12 test/res.status.js
  224. +3 −1 test/res.type.js
  225. +4 −9 test/res.vary.js
  226. +1 −1 test/support/env.js
  227. +1 −0 test/support/tmpl.js
  228. +72 −0 test/support/utils.js
  229. +28 −20 test/utils.js
11 changes: 11 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# http://editorconfig.org
root = true

[*]
charset = utf-8
insert_final_newline = true
trim_trailing_whitespace = true

[{*.js,*.json,*.yml}]
indent_size = 2
indent_style = space
2 changes: 2 additions & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
coverage
node_modules
8 changes: 8 additions & 0 deletions .eslintrc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
root: true

rules:
eol-last: error
eqeqeq: [error, allow-null]
indent: [error, 2, { MemberExpression: "off", SwitchCase: 1 }]
no-trailing-spaces: error
no-unused-vars: [error, { vars: all, args: none, ignoreRestSiblings: true }]
218 changes: 218 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,218 @@
name: ci

on:
- pull_request
- push

jobs:
test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
name:
- Node.js 0.10
- Node.js 0.12
- io.js 1.x
- io.js 2.x
- io.js 3.x
- Node.js 4.x
- Node.js 5.x
- Node.js 6.x
- Node.js 7.x
- Node.js 8.x
- Node.js 9.x
- Node.js 10.x
- Node.js 11.x
- Node.js 12.x
- Node.js 13.x
- Node.js 14.x
- Node.js 15.x
- Node.js 16.x
- Node.js 17.x
- Node.js 18.x
- Node.js 19.x
- Node.js 20.x
- Node.js 21.x

include:
- name: Node.js 0.10
node-version: "0.10"
npm-i: mocha@3.5.3 nyc@10.3.2 supertest@2.0.0

- name: Node.js 0.12
node-version: "0.12"
npm-i: mocha@3.5.3 nyc@10.3.2 supertest@2.0.0

- name: io.js 1.x
node-version: "1.8"
npm-i: mocha@3.5.3 nyc@10.3.2 supertest@2.0.0

- name: io.js 2.x
node-version: "2.5"
npm-i: mocha@3.5.3 nyc@10.3.2 supertest@2.0.0

- name: io.js 3.x
node-version: "3.3"
npm-i: mocha@3.5.3 nyc@10.3.2 supertest@2.0.0

- name: Node.js 4.x
node-version: "4.9"
npm-i: mocha@5.2.0 nyc@11.9.0 supertest@3.4.2

- name: Node.js 5.x
node-version: "5.12"
npm-i: mocha@5.2.0 nyc@11.9.0 supertest@3.4.2

- name: Node.js 6.x
node-version: "6.17"
npm-i: mocha@6.2.2 nyc@14.1.1 supertest@3.4.2

- name: Node.js 7.x
node-version: "7.10"
npm-i: mocha@6.2.2 nyc@14.1.1 supertest@6.1.6

- name: Node.js 8.x
node-version: "8.17"
npm-i: mocha@7.2.0 nyc@14.1.1

- name: Node.js 9.x
node-version: "9.11"
npm-i: mocha@7.2.0 nyc@14.1.1

- name: Node.js 10.x
node-version: "10.24"
npm-i: mocha@8.4.0

- name: Node.js 11.x
node-version: "11.15"
npm-i: mocha@8.4.0

- name: Node.js 12.x
node-version: "12.22"
npm-i: mocha@9.2.2

- name: Node.js 13.x
node-version: "13.14"
npm-i: mocha@9.2.2

- name: Node.js 14.x
node-version: "14.20"

- name: Node.js 15.x
node-version: "15.14"

- name: Node.js 16.x
node-version: "16.20"

- name: Node.js 17.x
node-version: "17.9"

- name: Node.js 18.x
node-version: "18.19"

- name: Node.js 19.x
node-version: "19.9"

- name: Node.js 20.x
node-version: "20.11"

- name: Node.js 21.x
node-version: "21.6"

steps:
- uses: actions/checkout@v4

- name: Install Node.js ${{ matrix.node-version }}
shell: bash -eo pipefail -l {0}
run: |
nvm install --default ${{ matrix.node-version }}
dirname "$(nvm which ${{ matrix.node-version }})" >> "$GITHUB_PATH"
- name: Configure npm
run: |
npm config set loglevel error
if [[ "$(npm config get package-lock)" == "true" ]]; then
npm config set package-lock false
else
npm config set shrinkwrap false
fi
- name: Install npm module(s) ${{ matrix.npm-i }}
run: npm install --save-dev ${{ matrix.npm-i }}
if: matrix.npm-i != ''

- name: Remove non-test dependencies
run: npm rm --silent --save-dev connect-redis

- name: Setup Node.js version-specific dependencies
shell: bash
run: |
# eslint for linting
# - remove on Node.js < 12
if [[ "$(cut -d. -f1 <<< "${{ matrix.node-version }}")" -lt 12 ]]; then
node -pe 'Object.keys(require("./package").devDependencies).join("\n")' | \
grep -E '^eslint(-|$)' | \
sort -r | \
xargs -n1 npm rm --silent --save-dev
fi
- name: Install Node.js dependencies
run: npm install

- name: List environment
id: list_env
shell: bash
run: |
echo "node@$(node -v)"
echo "npm@$(npm -v)"
npm -s ls ||:
(npm -s ls --depth=0 ||:) | awk -F'[ @]' 'NR>1 && $2 { print $2 "=" $3 }' >> "$GITHUB_OUTPUT"
- name: Run tests
shell: bash
run: |
npm run test-ci
cp coverage/lcov.info "coverage/${{ matrix.name }}.lcov"
- name: Lint code
if: steps.list_env.outputs.eslint != ''
run: npm run lint

- name: Collect code coverage
run: |
mv ./coverage "./${{ matrix.name }}"
mkdir ./coverage
mv "./${{ matrix.name }}" "./coverage/${{ matrix.name }}"
- name: Upload code coverage
uses: actions/upload-artifact@v3
with:
name: coverage
path: ./coverage
retention-days: 1

coverage:
needs: test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Install lcov
shell: bash
run: sudo apt-get -y install lcov

- name: Collect coverage reports
uses: actions/download-artifact@v3
with:
name: coverage
path: ./coverage

- name: Merge coverage reports
shell: bash
run: find ./coverage -name lcov.info -exec printf '-a %q\n' {} \; | xargs lcov -o ./coverage/lcov.info

- name: Upload coverage report
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
21 changes: 5 additions & 16 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,26 +1,15 @@
# OS X
.DS_Store*
Icon?
._*

# Windows
Thumbs.db
ehthumbs.db
Desktop.ini

# Linux
.directory
*~


# npm
node_modules
package-lock.json
*.log
*.gz


# Coveralls
.nyc_output
coverage

# Benchmarking
benchmarks/graphs

# ignore additional files using core.excludesFile
# https://git-scm.com/docs/gitignore
12 changes: 0 additions & 12 deletions .travis.yml

This file was deleted.

92 changes: 92 additions & 0 deletions Charter.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# Express Charter

## Section 0: Guiding Principles

The Express project is part of the OpenJS Foundation which operates
transparently, openly, collaboratively, and ethically.
Project proposals, timelines, and status must not merely be open, but
also easily visible to outsiders.

## Section 1: Scope

Express is a HTTP web server framework with a simple and expressive API
which is highly aligned with Node.js core. We aim to be the best in
class for writing performant, spec compliant, and powerful web servers
in Node.js. As one of the oldest and most popular web frameworks in
the ecosystem, we have an important place for new users and experts
alike.

### 1.1: In-scope

Express is made of many modules spread between three GitHub Orgs:

- [expressjs](http://github.com/expressjs/): Top level middleware and
libraries
- [pillarjs](http://github.com/pillarjs/): Components which make up
Express but can also be used for other web frameworks
- [jshttp](http://github.com/jshttp/): Low level HTTP libraries

### 1.2: Out-of-Scope

Section Intentionally Left Blank

## Section 2: Relationship with OpenJS Foundation CPC.

Technical leadership for the projects within the OpenJS Foundation is
delegated to the projects through their project charters by the OpenJS
Cross Project Council (CPC). In the case of the Express project, it is
delegated to the Express Technical Committee ("TC").

This Technical Committee is in charge of both the day-to-day operations
of the project, as well as its technical management. This charter can
be amended by the TC requiring at least two approvals and a minimum two
week comment period for other TC members or CPC members to object. Any
changes the CPC wishes to propose will be considered a priority but
will follow the same process.

### 2.1 Other Formal Project Relationships

Section Intentionally Left Blank

## Section 3: Express Governing Body

The Express project is managed by the Technical Committee ("TC").
Members can be added to the TC at any time. Any committer can nominate
another committer to the TC and the TC uses its standard consensus
seeking process to evaluate whether or not to add this new member.
Members who do not participate consistently at the level of a majority
of the other members are expected to resign.

## Section 4: Roles & Responsibilities

The Express TC manages all aspects of both the technical and community
parts of the project. Members of the TC should attend the regular
meetings when possible, and be available for discussion of time
sensitive or important issues.

### Section 4.1 Project Operations & Management

Section Intentionally Left Blank

### Section 4.2: Decision-making, Voting, and/or Elections

The Express TC uses a "consensus seeking" process for issues that are
escalated to the TC. The group tries to find a resolution that has no
open objections among TC members. If a consensus cannot be reached
that has no objections then a majority wins vote is called. It is also
expected that the majority of decisions made by the TC are via a
consensus seeking process and that voting is only used as a last-resort.

Resolution may involve returning the issue to committers with
suggestions on how to move forward towards a consensus. It is not
expected that a meeting of the TC will resolve all issues on its
agenda during that meeting and may prefer to continue the discussion
happening among the committers.

### Section 4.3: Other Project Roles

Section Intentionally Left Blank

## Section 5: Definitions

Section Intentionally Left Blank
Loading