Skip to content

Commit 888ddfe

Browse files
authored
Merge pull request #228 from TaloDev/develop
Release 0.30.0
2 parents 00ac6a8 + 940f4f6 commit 888ddfe

File tree

7 files changed

+159
-74
lines changed

7 files changed

+159
-74
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ Talo's backend is a set of self-hostable services that helps you build games fas
1111
- 💾 [Game saves](https://trytalo.com/saves)
1212
- 📊 [Game stats](https://trytalo.com/stats) (global and per-player)
1313
- ⚙️ [Live config](https://trytalo.com/live-config) (update your game config from the web, no releases required)
14+
- 🔧 [Steamworks integration](https://trytalo.com/steamworks-integration)
1415

1516
## Docs
1617

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "game-services",
3-
"version": "0.29.2",
3+
"version": "0.30.0",
44
"description": "",
55
"main": "src/index.ts",
66
"scripts": {
@@ -69,7 +69,7 @@
6969
"koa": "^2.13.4",
7070
"koa-bodyparser": "^4.3.0",
7171
"koa-clay": "^6.5.0",
72-
"koa-helmet": "^6.1.0",
72+
"koa-helmet": "^7.0.0",
7373
"koa-jwt": "^4.0.4",
7474
"koa-logger": "^3.2.1",
7575
"lodash.get": "^4.4.2",

src/entities/game-save.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ export default class GameSave {
3131
id: this.id,
3232
name: this.name,
3333
content: this.content,
34+
createdAt: this.createdAt,
3435
updatedAt: this.updatedAt
3536
}
3637
}

src/policies/player.policy.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,13 @@ export default class PlayerPolicy extends Policy {
5353

5454
return await this.canAccessGame(player.game.id)
5555
}
56+
57+
async getSaves(req: Request): Promise<PolicyResponse> {
58+
const { id } = req.params
59+
60+
const player = await this.getPlayer(id)
61+
if (!player) return new PolicyDenial({ message: 'Player not found' }, 404)
62+
63+
return await this.canAccessGame(player.game.id)
64+
}
5665
}

src/services/player.service.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import PlayerGameStat from '../entities/player-game-stat'
1414
import { devDataPlayerFilter } from '../middlewares/dev-data-middleware'
1515
import PlayerProp from '../entities/player-prop'
1616
import PlayerGroup from '../entities/player-group'
17+
import GameSave from '../entities/game-save'
1718

1819
const itemsPerPage = 25
1920

@@ -43,6 +44,11 @@ const propsValidation = async (val: unknown): Promise<ValidationCondition[]> =>
4344
method: 'GET',
4445
path: '/:id/stats',
4546
handler: 'stats'
47+
},
48+
{
49+
method: 'GET',
50+
path: '/:id/saves',
51+
handler: 'saves'
4652
}
4753
])
4854
export default class PlayerService extends Service {
@@ -282,4 +288,20 @@ export default class PlayerService extends Service {
282288
}
283289
}
284290
}
291+
292+
@HasPermission(PlayerPolicy, 'getSaves')
293+
async saves(req: Request): Promise<Response> {
294+
const em: EntityManager = req.ctx.em
295+
296+
const saves = await em.getRepository(GameSave).find({
297+
player: req.ctx.state.player
298+
})
299+
300+
return {
301+
status: 200,
302+
body: {
303+
saves
304+
}
305+
}
306+
}
285307
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import { EntityManager } from '@mikro-orm/core'
2+
import request from 'supertest'
3+
import PlayerFactory from '../../fixtures/PlayerFactory'
4+
import createUserAndToken from '../../utils/createUserAndToken'
5+
import createOrganisationAndGame from '../../utils/createOrganisationAndGame'
6+
import GameSaveFactory from '../../fixtures/GameSaveFactory'
7+
8+
describe('Player service - get saves', () => {
9+
10+
it('should get a player\'s saves', async () => {
11+
const [organisation, game] = await createOrganisationAndGame()
12+
const [token] = await createUserAndToken({}, organisation)
13+
14+
const player = await new PlayerFactory([game]).one()
15+
const saves = await new GameSaveFactory([player]).many(3)
16+
17+
await (<EntityManager>global.em).persistAndFlush([player, ...saves])
18+
19+
const res = await request(global.app)
20+
.get(`/games/${game.id}/players/${player.id}/saves`)
21+
.auth(token, { type: 'bearer' })
22+
.expect(200)
23+
24+
expect(res.body.saves).toHaveLength(3)
25+
})
26+
27+
it('should not get a player\'s saves for a player they have no access to', async () => {
28+
const [, game] = await createOrganisationAndGame()
29+
const [token] = await createUserAndToken()
30+
31+
const player = await new PlayerFactory([game]).one()
32+
33+
await (<EntityManager>global.em).persistAndFlush(player)
34+
35+
await request(global.app)
36+
.get(`/games/${game.id}/players/${player.id}/saves`)
37+
.auth(token, { type: 'bearer' })
38+
.expect(403)
39+
})
40+
41+
it('should not get a player\'s saves if they do not exist', async () => {
42+
const [organisation, game] = await createOrganisationAndGame()
43+
const [token] = await createUserAndToken({}, organisation)
44+
45+
const res = await request(global.app)
46+
.get(`/games/${game.id}/players/21312321321/saves`)
47+
.auth(token, { type: 'bearer' })
48+
.expect(404)
49+
50+
expect(res.body).toStrictEqual({ message: 'Player not found' })
51+
})
52+
})

yarn.lock

Lines changed: 72 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -170,10 +170,10 @@
170170
minimatch "^3.1.2"
171171
strip-json-comments "^3.1.1"
172172

173-
"@eslint/js@8.37.0":
174-
version "8.37.0"
175-
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.37.0.tgz#cf1b5fa24217fe007f6487a26d765274925efa7d"
176-
integrity sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A==
173+
"@eslint/js@8.38.0":
174+
version "8.38.0"
175+
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.38.0.tgz#73a8a0d8aa8a8e6fe270431c5e72ae91b5337892"
176+
integrity sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==
177177

178178
"@humanwhocodes/config-array@^0.11.8":
179179
version "0.11.8"
@@ -733,14 +733,14 @@
733733
"@types/superagent" "*"
734734

735735
"@typescript-eslint/eslint-plugin@^5.40.1":
736-
version "5.57.0"
737-
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.57.0.tgz#52c8a7a4512f10e7249ca1e2e61f81c62c34365c"
738-
integrity sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA==
736+
version "5.57.1"
737+
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.57.1.tgz#d1ab162a3cd2671b8a1c9ddf6e2db73b14439735"
738+
integrity sha512-1MeobQkQ9tztuleT3v72XmY0XuKXVXusAhryoLuU5YZ+mXoYKZP9SQ7Flulh1NX4DTjpGTc2b/eMu4u7M7dhnQ==
739739
dependencies:
740740
"@eslint-community/regexpp" "^4.4.0"
741-
"@typescript-eslint/scope-manager" "5.57.0"
742-
"@typescript-eslint/type-utils" "5.57.0"
743-
"@typescript-eslint/utils" "5.57.0"
741+
"@typescript-eslint/scope-manager" "5.57.1"
742+
"@typescript-eslint/type-utils" "5.57.1"
743+
"@typescript-eslint/utils" "5.57.1"
744744
debug "^4.3.4"
745745
grapheme-splitter "^1.0.4"
746746
ignore "^5.2.0"
@@ -749,71 +749,71 @@
749749
tsutils "^3.21.0"
750750

751751
"@typescript-eslint/parser@^5.40.1":
752-
version "5.57.0"
753-
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.57.0.tgz#f675bf2cd1a838949fd0de5683834417b757e4fa"
754-
integrity sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ==
752+
version "5.57.1"
753+
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.57.1.tgz#af911234bd4401d09668c5faf708a0570a17a748"
754+
integrity sha512-hlA0BLeVSA/wBPKdPGxoVr9Pp6GutGoY380FEhbVi0Ph4WNe8kLvqIRx76RSQt1lynZKfrXKs0/XeEk4zZycuA==
755755
dependencies:
756-
"@typescript-eslint/scope-manager" "5.57.0"
757-
"@typescript-eslint/types" "5.57.0"
758-
"@typescript-eslint/typescript-estree" "5.57.0"
756+
"@typescript-eslint/scope-manager" "5.57.1"
757+
"@typescript-eslint/types" "5.57.1"
758+
"@typescript-eslint/typescript-estree" "5.57.1"
759759
debug "^4.3.4"
760760

761-
"@typescript-eslint/scope-manager@5.57.0":
762-
version "5.57.0"
763-
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.57.0.tgz#79ccd3fa7bde0758059172d44239e871e087ea36"
764-
integrity sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw==
761+
"@typescript-eslint/scope-manager@5.57.1":
762+
version "5.57.1"
763+
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.57.1.tgz#5d28799c0fc8b501a29ba1749d827800ef22d710"
764+
integrity sha512-N/RrBwEUKMIYxSKl0oDK5sFVHd6VI7p9K5MyUlVYAY6dyNb/wHUqndkTd3XhpGlXgnQsBkRZuu4f9kAHghvgPw==
765765
dependencies:
766-
"@typescript-eslint/types" "5.57.0"
767-
"@typescript-eslint/visitor-keys" "5.57.0"
766+
"@typescript-eslint/types" "5.57.1"
767+
"@typescript-eslint/visitor-keys" "5.57.1"
768768

769-
"@typescript-eslint/type-utils@5.57.0":
770-
version "5.57.0"
771-
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.57.0.tgz#98e7531c4e927855d45bd362de922a619b4319f2"
772-
integrity sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ==
769+
"@typescript-eslint/type-utils@5.57.1":
770+
version "5.57.1"
771+
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.57.1.tgz#235daba621d3f882b8488040597b33777c74bbe9"
772+
integrity sha512-/RIPQyx60Pt6ga86hKXesXkJ2WOS4UemFrmmq/7eOyiYjYv/MUSHPlkhU6k9T9W1ytnTJueqASW+wOmW4KrViw==
773773
dependencies:
774-
"@typescript-eslint/typescript-estree" "5.57.0"
775-
"@typescript-eslint/utils" "5.57.0"
774+
"@typescript-eslint/typescript-estree" "5.57.1"
775+
"@typescript-eslint/utils" "5.57.1"
776776
debug "^4.3.4"
777777
tsutils "^3.21.0"
778778

779-
"@typescript-eslint/types@5.57.0":
780-
version "5.57.0"
781-
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.57.0.tgz#727bfa2b64c73a4376264379cf1f447998eaa132"
782-
integrity sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ==
779+
"@typescript-eslint/types@5.57.1":
780+
version "5.57.1"
781+
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.57.1.tgz#d9989c7a9025897ea6f0550b7036027f69e8a603"
782+
integrity sha512-bSs4LOgyV3bJ08F5RDqO2KXqg3WAdwHCu06zOqcQ6vqbTJizyBhuh1o1ImC69X4bV2g1OJxbH71PJqiO7Y1RuA==
783783

784-
"@typescript-eslint/typescript-estree@5.57.0":
785-
version "5.57.0"
786-
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.57.0.tgz#ebcd0ee3e1d6230e888d88cddf654252d41e2e40"
787-
integrity sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw==
784+
"@typescript-eslint/typescript-estree@5.57.1":
785+
version "5.57.1"
786+
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.57.1.tgz#10d9643e503afc1ca4f5553d9bbe672ea4050b71"
787+
integrity sha512-A2MZqD8gNT0qHKbk2wRspg7cHbCDCk2tcqt6ScCFLr5Ru8cn+TCfM786DjPhqwseiS+PrYwcXht5ztpEQ6TFTw==
788788
dependencies:
789-
"@typescript-eslint/types" "5.57.0"
790-
"@typescript-eslint/visitor-keys" "5.57.0"
789+
"@typescript-eslint/types" "5.57.1"
790+
"@typescript-eslint/visitor-keys" "5.57.1"
791791
debug "^4.3.4"
792792
globby "^11.1.0"
793793
is-glob "^4.0.3"
794794
semver "^7.3.7"
795795
tsutils "^3.21.0"
796796

797-
"@typescript-eslint/utils@5.57.0":
798-
version "5.57.0"
799-
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.57.0.tgz#eab8f6563a2ac31f60f3e7024b91bf75f43ecef6"
800-
integrity sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw==
797+
"@typescript-eslint/utils@5.57.1":
798+
version "5.57.1"
799+
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.57.1.tgz#0f97b0bbd88c2d5e2036869f26466be5f4c69475"
800+
integrity sha512-kN6vzzf9NkEtawECqze6v99LtmDiUJCVpvieTFA1uL7/jDghiJGubGZ5csicYHU1Xoqb3oH/R5cN5df6W41Nfg==
801801
dependencies:
802802
"@eslint-community/eslint-utils" "^4.2.0"
803803
"@types/json-schema" "^7.0.9"
804804
"@types/semver" "^7.3.12"
805-
"@typescript-eslint/scope-manager" "5.57.0"
806-
"@typescript-eslint/types" "5.57.0"
807-
"@typescript-eslint/typescript-estree" "5.57.0"
805+
"@typescript-eslint/scope-manager" "5.57.1"
806+
"@typescript-eslint/types" "5.57.1"
807+
"@typescript-eslint/typescript-estree" "5.57.1"
808808
eslint-scope "^5.1.1"
809809
semver "^7.3.7"
810810

811-
"@typescript-eslint/visitor-keys@5.57.0":
812-
version "5.57.0"
813-
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.57.0.tgz#e2b2f4174aff1d15eef887ce3d019ecc2d7a8ac1"
814-
integrity sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g==
811+
"@typescript-eslint/visitor-keys@5.57.1":
812+
version "5.57.1"
813+
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.57.1.tgz#585e5fa42a9bbcd9065f334fd7c8a4ddfa7d905e"
814+
integrity sha512-RjQrAniDU0CEk5r7iphkm731zKlFiUjvcBS2yHAg8WWqFMCaCrD0rKEVOMUyMMcbGPZ0bPp56srkGWrgfZqLRA==
815815
dependencies:
816-
"@typescript-eslint/types" "5.57.0"
816+
"@typescript-eslint/types" "5.57.1"
817817
eslint-visitor-keys "^3.3.0"
818818

819819
"@vitest/coverage-c8@^0.29.0":
@@ -1806,14 +1806,14 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.0:
18061806
integrity sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==
18071807

18081808
eslint@^8.26.0:
1809-
version "8.37.0"
1810-
resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.37.0.tgz#1f660ef2ce49a0bfdec0b0d698e0b8b627287412"
1811-
integrity sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw==
1809+
version "8.38.0"
1810+
resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.38.0.tgz#a62c6f36e548a5574dd35728ac3c6209bd1e2f1a"
1811+
integrity sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==
18121812
dependencies:
18131813
"@eslint-community/eslint-utils" "^4.2.0"
18141814
"@eslint-community/regexpp" "^4.4.0"
18151815
"@eslint/eslintrc" "^2.0.2"
1816-
"@eslint/js" "8.37.0"
1816+
"@eslint/js" "8.38.0"
18171817
"@humanwhocodes/config-array" "^0.11.8"
18181818
"@humanwhocodes/module-importer" "^1.0.1"
18191819
"@nodelib/fs.walk" "^1.2.8"
@@ -2295,10 +2295,10 @@ hefty@^1.1.0:
22952295
resolved "https://registry.npmjs.org/hefty/-/hefty-1.1.0.tgz"
22962296
integrity sha512-d16k01Rzb9fbCOqS0lCFkBVghKd2YFnaT+6Tg+5l5r1O9eaKp0gKQMoJiEb+GpUcHUMrG1y1LvDGB3GPEriVwQ==
22972297

2298-
helmet@^4.4.1:
2299-
version "4.6.0"
2300-
resolved "https://registry.npmjs.org/helmet/-/helmet-4.6.0.tgz"
2301-
integrity sha512-HVqALKZlR95ROkrnesdhbbZJFi/rIVSoNq6f3jA/9u6MIbTsPh3xZwihjeI5+DO/2sOV6HMHooXcEOuwskHpTg==
2298+
helmet@^6.0.1:
2299+
version "6.0.1"
2300+
resolved "https://registry.yarnpkg.com/helmet/-/helmet-6.0.1.tgz#52ec353638b2e87f14fe079d142b368ac11e79a4"
2301+
integrity sha512-8wo+VdQhTMVBMCITYZaGTbE4lvlthelPYSvoyNvk4RECTmrVjMerp9RfUOQXZWLvCcAn1pKj7ZRxK4lI9Alrcw==
23022302

23032303
hexoid@^1.0.0:
23042304
version "1.0.0"
@@ -2749,12 +2749,12 @@ koa-convert@^2.0.0:
27492749
co "^4.6.0"
27502750
koa-compose "^4.1.0"
27512751

2752-
koa-helmet@^6.1.0:
2753-
version "6.1.0"
2754-
resolved "https://registry.npmjs.org/koa-helmet/-/koa-helmet-6.1.0.tgz"
2755-
integrity sha512-WymEv4qo/7ghh15t+1qTjvZBmZkmVlTtfnpe5oxn8m8mO2Q2rKJ3eMvWuQGW/6yVxN9+hQ75evuWcg3XBbFLbg==
2752+
koa-helmet@^7.0.0:
2753+
version "7.0.2"
2754+
resolved "https://registry.yarnpkg.com/koa-helmet/-/koa-helmet-7.0.2.tgz#2077e60cc69fa550802931ccdb85f948aa6bd054"
2755+
integrity sha512-AvzS6VuEfFgbAm0mTUnkk/BpMarMcs5A56g+f0sfrJ6m63wII48d2GDrnUQGp0Nj+RR950vNtgqXm9UJSe7GOg==
27562756
dependencies:
2757-
helmet "^4.4.1"
2757+
helmet "^6.0.1"
27582758

27592759
koa-jwt@^4.0.4:
27602760
version "4.0.4"
@@ -2823,9 +2823,9 @@ lilconfig@2.1.0:
28232823
integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==
28242824

28252825
lint-staged@>=10:
2826-
version "13.2.0"
2827-
resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-13.2.0.tgz#b7abaf79c91cd36d824f17b23a4ce5209206126a"
2828-
integrity sha512-GbyK5iWinax5Dfw5obm2g2ccUiZXNGtAS4mCbJ0Lv4rq6iEtfBSjOYdcbOtAIFtM114t0vdpViDDetjVTSd8Vw==
2826+
version "13.2.1"
2827+
resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-13.2.1.tgz#9d30a14e3e42897ef417bc98556fb757f75cae87"
2828+
integrity sha512-8gfzinVXoPfga5Dz/ZOn8I2GOhf81Wvs+KwbEXQn/oWZAvCVS2PivrXfVbFJc93zD16uC0neS47RXHIjXKYZQw==
28292829
dependencies:
28302830
chalk "5.2.0"
28312831
cli-truncate "^3.1.0"
@@ -3973,9 +3973,9 @@ strip-literal@^1.0.0:
39733973
acorn "^8.8.2"
39743974

39753975
stripe@^11.16.0:
3976-
version "11.17.0"
3977-
resolved "https://registry.yarnpkg.com/stripe/-/stripe-11.17.0.tgz#0193396034fbaf600d69bd7941350883a2b59e47"
3978-
integrity sha512-nDH5afq2J5x8cp0b3Uf0h4U7mLLntDLXA91/4cg+LRhMOrDc2BI6xOGjYpI2uwRG80PU16pqhZh9oVupvCG/pQ==
3976+
version "11.18.0"
3977+
resolved "https://registry.yarnpkg.com/stripe/-/stripe-11.18.0.tgz#2b99ac712e81a5232f88568327d001960b454465"
3978+
integrity sha512-OUA32uhNoSoM6wOodyFbV+3IBCoO140uzdXmBArQ0S88D4EbH91xl2v+Ml1sKalcFKUBadHLeHfU/p9AbsOfGw==
39793979
dependencies:
39803980
"@types/node" ">=8.1.0"
39813981
qs "^6.11.0"
@@ -4247,9 +4247,9 @@ type-is@^1.6.16:
42474247
mime-types "~2.1.24"
42484248

42494249
typescript@5.0:
4250-
version "5.0.3"
4251-
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.3.tgz#fe976f0c826a88d0a382007681cbb2da44afdedf"
4252-
integrity sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA==
4250+
version "5.0.4"
4251+
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b"
4252+
integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==
42534253

42544254
ufo@^1.1.1:
42554255
version "1.1.1"

0 commit comments

Comments
 (0)