Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
I
initial_project
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Нұрасыл Қайратұлы
initial_project
Commits
9eff7f53
Commit
9eff7f53
authored
Jul 26, 2024
by
Nurasyl
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update
parent
3aa42b7d
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
978 additions
and
65 deletions
+978
-65
App.tsx
client/src/App.tsx
+1
-0
package-lock.json
server/package-lock.json
+892
-22
package.json
server/package.json
+3
-0
b549d141-6eec-4fd2-bb23-01a60970b06d.jpeg
.../public/uploads/b549d141-6eec-4fd2-bb23-01a60970b06d.jpeg
+0
-0
app.ts
server/src/app.ts
+13
-1
appDataSource.ts
server/src/appDataSource.ts
+14
-0
product.controller.ts
server/src/controllers/product.controller.ts
+2
-2
product.entity.ts
server/src/entities/product.entity.ts
+19
-0
product.repository.ts
server/src/repositories/product.repository.ts
+26
-0
product.service.ts
server/src/services/product.service.ts
+8
-40
No files found.
client/src/App.tsx
View file @
9eff7f53
...
...
@@ -7,6 +7,7 @@ import { NewProductForm } from './containers/NewProductForm';
function
App
()
{
return
(
<>
<
a
href=
""
></
a
>
<
CssBaseline
/>
<
header
>
<
AppToolbar
/>
...
...
server/package-lock.json
View file @
9eff7f53
...
...
@@ -14,12 +14,15 @@
"cors"
:
"^2.8.5"
,
"express"
:
"^4.18.2"
,
"multer"
:
"^1.4.5-lts.1"
,
"mysql"
:
"^2.18.1"
,
"nanoid"
:
"^3.3.6"
,
"pg"
:
"^8.12.0"
,
"reflect-metadata"
:
"^0.2.1"
,
"save"
:
"^2.9.0"
,
"save-dev"
:
"^0.0.1-security"
,
"ts-node"
:
"^10.9.1"
,
"tslib"
:
"^2.6.0"
,
"typeorm"
:
"^0.3.20"
,
"typescript"
:
"^5.1.6"
},
"devDependencies"
:
{
...
...
@@ -189,6 +192,95 @@
"integrity"
:
"sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw=="
,
"dev"
:
true
},
"node_modules/@isaacs/cliui"
:
{
"version"
:
"8.0.2"
,
"resolved"
:
"https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz"
,
"integrity"
:
"sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="
,
"dependencies"
:
{
"string-width"
:
"^5.1.2"
,
"string-width-cjs"
:
"npm:string-width@^4.2.0"
,
"strip-ansi"
:
"^7.0.1"
,
"strip-ansi-cjs"
:
"npm:strip-ansi@^6.0.1"
,
"wrap-ansi"
:
"^8.1.0"
,
"wrap-ansi-cjs"
:
"npm:wrap-ansi@^7.0.0"
},
"engines"
:
{
"node"
:
">=12"
}
},
"node_modules/@isaacs/cliui/node_modules/ansi-regex"
:
{
"version"
:
"6.0.1"
,
"resolved"
:
"https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz"
,
"integrity"
:
"sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA=="
,
"engines"
:
{
"node"
:
">=12"
},
"funding"
:
{
"url"
:
"https://github.com/chalk/ansi-regex?sponsor=1"
}
},
"node_modules/@isaacs/cliui/node_modules/ansi-styles"
:
{
"version"
:
"6.2.1"
,
"resolved"
:
"https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz"
,
"integrity"
:
"sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="
,
"engines"
:
{
"node"
:
">=12"
},
"funding"
:
{
"url"
:
"https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/@isaacs/cliui/node_modules/emoji-regex"
:
{
"version"
:
"9.2.2"
,
"resolved"
:
"https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz"
,
"integrity"
:
"sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="
},
"node_modules/@isaacs/cliui/node_modules/string-width"
:
{
"version"
:
"5.1.2"
,
"resolved"
:
"https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz"
,
"integrity"
:
"sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="
,
"dependencies"
:
{
"eastasianwidth"
:
"^0.2.0"
,
"emoji-regex"
:
"^9.2.2"
,
"strip-ansi"
:
"^7.0.1"
},
"engines"
:
{
"node"
:
">=12"
},
"funding"
:
{
"url"
:
"https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@isaacs/cliui/node_modules/strip-ansi"
:
{
"version"
:
"7.1.0"
,
"resolved"
:
"https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz"
,
"integrity"
:
"sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="
,
"dependencies"
:
{
"ansi-regex"
:
"^6.0.1"
},
"engines"
:
{
"node"
:
">=12"
},
"funding"
:
{
"url"
:
"https://github.com/chalk/strip-ansi?sponsor=1"
}
},
"node_modules/@isaacs/cliui/node_modules/wrap-ansi"
:
{
"version"
:
"8.1.0"
,
"resolved"
:
"https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz"
,
"integrity"
:
"sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="
,
"dependencies"
:
{
"ansi-styles"
:
"^6.1.0"
,
"string-width"
:
"^5.0.1"
,
"strip-ansi"
:
"^7.0.1"
},
"engines"
:
{
"node"
:
">=12"
},
"funding"
:
{
"url"
:
"https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
"node_modules/@jridgewell/resolve-uri"
:
{
"version"
:
"3.1.2"
,
"resolved"
:
"https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz"
,
...
...
@@ -246,6 +338,15 @@
"node"
:
">= 8"
}
},
"node_modules/@pkgjs/parseargs"
:
{
"version"
:
"0.11.0"
,
"resolved"
:
"https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz"
,
"integrity"
:
"sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg=="
,
"optional"
:
true
,
"engines"
:
{
"node"
:
">=14"
}
},
"node_modules/@pkgr/core"
:
{
"version"
:
"0.1.1"
,
"resolved"
:
"https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz"
,
...
...
@@ -258,6 +359,11 @@
"url"
:
"https://opencollective.com/unts"
}
},
"node_modules/@sqltools/formatter"
:
{
"version"
:
"1.2.5"
,
"resolved"
:
"https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.5.tgz"
,
"integrity"
:
"sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw=="
},
"node_modules/@tsconfig/node10"
:
{
"version"
:
"1.0.11"
,
"resolved"
:
"https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz"
,
...
...
@@ -655,7 +761,6 @@
"version"
:
"5.0.1"
,
"resolved"
:
"https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz"
,
"integrity"
:
"sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
,
"dev"
:
true
,
"engines"
:
{
"node"
:
">=8"
}
...
...
@@ -664,7 +769,6 @@
"version"
:
"4.3.0"
,
"resolved"
:
"https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
,
"integrity"
:
"sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="
,
"dev"
:
true
,
"dependencies"
:
{
"color-convert"
:
"^2.0.1"
},
...
...
@@ -675,6 +779,11 @@
"url"
:
"https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/any-promise"
:
{
"version"
:
"1.3.0"
,
"resolved"
:
"https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz"
,
"integrity"
:
"sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="
},
"node_modules/anymatch"
:
{
"version"
:
"3.1.3"
,
"resolved"
:
"https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz"
,
...
...
@@ -688,6 +797,14 @@
"node"
:
">= 8"
}
},
"node_modules/app-root-path"
:
{
"version"
:
"3.1.0"
,
"resolved"
:
"https://registry.npmjs.org/app-root-path/-/app-root-path-3.1.0.tgz"
,
"integrity"
:
"sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA=="
,
"engines"
:
{
"node"
:
">= 6.0.0"
}
},
"node_modules/append-field"
:
{
"version"
:
"1.0.0"
,
"resolved"
:
"https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz"
,
...
...
@@ -726,8 +843,34 @@
"node_modules/balanced-match"
:
{
"version"
:
"1.0.2"
,
"resolved"
:
"https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"
,
"integrity"
:
"sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
,
"dev"
:
true
"integrity"
:
"sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
"node_modules/base64-js"
:
{
"version"
:
"1.5.1"
,
"resolved"
:
"https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz"
,
"integrity"
:
"sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
,
"funding"
:
[
{
"type"
:
"github"
,
"url"
:
"https://github.com/sponsors/feross"
},
{
"type"
:
"patreon"
,
"url"
:
"https://www.patreon.com/feross"
},
{
"type"
:
"consulting"
,
"url"
:
"https://feross.org/support"
}
]
},
"node_modules/bignumber.js"
:
{
"version"
:
"9.0.0"
,
"resolved"
:
"https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz"
,
"integrity"
:
"sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A=="
,
"engines"
:
{
"node"
:
"*"
}
},
"node_modules/binary-extensions"
:
{
"version"
:
"2.3.0"
,
...
...
@@ -781,7 +924,6 @@
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz"
,
"integrity"
:
"sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="
,
"dev"
:
true
,
"dependencies"
:
{
"balanced-match"
:
"^1.0.0"
}
...
...
@@ -798,6 +940,29 @@
"node"
:
">=8"
}
},
"node_modules/buffer"
:
{
"version"
:
"6.0.3"
,
"resolved"
:
"https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz"
,
"integrity"
:
"sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA=="
,
"funding"
:
[
{
"type"
:
"github"
,
"url"
:
"https://github.com/sponsors/feross"
},
{
"type"
:
"patreon"
,
"url"
:
"https://www.patreon.com/feross"
},
{
"type"
:
"consulting"
,
"url"
:
"https://feross.org/support"
}
],
"dependencies"
:
{
"base64-js"
:
"^1.3.1"
,
"ieee754"
:
"^1.2.1"
}
},
"node_modules/buffer-from"
:
{
"version"
:
"1.1.2"
,
"resolved"
:
"https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz"
,
...
...
@@ -853,7 +1018,6 @@
"version"
:
"4.1.2"
,
"resolved"
:
"https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
,
"integrity"
:
"sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="
,
"dev"
:
true
,
"dependencies"
:
{
"ansi-styles"
:
"^4.1.0"
,
"supports-color"
:
"^7.1.0"
...
...
@@ -906,11 +1070,78 @@
"resolved"
:
"https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz"
,
"integrity"
:
"sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw=="
},
"node_modules/cli-highlight"
:
{
"version"
:
"2.1.11"
,
"resolved"
:
"https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz"
,
"integrity"
:
"sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg=="
,
"dependencies"
:
{
"chalk"
:
"^4.0.0"
,
"highlight.js"
:
"^10.7.1"
,
"mz"
:
"^2.4.0"
,
"parse5"
:
"^5.1.1"
,
"parse5-htmlparser2-tree-adapter"
:
"^6.0.0"
,
"yargs"
:
"^16.0.0"
},
"bin"
:
{
"highlight"
:
"bin/highlight"
},
"engines"
:
{
"node"
:
">=8.0.0"
,
"npm"
:
">=5.0.0"
}
},
"node_modules/cli-highlight/node_modules/cliui"
:
{
"version"
:
"7.0.4"
,
"resolved"
:
"https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz"
,
"integrity"
:
"sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ=="
,
"dependencies"
:
{
"string-width"
:
"^4.2.0"
,
"strip-ansi"
:
"^6.0.0"
,
"wrap-ansi"
:
"^7.0.0"
}
},
"node_modules/cli-highlight/node_modules/yargs"
:
{
"version"
:
"16.2.0"
,
"resolved"
:
"https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz"
,
"integrity"
:
"sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw=="
,
"dependencies"
:
{
"cliui"
:
"^7.0.2"
,
"escalade"
:
"^3.1.1"
,
"get-caller-file"
:
"^2.0.5"
,
"require-directory"
:
"^2.1.1"
,
"string-width"
:
"^4.2.0"
,
"y18n"
:
"^5.0.5"
,
"yargs-parser"
:
"^20.2.2"
},
"engines"
:
{
"node"
:
">=10"
}
},
"node_modules/cli-highlight/node_modules/yargs-parser"
:
{
"version"
:
"20.2.9"
,
"resolved"
:
"https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz"
,
"integrity"
:
"sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w=="
,
"engines"
:
{
"node"
:
">=10"
}
},
"node_modules/cliui"
:
{
"version"
:
"8.0.1"
,
"resolved"
:
"https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz"
,
"integrity"
:
"sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="
,
"dependencies"
:
{
"string-width"
:
"^4.2.0"
,
"strip-ansi"
:
"^6.0.1"
,
"wrap-ansi"
:
"^7.0.0"
},
"engines"
:
{
"node"
:
">=12"
}
},
"node_modules/color-convert"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz"
,
"integrity"
:
"sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="
,
"dev"
:
true
,
"dependencies"
:
{
"color-name"
:
"~1.1.4"
},
...
...
@@ -921,8 +1152,7 @@
"node_modules/color-name"
:
{
"version"
:
"1.1.4"
,
"resolved"
:
"https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
,
"integrity"
:
"sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
,
"dev"
:
true
"integrity"
:
"sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"node_modules/concat-map"
:
{
"version"
:
"0.0.1"
,
...
...
@@ -1002,7 +1232,6 @@
"version"
:
"7.0.3"
,
"resolved"
:
"https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz"
,
"integrity"
:
"sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w=="
,
"dev"
:
true
,
"dependencies"
:
{
"path-key"
:
"^3.1.0"
,
"shebang-command"
:
"^2.0.0"
,
...
...
@@ -1012,11 +1241,15 @@
"node"
:
">= 8"
}
},
"node_modules/dayjs"
:
{
"version"
:
"1.11.12"
,
"resolved"
:
"https://registry.npmjs.org/dayjs/-/dayjs-1.11.12.tgz"
,
"integrity"
:
"sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg=="
},
"node_modules/debug"
:
{
"version"
:
"4.3.4"
,
"resolved"
:
"https://registry.npmjs.org/debug/-/debug-4.3.4.tgz"
,
"integrity"
:
"sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="
,
"dev"
:
true
,
"dependencies"
:
{
"ms"
:
"2.1.2"
},
...
...
@@ -1100,16 +1333,37 @@
"node"
:
">=6.0.0"
}
},
"node_modules/dotenv"
:
{
"version"
:
"16.4.5"
,
"resolved"
:
"https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz"
,
"integrity"
:
"sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg=="
,
"engines"
:
{
"node"
:
">=12"
},
"funding"
:
{
"url"
:
"https://dotenvx.com"
}
},
"node_modules/duplexer"
:
{
"version"
:
"0.1.2"
,
"resolved"
:
"https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz"
,
"integrity"
:
"sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg=="
},
"node_modules/eastasianwidth"
:
{
"version"
:
"0.2.0"
,
"resolved"
:
"https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz"
,
"integrity"
:
"sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
},
"node_modules/ee-first"
:
{
"version"
:
"1.1.1"
,
"resolved"
:
"https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz"
,
"integrity"
:
"sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
},
"node_modules/emoji-regex"
:
{
"version"
:
"8.0.0"
,
"resolved"
:
"https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz"
,
"integrity"
:
"sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
},
"node_modules/encodeurl"
:
{
"version"
:
"1.0.2"
,
"resolved"
:
"https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz"
,
...
...
@@ -1137,6 +1391,14 @@
"node"
:
">= 0.4"
}
},
"node_modules/escalade"
:
{
"version"
:
"3.1.2"
,
"resolved"
:
"https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz"
,
"integrity"
:
"sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA=="
,
"engines"
:
{
"node"
:
">=6"
}
},
"node_modules/escape-html"
:
{
"version"
:
"1.0.3"
,
"resolved"
:
"https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz"
,
...
...
@@ -1587,6 +1849,21 @@
"integrity"
:
"sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw=="
,
"dev"
:
true
},
"node_modules/foreground-child"
:
{
"version"
:
"3.2.1"
,
"resolved"
:
"https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz"
,
"integrity"
:
"sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA=="
,
"dependencies"
:
{
"cross-spawn"
:
"^7.0.0"
,
"signal-exit"
:
"^4.0.1"
},
"engines"
:
{
"node"
:
">=14"
},
"funding"
:
{
"url"
:
"https://github.com/sponsors/isaacs"
}
},
"node_modules/forwarded"
:
{
"version"
:
"0.2.0"
,
"resolved"
:
"https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz"
,
...
...
@@ -1636,6 +1913,14 @@
"url"
:
"https://github.com/sponsors/ljharb"
}
},
"node_modules/get-caller-file"
:
{
"version"
:
"2.0.5"
,
"resolved"
:
"https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz"
,
"integrity"
:
"sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
,
"engines"
:
{
"node"
:
"6.* || 8.* || >= 10.*"
}
},
"node_modules/get-intrinsic"
:
{
"version"
:
"1.2.4"
,
"resolved"
:
"https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz"
,
...
...
@@ -1764,7 +2049,6 @@
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz"
,
"integrity"
:
"sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
,
"dev"
:
true
,
"engines"
:
{
"node"
:
">=8"
}
...
...
@@ -1813,6 +2097,14 @@
"node"
:
">= 0.4"
}
},
"node_modules/highlight.js"
:
{
"version"
:
"10.7.3"
,
"resolved"
:
"https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz"
,
"integrity"
:
"sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A=="
,
"engines"
:
{
"node"
:
"*"
}
},
"node_modules/http-errors"
:
{
"version"
:
"2.0.0"
,
"resolved"
:
"https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz"
,
...
...
@@ -1839,6 +2131,25 @@
"node"
:
">=0.10.0"
}
},
"node_modules/ieee754"
:
{
"version"
:
"1.2.1"
,
"resolved"
:
"https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz"
,
"integrity"
:
"sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
,
"funding"
:
[
{
"type"
:
"github"
,
"url"
:
"https://github.com/sponsors/feross"
},
{
"type"
:
"patreon"
,
"url"
:
"https://www.patreon.com/feross"
},
{
"type"
:
"consulting"
,
"url"
:
"https://feross.org/support"
}
]
},
"node_modules/ignore"
:
{
"version"
:
"5.3.1"
,
"resolved"
:
"https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz"
,
...
...
@@ -1923,6 +2234,14 @@
"node"
:
">=0.10.0"
}
},
"node_modules/is-fullwidth-code-point"
:
{
"version"
:
"3.0.0"
,
"resolved"
:
"https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz"
,
"integrity"
:
"sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
,
"engines"
:
{
"node"
:
">=8"
}
},
"node_modules/is-glob"
:
{
"version"
:
"4.0.3"
,
"resolved"
:
"https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz"
,
...
...
@@ -1961,8 +2280,21 @@
"node_modules/isexe"
:
{
"version"
:
"2.0.0"
,
"resolved"
:
"https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
,
"integrity"
:
"sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
,
"dev"
:
true
"integrity"
:
"sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
},
"node_modules/jackspeak"
:
{
"version"
:
"3.4.3"
,
"resolved"
:
"https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz"
,
"integrity"
:
"sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw=="
,
"dependencies"
:
{
"@isaacs/cliui"
:
"^8.0.2"
},
"funding"
:
{
"url"
:
"https://github.com/sponsors/isaacs"
},
"optionalDependencies"
:
{
"@pkgjs/parseargs"
:
"^0.11.0"
}
},
"node_modules/js-yaml"
:
{
"version"
:
"4.1.0"
,
...
...
@@ -2177,6 +2509,14 @@
"url"
:
"https://github.com/sponsors/ljharb"
}
},
"node_modules/minipass"
:
{
"version"
:
"7.1.2"
,
"resolved"
:
"https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz"
,
"integrity"
:
"sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="
,
"engines"
:
{
"node"
:
">=16 || 14 >=14.17"
}
},
"node_modules/mkdirp"
:
{
"version"
:
"0.5.6"
,
"resolved"
:
"https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz"
,
...
...
@@ -2191,8 +2531,7 @@
"node_modules/ms"
:
{
"version"
:
"2.1.2"
,
"resolved"
:
"https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"
,
"integrity"
:
"sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
,
"dev"
:
true
"integrity"
:
"sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"node_modules/multer"
:
{
"version"
:
"1.4.5-lts.1"
,
...
...
@@ -2211,6 +2550,49 @@
"node"
:
">= 6.0.0"
}
},
"node_modules/mysql"
:
{
"version"
:
"2.18.1"
,
"resolved"
:
"https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz"
,
"integrity"
:
"sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig=="
,
"dependencies"
:
{
"bignumber.js"
:
"9.0.0"
,
"readable-stream"
:
"2.3.7"
,
"safe-buffer"
:
"5.1.2"
,
"sqlstring"
:
"2.3.1"
},
"engines"
:
{
"node"
:
">= 0.6"
}
},
"node_modules/mysql/node_modules/readable-stream"
:
{
"version"
:
"2.3.7"
,
"resolved"
:
"https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz"
,
"integrity"
:
"sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw=="
,
"dependencies"
:
{
"core-util-is"
:
"~1.0.0"
,
"inherits"
:
"~2.0.3"
,
"isarray"
:
"~1.0.0"
,
"process-nextick-args"
:
"~2.0.0"
,
"safe-buffer"
:
"~5.1.1"
,
"string_decoder"
:
"~1.1.1"
,
"util-deprecate"
:
"~1.0.1"
}
},
"node_modules/mysql/node_modules/safe-buffer"
:
{
"version"
:
"5.1.2"
,
"resolved"
:
"https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"
,
"integrity"
:
"sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"node_modules/mz"
:
{
"version"
:
"2.7.0"
,
"resolved"
:
"https://registry.npmjs.org/mz/-/mz-2.7.0.tgz"
,
"integrity"
:
"sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q=="
,
"dependencies"
:
{
"any-promise"
:
"^1.0.0"
,
"object-assign"
:
"^4.0.1"
,
"thenify-all"
:
"^1.0.0"
}
},
"node_modules/nanoid"
:
{
"version"
:
"3.3.6"
,
"resolved"
:
"https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz"
,
...
...
@@ -2420,6 +2802,11 @@
"url"
:
"https://github.com/sponsors/sindresorhus"
}
},
"node_modules/package-json-from-dist"
:
{
"version"
:
"1.0.0"
,
"resolved"
:
"https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz"
,
"integrity"
:
"sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw=="
},
"node_modules/parent-module"
:
{
"version"
:
"1.0.1"
,
"resolved"
:
"https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz"
,
...
...
@@ -2432,6 +2819,24 @@
"node"
:
">=6"
}
},
"node_modules/parse5"
:
{
"version"
:
"5.1.1"
,
"resolved"
:
"https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz"
,
"integrity"
:
"sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug=="
},
"node_modules/parse5-htmlparser2-tree-adapter"
:
{
"version"
:
"6.0.1"
,
"resolved"
:
"https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz"
,
"integrity"
:
"sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA=="
,
"dependencies"
:
{
"parse5"
:
"^6.0.1"
}
},
"node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5"
:
{
"version"
:
"6.0.1"
,
"resolved"
:
"https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz"
,
"integrity"
:
"sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
},
"node_modules/parseurl"
:
{
"version"
:
"1.3.3"
,
"resolved"
:
"https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz"
,
...
...
@@ -2462,11 +2867,30 @@
"version"
:
"3.1.1"
,
"resolved"
:
"https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz"
,
"integrity"
:
"sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
,
"dev"
:
true
,
"engines"
:
{
"node"
:
">=8"
}
},
"node_modules/path-scurry"
:
{
"version"
:
"1.11.1"
,
"resolved"
:
"https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz"
,
"integrity"
:
"sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="
,
"dependencies"
:
{
"lru-cache"
:
"^10.2.0"
,
"minipass"
:
"^5.0.0 || ^6.0.2 || ^7.0.0"
},
"engines"
:
{
"node"
:
">=16 || 14 >=14.18"
},
"funding"
:
{
"url"
:
"https://github.com/sponsors/isaacs"
}
},
"node_modules/path-scurry/node_modules/lru-cache"
:
{
"version"
:
"10.4.3"
,
"resolved"
:
"https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz"
,
"integrity"
:
"sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="
},
"node_modules/path-to-regexp"
:
{
"version"
:
"0.1.7"
,
"resolved"
:
"https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz"
,
...
...
@@ -2489,6 +2913,87 @@
"through"
:
"~2.3"
}
},
"node_modules/pg"
:
{
"version"
:
"8.12.0"
,
"resolved"
:
"https://registry.npmjs.org/pg/-/pg-8.12.0.tgz"
,
"integrity"
:
"sha512-A+LHUSnwnxrnL/tZ+OLfqR1SxLN3c/pgDztZ47Rpbsd4jUytsTtwQo/TLPRzPJMp/1pbhYVhH9cuSZLAajNfjQ=="
,
"dependencies"
:
{
"pg-connection-string"
:
"^2.6.4"
,
"pg-pool"
:
"^3.6.2"
,
"pg-protocol"
:
"^1.6.1"
,
"pg-types"
:
"^2.1.0"
,
"pgpass"
:
"1.x"
},
"engines"
:
{
"node"
:
">= 8.0.0"
},
"optionalDependencies"
:
{
"pg-cloudflare"
:
"^1.1.1"
},
"peerDependencies"
:
{
"pg-native"
:
">=3.0.1"
},
"peerDependenciesMeta"
:
{
"pg-native"
:
{
"optional"
:
true
}
}
},
"node_modules/pg-cloudflare"
:
{
"version"
:
"1.1.1"
,
"resolved"
:
"https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz"
,
"integrity"
:
"sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q=="
,
"optional"
:
true
},
"node_modules/pg-connection-string"
:
{
"version"
:
"2.6.4"
,
"resolved"
:
"https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.4.tgz"
,
"integrity"
:
"sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA=="
},
"node_modules/pg-int8"
:
{
"version"
:
"1.0.1"
,
"resolved"
:
"https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz"
,
"integrity"
:
"sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw=="
,
"engines"
:
{
"node"
:
">=4.0.0"
}
},
"node_modules/pg-pool"
:
{
"version"
:
"3.6.2"
,
"resolved"
:
"https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.2.tgz"
,
"integrity"
:
"sha512-Htjbg8BlwXqSBQ9V8Vjtc+vzf/6fVUuak/3/XXKA9oxZprwW3IMDQTGHP+KDmVL7rtd+R1QjbnCFPuTHm3G4hg=="
,
"peerDependencies"
:
{
"pg"
:
">=8.0"
}
},
"node_modules/pg-protocol"
:
{
"version"
:
"1.6.1"
,
"resolved"
:
"https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.1.tgz"
,
"integrity"
:
"sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg=="
},
"node_modules/pg-types"
:
{
"version"
:
"2.2.0"
,
"resolved"
:
"https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz"
,
"integrity"
:
"sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA=="
,
"dependencies"
:
{
"pg-int8"
:
"1.0.1"
,
"postgres-array"
:
"~2.0.0"
,
"postgres-bytea"
:
"~1.0.0"
,
"postgres-date"
:
"~1.0.4"
,
"postgres-interval"
:
"^1.1.0"
},
"engines"
:
{
"node"
:
">=4"
}
},
"node_modules/pgpass"
:
{
"version"
:
"1.0.5"
,
"resolved"
:
"https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz"
,
"integrity"
:
"sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug=="
,
"dependencies"
:
{
"split2"
:
"^4.1.0"
}
},
"node_modules/picomatch"
:
{
"version"
:
"2.3.1"
,
"resolved"
:
"https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz"
,
...
...
@@ -2501,6 +3006,41 @@
"url"
:
"https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/postgres-array"
:
{
"version"
:
"2.0.0"
,
"resolved"
:
"https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz"
,
"integrity"
:
"sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA=="
,
"engines"
:
{
"node"
:
">=4"
}
},
"node_modules/postgres-bytea"
:
{
"version"
:
"1.0.0"
,
"resolved"
:
"https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz"
,
"integrity"
:
"sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w=="
,
"engines"
:
{
"node"
:
">=0.10.0"
}
},
"node_modules/postgres-date"
:
{
"version"
:
"1.0.7"
,
"resolved"
:
"https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz"
,
"integrity"
:
"sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q=="
,
"engines"
:
{
"node"
:
">=0.10.0"
}
},
"node_modules/postgres-interval"
:
{
"version"
:
"1.2.0"
,
"resolved"
:
"https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz"
,
"integrity"
:
"sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ=="
,
"dependencies"
:
{
"xtend"
:
"^4.0.0"
},
"engines"
:
{
"node"
:
">=0.10.0"
}
},
"node_modules/prelude-ls"
:
{
"version"
:
"1.2.1"
,
"resolved"
:
"https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz"
,
...
...
@@ -2661,6 +3201,14 @@
"resolved"
:
"https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz"
,
"integrity"
:
"sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q=="
},
"node_modules/require-directory"
:
{
"version"
:
"2.1.1"
,
"resolved"
:
"https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz"
,
"integrity"
:
"sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="
,
"engines"
:
{
"node"
:
">=0.10.0"
}
},
"node_modules/resolve-from"
:
{
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz"
,
...
...
@@ -2849,11 +3397,22 @@
"resolved"
:
"https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz"
,
"integrity"
:
"sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
},
"node_modules/sha.js"
:
{
"version"
:
"2.4.11"
,
"resolved"
:
"https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz"
,
"integrity"
:
"sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ=="
,
"dependencies"
:
{
"inherits"
:
"^2.0.1"
,
"safe-buffer"
:
"^5.0.1"
},
"bin"
:
{
"sha.js"
:
"bin.js"
}
},
"node_modules/shebang-command"
:
{
"version"
:
"2.0.0"
,
"resolved"
:
"https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz"
,
"integrity"
:
"sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="
,
"dev"
:
true
,
"dependencies"
:
{
"shebang-regex"
:
"^3.0.0"
},
...
...
@@ -2865,7 +3424,6 @@
"version"
:
"3.0.0"
,
"resolved"
:
"https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz"
,
"integrity"
:
"sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="
,
"dev"
:
true
,
"engines"
:
{
"node"
:
">=8"
}
...
...
@@ -2887,6 +3445,17 @@
"url"
:
"https://github.com/sponsors/ljharb"
}
},
"node_modules/signal-exit"
:
{
"version"
:
"4.1.0"
,
"resolved"
:
"https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz"
,
"integrity"
:
"sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="
,
"engines"
:
{
"node"
:
">=14"
},
"funding"
:
{
"url"
:
"https://github.com/sponsors/isaacs"
}
},
"node_modules/simple-update-notifier"
:
{
"version"
:
"2.0.0"
,
"resolved"
:
"https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz"
,
...
...
@@ -2919,6 +3488,22 @@
"node"
:
"*"
}
},
"node_modules/split2"
:
{
"version"
:
"4.2.0"
,
"resolved"
:
"https://registry.npmjs.org/split2/-/split2-4.2.0.tgz"
,
"integrity"
:
"sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg=="
,
"engines"
:
{
"node"
:
">= 10.x"
}
},
"node_modules/sqlstring"
:
{
"version"
:
"2.3.1"
,
"resolved"
:
"https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz"
,
"integrity"
:
"sha512-ooAzh/7dxIG5+uDik1z/Rd1vli0+38izZhGzSa34FwR7IbelPWCCKSNIl8jlL/F7ERvy8CB2jNeM1E9i9mXMAQ=="
,
"engines"
:
{
"node"
:
">= 0.6"
}
},
"node_modules/statuses"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz"
,
...
...
@@ -2957,11 +3542,49 @@
"resolved"
:
"https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"
,
"integrity"
:
"sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"node_modules/string-width"
:
{
"version"
:
"4.2.3"
,
"resolved"
:
"https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
,
"integrity"
:
"sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="
,
"dependencies"
:
{
"emoji-regex"
:
"^8.0.0"
,
"is-fullwidth-code-point"
:
"^3.0.0"
,
"strip-ansi"
:
"^6.0.1"
},
"engines"
:
{
"node"
:
">=8"
}
},
"node_modules/string-width-cjs"
:
{
"name"
:
"string-width"
,
"version"
:
"4.2.3"
,
"resolved"
:
"https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
,
"integrity"
:
"sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="
,
"dependencies"
:
{
"emoji-regex"
:
"^8.0.0"
,
"is-fullwidth-code-point"
:
"^3.0.0"
,
"strip-ansi"
:
"^6.0.1"
},
"engines"
:
{
"node"
:
">=8"
}
},
"node_modules/strip-ansi"
:
{
"version"
:
"6.0.1"
,
"resolved"
:
"https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
,
"integrity"
:
"sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="
,
"dev"
:
true
,
"dependencies"
:
{
"ansi-regex"
:
"^5.0.1"
},
"engines"
:
{
"node"
:
">=8"
}
},
"node_modules/strip-ansi-cjs"
:
{
"name"
:
"strip-ansi"
,
"version"
:
"6.0.1"
,
"resolved"
:
"https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
,
"integrity"
:
"sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="
,
"dependencies"
:
{
"ansi-regex"
:
"^5.0.1"
},
...
...
@@ -2994,7 +3617,6 @@
"version"
:
"7.2.0"
,
"resolved"
:
"https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
,
"integrity"
:
"sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="
,
"dev"
:
true
,
"dependencies"
:
{
"has-flag"
:
"^4.0.0"
},
...
...
@@ -3024,6 +3646,25 @@
"integrity"
:
"sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="
,
"dev"
:
true
},
"node_modules/thenify"
:
{
"version"
:
"3.3.1"
,
"resolved"
:
"https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz"
,
"integrity"
:
"sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw=="
,
"dependencies"
:
{
"any-promise"
:
"^1.0.0"
}
},
"node_modules/thenify-all"
:
{
"version"
:
"1.6.0"
,
"resolved"
:
"https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz"
,
"integrity"
:
"sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA=="
,
"dependencies"
:
{
"thenify"
:
">= 3.1.0 < 4"
},
"engines"
:
{
"node"
:
">=0.8"
}
},
"node_modules/through"
:
{
"version"
:
"2.3.8"
,
"resolved"
:
"https://registry.npmjs.org/through/-/through-2.3.8.tgz"
,
...
...
@@ -3175,6 +3816,158 @@
"resolved"
:
"https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz"
,
"integrity"
:
"sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="
},
"node_modules/typeorm"
:
{
"version"
:
"0.3.20"
,
"resolved"
:
"https://registry.npmjs.org/typeorm/-/typeorm-0.3.20.tgz"
,
"integrity"
:
"sha512-sJ0T08dV5eoZroaq9uPKBoNcGslHBR4E4y+EBHs//SiGbblGe7IeduP/IH4ddCcj0qp3PHwDwGnuvqEAnKlq/Q=="
,
"dependencies"
:
{
"@sqltools/formatter"
:
"^1.2.5"
,
"app-root-path"
:
"^3.1.0"
,
"buffer"
:
"^6.0.3"
,
"chalk"
:
"^4.1.2"
,
"cli-highlight"
:
"^2.1.11"
,
"dayjs"
:
"^1.11.9"
,
"debug"
:
"^4.3.4"
,
"dotenv"
:
"^16.0.3"
,
"glob"
:
"^10.3.10"
,
"mkdirp"
:
"^2.1.3"
,
"reflect-metadata"
:
"^0.2.1"
,
"sha.js"
:
"^2.4.11"
,
"tslib"
:
"^2.5.0"
,
"uuid"
:
"^9.0.0"
,
"yargs"
:
"^17.6.2"
},
"bin"
:
{
"typeorm"
:
"cli.js"
,
"typeorm-ts-node-commonjs"
:
"cli-ts-node-commonjs.js"
,
"typeorm-ts-node-esm"
:
"cli-ts-node-esm.js"
},
"engines"
:
{
"node"
:
">=16.13.0"
},
"funding"
:
{
"url"
:
"https://opencollective.com/typeorm"
},
"peerDependencies"
:
{
"@google-cloud/spanner"
:
"^5.18.0"
,
"@sap/hana-client"
:
"^2.12.25"
,
"better-sqlite3"
:
"^7.1.2 || ^8.0.0 || ^9.0.0"
,
"hdb-pool"
:
"^0.1.6"
,
"ioredis"
:
"^5.0.4"
,
"mongodb"
:
"^5.8.0"
,
"mssql"
:
"^9.1.1 || ^10.0.1"
,
"mysql2"
:
"^2.2.5 || ^3.0.1"
,
"oracledb"
:
"^6.3.0"
,
"pg"
:
"^8.5.1"
,
"pg-native"
:
"^3.0.0"
,
"pg-query-stream"
:
"^4.0.0"
,
"redis"
:
"^3.1.1 || ^4.0.0"
,
"sql.js"
:
"^1.4.0"
,
"sqlite3"
:
"^5.0.3"
,
"ts-node"
:
"^10.7.0"
,
"typeorm-aurora-data-api-driver"
:
"^2.0.0"
},
"peerDependenciesMeta"
:
{
"@google-cloud/spanner"
:
{
"optional"
:
true
},
"@sap/hana-client"
:
{
"optional"
:
true
},
"better-sqlite3"
:
{
"optional"
:
true
},
"hdb-pool"
:
{
"optional"
:
true
},
"ioredis"
:
{
"optional"
:
true
},
"mongodb"
:
{
"optional"
:
true
},
"mssql"
:
{
"optional"
:
true
},
"mysql2"
:
{
"optional"
:
true
},
"oracledb"
:
{
"optional"
:
true
},
"pg"
:
{
"optional"
:
true
},
"pg-native"
:
{
"optional"
:
true
},
"pg-query-stream"
:
{
"optional"
:
true
},
"redis"
:
{
"optional"
:
true
},
"sql.js"
:
{
"optional"
:
true
},
"sqlite3"
:
{
"optional"
:
true
},
"ts-node"
:
{
"optional"
:
true
},
"typeorm-aurora-data-api-driver"
:
{
"optional"
:
true
}
}
},
"node_modules/typeorm/node_modules/glob"
:
{
"version"
:
"10.4.5"
,
"resolved"
:
"https://registry.npmjs.org/glob/-/glob-10.4.5.tgz"
,
"integrity"
:
"sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg=="
,
"dependencies"
:
{
"foreground-child"
:
"^3.1.0"
,
"jackspeak"
:
"^3.1.2"
,
"minimatch"
:
"^9.0.4"
,
"minipass"
:
"^7.1.2"
,
"package-json-from-dist"
:
"^1.0.0"
,
"path-scurry"
:
"^1.11.1"
},
"bin"
:
{
"glob"
:
"dist/esm/bin.mjs"
},
"funding"
:
{
"url"
:
"https://github.com/sponsors/isaacs"
}
},
"node_modules/typeorm/node_modules/minimatch"
:
{
"version"
:
"9.0.5"
,
"resolved"
:
"https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz"
,
"integrity"
:
"sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="
,
"dependencies"
:
{
"brace-expansion"
:
"^2.0.1"
},
"engines"
:
{
"node"
:
">=16 || 14 >=14.17"
},
"funding"
:
{
"url"
:
"https://github.com/sponsors/isaacs"
}
},
"node_modules/typeorm/node_modules/mkdirp"
:
{
"version"
:
"2.1.6"
,
"resolved"
:
"https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz"
,
"integrity"
:
"sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A=="
,
"bin"
:
{
"mkdirp"
:
"dist/cjs/src/bin.js"
},
"engines"
:
{
"node"
:
">=10"
},
"funding"
:
{
"url"
:
"https://github.com/sponsors/isaacs"
}
},
"node_modules/typescript"
:
{
"version"
:
"5.4.3"
,
"resolved"
:
"https://registry.npmjs.org/typescript/-/typescript-5.4.3.tgz"
,
...
...
@@ -3228,6 +4021,18 @@
"node"
:
">= 0.4.0"
}
},
"node_modules/uuid"
:
{
"version"
:
"9.0.1"
,
"resolved"
:
"https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz"
,
"integrity"
:
"sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA=="
,
"funding"
:
[
"https://github.com/sponsors/broofa"
,
"https://github.com/sponsors/ctavan"
],
"bin"
:
{
"uuid"
:
"dist/bin/uuid"
}
},
"node_modules/v8-compile-cache-lib"
:
{
"version"
:
"3.0.1"
,
"resolved"
:
"https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz"
,
...
...
@@ -3245,7 +4050,6 @@
"version"
:
"2.0.2"
,
"resolved"
:
"https://registry.npmjs.org/which/-/which-2.0.2.tgz"
,
"integrity"
:
"sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="
,
"dev"
:
true
,
"dependencies"
:
{
"isexe"
:
"^2.0.0"
},
...
...
@@ -3256,6 +4060,39 @@
"node"
:
">= 8"
}
},
"node_modules/wrap-ansi"
:
{
"version"
:
"7.0.0"
,
"resolved"
:
"https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
,
"integrity"
:
"sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="
,
"dependencies"
:
{
"ansi-styles"
:
"^4.0.0"
,
"string-width"
:
"^4.1.0"
,
"strip-ansi"
:
"^6.0.0"
},
"engines"
:
{
"node"
:
">=10"
},
"funding"
:
{
"url"
:
"https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
"node_modules/wrap-ansi-cjs"
:
{
"name"
:
"wrap-ansi"
,
"version"
:
"7.0.0"
,
"resolved"
:
"https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
,
"integrity"
:
"sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="
,
"dependencies"
:
{
"ansi-styles"
:
"^4.0.0"
,
"string-width"
:
"^4.1.0"
,
"strip-ansi"
:
"^6.0.0"
},
"engines"
:
{
"node"
:
">=10"
},
"funding"
:
{
"url"
:
"https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
"node_modules/wrappy"
:
{
"version"
:
"1.0.2"
,
"resolved"
:
"https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
,
...
...
@@ -3270,12 +4107,45 @@
"node"
:
">=0.4"
}
},
"node_modules/y18n"
:
{
"version"
:
"5.0.8"
,
"resolved"
:
"https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz"
,
"integrity"
:
"sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="
,
"engines"
:
{
"node"
:
">=10"
}
},
"node_modules/yallist"
:
{
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz"
,
"integrity"
:
"sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
,
"dev"
:
true
},
"node_modules/yargs"
:
{
"version"
:
"17.7.2"
,
"resolved"
:
"https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz"
,
"integrity"
:
"sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="
,
"dependencies"
:
{
"cliui"
:
"^8.0.1"
,
"escalade"
:
"^3.1.1"
,
"get-caller-file"
:
"^2.0.5"
,
"require-directory"
:
"^2.1.1"
,
"string-width"
:
"^4.2.3"
,
"y18n"
:
"^5.0.5"
,
"yargs-parser"
:
"^21.1.1"
},
"engines"
:
{
"node"
:
">=12"
}
},
"node_modules/yargs-parser"
:
{
"version"
:
"21.1.1"
,
"resolved"
:
"https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz"
,
"integrity"
:
"sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="
,
"engines"
:
{
"node"
:
">=12"
}
},
"node_modules/yn"
:
{
"version"
:
"3.1.1"
,
"resolved"
:
"https://registry.npmjs.org/yn/-/yn-3.1.1.tgz"
,
...
...
server/package.json
View file @
9eff7f53
...
...
@@ -18,12 +18,15 @@
"cors"
:
"^2.8.5"
,
"express"
:
"^4.18.2"
,
"multer"
:
"^1.4.5-lts.1"
,
"mysql"
:
"^2.18.1"
,
"nanoid"
:
"^3.3.6"
,
"pg"
:
"^8.12.0"
,
"reflect-metadata"
:
"^0.2.1"
,
"save"
:
"^2.9.0"
,
"save-dev"
:
"^0.0.1-security"
,
"ts-node"
:
"^10.9.1"
,
"tslib"
:
"^2.6.0"
,
"typeorm"
:
"^0.3.20"
,
"typescript"
:
"^5.1.6"
},
"devDependencies"
:
{
...
...
server/public/uploads/b549d141-6eec-4fd2-bb23-01a60970b06d.jpeg
0 → 100644
View file @
9eff7f53
70.7 KB
server/src/app.ts
View file @
9eff7f53
...
...
@@ -2,6 +2,7 @@ import express from 'express';
import
{
Application
,
RequestHandler
}
from
'express'
;
import
{
AppInit
}
from
'./interfaces/AppInit.interface'
;
import
{
IRoute
}
from
'./interfaces/IRoute.interface'
;
import
{
AppDataSource
}
from
'./appDataSource'
;
class
App
{
public
app
:
Application
;
...
...
@@ -28,9 +29,20 @@ class App {
this
.
app
.
use
(
express
.
json
());
this
.
app
.
use
(
express
.
static
(
'public'
))
}
public
listen
()
{
public
async
listen
()
{
await
AppDataSource
.
initialize
()
.
then
(()
=>
{
console
.
log
(
"Data Source has been initialized!"
)
})
.
catch
((
err
)
=>
{
console
.
error
(
"Error during Data Source initialization"
,
err
)
})
this
.
app
.
listen
(
this
.
port
,
()
=>
{
console
.
log
(
`App listening on the http://localhost:
${
this
.
port
}
`
);
process
.
on
(
'exit'
,
()
=>
{
AppDataSource
.
destroy
();
})
});
}
}
...
...
server/src/appDataSource.ts
0 → 100644
View file @
9eff7f53
import
{
DataSource
}
from
"typeorm"
;
import
{
Product
}
from
"./entities/product.entity"
;
export
const
AppDataSource
=
new
DataSource
({
type
:
"postgres"
,
host
:
"localhost"
,
port
:
5432
,
username
:
"postgres"
,
password
:
"root"
,
database
:
"classwork"
,
schema
:
"classwork"
,
synchronize
:
true
,
entities
:
[
Product
]
})
\ No newline at end of file
server/src/controllers/product.controller.ts
View file @
9eff7f53
...
...
@@ -10,8 +10,8 @@ export class ProductController {
this
.
service
=
new
ProductService
();
}
getAllProducts
:
RequestHandler
=
(
req
,
res
):
void
=>
{
const
products
=
this
.
service
.
getAllProducts
();
getAllProducts
:
RequestHandler
=
async
(
req
,
res
):
Promise
<
void
>
=>
{
const
products
=
await
this
.
service
.
getAllProducts
();
res
.
send
(
products
);
};
...
...
server/src/entities/product.entity.ts
0 → 100644
View file @
9eff7f53
import
{
Entity
,
PrimaryGeneratedColumn
,
Column
}
from
"typeorm"
;
@
Entity
()
export
class
Product
{
@
PrimaryGeneratedColumn
()
id
!
:
number
;
@
Column
()
title
!
:
string
@
Column
()
description
!
:
string
@
Column
()
price
!
:
number
@
Column
({
nullable
:
true
})
image
!
:
string
}
\ No newline at end of file
server/src/repositories/product.repository.ts
0 → 100644
View file @
9eff7f53
import
{
AppDataSource
}
from
"@/appDataSource"
;
import
{
ProductDto
}
from
"@/dto/product.dto"
;
import
{
Product
}
from
"@/entities/product.entity"
;
import
{
Repository
}
from
"typeorm"
;
class
ProductRepo
{
private
repo
:
Repository
<
Product
>
constructor
()
{
this
.
repo
=
AppDataSource
.
getRepository
(
Product
)
}
async
create
(
body
:
ProductDto
)
{
return
await
this
.
repo
.
save
(
body
)
}
async
getAll
()
{
return
await
this
.
repo
.
find
()
}
async
getOne
(
id
:
number
)
{
return
await
this
.
repo
.
findOne
({
where
:
{
id
:
id
}})
}
}
export
const
productRepo
=
new
ProductRepo
()
\ No newline at end of file
server/src/services/product.service.ts
View file @
9eff7f53
import
{
IProduct
}
from
'@/interfaces/IProduct.interface'
;
import
path
from
'path'
;
import
*
as
fs
from
'fs'
;
import
{
ProductDto
}
from
'@/dto/product.dto'
;
const
filePath
=
path
.
join
(
__dirname
,
'../../data'
)
;
import
{
productRepo
}
from
'@/repositories/product.repository'
;
import
{
Product
}
from
'@/entities/product.entity'
;
export
class
ProductService
{
private
products
:
IProduct
[]
=
[];
constructor
()
{
this
.
init
();
}
init
():
void
{
try
{
const
fileContent
=
fs
.
readFileSync
(
`
${
filePath
}
/products.json`
);
this
.
products
=
JSON
.
parse
(
fileContent
.
toString
());
}
catch
(
e
)
{
this
.
products
=
[];
}
}
save
():
void
{
fs
.
writeFileSync
(
`
${
filePath
}
/products.json`
,
JSON
.
stringify
(
this
.
products
,
null
,
2
));
}
getAllProducts
=
():
IProduct
[]
=>
{
return
this
.
products
;
getAllProducts
=
async
():
Promise
<
Product
[]
>
=>
{
return
await
productRepo
.
getAll
()
};
getProduct
=
(
id
:
string
):
IProduct
=>
{
const
product
=
this
.
products
.
find
((
product
)
=>
product
.
id
===
id
);
if
(
product
)
{
return
product
;
}
throw
new
Error
(
'Invalid id'
);
getProduct
=
async
(
id
:
string
):
Promise
<
Product
|
null
>
=>
{
return
await
productRepo
.
getOne
(
parseInt
(
id
))
};
createProduct
=
(
data
:
ProductDto
):
IProduct
=>
{
const
product
=
{
...
data
,
id
:
Math
.
random
().
toString
()
};
this
.
products
.
push
(
product
);
this
.
save
();
return
product
;
createProduct
=
async
(
data
:
ProductDto
):
Promise
<
Product
>
=>
{
return
productRepo
.
create
(
data
)
};
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment